金融業界では、高可用性とディザスタリカバリを確保するために、2つのデータセンターをプライマリデータセンターとして、1つのデータセンターをセカンダリデータセンターとして使用します。このアーキテクチャは2リージョン3データセンターアーキテクチャと呼ばれ、決済、証券取引、融資管理などの基幹業務システムで広く使用されています。このトピックでは、このアーキテクチャの概念とO&M操作について説明します。
適用範囲
PolarDB-X の2リージョン3データセンタートポロジでは、Apsara Stack DBStack V1.2.1 以降が必要です。
アーキテクチャと技術原理

PolarDB-X は Paxos 多数決合意プロトコルに基づき、2つのリージョンにまたがる5レプリカのデプロイトポロジと、プライマリ/セカンダリのクラスタペアをサポートします。リージョン間の高可用性で RPO (目標復旧時点) 0 を達成し、レベル別にきめ細かなディザスタリカバリを提供します。
|
障害シナリオ |
範囲 |
HAディザスタリカバリ戦略 |
|
単一レプリカの障害 |
プライマリデータセンターのリーダーレプリカ |
リーダーの再選出がトリガーされます。同一データセンター内のレプリカが優先され、トラフィックをローカルに維持します。 |
|
プライマリデータセンターのフォロワーレプリカ |
影響はありません。 |
|
|
セカンダリデータセンターのフォロワーレプリカ |
影響はありません。 |
|
|
データセンター障害 |
プライマリデータセンター |
リージョン間の強同期により 3 レプリカが残ります。5 レプリカは動的に 3 レプリカへダウングレードされます。 |
|
セカンダリデータセンター |
プライマリデータセンター群に 4 レプリカが残ります。多数決プロトコルは影響を受けません。 |
|
|
リージョン障害 |
プライマリリージョン |
|
|
セカンダリリージョン |
影響はありません。 |
上記のディザスタリカバリ戦略には、次のリージョン間高可用性メカニズムが必要です:重み付き選出、レプリカ数の動的調整、単一レプリカの強制起動、リモートのセカンダリインスタンス。
重み付き選出
PolarDB-X は、2 リージョン 3 データセンター設計で選出の重みを導入しています。動作原理は次のとおりです。
-
楽観的な重み付き選出:Paxos 多数決合意プロトコルでは、選出を開始しやすいノードがリーダーになりやすい傾向があります。これを最適化するために重みの概念を導入し、リーダー選出を開始する前のランダム遅延をノードごとに設定します。これにより、重みの高いノードが先に選出を開始します。
-
強制的な重み付き選出:新しく選出されたリーダーが、全ノードの中で自分が最大の重みではないことを検知した場合 (すべての重みが等しい場合、このチェックはスキップされます)、直ちに書き込みを受け付けません。代わりに辞任フェーズに入り、1 回の選出タイムアウトを待機します。このフェーズでは、ノードは一定間隔 (例:1~2 秒ごと) で他ノードにハートビートのプローブを送信します。より高い重みを持つノードから応答があった場合、リーダーシップは応答したノードのうち最も重みの高いノードに移譲されます。
次の表に、PolarDB-X の2 リージョン 3 データセンターにおけるレプリカの選出の重みを示します。
|
データセンター |
レプリカ |
選出の重み |
|
プライマリデータセンター 1 |
リーダー |
9 |
|
フォロワー |
7 |
|
|
プライマリデータセンター 2 |
フォロワー |
5 |
|
フォロワー |
3 |
|
|
セカンダリデータセンター |
フォロワー |
1 |
たとえば、プライマリデータセンター 1 のリーダーレプリカに障害が発生した場合、同一データセンター内のフォロワーレプリカ (重み7) が新しいリーダーになることが優先され、トラフィックをローカルに維持します。
レプリカ数の動的調整
2 リージョン 3 データセンターアーキテクチャでは、5 レプリカの多数派グループは、少なくとも 3 レプリカからの同期応答を必要とします。デフォルトでは、プライマリデータセンター群内の 4 レプリカが低レイテンシネットワーク上でローカルに多数派同期を完了し、一般的なレイテンシは約 1 ミリ秒です。データセンターレベルの障害で 3 レプリカのみが残った場合、同期にはセカンダリデータセンターのレプリカを含める必要があり、多数決プロトコルのレイテンシが約 30 ミリ秒増加します (金融サービスなどの業界における一般的なリージョン間レイテンシ)。
一般的なレプリカ調整シナリオ:
-
5 レプリカから 3 レプリカへのダウングレード:
downgrade_followerコマンドを使用して、2つのフォロワーをラーナーに降格します。 -
3 レプリカから 5 レプリカへのアップグレード:
upgrade_learnerコマンドを使用して、2つのラーナーをフォロワーに昇格します。アップグレードする前に、レプリケーションログが最新であることを確認してください。 -
1 レプリカから 3 レプリカへのアップグレード:
add_followerコマンドを使用して、レプリカを動的に追加します。新しいレプリカはラーナーとして起動し、ログが最新になった後に自動的にフォロワーへ昇格します。
単一レプリカの強制起動
プライマリリージョン全体で障害が発生した場合、セカンダリデータセンターに残る単一レプリカは多数決合意の要件を満たせないため、単独ではデータを提供できません。
PolarDB-X は単一レプリカの強制起動をサポートします。force_single_mode コマンドを使用してシステムを単一レプリカモードに強制的に切り替え、すべてのフォロワーを待機状態にします。プライマリデータセンター群が復旧した後、レプリカ数の動的調整機能を使用して、システムを 1 レプリカから 3 レプリカ、さらに 5 レプリカへ復旧します。
リモートのセカンダリインスタンス
金融業界のディザスタリカバリ標準では、地理災害対策 (geo-disaster recovery) に対して、きめ細かな RPO と RTO (目標復旧時間) の要件が定義されています。次の表に示します。
|
ディザスタリカバリレベル |
RTO (目標復旧時間) |
RPO (目標復旧時点) |
デプロイ要件 |
|
レベル4 |
≤ 30 分 |
0 |
ゾーンレベルのディザスタリカバリまたは geo-disaster recovery |
|
レベル5 |
≤ 15 分 |
0 |
geo-disaster recovery、リモートリージョンに少なくとも 1 レプリカ |
|
レベル6 |
≤ 1 分 |
0 |
geo-disaster recovery、リモートリージョンに少なくとも 2 レプリカ |
PolarDB-X は、5 レプリカとプライマリ/セカンダリのクラスタペアに基づくリモートのセカンダリインスタンスを提供し、これにより geo-disaster recovery の RTO 要件を満たします。プライマリリージョンが完全に停止した場合、業務トラフィックをリモートのセカンダリインスタンスへ迅速に切り替えてディザスタリカバリを実行できます。
プライマリ/セカンダリのクラスタアーキテクチャにおける主要な設計ポイント:
-
PolarDB-X プライマリインスタンスはリージョン間 Paxos レプリケーションプロトコルを使用し、少なくとも 3 レプリカからの同期応答を必要とします。デフォルトでは、プライマリデータセンター群内の 4 レプリカがローカルに多数派同期を完了し、リモートレプリカは非同期で応答します。リージョン間レイテンシはプライマリインスタンスのパフォーマンスに影響しません。
-
PolarDB-X セカンダリインスタンスはリモートリージョンにデプロイされ、PolarDB-X CDC ログノードを使用して、クラスタ間のプライマリ/セカンダリレプリケーションをほぼリアルタイムで構築します。リモートのセカンダリインスタンスには一定のレプリケーションレイテンシが発生する場合がありますが、アトミックトランザクションのレプリケーションを保証してトランザクション不整合を回避します。
-
2リージョン3データセンターのクラスタ間レプリケーションでは、リモートリージョンにデプロイされたCDCログノードが分散トランザクションを並べ替え、再編成する必要があります。これにより、アトミックトランザクションのレプリケーションが提供され、クラスタ間レプリケーション中に部分的にコミットされたトランザクションが発生しないことが保証されます。アトミックトランザクションのレプリケーションは、定期的なディザスタリカバリ訓練と、トラフィックをリモートのセカンダリインスタンスへ切り替える実際のフェールオーバーの両方で、データ整合性を保証します。
一般的なO&M操作
インスタンスの作成
PolarDB-X インスタンスを作成する際に、デプロイモードを 2 リージョン 3 データセンター に設定します。
インスタンストポロジの表示
[基本情報] ページで、[トポロジー情報] セクションを探し、対応するリソースのゾーン情報を表示します。
フェールオーバーの実行
にログインします。PolarDB for Xscaleコンソール.
上部のナビゲーションバーで、ターゲットインスタンスが配置されているリージョンを選択します。
On theインスタンスページをクリックし、PolarDB-X 2.0タブをクリックします。
対象インスタンスを見つけ、そのIDをクリックします。
-
[基本情報] ページで、[トポロジー情報] セクションを探し、[プライマリゾーンの指定] をクリックします。
-
[プライマリゾーンの指定] ダイアログボックスで、[データセンター]、[プライマリゾーン]、および [スイッチモード] パラメーターを設定します。
-
[OK] をクリックします。