クロスリージョン レプリケーションを使用する

クロスリージョン レプリケーションを使用すると、プライマリ クラスタからセカンダリ クラスタを作成して、異なるリージョンでクラスタを使用できます。プライマリ クラスタのリージョンが使用できなくなった場合は、別のリージョンのセカンダリ クラスタに切り離すか、切り替えて、読み取りリクエストと書き込みリクエストを処理できます。セカンダリ クラスタは、プライマリ クラスタから切り離したり、プライマリ クラスタに切り替えたりすることなく、読み取りリクエストを処理します。データを地理的に分散すると、データがユーザーに近づき、読み取りレイテンシが短縮されます。1 つのリージョンで接続が遅い場合や過負荷になった場合は、トラフィックを別のリージョンに転送できます。

アクセス制御リスト(ACL)ポリシー は、Memorystore for Redis Cluster のリージョン間で複製されません。クロスリージョン レプリケーション クラスタに ACL ポリシーを割り当てる場合は、クラスタに関連付けられている異なるリージョンでポリシーの整合性を管理する必要があります。

一貫性を維持するには、プライマリ クラスタとセカンダリ クラスタに割り当てられている各ポリシーを個別に更新して削除し、各ポリシーのルールが一貫していることを確認します。ACL ポリシーは相互にリンクされていないため、任意の順序でポリシーを変更および削除できます。

セカンダリ クラスタの作成

セカンダリ クラスタを作成すると、Memorystore for Redis Cluster はプライマリ クラスタ設定の一部をコピーしてセカンダリ クラスタ設定として適用します。詳細については、クラスタの設定をご覧ください。

Memorystore for Redis Cluster でセカンダリ クラスタを作成するには、 Google Cloud コンソールまたは Google Cloud CLI を使用します。

コンソール

  1. コンソール Google Cloud で、[Memorystore for Redis Cluster] ページに移動します。

    Memorystore for Redis Cluster

  2. プライマリ クラスタをクリックします。プライマリ クラスタは、作成するセカンダリ クラスタの親です。

  3. サイドパネルで、[セカンダリ クラスタ] タブをクリックします。

  4. [セカンダリ クラスタを追加] をクリックします。

  5. [セカンダリ クラスタを追加] ウィンドウで、次の変更を行います。

    1. [クラスタ ID] フィールドに、作成するセカンダリ クラスタの ID を入力します。ID は 1 ~ 63 文字にする必要があり、小文字、数字、ハイフンのみ使用できます。先頭は英小文字に、末尾は英小文字または数字にする必要があり、そのリージョンで一意である必要があります。

    2. [リージョン] メニューから、セカンダリ クラスタを配置するリージョンを選択します。

    3. [ゾーンの可用性] セクションで、次のいずれかのオプションを選択します。

      • Memorystore for Redis Cluster がクラスタを作成するリージョンの 3 つのゾーンにクラスタのすべてのシャードとレプリカを分散する場合は、[マルチゾーン] オプションを選択します。

        たとえば、選択したリージョンが us-central1 で、 [マルチゾーン] オプションを選択した場合、Memorystore for Redis Cluster はクラスタのシャードとレプリカを us-central1-aus-central1-bus-central1-c ゾーンに分散します。 ゾーン障害が発生した場合、クラスタ内のノードはレプリカにフェイルオーバーします。

      • Memorystore for Redis Cluster がクラスタを作成するリージョンの 1 つのゾーンにクラスタのすべてのシャードとレプリカを配置する場合は、[シングルゾーン] オプションを選択し、[ゾーン] メニューからゾーンを選択します。

        シングルゾーンを使用すると、ネットワーク費用を削減できます。ただし、ゾーン障害が発生した場合、フェイルオーバーは発生しません。

    4. [レプリカ] メニューから、クラスタのレプリカ数(シャードごと)を選択します。レプリカは 0、1、2 個にできます。

    5. [ネットワーク] メニューから、クラスタのネットワークを選択します。Memorystore for Redis Cluster のネットワーキングの詳細については、ネットワーキングをご覧ください。

  6. [セカンダリ クラスタを追加] をクリックします。

gcloud

セカンダリ クラスタを作成するには、gcloud redis clusters create コマンドを使用します。

gcloud redis clusters create CLUSTER_ID \
--project=PROJECT_ID \
--region=REGION_ID \
--cross-cluster-replication-role=secondary \
--network=NETWORK \
--primary-cluster=PRIMARY_CLUSTER_PATH

