このページでは、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 個のレプリカを持つインスタンス形状
自動フェイルオーバー
シャード内の自動フェイルオーバーは、メンテナンスやプライマリ ノードの予期しない障害が原因で発生することがあります。フェイルオーバー中に、レプリカがプライマリに昇格します。レプリカは明示的に構成できます。また、内部メンテナンス中に追加のレプリカを一時的にプロビジョニングして、ダウンタイムを回避することもできます。
自動フェイルオーバーにより、メンテナンス アップデート中のデータを失うことがなくなります。メンテナンス中の自動フェイルオーバーの動作の詳細については、メンテナンス中の自動フェイルオーバーの動作をご覧ください。
フェイルオーバーとノードの修復時間
プライマリ ノードのプロセスのクラッシュやハードウェア障害などの計画外のアクティビティが発生した場合、自動フェイルオーバーに数十秒かかることがあります。この間に、システムは障害を検出し、レプリカを新しいプライマリとして選択します。
ノード修復では、サービスが障害が発生したノードを置き換えるまでに数分かかることがあります。これは、すべてのプライマリ ノードとレプリカ ノードに当てはまります。高可用性ではないインスタンス(レプリカがプロビジョニングされていないインスタンス)の場合、障害が発生したプライマリ ノードの修復にも数分かかることがあります。
計画外のフェイルオーバー中のクライアントの動作
障害の性質によっては、クライアント接続がリセットされる可能性があります。自動復旧後、プライマリ ノードとレプリカ ノードの過負荷を回避するために、指数バックオフを使用して接続を再試行する必要があります。
読み取りスループット用にレプリカを使用するクライアントは、障害が発生したノードが自動的に置き換えられるまで、一時的に容量が低下する可能性があることに備える必要があります。
失われた書き込み
予期しない障害によるフェイルオーバー中に、Valkyrie のレプリケーション プロトコルが非同期であるため、確認済みの書き込みが失われる可能性があります。
クライアント アプリケーションは、Valkey WAIT コマンドを使用して、実際のデータの安全性を向上させることができます。