このページでは、Memorystore for Redis Cluster のクロスリージョン レプリケーションの概要について説明します。
クロスリージョン レプリケーションの管理手順については、クロスリージョン レプリケーションを使用するをご覧ください。
クロスリージョン レプリケーションを使用すると、プライマリ クラスタからセカンダリ クラスタを作成し、別のリージョンでクラスタを読み取りに使用できるようにできます。セカンダリ クラスタは、リージョンが停止した場合の障害復旧シナリオの冗長性も提供します。
このページで説明する重要なコンセプトは次のとおりです。
- プライマリ クラスタ。単一リージョンの読み取り / 書き込みクラスタ。
- セカンダリ クラスタ。プライマリ クラスタから非同期で複製される読み取り専用クラスタ。セカンダリ クラスタの昇格と切り離しについては、クロスリージョン レプリケーションを管理する方法に記載されている detach タスクと switchover タスクをご覧ください。
- レプリケータ ノード: セカンダリ クラスタのフォロワー ノードに複製するプライマリ クラスタのシャード内のノード。シャード内のプライマリ ノードまたはレプリカノードは、レプリケータの役割を果たすことができます。
- フォロワー ノード: プライマリ クラスタ内のレプリケータ ノードからレプリケートするセカンダリ クラスタ内のノード。セカンダリ クラスタのプライマリ ノードのみがフォロワーのロールを持つことができます。
- シャード数とスロット割り当て: プライマリ クラスタとセカンダリ クラスタのシャード数とスロット割り当ては同じです。
利点
Memorystore for Redis Cluster のクロスリージョン レプリケーションのメリットは次のとおりです。
- 障害復旧: プライマリ クラスタのリージョンが利用できなくなった場合は、別のリージョンのセカンダリ クラスタに切り離すか、切り替えて、読み取りリクエストと書き込みリクエストを処理できます。セカンダリ クラスタは、スイッチオーバー コマンドや切り離しコマンドを発行せずに読み取りリクエストを処理します。
- 地理的に分散したデータ: データを地理的に分散すると、データがユーザーに近づき、読み取りレイテンシが短縮されます。
- 読み取りトラフィックの地理的ロード バランシング: あるリージョンで接続が遅い場合や過負荷になった場合は、トラフィックを別のリージョンに転送できます。
機能の動作
このセクションでは、クロスリージョン レプリケーション機能の重要な動作について説明します。
- クラスタ容量をスケーリングする: プライマリ クラスタの容量をスケーリングすると、Memorystore for Redis Cluster はセカンダリ クラスタを自動的にスケーリングして、プライマリ クラスタと一致させます。
- レプリカ数をスケーリングする: ワークロードのニーズに基づいて、プライマリ クラスタとセカンダリ クラスタのレプリカ数を個別にスケーリングできます。レプリカ数の更新はローカルでのみ行われ、クラスタのクロスリージョン レプリケーション コレクション内の他のクラスタには伝播されません。
- 停止の可能性のある期間に切り替える: 停止によりプライマリ クラスタが使用できない場合でも、切り替えを実行してセカンダリ クラスタをプロモートできます。停止が解決すると、使用不可のプライマリ クラスタがセカンダリ クラスタになります。
- オンラインのセカンダリ クラスタを作成する: セカンダリ クラスタをプライマリ クラスタに追加するときに、プライマリ クラスタはオンラインのままになります。Memorystore for Redis Cluster がセカンダリ クラスタを作成している間、プライマリ クラスタはリクエストを処理し、データを複製します。
- セカンダリ クラスタを作成する: セカンダリ クラスタは最大 2 つまで作成できます。同じリージョンに配置することも、異なるリージョンに配置することもできます。既存のクラスタをセカンダリ クラスタにすることはできません。セカンダリ クラスタとして追加できるのは、新しいクラスタのみです。
- 設定の同期: Memorystore for Redis Cluster は、ほとんどのクラスタ設定をプライマリ クラスタとセカンダリ クラスタ間で自動的に同期します。これらの設定の詳細については、クラスタ設定をご覧ください。
- 料金: Memorystore for Redis Cluster は、リージョン間レプリケーションに使用するお客様に対して、Memorystore for Redis Cluster がリージョン間レプリケーション用にプロビジョニングするセカンダリ クラスタの料金を請求します。Memorystore for Redis Cluster がセカンダリ クラスタにデプロイするノードとレプリカごとに、他のプライマリ クラスタと同様に課金されます。また、異なるリージョン内のクラスタ間でデータを転送すると、ネットワーク料金が発生します。
- メンテナンス アップデートを実行する: クロスリージョン レプリケーションとの互換性を確保するため、セカンダリ クラスタの作成中に、プライマリ クラスタでメンテナンス アップデートが行われることがあります。プライマリ クラスタが必要なソフトウェア バージョンを実行していない場合、この更新が行われます。更新プロセスでは、セカンダリ クラスタの作成時に遅延が発生する可能性があります。詳細については、メンテナンスについてをご覧ください。
クロスリージョン レプリケーションを管理する方法
クロスリージョン レプリケーションには、次のタスクが含まれます。
- セカンダリ クラスタを作成する: プライマリ クラスタからデータを継続的に複製するセカンダリ クラスタを作成します。
- セカンダリ クラスタを表示する: レプリケーション グループ内のプライマリ クラスタと他のセカンダリ クラスタの名前など、セカンダリ クラスタに関する情報を表示します。
セカンダリ クラスタの接続解除: セカンダリ クラスタの接続解除は、セカンダリ クラスタをプライマリ クラスタから切り離すオペレーションです。これにより、読み取りと書き込みの両方に対応する機能的に完全な独立したクラスタになります。切断オペレーションの後、セカンダリ クラスタは、以前に関連付けられていたプライマリ クラスタのデータを複製しなくなります。元のプライマリ クラスタと新しく切り離されたクラスタ(以前のセカンダリ)は、互いに依存関係のない独立したクラスタとして機能します。
セカンダリ クラスタを切り離す理由は次のとおりです。
- リージョン移行: Memorystore for Redis Cluster リソースをプライマリ リージョンから別のリージョンに計画的に移行します。
- 障害復旧: プライマリ リージョンのリソースが使用できなくなった場合に、セカンダリ リージョンの Memorystore for Redis Cluster リソースを速やかに有効にします。セカンダリ クラスタがプライマリ クラスタに完全に追いついていない場合、一部のデータが失われる可能性があります。
クラスタを切り替える: 切り替えを実行して、プライマリ クラスタとセカンダリ クラスタのロールを入れ替えます。次のような理由で切り替えを行うことができます。
- 障害復旧の設定をテストする
- 実際の障害復旧シナリオで切り替える
- ワークロードの移行を実行する
スイッチオーバーが完了すると、Memorystore for Redis Cluster はレプリケーションの方向を逆にします。以前のセカンダリ クラスタは読み取りと書き込みの両方を受け入れるようになり、以前のプライマリ クラスタは読み取り専用に切り替わります。
クロスリージョン レプリケーションのアーキテクチャ例
この図は、us-east1 リージョンのプライマリ クラスタと、us-west1 リージョンと asia-east1 リージョンのセカンダリ クラスタを示しています。レプリケーションの方向は常にプライマリ クラスタからセカンダリ クラスタです(この例では、us-east1 リージョンから他のリージョン)。
この図ではすべてのリージョンで同じ数のレプリカが示されていますが、クロスリージョン レプリケーションでは、要件に応じてレプリカの数を変更できます。

