Distributed Cacheは、同一リージョン(Region)内の複数のアベイラビリティーゾーン(Availability Zone、略称AZ)にまたがってノードレプリカをデプロイできます。プライマリノードとレプリカノードを同一の物理マシンルームに配置する「シングルアベイラビリティーゾーンインスタンス」(ホスト、ラックレベルの災害対策のみ)と比較して、マルチアベイラビリティーゾーンデプロイではノードを異なる独立した物理マシンルームに拡張し、アベイラビリティーゾーンレベル(Zone-level)の物理災害対策能力を提供します。これにより、マシンルームのネットワーク切断や停電など、単一アベイラビリティーゾーンの障害が業務に与える影響を低減できます。
|
単一アベイラビリティーゾーンでのデプロイ | ホストレベル、ラックレベルの災害対策 |
マルチアベイラビリティーゾーンでのデプロイ | ホストレベル、ラックレベル、アベイラビリティーゾーンレベルの災害対策 |
デプロイメントアーキテクチャ
マルチアベイラビリティーゾーンインスタンスのアーキテクチャ特徴は、プライマリノードとレプリカノードがそれぞれ同一リージョン内の異なるアベイラビリティーゾーンにデプロイされ、2つのアベイラビリティーゾーン間がTencent Cloudの内部ネットワークで低遅延に相互接続され、インスタンスが外部に対して単一の統一アクセスアドレス(VIP:Port)を引き続き提供することです。下図は、2つのアベイラビリティーゾーンにおける1プライマリ3レプリカのデプロイを例に、典型的なマルチアベイラビリティーゾーントポロジーを示しています:
|
インスタンスの統一アクセスアドレス | インスタンスは外部に一意のVIP:Portを提供し、全リージョンからアクセスできます。クライアントがVIPを介してインスタンスに接続すると、システムはリクエストをクライアントが所在するアベイラビリティーゾーンのProxyに自動的にルーティングします。インスタンスにどのようなHA切り替えが発生しても、VIPは変更されず、業務は接続情報を変更する必要はありません。 |
プライマリアベイラビリティーゾーン | マスターノード(Master)が所在するアベイラビリティーゾーンであり、インスタンスの書き込みリクエストを処理します。コンソールから手動で変更しない限り、プライマリアベイラビリティーゾーンは変更されません。 |
スタンバイアベイラビリティーゾーン | レプリカノードのみを配置するアベイラビリティーゾーンであり、プライマリアベイラビリティーゾーンと共にアベイラビリティーゾーン単位の災害対策を担います。 |
Proxy | 各アベイラビリティーゾーン内にProxyを独立してデプロイし、クライアントからのリクエストを受信して対応するノードへルーティングします。クライアントがVIPを介して接続すると、システムはクライアントが所在するアベイラビリティーゾーンのProxyへ近接ルーティングし、接続遅延を低減します。 |
マスターノード | インスタンス内で書き込みリクエストを処理するノードであり、プライマリアベイラビリティーゾーンにデプロイされます。 |
レプリカノード | データ冗長化と高可用性を担うノードであり、アベイラビリティーゾーンをまたがって分散配置されます(プライマリアベイラビリティーゾーンに1個 + セカンダリアベイラビリティーゾーンに2個)。これらが連携してアベイラビリティーゾーン単位の災害対策を実現します。 |
アベイラビリティーゾーンを跨る高可用性
マルチアベイラビリティーゾーンインスタンスは、プライマリノード障害とアベイラビリティーゾーン障害の2つのシナリオにおいて、自動災害対策切り替え機能を提供します。
自動フェイルオーバー
マスターノードが所在するホストまたはプライマリアベイラビリティーゾーンに障害が発生した場合、システムはデータが最新のレプリカノードを1つ自動的に選出して新しいマスターノードに昇格させ、業務は自動的に読み書きを再開します。マスター選出プロセスは以下の原則に従います:
1. データ最新優先:データ複製の進捗が元のプライマリノードに最も近いレプリカノードが優先的に新しいプライマリノードとして選出され、データ損失を可能な限り低減します。
2. プライマリアベイラビリティーゾーン優先:データの進捗が同じ場合、プライマリアベイラビリティーゾーン内のレプリカノードが優先的にマスターに選出されます。これにより、アベイラビリティーゾーンをまたぐアクセスが業務遅延に与える影響を低減します。
自動フェイルバック(Auto Failback)
マスターノードがバックアップアベイラビリティーゾーンに切り替わった後、プライマリアベイラビリティーゾーンの状態は一時的な状態に属します。元のプライマリアベイラビリティーゾーンの障害が復旧し、かつ切り替え条件を満たした場合、システムは自動的にマスターノードをプライマリアベイラビリティーゾーンに戻し、障害後の運用保守操作を簡素化します。詳細なメカニズムについては、自動切り戻しを参照してください。 説明:
自動切り戻しプロセスは業務に無影響ですが、業務がブロッキング系コマンド(BLPOP、BRPOP、BLPUSHなど)を使用している場合、ブロッキング接続が中断される可能性があり、クライアントに自動再接続機能が必要です。
アベイラビリティーゾーンを跨るアクセス
レプリカ読み取り専用が無効
レプリカ読み取り専用(読み書き分離)を有効にしていないインスタンスでは、読み書きリクエストはすべて現在のアベイラビリティーゾーンのProxyを経由してプライマリノードにルーティングされ、データの一貫性を保証するとともに、最大でも1回のみのAZ越えを保証します。
レプリカ読み取り専用を有効にする
レプリカ読み取り専用(読み書き分離)を有効にしたインスタンスでは、書き込みリクエストは現在のアベイラビリティーゾーンのProxyを経由してプライマリノードにルーティングされます。読み取りリクエストは優先的に現在のアベイラビリティーゾーンのレプリカノードにルーティングされ、業務の近接アクセスと低遅延の要件を満たします。同時に、読み取りトラフィックは他のアベイラビリティーゾーンの読み取り専用レプリカに分散することもでき、読み書きトラフィックの分離を実現し、プライマリノードの読み取り負荷を大幅に軽減します。
デプロイメントの推奨
2つのアベイラビリティーゾーンへのデプロイメント
2つのアベイラビリティーゾーンに1プライマリ3レプリカをデプロイし、プライマリアベイラビリティーゾーンには1プライマリ1レプリカ、バックアップアベイラビリティーゾーンには2つのレプリカを配置します。2つのアベイラビリティーゾーンでCLBを構成し、各アベイラビリティーゾーンに2つのノードを配置することで、単一ノード障害時に読み取りリクエストがアベイラビリティーゾーンをまたがないことを保証し、単一アベイラビリティーゾーンの障害後もマスター/バックアップの高可用性を維持できます。このソリューションは、可用性とアクセス遅延に対する要件が高いシナリオに適しています。
3つのアベイラビリティーゾーンへのデプロイメント
3つのアベイラビリティーゾーンに1プライマリ2レプリカをデプロイし、各アベイラビリティーゾーンに1つのノードを配置します。このソリューションは、最小限のレプリカ数で3つのアベイラビリティーゾーンにわたる災害対策分散を実現し、任意の単一ノードまたは単一アベイラビリティーゾーンの障害後もマスター/バックアップの高可用性を維持します。ただし、プライマリアベイラビリティーゾーン内にレプリカを保持しないため、マスターノードのフェイルオーバー後にプライマリアベイラビリティーゾーンが変更され、アベイラビリティーゾーンをまたぐアクセスの割合が相対的に高くなります。可用性に対する要件が極めて高く、遅延に敏感でない業務シナリオに適しています。
関連操作
コンソールで単一アベイラビリティーゾーンからマルチアベイラビリティーゾーンへアップグレードする方法については、アベイラビリティーゾーンの変更を参照してください。 コンソールで読み書き分離機能を有効化または無効化する方法については、レプリカ読み取り専用を参照してください。 マルチアベイラビリティーゾーンでデプロイされたインスタンスは自動フェイルオーバー機能をサポートし、サービスの可用性を保証します。詳細は障害シミュレーションを参照してください。 マルチアベイラビリティーゾーンでデプロイされたインスタンスは自動切り戻し機能(Auto Failback)を提供します。詳細は自動切り戻しを参照してください。 マルチアベイラビリティーゾーンでデプロイされたインスタンスは手動プライマリ昇格機能をサポートします。お客様は業務要件に応じて、プライマリノードを指定したアベイラビリティーゾーンまたは指定したレプリカ(グループ)にデプロイできます。詳細はレプリカのプライマリ昇格を参照してください。 マルチアベイラビリティーゾーンデプロイでは、業務のサービスアクセス遅延を低減するため、Distributed Cacheは近接アクセス機能を提供します。詳細は近接アクセスを参照してください。