次のように置き換えます。

  • CLUSTER_ID: 作成するセカンダリ クラスタの ID。 ID は 1 ~ 63 文字にする必要があり、小文字、数字、ハイフンのみ使用できます。先頭は英小文字に、末尾は英小文字または数字にする必要があり、そのリージョンで一意である必要があります。
  • PROJECT_ID: セカンダリ クラスタを作成するプロジェクトの ID。これは、プライマリ クラスタが存在するプロジェクトと同じです。
  • REGION_ID: セカンダリ クラスタを配置するリージョンの ID。
  • NETWORK: クラスタの作成に使用するネットワーク。projects/NETWORK_PROJECT_ID/global/networks/NETWORK_ID の形式にする必要があります。使用する ネットワーク ID は、サービス接続ポリシー で使用するネットワーク ID と一致する必要があります。一致しない場合、セカンダリ クラスタを作成できません。
  • PRIMARY_CLUSTER_PATH: プライマリ クラスタのパス。例: projects/my-project/locations/us-central1/clusters/my-primary-cluster。 セカンダリ クラスタでない限り、プロジェクト内の任意のクラスタをプライマリ クラスタとして選択できます。

次に例を示します。

gcloud redis clusters create my-secondary-cluster \
--project=my-project \
--region=asia-east1 \
--cross-cluster-replication-role=secondary \
--network=projects/my-project/global/networks/default
--primary-cluster=projects/my-project/locations/us-central1/clusters/my-primary-cluster

セカンダリ クラスタを表示する

セカンダリ クラスタの概要情報は、 Google Cloud コンソールまたは Google Cloud CLI を使用して表示できます。

コンソール

  1. コンソール Google Cloud で、[Memorystore for Redis Cluster] ページに移動します。

    Memorystore for Redis Cluster

  2. プライマリ クラスタの横にある展開矢印をクリックします。このクラスタは、情報を表示するセカンダリ クラスタの親です。

  3. セカンダリ クラスタをクリックします。クラスタの概要情報が表示されます。

gcloud

レプリケーション グループ内のプライマリ クラスタとセカンダリ クラスタを一覧表示するメンバーシップ フィールド など、セカンダリ クラスタに関する情報を表示するには、 gcloud redis clusters describe コマンドを使用します。

gcloud redis clusters describe CLUSTER_ID \
--region=REGION_ID \

次のように置き換えます。

  • CLUSTER_ID: セカンダリ クラスタの ID
  • REGION_ID: セカンダリ クラスタが配置されているリージョンの ID

切り替えを行う

切り替えを行うと、障害復旧のためにセカンダリ クラスタをプライマリ クラスタに昇格させることで、プライマリ クラスタとセカンダリ クラスタのロールを入れ替えることができます。

切り替えを行うには、 Google Cloud コンソールまたは Google Cloud CLI を使用します。

コンソール

  1. コンソール Google Cloud で、[Memorystore for Redis Cluster] ページに移動します。

    Memorystore for Redis Cluster

  2. プライマリ クラスタの横にある展開矢印をクリックします。このクラスタは、切り替えるセカンダリ クラスタの親です。

  3. セカンダリ クラスタをクリックします。

  4. [プライマリに昇格] をクリックします。

  5. [セカンダリ クラスタをプライマリに昇格させますか?] ダイアログで、セカンダリ クラスタの ID を入力して [昇格] をクリックします。

切り替えが完了したら、アプリケーションを新しいプライマリ クラスタに再接続する必要があります。

gcloud

切り替えを行うには、gcloud redis clusters switchover コマンドを使用します。

gcloud redis clusters switchover CLUSTER_ID \
--project=PROJECT_ID \
--region=REGION_ID \

次のように置き換えます。

  • CLUSTER_ID: 切り替えるセカンダリ クラスタの ID
  • PROJECT_ID: プロジェクト ID
  • REGION_ID: セカンダリ クラスタが配置されているリージョンの ID

切り替えが完了したら、アプリケーションを新しいプライマリ クラスタに再接続する必要があります。

セカンダリ クラスタを切断する

1 つ以上のセカンダリ クラスタをプライマリ クラスタから切り離すと、読み取りと書き込みの両方に対応する機能的に完全な独立したクラスタになります。 詳細については、クロスリージョンレプリケーションを使用する方法をご覧ください。

セカンダリ クラスタを切断するには、 Google Cloud コンソールまたは Google Cloud CLIを使用します。

セカンダリ クラスタを切断する

このセクションでは、セカンダリ クラスタをプライマリ クラスタから切り離す方法について説明します。