クラスタの設定
このセクションでは、クロスリージョン レプリケーションを使用するプライマリ クラスタとセカンダリ クラスタで必要な設定、コピーされる設定、オーバーライドされる設定について説明します。また、プライマリ クラスタで構成する設定と、ローカルで構成する設定についても説明します。
セカンダリ クラスタの作成に必要なパラメータ
セカンダリ クラスタを作成するには、次のパラメータの値を設定する必要があります。
- Google Cloud project: プライマリ クラスタが配置され、セカンダリ クラスタを作成するプロジェクト。
- リージョン: セカンダリ クラスタを配置するリージョン。
- Private Service Connect 構成: セカンダリ クラスタのネットワーク設定。
- プライマリ クラスタ: セカンダリ クラスタを作成するときに、プライマリ クラスタを指定する必要があります。セカンダリ クラスタ以外のクラスタは、プライマリ クラスタとして使用できます。プライマリ クラスタがない場合は、作成します。
セカンダリ クラスタがプライマリ クラスタからコピーする設定
セカンダリ クラスタを作成すると、このクラスタはプライマリ クラスタから次の設定をコピーします。
デフォルト設定をオーバーライドする
セカンダリ クラスタを作成するときに、次の設定を使用してデフォルト設定をオーバーライドできます。
クラスタ設定を更新する
Memorystore for Redis Cluster でクラスタの設定を更新する場合、一部の設定はプライマリ クラスタでのみ変更できます。Memorystore for Redis Cluster は、これらの変更をセカンダリ クラスタに自動的に同期します。
プライマリ クラスタとセカンダリ クラスタの他の設定は個別に変更できます。Memorystore for Redis Cluster は、これらの変更をローカルでのみ適用し、他のクラスタと同期しません。
プライマリ クラスタで設定を構成する
プライマリ クラスタで次の設定を変更する必要があります。Memorystore for Redis Cluster は、これらの変更をセカンダリ クラスタと自動的に同期します。
ローカル設定を構成する
次の設定をローカルで構成します。
プライマリ クラスタとセカンダリ クラスタの切り替えに関するベスト プラクティス
切り替えを実行する場合は、このセクションの手順に沿って行うことをおすすめします。これにより、アプリケーションは書き込みを追跡し、適切なクラスタに書き込みを送信できます。
- アプリケーションによるプライマリ クラスタへの書き込みを停止します。
プロモートするセカンダリ クラスタが複数ある場合は、プライマリ クラスタにプロモートするセカンダリ クラスタを決定します。次の要素は、昇格するセカンダリ クラスタを決定する際に役立ちます。
- アプリケーションがクラスタにどれだけ近いか。これは書き込みレイテンシに影響する可能性があります。
- データに関して最も追いついているセカンダリ クラスタ。
- 設定の点でプライマリ クラスタに最も近いセカンダリ クラスタ。
切り替えオペレーションが完了するまで待ちます。
手順 2 で選択した新しく昇格したクラスタに書き込みを送信するようにアプリケーションを更新します。