Failover Manager with PgBouncer

フェールオーバーマネージャーとPgBouncerを使用して、オンプレミスのセットアップとクラウドのセットアップで高可用性を実現できます。 PgBouncerは一般的な接続プーラーですが、マルチホスト構成、フェイルオーバー、または検出がないため、 PostgreSQLの高可用性を自分自身で達成するには不十分です。

オンプレミスのPgBouncerを使用したフェールオーバーマネージャー

オンプレミスのセットアップでは、接続ライブラリを使用して、マルチプルのホストで接続文字列を使用することで高可用性を提供します。

Failover Manager using pgBouncer on-premises architecture diagram

Failover Manager using pgBouncer on-premises architecture diagram

図3:オンプレミスのPgBouncerを使用したフェールオーバーマネージャーのトラフィックルーティング</ div>

クラウド内のPgBouncerを使用したフェールオーバーマネージャー

クラウドのセットアップでは、ネットワークロード(NLB)を使用して、PgBouncerの両方のインスタンスでトラフィックのバランスを取ります。

Failover Manager with PgBouncer cloud architecture diagram

Failover Manager with PgBouncer cloud architecture diagram

図4:クラウドでPgBouncerを使用したフェールオーバーマネージャーのトラフィックルーティング</ div>

EDBは、PgBouncerとFailover Manager / PostgreSQLが同じマシンで実行されているこのアーキテクチャをサポートしていません。

  • クラウドネットワークロードAzureの制約 ソースと宛先が存在する場合、トラフィックを適切にルーティングしません 同じマシン上で。

  • 混在アーキテクチャでは、PgBouncerとPostgres間のトラフィックは 不均衡になります(時にはローカル、時にはネットワーク化)。

  • PgBouncerとPostgreSQLはリソースをめぐって競合します。

  • マスタ障害はルーティング(PgBouncer)とデータベースの両方に影響します これらの2つのコンポーネントが同じマシン上で組み合わされる場合。

PgBouncerでフェールオーバーマネージャーを使用する

インストール

次のように、AWS仮想マシンにAdvanced Serverデータベース、Failover Manager、およびPgBouncerをインストールして構成します。

構成が完了したら、ポート6432でネットワークロードのIPアドレスのデータベースに接続できます。プライマリデータベースサーバで障害が発生した場合、フェールオーバーマネージャーは新しいプライマリを昇格し、PgBouncerを再構成してトラフィックを再分配します。 PgBouncerプロセスのいずれかがトラフィックを受け入れることができない場合、ネットワークロードバランサーはすべてのトラフィックを残りのPgBouncerプロセスに再配布します。 max_client_connパラメータが、フェイルオーバーの場合の接続数の増加を補うように調整されていることを確認してください。