アーキテクチャ¶
典型的なEFMおよびPgPool構成¶
サンプルアーキテクチャ図には、次の表に示す4つのノードが示されています。
シナリオ |
コンポーネント |
|---|---|
サーバー1 |
AdvancedServerおよびFailoverManagerとPostgresStreamingReplicationを実行するマスターノード。アプリケーション/クライアントは、サーバー4のPgpoolポート経由で(または、使用されている場合は仮想IP経由で)接続して、書き込み操作(つまり、INSERT、UPDATE、DELETE)を実行します。 |
サーバー2とサーバー3 |
フェールオーバーマネージャーを実行するスタンバイノード(Pgpool-IIはオプション)。これはストリーミングレプリケーションのスタンバイノードです。アプリケーション/クライアントは、サーバー4のPgpoolポート(または、使用されている場合は仮想IP)を介してこのデータベースに接続し、読み取り操作(つまり、SELECT)を実行します。必要に応じて、オプションのスタンバイPgpoolインスタンスをここで設定し、watchdogを実行できます。 |
サーバー4 |
Pgpool-IIおよびFailoverManagerを実行するオプションの監視ノード。このサーバーは、アクティブなデータベースを使用せずに、フェイルオーバーマネージャーとPgpoolを使用してセットアップされています。すべてのアプリケーション/クライアントは、このサーバーを介して、このサーバーのIPアドレスを介して、またはこのサーバーを指す仮想IPを介して、他のデータベースに接続します。他に3つ以上のEFMノードが存在する場合、監視ノードは不要であることに注意してください。このサンプルアーキテクチャの監視ノードは、デモ用に提供されています。 |
このアーキテクチャ:
マスターノードに障害が発生した場合に2つのスタンバイを提供することにより、最大の可用性を実現します。
ロードバランシング用に複数のスタンバイを使用して読み取りスケーラビリティを向上させることにより、読み取り集中型の混合ワークロードで最大のパフォーマンスを実現します。
マスターでPgpoolを実行せずにロードバランシングを実行することにより、マスターノードの負荷を軽減します。
watchdogを使用して高可用性モードでPgpoolを構成することにより、Pgpoolの単一障害点を回避します。最も負担の少ないノード(監視ノード)でPgpoolマスター/アクティブインスタンスを実行して、フェイルオーバーマネージャーとリソースを共有しながら(TCOを削減するために)パフォーマンスを向上させます。
1つ以上のスタンバイが同期レプリケーションで構成されている場合、ユーザーは障害イベントでデータ損失をほぼゼロにすることができます。
このアーキテクチャでは、次の動作が期待できます。
シナリオ |
HAへの影響 |
読み取りスケーラビリティへの影響 |
|---|---|---|
スイッチオーバー/スイッチバック: これは、一部のOS/DBレベルのアクティビティのために計画されたダウンタイムであり、ダウンタイム中に使用可能なスタンバイをマスターとしてプロモートするときに行われます。 |
**HAへの影響なし**(役割の変更中の数秒間の妨害を除く)。EFM/PgPoolクラスター内のノードの数はそのままです。切り替えは、EFMによって(EFMコマンドを介して)行われます。使用可能なスタンバイの1つが、ダウンタイム中に新しいマスターとして昇格されます。古いマスターは、手動セットアップなしのEFMによって新しいスタンバイとして再構成され、HAセットアップのノードの総数を維持します。 |
**読み取りスケーラビリティへの影響はありません**(役割変更中の数秒間の妨害を除く)。スイッチオーバー後も、クラスター内のスタンバイの総数は変わらないため、負荷分散/読み取りのスケーラビリティには影響しません。EFMによってスイッチオーバーが行われると、ポストプロモーションスクリプトが呼び出され、PgPoolが変更されて更新されます。したがって、PgPoolはすべてのクラスターノードの役割を変更します。 |
フェイルオーバー: これは予期しないダウンタイムであり、アプリケーションからマスターデータベースにアクセスできなくなります(プライマリDBダウン)。 |
HAへの影響はありません。ただし、このようなインシデント(フェールオーバー)では、EFM/PgPoolクラスターにスタンバイが1つだけ残ります。常に最大の可用性(1マスター、2スタンバイ)を維持するには、古い/ダウンしたマスターを(pg_basebackupまたはpg_rewindを介して)新しいスタンバイとして再構築し、EFMクラスターに接続する必要があります(または新しいマシンを次のように導入する必要があります)スタンバイ)。DBAによる手動介入が必要です。フェイルオーバーはEFMによって自動的に実行されます。 |
読み取りスケーラビリティが影響を受けます。フェイルオーバー後、古い/ダウンしたマスターが新しいスタンバイとして再構築され、EFMクラスターに接続されるまで、読み取りスケーラビリティー/負荷分散に使用できるスタンバイは1つだけです。ノードの総数(この場合は3つのノード)が復元されると、EFM接続スクリプトがノードをPgpoolクラスターに接続します。完了すると、両方のスタンバイがロードバランシングに使用できるようになります。 |