Patroni と etcd - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Patroni と etcd

HA に自動フェイルオーバー管理を提供するソリューションとして、Patroni をお勧めします。Patroni は、PostgreSQL データベース用のオープンソースの自動フェイルオーバーマネージャーです。Patroni をテンプレートとして使用して、Python と etcd などの分散設定ストアを使用して独自のカスタマイズ HA ソリューションを作成し、アクセシビリティを最大化できます。

Patroni には、PostgreSQL サービスのステータスや、各 DB インスタンスまたはノードのロールを確認するための API も用意されています。etcd (分散設定ストア) と一緒に使用するには、各 DB インスタンスに Patroni をインストールする必要があります。

デフォルトでは、Patroni は非同期レプリケーション用に PostgreSQL を設定します。どのレプリケーションメソッドを選ぶかは、ビジネス上の考慮事項によって異なります。Patroni は、HA を設定するための最適なツールの 1 つであり、高度に設定可能です。Patroni を使用する利点をいくつか紹介します。

  1. レプリケーションの異なるモード (同期と非同期) を簡単に切り替えることができます。

  2. Patroni には高度な REST API があります。Patroni は、この API を自身で使用して、HAProxy または別のロードバランサーを使用して HTTP ヘルスチェックを実行し、リーダーレース中にフェイルオーバーを実行します。

  3. Patroni は、分散設定ストア (DCS) でクラスターの状態を維持しながら、クラスターの管理を一時的に停止する必要があります。例えば、手動メンテナンスウィンドウ中にフェイルオーバーが発生しないようにするとします。Patroni には、不要なダウンタイムを回避できるように、一時停止コマンドと再開コマンドが用意されています。

  4. スプリットブレインの問題を回避するため、Patroni は、DCS でリーダーキーの有効期限が切れた後、PostgreSQL がトランザクションコミットを受け入れないようにする必要があります。Patroni は、スプリットブレインの問題を回避するために、ウォッチドッグなどのデバイスもサポートしています。スプリットブレインの問題とウォッチドッグの詳細については、Patroni ドキュメントの「Watchdog support」を参照してください。

アーキテクチャ

次の図は、Patroni および etcd を使用して Amazon EC2 上のオンプレミス PostgreSQL データベースの HADR を設定するためのアーキテクチャを示しています。

Patroni のアーキテクチャ

この図表は、次のワークフローを示しています:

  1. EC2 インスタンスを作成します。

  2. PostgreSQL データベースをインストールします。

  3. EC2 インスタンスで Patroni をインストールして設定します。

  4. Network Load Balancer を作成して設定します。

  5. 各 PostgreSQL データベースを etcd (Patroni 用) で HA を実現するように設定します。

考慮事項

Patroni を使用して移行を開始する前に、次の点を考慮することをお勧めします。

  • Patroni を使用するには、ユーザーに PostgreSQL の管理と DCS の専門知識が必要です。

  • Patroni の学習曲線は急峻で、多くの設定オプションが選べます。

  • Patroni 専用の追加のポートが必要です。