Choosing a deployment architecture#
Failover Manager provides various high availability options for EDB Postgres Advanced Server using the Postgres connection poolers and connection libraries. These options have implications for a high-availability architecture.
To ensure the high availability of your database, you can combine core features of Failover Manager with the Postgres connection libraries (client connect failover) and connection poolers.
With the capabilities of Failover Manager, EDB has designed four basic architectures to run a high-availability environment:
Using Failover Manager with virtual IP addresses : Failover Manager has a key capability to manage VIP addresses out of the box. VIP addresses allow applications to connect to a single IP address that is being routed to the primary database server. This architecture is the most basic solution to run when VIP addresses are available in your environment.
Failover Manager with client connect failover : PostgreSQL client libraries like libpq and jdbc allow for client connection failover. With client connection failover, the connection string contains multiple servers (host=srv1,srv2) and the client library loops over the available hosts to find a connection that is available and capable of read-write operations. This capability allows clients to follow the master during a switchover. This solution doesn’t rely on virtual IP addresses. You can use it in every environment where such client configurations can be set.
Failover Manager with EDB PgBouncer : PgBouncer adds capabilities such as connection pooling and the option to halt traffic. You can also use it as a proxy between the client and the Postgres database server. By leveraging the integration options in Failover Manager to run reconfiguration of PgBouncer during a failover, you can use PgBouncer to route the traffic to the correct primary database server.
Failover Manager with EDB Pgpool-II : EDB Pgpool-II is another tool used as a proxy between the client and the Postgres database server. EDB Pgpool-II adds capabilities such as running in cluster mode with a Watchdog, managing VIPs, and read-only scalability. Failover Manager has native capabilities to integrate with EDB Pgpool-II to redirect traffic to another primary during Database failover operations.
These features are supported in each of the architectures:
Client connect failover
Features |
Failover Manager with VIP |
Failover Manager with client connect failover |
Failover Manager with EDB PgBouncer |
Failover Manager with EDB Pgpool-II |
|---|---|---|---|---|
Connection pooling |
Yes |
Yes |
||
Runs on cloud (no VIP) |
Yes |
Yes |
Yes |
|
Halt traffic option |
Yes |
|||
Read-only scalability |
Yes (using multiple connection factories) |
Yes |
||
Clustered proxy |
Yes |
|||
Proxy integration |
ssh |
PCP |
||
Minimum servers required |
3 |
3 |
5 |
6 |
Complexity |
Low |
Low |
Medium |
High |
Network hops |
1 |
1 |
||
Failover duration |
Low |
Medium |
Low |
Low |
- Failover Manager with virtual IP
- Failover Manager with client connect failover
- Failover Manager with EDB PgBouncer
- Failover Manager with EDB PgBouncer on premises
- Failover Manager with EDB PgBouncer in the cloud
- Using Failover Manager with PgBouncer
- Installing
- Configuring Failover Manager
- Configuring PostgreSQL
- Configuring EDB PgBouncer
- Configuring passwordless ssh
- Configure on EDB PgBouncer hosts
- Configure on Failover Manager/PostgreSQL hosts
- Resetting temporary passwords on EDB PgBouncer hosts
- Configuring the network load balancer
- Configuring NLB in Azure
- Configuring NLB in AWS
- Failover Manager with EDB Pgpool-II
- Failover Manager with EDB Pgpool-II on premises
- Failover Manager with EDB Pgpool-II in the cloud
- Using Failover Manager with EDB Pgpool-II
- Installing
- Configuring Failover Manager
- Configuring EDB Pgpool-II
- Backend node setting
- Enabling load balancing and streaming replication mode
- Disabling health checking and failover
- Setting up PCP
- Using virtual IP addresses
- Configuring the network load balancer
- Configuring NLB in Azure
- Configuring NLB in AWS