August 22, 2013 | Bretislav Valek
Beginning with version 4.6.0, data server (Reliance Control Server, Reliance Server) redundancy is part of the Reliance 4 system. It is also called redundancy of type server–server.
The aim of this feature is to allow the project's most important computers to operate in hot standby mode. Usually, the data server providing communication with devices (e.g., PLC), logging historical data and alarms/events to databases, providing data to clients, or performing other important functions runs on these computers. For each important computer in the project (hereinafter referred to as primary server), a secondary (backup) server can be added. A data server with the same project version must be running on both computers. Each of the servers has its own copy of databases intended for logging historical data and alarms/events.
Only the server that has the active role (the server that is active) provides the following functions: communication with devices, historical data acquisition, alarm/event generation, sending alarm/event information via e-mail and/or SMS.
Under normal circumstances (i.e., if both servers are running and connected with each other), the primary server has the active role. The backup server has the standby role, i.e., it does not communicate directly with devices, all data (current and historical) and alarms/events are acquired from the primary server (it acts as a client towards the primary server). As a result, the time stamps of data and alarms/events on both servers are identical.
In the event of a primary server failure, the secondary server will assume the active role. It will thus start communicating directly with devices, generating alarms/events, and acquiring historical data. Once the connection with the primary server is reestablished, the secondary server will again assume the standby role and the servers will start synchronizing with each other. When the synchronization of current data and alarms/events is completed, the primary server assumes the active role again. After that, historical data (data tables) is synchronized.
Synchronization means data exchange between the servers in a way as to supplement the databases with the missing data and make the latest data available to both servers. The same applies to alarms/events. Specifically, when the operation of the primary server is restored after a previous failure, the primary server's databases are supplemented with the missing data and alarms/events. Synchronization is performed automatically each time the connection between the servers is established (for example, a failure in communication between the servers may have occurred or the project may have been restarted in the primary or secondary server due to maintenance reasons, i.e., not necessarily emergency reasons).
Historical data is synchronized for individual data tables in a step-by-step manner. Data acquisition (most frequently by current data sampling) for a data table is enabled as soon as the synchronization of this data table is completed. This means data for the data table is acquired independently of the completion of the synchronization of all data tables.
Data server redundancy can be activated and configured through the Project Structure Manager on the Redundancy page for the computer that is supposed to be used as a secondary server.
Figure 1. Project Structure Manager – redundancy of type server–server
In the Reliance system, redundancy of type client–server is also available (beginning with version 2). The client is represented by Reliance's runtime software, the server is a data server. The aim of this feature is to allow backing up communication channels (so-called server connections) between the client and the server (or servers). It is redundancy of type client–server if more than one server connection within a server connection group is defined for the client computer. The order of these server connections determines their priority. For communication, a connection with the highest priority is used preferentially. If a communication failure occurs (network failure, server failure, etc.), the runtime software on the client computer automatically attempts to re-establish communication on a connection with lower priority (while it repeatedly checks for the availability of the original connection at a specified interval). As soon as a connection with higher priority is available again, the runtime software on the client computer terminates communication on the lower-priority connection and the higher-priority connection is used for communication again (i.e., within each group, there is never more than one server connection being used for communication).
If client computers (client instances of the runtime software) that acquire data from redundant data servers are defined within an application, redundancy of type client–server must also be used. For each client computer, a server connection with both data servers must be defined but data is acquired only from one of them at a time. Considering that the connection priority can be defined separately for each client computer, some client computers can obtain data preferentially from the primary server while others from the secondary server. By doing this, load balancing on both servers can be achieved.
Redundancy of type client–server can be configured through the Project Structure Manager for each client computer.
Figure 2. Project Structure Manager – redundancy of type client–server