Failover Manager Overview¶
An EDB Postgres |variable_prod_name| (EFM) cluster is comprised of Failover Manager processes that reside on the following hosts on a network:
A Master node - The Master node is the primary database server that is servicing database clients.
One or more Standby nodes - A Standby node is a streaming replication server associated with the Master node.
A Witness node - The Witness node confirms assertions of either the Master or a Standby in a failover scenario. A cluster does not need a dedicated witness node if the cluster contains three or more nodes. If you do not have a third cluster member that is a database host, you can add a dedicated Witness node. A cluster may include more than one witness node.
Traditionally, a cluster is a single instance of Postgres managing multiple databases. In this document, the term cluster refers to a |variable_prod_name| cluster. A |variable_prod_name| cluster consists of a Master agent, one or more Standby agents, and an optional Witness agent that reside on servers in a cloud or on a traditional network and communicate using the JGroups toolkit.
An EFM scenario employing a Virtual IP address.¶
When a non-witness agent starts, it connects to the local database and checks the state of the database:
If the agent cannot reach the database, it will start in idle mode.
If it finds that the database is in recovery, the agent assumes the role of standby;
If the database is not in recovery, the agent assumes the role of master.
In the event of a failover, |variable_prod_name| attempts to ensure that the promoted standby is the most up-to-date standby in the cluster; please note that data loss is possible if the standby node is not in sync with the master node.
JGroups provides technology that allows |variable_prod_name| to create clusters whose member nodes can communicate with each other and detect node failures.
The figure shown above illustrates a |variable_prod_name| cluster that employs a virtual IP address. You can use a load balancer in place of a virtual IP address if you provide your own script to re-configure the load balancer in the event of a failure.