このページでは、単一リージョンで Cassandra を復元する方法について説明します。
単一リージョンのデプロイでは、Apigee ハイブリッドは単一のデータセンターまたはリージョンにデプロイされます。デプロイに複数の Apigee 組織がある場合、復元プロセスではすべての組織のデータが復元されます。複数組織の設定で、特定の組織を復元することはできません。
リージョンをバックアップから復元する
Apigee ハイブリッドに使用している管理ツールに応じて、以下の手順を選択してください。
Helm
-
overrides.yaml
ファイル内の Cassandra 復元の詳細を更新します。namespace: YOUR_RESTORE_NAMESPACE # Use the same namespace as in your original cluster. cassandra: hostNetwork: false ... restore: enabled: true serviceAccountPath: "SA_JSON_FILE_PATH" dbStorageBucket: "CLOUD_STORAGE_BUCKET_PATH" cloudProvider: "GCP" # required verbatim "GCP" (all caps) snapshotTimestamp: "TIMESTAMP" ... backup: enabled: false ...
ここで
プロパティ 説明 namespace
YOUR_RESTORE_NAMESPACE
復元用の名前空間。元のクラスタと同じ名前空間を使用します。
cassandra:hostNetwork
hostNetwork
は必須で、必ずfalse
に設定する必要があります。restore:enabled
デフォルトでは、復元は無効になっています。このプロパティを true
に設定する必要があります。restore:serviceAccountPath
SA_JSON_FILE_PATH
バックアップ用に作成したサービス アカウントへのファイル システム上のパス。
restore:dbStorageBucket
CLOUD_STORAGE_BUCKET_PATH
バックアップ データが保存されている Cloud Storage バケットのパス。形式は
gs://BUCKET_NAME
です。必ずgs://
を付ける必要があります。restore:cloudProvider
GCP
cloudProvider: "GCP"
プロパティは必須です。restore:snapshotTimestamp
TIMESTAMP
復元するバックアップ スナップショットのタイムスタンプ。使用できるタイムスタンプを確認するには、
dbStorageBucket
に移動し、バケット内にあるファイルを確認します。各ファイル名にはタイムスタンプの値が含まれます。例:backup_20210203213003_apigee-cassandra-default-0.tgz
ここで、20210203213003 は、その時点で作成されたバックアップを復元する場合に使用する
snapshotTimestamp
の値です。backup:enabled
このプロパティが以前 true
に設定されていた場合は、false
に設定する必要があります。 -
最初からクリーンなクラスタがない場合は、Helm のハイブリッド リージョンを廃止するのドキュメントに沿って、既存の Hybrid インストールをクリーンな状態にします(Cert Manager はインストールしたままにできます)。これにより、ステップ 11 の開始まで Helm ランタイムの設定マニュアルに従った場合と同じ状態になります。
-
Apigee の名前空間に Pod が残っていないことを確認します。
kubectl get pods -n apigee
kubectl get pods -n apigee-system
-
CSI バックアップを使用している場合は、次のコマンドを実行して、復元プロセスで使用する volumesnapshots が表示されることを確認します。
kubectl get volumesnapshot -n apigee
-
インストール マニュアルのステップ 11 に記載されているように、すべての Hybrid コンポーネントを 1 つずつインストールします。
datastore
をインストールするコマンドを実行すると、apigee-cassandra-restore
Pod が作成されますが、apigee-org
コンポーネントをインストールした後にのみrunning
状態になります。
Cassandra のバックアップと復元について詳しくは、Cassandra のバックアップの概要をご覧ください。
apigeectl
構成では、Cassandra のバックアップを Cloud Storage とリモート サーバーのいずれかに配置できます。いずれの場合も、復元は次の手順を実施します。
- ハイブリッド バージョンを確認します。
バージョンが、ストレージにバックアップ ファイルを作成したバージョンと同じであることを確認します。apigeectl version
- 復元先の Kubernetes クラスタに以前の Apigee ハイブリッド インストールが存在しないことを確認します。復元先が既存のクラスタの場合は、次のコマンドを使用して既存の Apigee ハイブリッド インストールを削除します。
apigeectl delete -f overrides.yaml
kubectl -n apigee get apigeedatastore,apigeeredis,apigeetelemetry,org,env,arc # The output should be empty.
apigeectl delete --all -f overrides.yaml
overrides.yaml
ファイルを開き、restore
プロパティを目的の値に設定します。Cloud Storage
パラメータ
namespace: YOUR_RESTORE_NAMESPACE # Use the same namespace as in your original cluster. cassandra: hostNetwork: false ... restore: enabled: true serviceAccountPath: "SA_JSON_FILE_PATH" dbStorageBucket: "CLOUD_STORAGE_BUCKET_PATH" cloudProvider: "GCP" # required verbatim "GCP" (all caps) snapshotTimestamp: "TIMESTAMP" ... backup: enabled: false serviceAccountPath: "SA_JSON_FILE_PATH" dbStorageBucket: "CLOUD_STORAGE_BUCKET_PATH" cloudProvider: "GCP" # required verbatim "GCP" (all caps) schedule: "SCHEDULE"
例
namespace: apigee cassandra: hostNetwork: false ... restore: enabled: true serviceAccountPath: "/Users/myhome/.ssh/my_cassandra_backup.json" dbStorageBucket: "gs://myname-cassandra-backup" cloudProvider: "GCP" snapshotTimestamp: "20201001183903" ... backup: enabled: false serviceAccountPath: "/Users/myhome/.ssh/my_cassandra_backup.json" dbStorageBucket: "gs://myname-cassandra-backup" cloudProvider: "GCP" schedule: "0 2 * * *" ...
各要素の意味は次のとおりです。
プロパティ 説明 namespace
YOUR_RESTORE_NAMESPACE
復元用の名前空間。元のクラスタと同じ名前空間を使用します。
cassandra:hostNetwork
hostNetwork
は必須で、必ずfalse
に設定する必要があります。restore:enabled
デフォルトでは、復元は無効になっています。このプロパティを true
に設定する必要があります。restore:serviceAccountPath
SA_JSON_FILE_PATH
バックアップ用に作成したサービス アカウントへのファイル システム上のパス。
restore:dbStorageBucket
CLOUD_STORAGE_BUCKET_PATH
バックアップ データが保存されている Cloud Storage バケットのパス。形式は
gs://BUCKET_NAME
です。必ずgs://
を付ける必要があります。restore:cloudProvider
GCP
cloudProvider: "GCP"
プロパティは必須です。restore:snapshotTimestamp
TIMESTAMP
復元するバックアップ スナップショットのタイムスタンプ。使用できるタイムスタンプを確認するには、
dbStorageBucket
に移動し、バケット内にあるファイルを確認します。各ファイル名にはタイムスタンプの値が含まれます。例:backup_20210203213003_apigee-cassandra-default-0.tgz
ここで、20210203213003 は、その時点で作成されたバックアップを復元する場合に使用する
snapshotTimestamp
の値です。backup:enabled
このプロパティが以前 true
に設定されていた場合は、false
に設定する必要があります。backup:serviceAccountPath
SA_JSON_FILE_PATH
./tools/create-service-account
の実行時にダウンロードされたサービス アカウント JSON ファイルへのファイル システム上のパス。backup:dbStorageBucket
CLOUD_STORAGE_BUCKET_PATH
Cloud Storage バケットのパス。形式は
gs://BUCKET_NAME
です。必ずgs://
を付ける必要があります。backup:cloudProvider
GCP
cloudProvider: "GCP"
プロパティは必須です。backup:schedule
SCHEDULE
バックアップの開始時刻。標準の crontab 構文で指定します。デフォルト:
0 2 * * *
Cloud Storage 以外
パラメータ
namespace: YOUR_RESTORE_NAMESPACE # Use the same namespace as in your original cluster. cassandra: hostNetwork: false ... restore: enabled: true keyFile: "PATH_TO_PRIVATE_KEY_FILE" server: "BACKUP_SERVER_IP" storageDirectory: "/home/apigee/BACKUP_DIRECTORY" cloudProvider: "HYBRID" # required verbatim "HYBRID" (all caps) snapshotTimestamp: "TIMESTAMP" ... backup: enabled: false keyFile: "PATH_TO_PRIVATE_KEY_FILE" server: "BACKUP_SERVER_IP" storageDirectory: "/home/apigee/BACKUP_DIRECTORY" cloudProvider: "HYBRID" # required verbatim "HYBRID" (all caps) schedule: "SCHEDULE"
例
namespace: apigee cassandra: hostNetwork: false ... restore: enabled: true keyFile: "/Users/exampleuser/apigee-hybrid/hybrid-files/service-accounts/private.key" server: "34.56.78.90" storageDirectory: "/home/apigee/cassbackup" cloudProvider: "HYBRID" snapshotTimestamp: "20201001183903" ... backup: enabled: false keyFile: "/Users/exampleuser/apigee-hybrid/hybrid-files/service-accounts/private.key" server: "34.56.78.90" storageDirectory: "/home/apigee/cassbackup" cloudProvider: "HYBRID" schedule: "0 2 * * *" ...
各要素の意味は次のとおりです。
プロパティ 説明 namespace
YOUR_RESTORE_NAMESPACE
復元用の名前空間。元のクラスタと同じ名前を持つ名前空間を使用します。
cassandra:hostNetwork
hostNetwork
は必須で、必ずfalse
に設定する必要があります。restore:enabled
デフォルトでは、復元は無効になっています。このプロパティを true
に設定する必要があります。restore:keyFile
PATH_TO_PRIVATE_KEY_FILE
ローカル ファイル システム上の SSH 秘密鍵ファイル(SSH 認証鍵ペアを作成した手順で
ssh_key
と名付けています)へのパス。restore:server
BACKUP_SERVER_IP
バックアップ サーバーの IP アドレス。
restore:storageDirectory
BACKUP_DIRECTORY
バックアップ サーバー上のバックアップ ディレクトリの名前。これは、
home/apigee
内のディレクトリにする必要があります(バックアップ ディレクトリを作成した手順でバックアップ ディレクトリにcassandra_backup
という名前を付けています)。restore:cloudProvider
HYBRID
cloudProvider: "HYBRID"
プロパティは必須です。restore:snapshotTimestamp
TIMESTAMP
復元するバックアップ スナップショットのタイムスタンプ。使用できるタイムスタンプを確認するには、
dbStorageBucket
に移動し、バケット内にあるファイルを確認します。各ファイル名にはタイムスタンプの値が含まれます。例:backup_20210203213003_apigee-cassandra-default-0.tgz
ここで、20210203213003 は、その時点で作成されたバックアップを復元する場合に使用する
snapshotTimestamp
の値です。backup:enabled
このプロパティが以前 true
に設定されていた場合は、false
に設定する必要があります。backup:keyFile
PATH_TO_PRIVATE_KEY_FILE
ローカル ファイル システム上の SSH 秘密鍵ファイル(SSH 認証鍵ペアを作成した手順で
ssh_key
と名付けています)へのパス。backup:server
BACKUP_SERVER_IP
バックアップ サーバーの IP アドレス。
backup:storageDirectory
BACKUP_DIRECTORY
バックアップ サーバー上のバックアップ ディレクトリの名前。これは、
home/apigee
内のディレクトリにする必要があります(バックアップ ディレクトリを作成した手順でバックアップ ディレクトリにcassandra_backup
という名前を付けています)。backup:cloudProvider
HYBRID
cloudProvider: "HYBRID"
プロパティは必須です。backup:schedule
SCHEDULE
バックアップの開始時刻。標準の crontab 構文で指定します。デフォルト:
0 2 * * *
- 新しいハイブリッド ランタイム デプロイを作成します。これにより、新しい Cassandra クラスタが作成され、クラスタへのバックアップ データの復元が開始します。
${APIGEECTL_HOME}/apigeectl init -f overrides/overrides.yaml
${APIGEECTL_HOME}/apigeectl check-ready -f overrides/overrides.yaml
${APIGEECTL_HOME}/apigeectl apply -f overrides/overrides.yaml --restore
${APIGEECTL_HOME}/apigeectl check-ready -f overrides/overrides.yaml
復元ジョブの進行状況を確認し、apigeeds
と他のすべての Pod が稼働していることを確認します。
apigeeds
を確認します。kubectl get apigeeds -n apigee
- 他のすべての Pod を確認します。
kubectl get pods -n apigee
復元が正常に完了し、ランタイム コンポーネントが正常であることを確認したら、クラスタにバックアップを構成することをおすすめします。
overrides-restore.yaml
ファイルからrestore
構成を削除します。backup
構成をoverrides-restore.yaml
ファイルに追加します。- 以下のコマンドを使用して
backup
構成を適用します。Helm
helm upgrade datastore apigee-datastore/ \ --install \ --namespace apigee \ --atomic \ -f overrides.yaml
apigeectl
./apigeectl apply -f ../overrides.yaml