このページでは、Memorystore for Valkey のクラスタ アーキテクチャがどのように高可用性(HA)をサポートし、提供するかについて説明します。このページでは、インスタンスのパフォーマンスと安定性の向上に役立つ推奨構成についても説明します。
高可用性
Memorystore for Valkey は、クライアントがマネージド Memorystore for Valkey VM に直接アクセスする高可用性アーキテクチャ上に構築されています。クライアントは、これを行うために、Memorystore for Valkey インスタンスに接続するで説明されているように、個々のシャード ネットワーク アドレスに接続します。
シャードに直接接続すると、次の利点があります。
直接接続では、各シャードが独立して障害が発生するように設計されているため、単一障害点が回避されます。たとえば、複数のクライアントからのトラフィックでスロット(キースペース チャンク)が過負荷状態になった場合、シャード障害により、そのスロットを処理するシャードへの影響が限定されます。
直接接続では中間ホップが回避され、クライアントと Valkey VM 間のラウンドトリップ時間(クライアントのレイテンシ)が最小限に抑えられます。
推奨構成
信頼性が高いため、シングルゾーン インスタンスではなく、高可用性のマルチゾーン インスタンスを作成することをおすすめします。ただし、レプリカのないインスタンスをプロビジョニングする場合は、シングルゾーン インスタンスを選択することをおすすめします。詳細については、インスタンスでレプリカを使用しない場合はシングルゾーン インスタンスを選択するをご覧ください。
インスタンスの高可用性を有効にするには、シャードごとに少なくとも 1 つのレプリカノードをプロビジョニングする必要があります。これはインスタンスを作成するときに行うか、シャードあたり 1 つ以上のレプリカにレプリカ数をスケーリングします。レプリカは、計画的なメンテナンス時や予期しないシャード障害が発生した場合に自動フェイルオーバーを提供します。
クライアントのベスト プラクティスのガイダンスに従ってクライアントを構成する必要があります。推奨されるベスト プラクティスを使用することで、クライアントはダウンタイムなしでインスタンスの役割(自動フェイルオーバー)とスロット割り当ての変更(ノードの交換、コンシューマのスケールアウト/イン)を自動的かつ適切に処理できます。
レプリカ
高可用性の Memorystore for Valkey インスタンスは、リージョン リソースです。つまり、ゾーンの停止から保護するため、シャードのプライマリ VM とレプリカ VM は複数のゾーンに分散されます。Memorystore for Valkey では、ノードあたり 0、1、または 2 個のレプリカを持つインスタンスがサポートされています。
レプリカを使用して、読み取りをスケーリングすることで、読み取りスループットを向上させることができます。これを行うには、READONLY
コマンドを使用して、クライアントがレプリカからの読み取りを可能にする接続を確立する必要があります。
ノードごとに 0 個のレプリカを持つインスタンス形状
ノードごとに 1 個のレプリカを持つインスタンス形状
ノードごとに 2 個のレプリカを持つインスタンス形状
自動フェイルオーバー
シャード内での自動フェイルオーバーは、メンテナンスやプライマリ ノードの予期しない障害が原因で発生することがあります。フェイルオーバー中、レプリカがプライマリに昇格されます。レプリカは明示的に構成できます。このサービスは、ダウンタイムを回避するために、内部メンテナンス中に追加のレプリカを一時的にプロビジョニングすることもできます。
自動フェイルオーバーにより、メンテナンス更新中のデータ損失を防ぐことができます。メンテナンス中の自動フェイルオーバーの動作の詳細については、メンテナンス中の自動フェイルオーバーの動作をご覧ください。
フェイルオーバーとノードの修復時間
自動フェイルオーバーは、プライマリ ノード プロセスのクラッシュやハードウェア障害などの計画外のイベントに対して数十秒程度かかることがあります。この間に、システムで障害が検出され、1 つのレプリカが新しいプライマリに選択されます。
ノードの修復には、障害が発生したノードがサービスによって置き換えられるまでに数分程度かかる場合があります。これは、すべてのプライマリ ノードとレプリカノードに当てはまります。高可用性でないインスタンス(レプリカがプロビジョニングされていない)の場合、障害が発生したプライマリ ノードの修復にも数分程度の時間がかかります。
計画外のフェイルオーバー時のクライアントの動作
障害の性質によっては、クライアント接続がリセットされる可能性があります。自動復旧後、プライマリ ノードとレプリカノードが過負荷にならないように、指数バックオフを使用して接続を再試行する必要があります。
読み取りスループットにレプリカを使用しているクライアントは、障害が発生したノードが自動的に置き換えられるまで一時的な容量低下に対して準備する必要があります。
書き込みの損失
予期しない障害によるフェイルオーバー中に、Valkey のレプリケーション プロトコルの非同期性のために、確認応答済みの書き込みが失われることがあります。
クライアント アプリケーションは、Valkey WAIT コマンドを利用して、実際のデータの安全性を向上させることができます。