複数のリージョンでの復元

このページでは、複数のリージョンで Cassandra を回復または復元する方法について説明します。

マルチリージョン デプロイでは、Apigee ハイブリッドがさまざまなデータセンターの複数の地理的位置にデプロイされます。1 つ以上のリージョンで障害が発生しても正常なリージョンが残っていれば、正常なリージョンを使用して障害が発生した Cassandra リージョンを最新のデータで復元できます。

すべてのハイブリッド リージョンで致命的な障害が発生した場合、Cassandra を復元できます。デプロイに複数の Apigee 組織が存在する場合、復元プロセスではすべての組織のデータが復元されることに注意してください。複数組織の設定では、特定の組織のみ復元することはできません

このトピックでは、障害が発生したリージョンを救済するために、次の 2 つのアプローチについて説明します。

障害が発生したリージョンを復旧する

障害が発生したリージョンを正常なリージョンから復元するには、次の手順に沿います。

  1. 影響を受けたリージョンから正常に動作するリージョンに API トラフィックをリダイレクトします。障害が発生したリージョンから迂回されるトラフィックに対応できるよう容量を適宜計画します。
  2. 影響を受けたリージョンを廃止します。影響を受けた各リージョンに対して、ハイブリッド リージョンを廃止するで説明されている操作を行います。廃止が完了するまで待ってから次のステップに進みます。

  3. 影響を受けたリージョンを復元します。復元するには、GKE、GKE On-Prem、AKS でのマルチリージョン デプロイの説明に沿って、新しいリージョンを作成します。

バックアップからの復元

Cassandra のバックアップは、構成に基づいて、Cloud Storage 上またはリモート サーバー上のいずれかに存在します。バックアップから Cassandra を復元するには、次の手順に沿って操作します。

  1. 復元するリージョンのオーバーライド ファイルを開きます。
  2. cassandra:hostNetworkfalse に設定します。
  3. オーバーライド ファイルを適用します。
    helm upgrade datastore apigee-datastore/ \
      --install \
      --namespace apigee \
      -f OVERRIDES_FILE
    
  4. 続行する前に、hostNetworkfalse に設定されていることを確認します。
    kubectl -n apigee get apigeeds -o=jsonpath='{.items[].spec.components.cassandra.hostNetwork}'
  5. 復元するリージョンからハイブリッドを削除します。
    helm delete DATASTORE_RELEASE_NAME \
      --namespace apigee
    

    ここで、DATASTORE_RELEASE_NAME は、Cassandra をリージョンにインストールしたデータストアのリリース名です(例: datastore-region1)。

  6. バックアップから目的のリージョンを復元します。詳細については、バックアップからのリージョンの復元をご覧ください。

  7. 削除したリージョンの参照を削除し、復元したリージョンの参照を KeySpaces メタデータに追加します。
  8. nodetool status オプションを使用して、Cassandra データセンター名を取得します。
    kubectl exec -n apigee -it apigee-cassandra-default-0 -- bash
          nodetool  -u APIGEE_JMX_USER -pw APIGEE_JMX_PASSWORD status |grep -i Datacenter

    ここで

    • APIGEE_JMX_USER は、Cassandra JMX オペレーション ユーザーのユーザー名です。Cassandra JMX インターフェースの認証と通信に使用されます。cassandra:auth:jmx:username を参照してください。
    • APIGEE_JMX_PASSWORD は、Cassandra JMX オペレーション ユーザーのパスワードです。cassandra:auth:jmx:password を参照してください。
  9. KeySpaces レプリケーションを更新します。
    1. クライアント コンテナを作成し、CQL インターフェースから Cassandra クラスタに接続します。
    2. CQL インターフェースからユーザー キースペースのリストを取得します。
      cqlsh CASSANDRA_SEED_HOST -u APIGEE_DDL_USER -p APIGEE_DDL_PASSWORD
            --ssl -e "select keyspace_name from system_schema.keyspaces;"|grep -v system

      ここで

      • CASSANDRA_SEED_HOST は、Cassandra マルチリージョンのシードホストです。ほとんどのマルチリージョン インストールでは、最初のリージョンのホストの IP アドレスを使用します。Apigee ハイブリッドをマルチリージョン用に構成するcassandra:externalSeedHost をご覧ください。
      • APIGEE_DDL_USERAPIGEE_DDL_PASSWORD は、Cassandra データ定義言語(DDL)の管理者ユーザーの名前とパスワードです。デフォルト値は ddl_useriloveapis123 です。

        構成プロパティのリファレンスの cassandra.auth.ddl.password と Apache Cassandra cqlsh ドキュメントのコマンドライン オプションをご覧ください。

    3. キースペースごとに、CQL インターフェースから次のコマンドを実行して、レプリケーション設定を更新します。
      ALTER KEYSPACE KEYSPACE_NAME WITH replication = {'class': 'NetworkTopologyStrategy', 'DATACENTER_NAME':3};

      ここで

      • KEYSPACE_NAME は、前の手順の出力に示されているキースペースの名前です。
      • DATACENTER_NAME は、手順 8 で nodetool status オプションを使用して取得した Cassandra データセンターの名前です。