Architecture
============

フェールオーバーマネージャーは、Postgresストリーミングレプリケーションクラスターの状態を監視し、障害を迅速に検証する高可用性ツールです。データベース障害が発生すると、フェールオーバーマネージャーは、ストリーミングレプリケーションスタンバイノードを書き込み可能なプライマリノードに自動的にプロモートせることができます。この機能により、継続的なパフォーマンスが保証され、サービスの中断を最小限に抑えてデータの損失から保護されます。

フェールオーバーマネージャークラスターは、ネットワーク上の次のホストにあるフェールオーバーマネージャープロセスで構成されています。

- プライマリノードは、データベースクライアントにサービスを提供するプライマリデータベースサーバーです。

- 1つ以上のスタンバイノードは、プライマリノードに関連付けられたストリーミングレプリケーションサーバーです。

- 監視ノードは、フェールオーバーシナリオでプライマリまたはスタンバイのアサーションを確認します。障害が発生しているときに、プライマリがノードの半分以上を含むパーティションにある場合、プライマリはプライマリのままです。そのため、フェールオーバーマネージャーは、偶数のエージェントを備えたクラスターでの実行をサポートしています。

.. figure:: /images/failover_manager_overview.png
   :width: 70% 
   :alt: A Failover Manager scenario employing a virtual IP address

   A Failover Manager scenario employing a virtual IP address

非Witnessエージェントは起動すると、ローカルデータベースに接続し、データベースの状態を確認します。

- エージェントがデータベースに到達できない場合、アイドルモードで起動します。

- データベースが復旧していることが判明した場合、エージェントはスタンバイのロールを引き継ぎます。

- データベースが復旧していない場合、エージェントはプライマリのロールを引き継ぎます。

フェールオーバーが発生した場合、フェールオーバーマネージャーは、昇格したスタンバイがクラスター内の最新のスタンバイであることを確認しようとします。スタンバイノードがプライマリノードと同期していない場合、データ損失の可能性があります。

`JGroups <http://www.jgroups.org/>`_ は、フェールオーバーマネージャーがメンバーノードが相互に通信し、ノード障害を検出できるクラスターを作成できるテクノロジーを提供します。

この図は、仮想IPアドレスを使用するフェールオーバーマネージャークラスターを示しています。データベースが追加または削除されるたびにロードバランサーを再構成する独自の :ref:`efm_addressスクリプト <efm_addressスクリプト>` を提供する場合、
:ref:`Using Failover Manager with virtual IP addresses <Using Failover Manager with virtual IP addresses>` の代わりにロードバランサーを使用できます。高可用性を実現するためにネイティブEFM-Pgpool統合を有効にすることもできます。詳細については、
:ref:`Choosing a deployment architecture <Choosing a deployment architecture>` を参照してください。
