Azure Cosmos DB for PostgreSQL での高可用性

適用対象: Azure Cosmos DB for PostgreSQL (PostgreSQL の Citus データベース拡張機能を利用)

高可用性 (HA) は、クラスター内の各ノードのスタンバイ レプリカを維持することでデータベースのダウンタイムを回避する機能です。 ノードがダウンした場合、Azure Cosmos DB for PostgreSQL は、障害が発生したノードからそのスタンバイに受信接続を切り替えます。 フェールオーバーは数分で完了し、昇格されたノードには、PostgreSQL の同期ストリーミング レプリケーションを通じて常に最新のデータが格納されます。

クラスター内のすべてのプライマリ ノードは、ノード間の待機時間を短縮するために、1 つの可用性ゾーンにプロビジョニングされます。 優先可用性ゾーンを使用すると、すべてのクラスター ノードを、アプリケーションがデプロイされているのと同じ可用性ゾーンに配置できます。 この近接性により、アプリ データベースの待機時間が短縮され、パフォーマンスがさらに向上する可能性があります。 スタンバイ ノードは別の可用性ゾーンにプロビジョニングされます。 Azure portal には、クラスター内の各プライマリ ノードの可用性ゾーンが表示されますREST API などのプログラムによる方法のいずれかを使用して、クラスター内の各ノードの可用性ゾーンを確認することもできます。

HA が有効になっていない場合でも、各ノードには独自のローカル冗長ストレージ (LRS) が与えられ、3 つの同期レプリカが Azure Storage サービスによって管理されます。 1 つのレプリカが故障した場合、故障が Azure Storage サービスによって検出され、ユーザーを介さずに再作成されます。 LRS ストレージの持続性については、こちらのページのメトリックを参照してください。

HA が有効に なっている 場合、Azure Cosmos DB for PostgreSQL によって、クラスターのプライマリ ノードごとに 1 つのスタンバイ ノードが実行されます。 プライマリとそのスタンバイでは、同期 PostgreSQL レプリケーションが使用されます。 このレプリケーションにより、プライマリ ノードが故障した場合、ダウンタウンが予測できます。 簡単に言えば、Microsoft サービスによってプライマリ ノードの故障が検出され、スタンバイ ノードにフェールオーバーされ、データ損失がゼロに抑えられます。

コーディネーター ノードで HA を利用するためには、接続の切断とトランザクションの失敗をデータベース アプリケーションが検出して再試行する必要があります。 新たに昇格されたコーディネーターには、同じ接続文字列でアクセスできます。

高可用性の状態

復旧は、検出、フェールオーバー、完全復旧の 3 つのステージに分けることができます。 Azure Cosmos DB for PostgreSQL は、各ノードに対して定期的に正常性チェックを実行します。チェックで 4 回不合格になると、ノードがダウンしていると判断されます。 その後、Azure Cosmos DB for PostgreSQL はスタンバイ ノードの状態をプライマリに昇格させ (フェールオーバー)、新しいスタンバイ候補を作成します。 ストリーミング レプリケーションが開始されて、新しいノードが最新の状態になります。 すべてのデータのレプリケートが完了したとき、ノードは完全復旧の状態に達します。

Azure Cosmos DB for PostgreSQL により、Azure portal のクラスターの [概要] ページにフェールオーバーの進行状況が表示されます。

  • 正常: HA が有効になっており、ノードがそのスタンバイに完全にレプリケートされます。
  • フェールオーバー進行中: プライマリ ノードでエラーが検出され、スタンバイへのフェールオーバーが開始されました。 この状態は、スタンバイ ノードへのフェールオーバーが完了するとスタンバイの作成中に移行され、スタンバイが新しいプライマリになります。
  • スタンバイの作成中: 前のスタンバイがプライマリに昇格され、そのための新しいスタンバイが作成されています。 新しいセカンダリの準備が整うと、この状態がレプリケーション進行中に移行します。
  • レプリケーション進行中: 新しいスタンバイ ノードがプロビジョニングされ、データ同期が進行中です。 すべてのデータが新しいスタンバイにレプリケートされると、プライマリおよびスタンバイ ノードの間で同期レプリケーションが有効になり、ノードの状態が正常に移行します。
  • なし: このノードで HA が有効になっていません。

次のステップ