クロスリージョン レプリケーションの概要

このページでは、Memorystore for Valkey のクロスリージョン レプリケーションの概要について説明します。

クロスリージョン レプリケーションの管理手順については、クロスリージョン レプリケーションを使用するをご覧ください。

クロスリージョン レプリケーションを使用すると、プライマリ インスタンスからセカンダリ インスタンスを作成し、別のリージョンでインスタンスを読み取りに使用できるようにできます。セカンダリ インスタンスは、リージョン停止が発生した場合の障害復旧シナリオの冗長性も提供します。

このページで説明する重要なコンセプトは次のとおりです。

  • プライマリ インスタンス: 単一リージョンの読み取り / 書き込みインスタンス。
  • セカンダリ インスタンス: プライマリ インスタンスから非同期で複製される読み取り専用インスタンス。セカンダリ インスタンスの昇格と切り離しについては、クロスリージョン レプリケーションを管理する方法に記載されている detach タスクと switchover タスクをご覧ください。
  • レプリケータ ノード: セカンダリ インスタンスのフォロワー ノードに複製するプライマリ インスタンスのシャード内のノード。シャード内のプライマリ ノードまたはレプリカノードは、レプリケータの役割を果たすことができます。
  • フォロワー ノード: プライマリ インスタンス内のレプリケータ ノードから複製するセカンダリ インスタンス内のノード。セカンダリ インスタンスのプライマリ ノードのみがフォロワーのロールを持つことができます。
  • シャード数とスロットの割り当て: プライマリ インスタンスとセカンダリ インスタンスのシャード数とスロットの割り当ては同じです。

利点

Memorystore for Valkey のクロスリージョン レプリケーションのメリットは次のとおりです。

  • 障害復旧: プライマリ インスタンスのリージョンが利用できなくなった場合は、別のリージョンのセカンダリ インスタンスに切り離すか、切り替えて、読み取りリクエストと書き込みリクエストを処理できます。セカンダリ インスタンスは、切り替えコマンドや切り離しコマンドを発行せずに読み取りリクエストを処理します。
  • 地理的に分散したデータ: データを地理的に分散すると、データがユーザーに近づき、読み取りレイテンシが短縮されます。
  • 読み取りトラフィックの地理的ロード バランシング: 1 つのリージョンで接続が遅い場合や過負荷になった場合は、トラフィックを別のリージョンに転送できます。

機能の動作

このセクションでは、クロスリージョン レプリケーション機能の重要な動作について説明します。

  • インスタンスの容量をスケーリングする: プライマリ インスタンスのインスタンス容量をスケーリングすると、Memorystore for Valkey はセカンダリ インスタンスを自動的にスケーリングして、プライマリ インスタンスと一致させます。
  • レプリカ数をスケーリングする: ワークロードのニーズに基づいて、プライマリ インスタンスとセカンダリ インスタンスのレプリカ数を個別にスケーリングできます。レプリカ数の更新はローカルでのみ行われ、インスタンスのクロスリージョン レプリケーション コレクション内の他のインスタンスには伝播されません。
  • 停止の可能性のある期間に切り替える: 停止によりプライマリ インスタンスが使用できない場合でも、切り替えを実行してセカンダリ インスタンスをプロモートできます。停止が解決すると、使用不可のプライマリ インスタンスがセカンダリ インスタンスになります。
  • オンラインでセカンダリ インスタンスを作成する: プライマリ インスタンスにセカンダリ インスタンスを追加するときに、プライマリ インスタンスはオンラインのままになります。Memorystore for Valkey がセカンダリ インスタンスを作成している間、プライマリ インスタンスはリクエストを処理し、データを複製します。
  • セカンダリ インスタンスを作成する: セカンダリ インスタンスは最大 2 つまで作成できます。同じリージョンに配置することも、異なるリージョンに配置することもできます。既存のインスタンスをセカンダリ インスタンスにすることはできません。セカンダリ インスタンスとして追加できるのは、新しいインスタンスのみです。
  • 設定を同期する: Memorystore for Valkey は、ほとんどのインスタンス設定をプライマリ インスタンスとセカンダリ インスタンス間で自動的に同期します。これらの設定の詳細については、インスタンスの設定をご覧ください。
  • 料金: Memorystore for Valkey は、リージョン間レプリケーションに使用するお客様に対して、リージョン間レプリケーション用に Memorystore for Valkey がプロビジョニングするセカンダリ インスタンスの料金を請求します。Memorystore for Valkey がセカンダリ インスタンスにデプロイするノードとレプリカごとに、他のプライマリ インスタンスと同様に課金されます。また、異なるリージョンのインスタンス間でデータを転送すると、ネットワーク料金が発生します。
  • メンテナンス更新を実行する: クロスリージョン レプリケーションとの互換性を確保するため、セカンダリ インスタンスの作成中にプライマリ インスタンスでメンテナンス更新が行われることがあります。プライマリ インスタンスが必要なソフトウェア バージョンを実行していない場合、この更新が行われます。更新プロセスでは、セカンダリ インスタンスの作成時にレイテンシが追加されることがあります。詳細については、メンテナンスについてをご覧ください。

クロスリージョン レプリケーションを管理する方法

