Architecture#
フェールオーバーマネージャーは、Postgresストリーミングレプリケーションクラスターの状態を監視し、障害を迅速に検証する高可用性ツールです。データベース障害が発生すると、フェールオーバーマネージャーは、ストリーミングレプリケーションスタンバイノードを書き込み可能なプライマリノードに自動的にプロモートせることができます。この機能により、継続的なパフォーマンスが保証され、サービスの中断を最小限に抑えてデータの損失から保護されます。
フェールオーバーマネージャークラスターは、ネットワーク上の次のホストにあるフェールオーバーマネージャープロセスで構成されています。
プライマリノードは、データベースクライアントにサービスを提供するプライマリデータベースサーバーです。
1つ以上のスタンバイノードは、プライマリノードに関連付けられたストリーミングレプリケーションサーバーです。
監視ノードは、フェールオーバーシナリオでプライマリまたはスタンバイのアサーションを確認します。障害が発生しているときに、プライマリがノードの半分以上を含むパーティションにある場合、プライマリはプライマリのままです。そのため、フェールオーバーマネージャーは、偶数のエージェントを備えたクラスターでの実行をサポートしています。
A Failover Manager scenario employing a virtual IP address#
非Witnessエージェントは起動すると、ローカルデータベースに接続し、データベースの状態を確認します。
エージェントがデータベースに到達できない場合、アイドルモードで起動します。
データベースが復旧していることが判明した場合、エージェントはスタンバイのロールを引き継ぎます。
データベースが復旧していない場合、エージェントはプライマリのロールを引き継ぎます。
フェールオーバーが発生した場合、フェールオーバーマネージャーは、昇格したスタンバイがクラスター内の最新のスタンバイであることを確認しようとします。スタンバイノードがプライマリノードと同期していない場合、データ損失の可能性があります。
JGroups は、フェールオーバーマネージャーがメンバーノードが相互に通信し、ノード障害を検出できるクラスターを作成できるテクノロジーを提供します。
この図は、仮想IPアドレスを使用するフェールオーバーマネージャークラスターを示しています。データベースが追加または削除されるたびにロードバランサーを再構成する独自の efm_addressスクリプト を提供する場合、 Using Failover Manager with virtual IP addresses の代わりにロードバランサーを使用できます。高可用性を実現するためにネイティブEFM-Pgpool統合を有効にすることもできます。詳細については、 Choosing a deployment architecture を参照してください。