マルチアベイラビリティゾーンの クラウドネイティブ インスタンスでは、プライマリゾーンに 2 つ以上のノードがあり (かつノードの合計数が 3 つ以上の場合)、マスターノードに障害が発生した際に、高可用性 (HA) システムがプライマリゾーン内でのフェールオーバーを優先します。この機能により、セカンダリゾーンへのフェールオーバーに起因するアプリケーションのアクセス遅延の増加を防ぐことができます。
この機能は、標準アーキテクチャまたはクラスタアーキテクチャを使用する クラウドネイティブ インスタンスでデフォルトで有効になっており、手動での構成は不要です。このトピックでは、クラスタアーキテクチャを例に説明します。
背景情報
デフォルトでは、マルチアベイラビリティゾーンデプロイメントは、クラスターインスタンスの各シャードのマスターノードとレプリカノードを、同一リージョン内の異なるアベイラビリティゾーンに配置します。これらのゾーンは、独立した電源とネットワークを持つ物理的に隔離された場所であり、インスタンスに高いディザスタリカバリ能力を提供します。
シャードのマスターノードに障害が発生すると、インスタンスは影響を最小限に抑えるために自動的にフェールオーバーをトリガーします。クライアントは通常、プライマリゾーンにデプロイされます。フェールオーバー前は、クライアントとマスターノードは同じアベイラビリティゾーンにあり、アクセス遅延は最小限に抑えられます。以下の図は、典型的な 3 シャードのクラスタアーキテクチャを示しています。
シャードのマスターノードに障害が発生すると、高可用性 (HA) システムはセカンダリゾーンのレプリカノードを新しいマスターノードに昇格させます。これにより、クライアントはアベイラビリティゾーンをまたいでインスタンスにアクセスする必要が生じ、アクセス遅延が大幅に増加します。
異なるアベイラビリティゾーン間のアクセス遅延は、単一のアベイラビリティゾーン内よりもはるかに高くなります。Alibaba Cloud のアベイラビリティゾーン間の平均レイテンシーの詳細については、「クラウドネットワークパフォーマンス」をご参照ください。
Tair (Redis OSS-compatible) は、パフォーマンス専有型、低遅延のインメモリデータベースであるため、高いネットワーク遅延はビジネスの応答時間に直接影響します。そのため、クラスターインスタンスのプライマリゾーンに追加のレプリカノードを追加することを推奨します。このアプローチにより、高いパフォーマンスと安定性、そして高いディザスタリカバリ能力のバランスを取ることができます。
-
マスターノードに障害が発生した場合、インスタンスは同じアベイラビリティゾーン内のレプリカノードに優先的にフェールオーバーします。フェールオーバー後も新しいマスターノードはプライマリゾーンにとどまるため、アクセス遅延の増加を防ぐことができます。
-
プライマリゾーンでゾーンレベルの障害が発生した場合、インスタンスはクロスゾーンフェイルオーバーを実行し、高いディザスタリカバリ能力を提供します。
仕組み
Tair (Redis OSS-compatible) では、クラスターインスタンスの各シャードに対して 2 から 5 個のノードを構成できます。
-
2 ノードの場合、デフォルトで 1 つのノードがプライマリゾーンに、もう 1 つがセカンダリゾーンにデプロイされます。
-
3 ノードの場合、デフォルトで 2 つのノードがプライマリゾーンに、1 つのノードがセカンダリゾーンにデプロイされます。
-
4 または 5 ノードの場合、残りのノードをプライマリゾーンとセカンダリゾーンに分散させることができます。
このトピックでは、次の図に示すように、3 シャード、3 ノードのクラスタアーキテクチャ (プライマリゾーンに 2 ノード、セカンダリゾーンに 1 ノード) を例として使用します。
シャードのマスターノードに障害が発生した場合、高可用性 (HA) システムはプライマリゾーンのレプリカノードを優先的に新しいマスターノードに昇格させます。次の図に示すように、クライアントは引き続き同じアベイラビリティゾーン内でインスタンスにアクセスするため、アクセス遅延の増加を防ぐことができます。
操作手順
-
インスタンスがない場合は、マルチアベイラビリティゾーンの クラウドネイティブ インスタンスを作成します。詳細については、「インスタンスの作成」をご参照ください。
プライマリゾーンに少なくとも 2 つのノードを確保するには、次の設定を構成します。設定ページで、[インテリジェント読み書き分離] を構成します ([無効] または [有効] を選択できます。この機能は、プロキシレス直接接続モードのクラスタアーキテクチャインスタンスでは利用できません)。[ノード数] を選択します。たとえば、[3 ノード] は、クラスタアーキテクチャの各シャードに 1 つのマスターノードと 2 つのレプリカノードを提供します。読み書き分離が有効な場合、レプリカノードは読み取りリクエストも処理できます。[ノード割り当て (プライマリ AZ)] のノード数を設定します。セカンダリゾーンのノード数は、「ノード数 - プライマリ AZ のノード数」として計算されます。プライマリゾーンとセカンダリゾーンの両方に少なくとも 2 つのノード、合計で少なくとも 4 つのノードを構成することを推奨します。
-
既存の単一アベイラビリティゾーンの クラウドネイティブ インスタンスがある場合は、まず「インスタンスをマルチアベイラビリティゾーンデプロイメントに移行」します。次に、「レプリカノードの追加または削除」ページで、プライマリゾーンのノード数を少なくとも 2 つに増やします。
-
既存のマルチアベイラビリティゾーンの クラウドネイティブ インスタンスがある場合は、「レプリカノードの追加または削除」ページでプライマリゾーンのノード数を少なくとも 2 つに増やします。[ノード分散 (アベイラビリティゾーン)] セクションで、プライマリゾーンの [操作] 列にある [変更] をクリックします。
-
クラシックデプロイモードを使用するインスタンスがある場合は、前述の要件を満たす新しいインスタンスを作成し、「同じ Alibaba Cloud アカウント内で DTS を使用して一方向同期を実行」して、新しいインスタンスにデータを移行します。