このページでは、複数のリージョンで Cassandra を回復または復元する方法について説明します。
マルチリージョン デプロイでは、Apigee ハイブリッドがさまざまなデータセンターの複数の地理的位置にデプロイされます。1 つ以上のリージョンで障害が発生しても正常なリージョンが残っていれば、正常なリージョンを使用して障害が発生した Cassandra リージョンを最新のデータで復元できます。
すべてのハイブリッド リージョンで致命的な障害が発生した場合、Cassandra を復元できます。デプロイに複数の Apigee 組織が存在する場合、復元プロセスではすべての組織のデータが復元されることに注意してください。複数組織の設定では、特定の組織のみ復元することはできません。
このトピックでは、障害が発生したリージョンを救済するために、次の 2 つのアプローチについて説明します。
- 障害が発生したリージョンを復旧する - 正常なリージョンに基づいて障害が発生したリージョンを復元する手順を説明します。
- 障害が発生したリージョンを復元する - 障害が発生したリージョンをバックアップから復元する手順を説明します。このアプローチは、すべてのハイブリッド リージョンが影響を受ける場合にのみ必要です。
障害が発生したリージョンを復旧する
障害が発生したリージョンを正常なリージョンから復元するには、次の手順に沿います。
- 影響を受けたリージョンから正常に動作するリージョンに API トラフィックをリダイレクトします。障害が発生したリージョンから迂回されるトラフィックに対応できるよう容量を適宜計画します。
- 影響を受けたリージョンを廃止します。影響を受けた各リージョンに対して、ハイブリッド リージョンを廃止するで説明されている操作を行います。廃止が完了するまで待ってから次のステップに進みます。
- 影響を受けたリージョンを復元します。復元するには、GKE、GKE On-Prem、AKS でのマルチリージョン デプロイの説明に沿って、新しいリージョンを作成します。
バックアップからの復元
Cassandra のバックアップは、構成に基づいて、Cloud Storage 上またはリモート サーバー上のいずれかに存在します。バックアップから Cassandra を復元するには、次の手順に沿って操作します。
- 復元するリージョンのオーバーライド ファイルを開きます。
cassandra:hostNetwork
をfalse
に設定します。- オーバーライド ファイルを適用します。
Helm
helm upgrade datastore apigee-datastore/ \ --install \ --namespace apigee \ -f OVERRIDES_FILE
apigeectl
$APIGEECTL_HOME/apigeectl apply -f YOUR_OVERRIDES_FILE.yaml
- 続行する前に、
hostNetwork
がfalse
に設定されていることを確認します。kubectl -n apigee get apigeeds -o=jsonpath='{.items[].spec.components.cassandra.hostNetwork}'
- 復元するリージョンからハイブリッドを削除します。
Helm
helm delete DATASTORE_RELEASE_NAME \ --namespace apigee
ここで、DATASTORE_RELEASE_NAME は、Cassandra をリージョンにインストールしたデータストアのリリース名です(例:
datastore-region1
)。apigeectl
$APIGEECTL_HOME/apigeectl delete -f YOUR_OVERRIDES_FILE.yaml
-
バックアップから目的のリージョンを復元します。詳細については、バックアップからのリージョンの復元をご覧ください。
- 削除したリージョンの参照を削除し、復元したリージョンの参照を
KeySpaces
メタデータに追加します。 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
を参照してください。
- APIGEE_JMX_USER は、Cassandra JMX オペレーション ユーザーのユーザー名です。Cassandra JMX インターフェースの認証と通信に使用されます。
KeySpaces
レプリケーションを更新します。- クライアント コンテナを作成し、CQL インターフェースから Cassandra クラスタに接続します。
- 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_USER と APIGEE_DDL_PASSWORD は、Cassandra データ定義言語(DDL)の管理者ユーザーの名前とパスワードです。デフォルト値は
ddl_user
とiloveapis123
です。構成プロパティのリファレンスの
cassandra.auth.ddl.password
と Apache Cassandra cqlsh ドキュメントのコマンドライン オプションをご覧ください。
- CASSANDRA_SEED_HOST は、Cassandra マルチリージョンのシードホストです。ほとんどのマルチリージョン インストールでは、最初のリージョンのホストの IP アドレスを使用します。Apigee ハイブリッドをマルチリージョン用に構成すると
- キースペースごとに、CQL インターフェースから次のコマンドを実行して、レプリケーション設定を更新します。
ALTER KEYSPACE KEYSPACE_NAME WITH replication = {'class': 'NetworkTopologyStrategy', 'DATACENTER_NAME':3};
ここで
- KEYSPACE_NAME は、前の手順の出力に示されているキースペースの名前です。
- DATACENTER_NAME は、手順 8 で
nodetool status
オプションを使用して取得した Cassandra データセンターの名前です。