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