コンソール

  1. コンソール Google Cloud で、[Memorystore for Redis Cluster] ページに移動します。

    Memorystore for Redis Cluster

  2. プライマリ クラスタをクリックします。これは、プライマリ クラスタから切り離すセカンダリ クラスタの親です。

  3. サイドパネルで、[セカンダリ クラスタ] タブをクリックします。

  4. プライマリ クラスタから切り離すセカンダリ クラスタの ID の横にあるチェックボックスをオンにします。

  5. [プライマリから切り離す] をクリックします。

  6. [セカンダリ クラスタを切断しますか?] ダイアログで、セカンダリ クラスタの ID を入力して [切り離す] をクリックします。

gcloud

セカンダリ クラスタを切断するには、gcloud redis clusters detach コマンドを使用します。

gcloud redis clusters detach CLUSTER_ID \
--project=PROJECT_ID \
--region=REGION_ID

次のように置き換えます。

  • CLUSTER_ID: 切り離すセカンダリ クラスタの ID
  • PROJECT_ID: プロジェクト ID
  • REGION_ID: セカンダリ クラスタが配置されているリージョンの ID

複数のセカンダリ クラスタを切断する

このセクションでは、複数のセカンダリ クラスタをプライマリ クラスタから切り離す方法について説明します。このセクションの手順を使用して、使用できないセカンダリ クラスタをプライマリ クラスタから切り離すこともできます。

コンソール

  1. コンソール Google Cloud で、[Memorystore for Redis Cluster] ページに移動します。

    Memorystore for Redis Cluster

  2. プライマリ クラスタをクリックします。これは、プライマリ クラスタから切り離すセカンダリ クラスタの親です。

  3. サイドパネルで、[セカンダリ クラスタ] タブをクリックします。

  4. プライマリ クラスタから切り離すセカンダリ クラスタの ID の横にあるチェックボックスをオンにします。

  5. [プライマリから切り離す] をクリックします。

  6. [セカンダリ クラスタを切断しますか?] ダイアログで、次の操作を行います。

    1. セカンダリ クラスタの ID を入力します。複数の ID がある場合は、カンマで区切ってください。

    2. [切り離す] をクリックします。

gcloud

複数のセカンダリ クラスタを切断するには、gcloud redis clusters detach-secondaries コマンドを使用します。

gcloud redis clusters detach-secondaries PRIMARY_CLUSTER_ID \
--clusters-to-detach=SECONDARY_CLUSTERS \
--project=PROJECT_ID \
--region=PRIMARY_CLUSTER_REGION_ID

次のように置き換えます。

  • PRIMARY_CLUSTER_ID: プライマリ クラスタの ID。
  • SECONDARY_CLUSTERS:切り離すセカンダリ クラスタ。複数のクラスタ ID がある場合は、カンマで区切ってください。各セカンダリ クラスタは、projects/PROJECT_ID/locations/REGION_ID/clusters/CLUSTER_ID の形式にする必要があります。
  • PROJECT_ID: プロジェクト ID。
  • PRIMARY_CLUSTER_REGION: プライマリ クラスタが配置されているリージョンの ID。

次に例を示します。

gcloud redis clusters detach-secondaries my-primary-cluster \
--clusters-to-detach=projects/my-project/locations/us-west4/clusters/my-secondary-cluster-1,projects/my-project/locations/asia-southeast2/clusters/my-secondary-cluster-2  \
--project=my-project \
--region=us-central1

クラスタ設定を更新する

このセクションでは、クラスタ設定を更新するためのリンクを示します。クラスタ設定を更新するプロセスは、プライマリ クラスタとセカンダリ クラスタのどちらの設定を変更するかによって異なります。設定を更新する方法の詳細については、クラスタの設定をご覧ください。

プライマリ クラスタの設定を更新する

プライマリ クラスタで次の設定を変更する必要があります。変更すると、Memorystore for Redis Cluster は変更をセカンダリ クラスタに同期します。

セカンダリ クラスタの設定を更新する

セカンダリ クラスタで次の設定を変更する必要があります。

クロスリージョン レプリケーションを使用するクラスタを削除する

このセクションでは、クロスリージョン レプリケーションを使用するプライマリ クラスタとセカンダリ クラスタを削除する方法について説明します。

プライマリ クラスタを削除する

プライマリ クラスタを削除するには、次の操作を行います。

  1. すべてのセカンダリ クラスタを切断または 削除します。
  2. プライマリ クラスタを削除するには、クラスタを削除するの手順に沿って操作します。

誤って削除しないように、プライマリ クラスタとセカンダリ クラスタを同時に削除することはできません。

セカンダリ クラスタを削除する

セカンダリ クラスタを削除するには、クラスタを削除するの手順に沿って操作します。クラスタ ID には、セカンダリ クラスタの ID を使用します。