クロスリージョン レプリケーションには、次のタスクが含まれます。

  • セカンダリ インスタンスを作成する: プライマリ インスタンスからデータを継続的に複製するセカンダリ インスタンスを作成します。
  • セカンダリ インスタンスを表示する: レプリケーション グループ内のプライマリ インスタンスの名前や他のセカンダリ インスタンスなど、セカンダリ インスタンスに関する情報を表示します。
  • セカンダリ インスタンスの切り離し: セカンダリ インスタンスの切り離しは、セカンダリ インスタンスをプライマリ インスタンスから切り離すオペレーションです。これにより、読み取りと書き込みの両方に対応する機能的に完全な独立したインスタンスになります。切断オペレーションの後、セカンダリ インスタンスは、以前に関連付けられていたプライマリ インスタンスからデータを複製しなくなります。元のプライマリ インスタンスと新しく切り離されたインスタンス(以前のセカンダリ)は、互いに無関係な独立したインスタンスとして機能します。

    セカンダリ インスタンスを切断する理由は次のとおりです。

    • リージョン移行: Memorystore for Valkey リソースをプライマリ リージョンから別のリージョンに計画的な移行を実施します。
    • 障害復旧: プライマリ リージョンのリソースが使用できなくなった場合に、セカンダリ リージョンの Memorystore for Valkey リソースを速やかに有効にします。セカンダリ インスタンスがプライマリ インスタンスに完全に追いついていない場合、一部のデータが失われる可能性があります。
  • インスタンスを切り替える: 切り替えを実行して、プライマリ インスタンスとセカンダリ インスタンスのロールを入れ替えます。次のような理由で切り替えを行うことができます。

    • 障害復旧の設定をテストする
    • 実際の障害復旧シナリオで切り替える
    • ワークロードの移行を実行する

    切り替えが完了すると、Memorystore for Valkey はレプリケーションの方向を逆にします。以前のセカンダリ インスタンスは読み取りと書き込みの両方を受け入れるようになり、以前のプライマリ インスタンスは読み取り専用に切り替わります。

クロスリージョン レプリケーションのアーキテクチャの例

この図は、us-east1 リージョンのプライマリ インスタンスと、us-west1 リージョンと asia-east1 リージョンのセカンダリ インスタンスを示しています。レプリケーションの方向は常にプライマリ インスタンスからセカンダリ インスタンスです(この例では、us-east1 リージョンから他のリージョン)。

この図ではすべてのリージョンで同じ数のレプリカが示されていますが、クロスリージョン レプリケーションでは、要件に応じてレプリカの数を変更できます。

インスタンスの設定

このセクションでは、クロスリージョン レプリケーションを使用するプライマリ インスタンスとセカンダリ インスタンスで必要な設定、コピーされる設定、オーバーライドされる設定について説明します。また、プライマリ インスタンスで構成する設定と、ローカルで構成する設定についても説明します。

セカンダリ インスタンスの作成に必要なパラメータ

セカンダリ インスタンスを作成するには、次のパラメータの値を設定する必要があります。

  • Google Cloud プロジェクト: プライマリ インスタンスが配置され、セカンダリ インスタンスを作成するプロジェクト。
  • リージョン: セカンダリ インスタンスを配置するリージョン。
  • Private Service Connect 構成: セカンダリ インスタンスのネットワーク設定
  • プライマリ インスタンス: セカンダリ インスタンスを作成するときに、プライマリ インスタンスを指定する必要があります。セカンダリ インスタンス以外のインスタンスは、プライマリ インスタンスとして使用できます。プライマリ インスタンスがない場合は、作成します

セカンダリ インスタンスがプライマリ インスタンスからコピーする設定

セカンダリ インスタンスを作成すると、このインスタンスはプライマリ インスタンスから次の設定をコピーします。

デフォルト設定をオーバーライドする

セカンダリ インスタンスを作成するときに、次の設定を使用してデフォルト設定をオーバーライドできます。

インスタンスの設定を更新する

Memorystore for Valkey インスタンスの設定を更新する際に、一部の設定はプライマリ インスタンスでのみ変更できます。Memorystore for Valkey は、これらの変更をセカンダリ インスタンスに自動的に同期します。

プライマリ インスタンスとセカンダリ インスタンスの他の設定は個別に変更できます。Memorystore for Valkey は、これらの変更をローカルでのみ適用し、他のインスタンスと同期しません。

プライマリ インスタンスで設定を構成する

プライマリ インスタンスで次の設定を変更する必要があります。Memorystore for Valkey は、これらの変更をセカンダリ インスタンスと自動的に同期します。

ローカル設定を構成する

これらの設定はローカルで構成します。

プライマリ インスタンスとセカンダリ インスタンスの切り替えに関するベスト プラクティス

切り替えを実行する場合は、このセクションの手順に沿って行うことをおすすめします。これにより、アプリケーションは書き込みを追跡し、適切なインスタンスに書き込みを送信できます。

  1. アプリケーションによるプライマリ インスタンスへの書き込みを停止します。
  2. プロモートするセカンダリ インスタンスが複数ある場合は、プライマリ インスタンスにプロモートするセカンダリ インスタンスを決定します。次の要素は、昇格させるセカンダリ インスタンスを決定するのに役立ちます。

    • アプリケーションがインスタンスにどれだけ近いか。これは書き込みレイテンシに影響する可能性があります。
    • データに関して最も追いついているセカンダリ インスタンス。
    • 設定の点でプライマリ インスタンスに最も近いセカンダリ インスタンス。
  3. セカンダリ インスタンスで切り替えを実行する

  4. 切り替えオペレーションが完了するまで待ちます。

  5. ステップ 2 で選択した新しく昇格したインスタンスに書き込みを送信するようにアプリケーションを更新します。