Dual server management

If both servers are running, the server that controls the system is the WireServer1 (master server). Meantime, WireServer2 (backup server) merely listens (this is exactly the name of the function we use for this purpose) to the existence of the WireServer1. If WireServer1 fails, WireServer2 immediately takes the control of the system over itself and communicates with the WireOperators without losing any data. After WireServer1 is restarted, WireServer2 gives the control of the system to WireServer1 and switches back to the listening mode.

To make it possible to have WireServer2 backup WireServer1 immediately, WireServer2 must be able to have WireServer1's memory map at the time of failure. Since WireServer1 is fallen at that time, it seems that it is impossible to get it. As a workaround, we designed a system in which WireServer2 can reach to the state of failure starting from the previous state recorded to the database. Since it is impossible to get this record from WireServer1's database, there is a need to synchronize the databases. That means, both databases must contain the same data at all times.

In order to synchronize the databases, WireServer1 makes the same changes to both servers. But even in this case, there is a possibility that either of the servers fall during this operation. WireServer1 may make some changes in its own database but fall before it makes the same changes to WireServer2's database. In order to eliminate this possibility, we use transactions. Every database operation is surrounded by a transaction over the network. By this way, the changes are made either to both databases or to none of them.

In order to make Dual server management work, the communication protocol must be fine tuned and harmonized with database synchronization. Great emphasis has been given on the communication protocol of the WireManager for Windows NT that makes it possible to reach at the failure state from a previous state.

The same method can be used if only one server is used. In this case, it is safe when the server restarts and begins to communicate with the WireOperators. It will easily reach at the state at the time of failure. This is achieved by a robust communication protocol. The communication protocol used to synchronize the databases is similar to the communication protocol used in Microsoft's Distributed Transaction Coordinator.