このセクションでは、Apigee ハイブリッドのランタイム プレーンにインストールされた Apache Cassandra データベース リングのデータのバックアップと復元を構成する方法について説明します。また、Cassandra データストアもご覧ください。
Cassandra のバックアップが重要な理由
バックアップは障害シナリオに対する重要な保護手段です。各バックアップは、バックアップが作成された時点で存在した現在の Cassandra データの一貫性のあるスナップショットです。これには、Cassandra クラスタ内の Cassandra データとスキーマ / メタデータが含まれます。バックアップにより、ユーザーは Apigee Hybrid インスタンスを以前の正常な状態に戻せるようになります。これは、障害発生時にハイブリッド インスタンスをオンラインに戻すうえで重要なステップです。ハイブリッド インスタンスのサイズによっては、1 つのバックアップ セットに 1 つまたは複数のバックアップ ファイルが存在する場合があります。たとえば、ハイブリッド インスタンスに 3 つの Cassandra ノードがある場合、バックアップ セットには 3 つのバックアップ ファイルが含まれます。ハイブリッド インスタンスに 30 個の Cassandra ノードがある場合、バックアップ セットには 30 個のバックアップ ファイルが含まれます。つまり、バックアップからハイブリッド インスタンスを復元する時間は、バックアップ セット内で復元する必要があるバックアップ ファイルの数によって異なります。
Cassandra のバックアップについて知っておくべきこと
Cassandra はレプリケートされるデータベースであり、各リージョンまたはデータセンターに 3 つ以上のデータのコピーが存在するように構成されています。Cassandra はストリーミング レプリケーションと読み取りリペアを使用して、各リージョンまたはデータセンターに任意の時点のデータレプリカを保持します。
ハイブリッドでは、Cassandra のバックアップはデフォルトで無効になっています。ただし、壊滅的な障害によってデータが失われた場合に、Cassandra のバックアップを有効にすることをおすすめします。Cassandra のバックアップは障害復旧で使用することを意図しており、誤って削除されたデータの損失を復元するものではありません。
バックアップは、overrides.yaml ファイルに設定されているスケジュールに従って作成されます。バックアップをスケジュールする方法については、Cassandra のバックアップをスケジュールするをご覧ください。バックアップ スケジュールをハイブリッド クラスタに適用すると、スケジュールに従って Kubernetes バックアップ ジョブが定期的に実行されます。このジョブは、ハイブリッド クラスタ内の各 Cassandra ノードでバックアップ スクリプトをトリガーし、ノード上のすべてのデータを収集します。そして、データのアーカイブ ファイルを作成し、overrides.yaml ファイルの Cassandra バックアップ設定で指定された Google Cloud ストレージ・バケットにアーカイブを送信します。
バックアップの対象
このトピックで説明するバックアップ構成では、次のエンティティがバックアップされます。
- ユーザー スキーマを含む Cassandra スキーマ(Apigee キースペースの定義)
- ノードごとの Cassandra パーティション トークン情報
- Cassandra データのスナップショット
バックアップ データの保存場所
バックアップ データは Google Cloud Storage バケットに保存されます。このバケットはユーザーが作成する必要があります。バケットの作成と構成については後述します。
Cassandra のバックアップ スケジュールの設定
バックアップはランタイム プレーンで cron
ジョブとしてスケジュールされます。Cassandra のバックアップをスケジュールするには:
- 次の
create-service-account
コマンドを実行して、標準のroles/storage.objectAdmin
ロールを持つ Google Cloud サービス アカウント(SA)を作成します。この SA ロールと使用すると、バックアップ データを Cloud Storage に書き込むことができます。ハイブリッド環境のルート ディレクトリで次のコマンドを実行します。../tools/create-service-account --env prod \ --profile apigee-cassandra \ --name CASSANDRA_BACKUP_SA_NAME \ --dir OUTPUT_DIR
ここで
- CASSANDRA_BACKUP_SA_NAME はサービス アカウントの名前です。
- OUTPUT_DIR は、ツールがサービス アカウントの
.json
ファイルを出力するディレクトリです。
Google Cloud サービス アカウントの詳細については、サービス アカウントの作成と管理をご覧ください。./tools/create-service-account --env prod \ --profile apigee-cassandra \ --name my-cassandra-backup-sa --dir ./service-accounts
- 上記の
create-service-account
コマンドにより、サービス アカウントの秘密鍵を含む JSON ファイルが作成され、コマンドを実行したディレクトリに保存されます。以降のステップでこのファイルのパスが必要になります。 - Cloud Storage バケットを作成します。バケットに適したデータ保持ポリシーを指定してください。15 日のデータ保持ポリシーを使用することをおすすめします。
overrides.yaml
ファイルを開きます。- 次の
cassandra.backup
プロパティを追加してバックアップを有効にします。すでに構成されているプロパティは削除しないでください。パラメータ
cassandra: ... backup: enabled: true serviceAccountPath: SA_JSON_FILE_PATH dbStorageBucket: CLOUD_STORAGE_BUCKET_PATH schedule: BACKUP_SCHEDULE_CODE ...
例
... cassandra: storage: type: gcepd capacity: 50Gi gcepd: replicationType: regional-pd sslRootCAPath: "/Users/myhome/ssh/cassandra.crt" sslCertPath: "/Users/myhome/ssh/cassandra.crt" sslKeyPath: "/Users/myhome/ssh/cassandra.key" auth: default: password: "abc123" admin: password: "abc234" ddl: password: "abc345" dml: password: "abc456" nodeSelector: key: cloud.google.com/gke-nodepool value: apigee-data backup: enabled: true serviceAccountPath: "/Users/myhome/.ssh/my-cassandra-backup-sa.json" dbStorageBucket: "gs://myname-cassandra-backup" schedule: "45 23 * * 6" ...
ここで - 構成の変更を新しいクラスタに適用します。例:
./apigeectl apply -f overrides.yaml
- バックアップ ジョブを確認します。次に例を示します。
kubectl get cronjob -n apigee
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE apigee-cassandra-backup 33 * * * * False 0 <none> 94s
プロパティ | 説明 |
---|---|
backup:enabled |
バックアップはデフォルトでは無効になっています。このプロパティを true に設定する必要があります。 |
backup:serviceAccountPath |
SA_JSON_FILE_PATH
|
backup:dbStorageBucket |
CLOUD_STORAGE_BUCKET_PATH Cloud Storage バケットのパス。形式は |
backup:schedule |
BACKUP_SCHEDULE_CODE バックアップの開始時刻。標準の crontab 構文で指定します。デフォルト: |
バックアップを復元する
災害によって Apigee ハイブリッド インスタンスのすべてのデータが回復不能な状態になった場合など、重大な障害が発生した場合に、バックアップを使用して Apigee インフラストラクチャをゼロから復元します。マルチリージョン デプロイを使用している場合、単一リージョンの障害から復旧するには、デコミッションを使用して影響を受けるリージョンをクリーンアップしてから、影響を受けるリージョンで DN 拡張を使用する必要があります。Apigee Cassandra のデプロイと運用アーキテクチャは、単一リージョンの冗長性とフォールト トレランスを処理します。Apigee ハイブリッドは、本番環境ではマルチリージョン構成でデプロイすることをおすすめしているため、リージョン障害が発生した場合、バックアップから復旧するのではなく、文書化されたリージョンのデコミッショニングと拡張手順を使用して、他のライブ リージョンから復旧することが可能です。
次の場合は、バックアップを使用しないでください。
- Cassandra ノードの障害。
- アプリ、デベロッパー、api_credentials などのデータの誤削除。
- マルチリージョン デプロイで停止している 1 つ以上のリージョン。
復元時に考慮すべき事項:
- ダウンタイム: 復元中はダウンタイムが発生します。
- データ損失: 最後の有効なバックアップ時と復元の完了時の間にデータ損失が発生します。
- 復元時間: 復元時間はデータとクラスタのサイズによって異なります。
- チェリーピッカー データ: 復元する特定のデータのみを選択することはできません。復元すると、選択したバックアップ全体が復元されます。
復元プロセスでは、バックアップのロケーションからデータが取得され、同じ数のノードを持つ新しい Cassandra クラスタにデータが復元されます。古い Cassandra クラスタからデータは取得されません。
以下の復元手順は、バックアップに Google Cloud Storage を使用する単一のリージョン デプロイを対象としています。その他のデプロイの場合は、以下のページをご覧ください。
- バックアップに Google Cloud Storage を使用しない単一リージョン デプロイの場合は、Google Cloud を使用しないバックアップと復元をご覧ください。
- マルチリージョン デプロイの場合は、GKE と GKE On-Prem でのマルチリージョン デプロイをご覧ください。
Cassandra のバックアップを復元するには:
- ハイブリッド ランタイム デプロイを復元する新しい名前空間で新しい Kubernetes クラスタを作成します。元の Hybrid インストール環境で使用していたものと同じクラスタと名前空間を使用することはできません。
- ルート ハイブリッド インストール ディレクトリに、新しい
overrides-restore.yaml
ファイルを作成します。 - 元の
overrides.yaml
ファイルの完全な Cassandra 構成を新しいoverrides-restore.yaml
ファイルにコピーします。次に例を示します。cp ./overrides.yaml ./overrides-restore.yaml
- 新しい
overrides-restore.yaml
では、namespace
要素とrestore
要素を追加して、cassandra
プロパティの TLS 認証情報が正しいことを確認します。パラメータ
namespace: YOUR_RESTORE_NAMESPACE cassandra: ... sslRootCAPath: PATH_TO_ROOT_CA_FILE sslCertPath: PATH_TO_SSL_CERT_FILE sslKeyPath: PATH_TO_SSL_KEY_FILE ... restore: enabled: true snapshotTimestamp: TIMESTAMP serviceAccountPath: SA_JSON_FILE_PATH dbStorageBucket: CLOUD_STORAGE_BUCKET_PATH image: pullPolicy: Always ...
例
... namespace: cassandra-restore cassandra: storage: type: gcepd capacity: 50Gi gcepd: replicationType: regional-pd sslRootCAPath: "/Users/myhome/ssh/cassandra.crt" sslCertPath: "/Users/myhome/ssh/cassandra.crt" sslKeyPath: "/Users/myhome/ssh/cassandra.key" auth: default: password: "abc123" admin: password: "abc234" ddl: password: "abc345" dml: password: "abc456" nodeSelector: key: cloud.google.com/gke-nodepool value: apigee-data restore: enabled: true snapshotTimestamp: "20210203213003" serviceAccountPath: "/Users/myhome/.ssh/my_cassandra_backup.json" dbStorageBucket: "gs://myname-cassandra-backup" image: pullPolicy: Always ...
ここで
プロパティ 説明 sslRootCAPath
sslCertPath
sslKeyPath
PATH_TO_ROOT_CA_FILE
PATH_TO_SSL_CERT_FILE
PATH_TO_SSL_KEY_FILE元の Cassandra データベースの作成時に使用したのと同じ TLS 認証情報を使用します。
namespace
YOUR_RESTORE_NAMESPACE
手順 1 で新しい Cassandra クラスタに作成した新しい Namespace の名前。元のクラスタで使用していた Namespace は使用しないでください。
restore:enabled
デフォルトでは、復元は無効になっています。このプロパティを true
に設定する必要があります。restore:snapshotTimestamp
TIMESTAMP
復元するバックアップ スナップショットのタイムスタンプ。使用できるタイムスタンプを確認するには、
dbStorageBucket
に移動し、バケット内にあるファイルを確認します。各ファイル名には、次のようにタイムスタンプ値が含まれています。backup_20210203213003_apigee-cassandra-default-0.tgz
ここで、20210203213003 は、その時点で作成されたバックアップを復元する場合に使用する
snapshotTimestamp
の値です。restore:serviceAccountPath
SA_JSON_FILE_PATH
バックアップ用に作成したサービス アカウントのファイル システム上のパス。
restore:dbStorageBucket
CLOUD_STORAGE_BUCKET_PATH
バックアップ データが保存されている Cloud Storage バケットのパスで、次の形式です。
gs://BUCKET_NAME
必ず
gs://
を付ける必要があります。 - 次のコマンドを実行して、古い Namespace の Cassandra ノードの
app
ラベルを変更します。kubectl label pods --overwrite --namespace=OLD_NAMESPACE -l app=apigee-cassandra app=apigee-cassandra-old
- 新しいハイブリッド ランタイム デプロイを作成します。これにより、新しい Cassandra クラスタが作成され、クラスタへのバックアップ データの復元が開始します。
./apigeectl init -f ../overrides-restore.yaml
./apigeectl apply -f ../overrides-restore.yaml
-
復元が完了したら、新しい Namespace で Cassandra クラスタを使用するようにトラフィックを切り替える必要があります。トラフィックを切り替えるには、次のコマンドを実行します。
kubectl get rs -n OLD_NAMESPACE # look for the 'apigee-connect' replicaset
kubectl patch rs -n OLD_NAMESPACE APIGEE_CONNECT_RS_NAME -p '{"spec":{"replicas" : 0}}'
- トラフィックの切り替えが完了すると、
restore
構成を削除し、backup
構成をoverrides-restore.yaml
ファイルに追加することにより、復元したクラスタのバックアップを再構成できます。YOUR_RESTORE_NAMESPACE は、手順 1 で作成した新しい Namespace 名に置き換えます。namespace: YOUR_RESTORE_NAMESPACE cassandra: ... backup: enabled: true serviceAccountPath: SA_JSON_FILE_PATH dbStorageBucket: CLOUD_STORAGE_BUCKET_PATH schedule: BACKUP_SCHEDULE_CODE ...
続いて、次のコマンドで、
backup
構成を適用します。./apigeectl apply -f ../overrides-restore.yaml
復元ログの表示
復元ジョブのログを確認し、grep
を使用して error
をチェックすることで、復元ログにエラーがないことを確認します。
復元の完了を確認する
復元オペレーションが完了したかどうかの確認には、次のコマンドを使用します。
kubectl get pods
出力は次のようになります。
NAME READY STATUS RESTARTS AGE apigee-cassandra-default-0 1/1 Running 0 1h apigee-cassandra-default-1 1/1 Running 0 1h apigee-cassandra-default-2 1/1 Running 0 59m apigee-cassandra-restore-b4lgf 0/1 Completed 0 51m
復元ログを表示する
復元ログは、次のコマンドを使用して表示します。
kubectl logs -f apigee-cassandra-restore-b4lgf
出力は次のようになります。
Restore Logs: Activated service account credentials for: [apigee-cassandra-backup-svc@gce-myusername.iam.gserviceaccount.com] to download file gs://gce-myusername-apigee-cassandra-backup/apigeecluster/dc-1/backup_20190405011309_schema.tgz INFO: download successfully extracted the backup files from gs://gce-myusername-apigee-cassandra-backup/apigeecluster/dc-1 finished downloading schema.cql to create schema from 10.32.0.28 Warnings : dclocal_read_repair_chance table option has been deprecated and will be removed in version 4.0 dclocal_read_repair_chance table option has been deprecated and will be removed in version 4.0 Warnings : dclocal_read_repair_chance table option has been deprecated and will be removed in version 4.0 dclocal_read_repair_chance table option has been deprecated and will be removed in version 4.0 INFO: the schema has been restored starting apigee-cassandra-default-0 in default starting apigee-cassandra-default-1 in default starting apigee-cassandra-default-2 in default 84 95 106 waiting on waiting nodes $pid to finish 84 Activated service account credentials for: [apigee-cassandra-backup-svc@gce-myusername.iam.gserviceaccount.com] Activated service account credentials for: [apigee-cassandra-backup-svc@gce-myusername.iam.gserviceaccount.com] Activated service account credentials for: [apigee-cassandra-backup-svc@gce-myusername.iam.gserviceaccount.com] INFO: restore downloaded tarball and extracted the file from gs://gce-myusername-apigee-cassandra-backup/apigeecluster/dc-1 INFO: restore downloaded tarball and extracted the file from gs://gce-myusername-apigee-cassandra-backup/apigeecluster/dc-1 INFO: restore downloaded tarball and extracted the file from gs://gce-myusername-apigee-cassandra-backup/apigeecluster/dc-1 INFO 12:02:28 Configuration location: file:/etc/cassandra/cassandra.yaml …... INFO 12:02:41 [Stream #e013ee80-5863-11e9-8458-353e9e3cb7f9] All sessions completed Summary statistics: Connections per host : 3 Total files transferred : 2 Total bytes transferred : 0.378KiB Total duration : 5048 ms Average transfer rate : 0.074KiB/s Peak transfer rate : 0.075KiB/s progress: [/10.32.1.1.6]0:1/1 100% 1:1/1 100% [/10.32.0.28]1:1/1 100% 0:1/1 100% [/10.32.3.220]0:1/1 100% 1:1/1 100% total: 100% 0.000KiB/s (avg: 0.074KiB/s) INFO 12:02:41 [Stream #e013ee80-5863-11e9-8458-353e9e3cb7f9] All sessions completed progress: [/10.32.1.1.6]0:1/1 100% 1:1/1 100% [/10.32.0.28]1:1/1 100% 0:1/1 100% [/10.32.3.220]0:1/1 100% 1:1/1 100% total: 100% 0.000KiB/s (avg: 0.074KiB/s) INFO 12:02:41 [Stream #e013ee80-5863-11e9-8458-353e9e3cb7f9] All sessions completed INFO 12:02:41 [Stream #e013ee80-5863-11e9-8458-353e9e3cb7f9] All sessions completed INFO: ./apigee/data/cassandra/data/ks1/user-9fbae960571411e99652c7b15b2db6cc restored successfully INFO: Restore 20190405011309 completed INFO: ./apigee/data/cassandra/data/ks1/user-9fbae960571411e99652c7b15b2db6cc restored successfully INFO: Restore 20190405011309 completed waiting on waiting nodes $pid to finish 106 Restore finished
バックアップ ジョブを確認する
バックアップ cron ジョブのスケジュールを設定した後で、バックアップ ジョブを確認することもできます。cron ジョブのスケジュールを設定した後に、次のように表示されていれば、正常に完了したことになります。
kubectl get pods
出力は次のようになります。
NAME READY STATUS RESTARTS AGE apigee-cassandra-default-0 1/1 Running 0 2h apigee-cassandra-default-1 1/1 Running 0 2h apigee-cassandra-default-2 1/1 Running 0 2h apigee-cassandra-backup-1.6451.680-pff6s 0/1 Running 0 54s
バックアップ ログを確認する
バックアップ ジョブは次のことを行います。
schema.cql
ファイルを作成します。- このファイルをストレージ バケットにアップロードします。
- ノードをエコーしてデータをバックアップし、同時にバックアップ データをアップロードします。
- すべてのデータがアップロードされるまで待機します。
kubectl logs -f apigee-cassandra-backup-1.6451.680-pff6s
出力は次のようになります。
myusername-macbookpro:cassandra-backup-utility myusername$ kubectl logs -f apigee-cassandra-backup-1.64577680-f9sc4 starting apigee-cassandra-default-0 in default starting apigee-cassandra-default-1 in default starting apigee-cassandra-default-2 in default 35 46 57 waiting on process 35 Activated service account credentials for: [apigee-cassandra-backup-svc@gce-myusername.iam.gserviceaccount.com] Activated service account credentials for: [apigee-cassandra-backup-svc@gce-myusername.iam.gserviceaccount.com] Activated service account credentials for: [apigee-cassandra-backup-svc@gce-myusername.iam.gserviceaccount.com] Requested creating snapshot(s) for [all keyspaces] with snapshot name [20190406190808] and options {skipFlush=false} Snapshot directory: 20190406190808 INFO: backup created cassandra snapshot 20190406190808 tar: Removing leading `/' from member names /apigee/data/cassandra/data/ks1/mytest3-37bc2df0587811e98e8d875b0ed64754/snapshots/ /apigee/data/cassandra/data/ks1/mytest3-37bc2df0587811e98e8d875b0ed64754/snapshots/20190406190808/ /apigee/data/cassandra/data/ks1/mytest3-37bc2df0587811e98e8d875b0ed64754/snapshots/20190406190808/mc-1-big-Data.db Requested creating snapshot(s) for [all keyspaces] with snapshot name [20190406190808] and options {skipFlush=false} Requested creating snapshot(s) for [all keyspaces] with snapshot name [20190406190808] and options {skipFlush=false} Snapshot directory: 20190406190808 INFO: backup created cassandra snapshot 20190406190808 tar: Removing leading `/' from member names /apigee/data/cassandra/data/system/hints-2666e20573ef38b390fefecf96e8f0c7/snapshots/ /apigee/data/cassandra/data/system/hints-2666e20573ef38b390fefecf96e8f0c7/snapshots/20190406190808/ /apigee/data/cassandra/data/system/hints-2666e20573ef38b390fefecf96e8f0c7/snapshots/20190406190808/manifest.json /apigee/data/cassandra/data/system/prepared_statements-18a9c2576a0c3841ba718cd529849fef/snapshots/ /apigee/data/cassandra/data/system/prepared_statements-18a9c2576a0c3841ba718cd529849fef/snapshots/20190406190808/ /apigee/data/cassandra/data/system/prepared_statements-18a9c2576a0c3841ba718cd529849fef/snapshots/20190406190808/manifest.json /apigee/data/cassandra/data/system/range_xfers-55d764384e553f8b9f6e676d4af3976d/snapshots/ /apigee/data/cassandra/data/system/range_xfers-55d764384e553f8b9f6e676d4af3976d/snapshots/20190406190808/ /apigee/data/cassandra/data/system/range_xfers-55d764384e553f8b9f6e676d4af3976d/snapshots/20190406190808/manifest.json /apigee/data/cassandra/data/system/peer_events-59dfeaea8db2334191ef109974d81484/snapshots/ /apigee/data/cassandra/data/system/peer_events-59dfeaea8db2334191ef109974d81484/snapshots/20190406190808/ /apigee/data/cassandra/data/system/peer_events-59dfeaea8db2334191ef109974d81484/snapshots/20190406190808/manifest.json /apigee/data/cassandra/data/system/built_views-4b3c50a9ea873d7691016dbc9c38494a/snapshots/ /apigee/data/cassandra/data/system/built_views-4b3c50a9ea873d7691016dbc9c38494a/snapshots/20190406190808/ /apigee/data/cassandra/data/system/built_views-4b3c50a9ea873d7691016dbc9c38494a/snapshots/20190406190808/manifest.json …… /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/ /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/ /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-3-big-Filter.db /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-2-big-CompressionInfo.db /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-2-big-Index.db /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-3-big-Statistics.db /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-2-big-Data.db /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-1-big-Index.db /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-1-big-Statistics.db /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-2-big-TOC.txt /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-2-big-Statistics.db /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-1-big-Summary.db /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-1-big-Filter.db /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-2-big-Summary.db /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-3-big-Index.db /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/manifest.json /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-2-big-Filter.db /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-2-big-Digest.crc32 /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-3-big-Summary.db /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-3-big-Data.db /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-1-big-TOC.txt /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/schema.cql /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-3-big-CompressionInfo.db /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-1-big-Digest.crc32 /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-3-big-TOC.txt /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-1-big-Data.db /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-3-big-Digest.crc32 /apigee/data/cassandra/data/ks2/user-d6d39d70586311e98e8d875b0ed64754/snapshots/20190406190808/mc-1-big-CompressionInfo.db …… /tmp/tokens.txt / [1 files][ 0.0 B/ 0.0 B] Operation completed over 1 objects. / [1 files][ 0.0 B/ 0.0 B] Operation completed over 1 objects. INFO: backup created tarball and transferred the file to gs://gce-myusername-apigee-cassandra-backup/apigeecluster/dc-1 INFO: removing cassandra snapshot INFO: backup created tarball and transferred the file to gs://gce-myusername-apigee-cassandra-backup/apigeecluster/dc-1 INFO: removing cassandra snapshot Requested clearing snapshot(s) for [all keyspaces] INFO: Backup 20190406190808 completed waiting on process 46 Requested clearing snapshot(s) for [all keyspaces] INFO: Backup 20190406190808 completed Requested clearing snapshot(s) for [all keyspaces] waiting on process 57 INFO: Backup 20190406190808 completed waiting result to get schema from 10.32.0.28 INFO: /tmp/schema.cql has been generated Activated service account credentials for: [apigee-cassandra-backup-svc@gce-myusername.iam.gserviceaccount.com] tar: removing leading '/' from member names tmp/schema.cql Copying from <TDIN>... / [1 files][ 0.0 B/ 0.0 B] Operation completed over 1 objects. INFO: backup created tarball and transferred the file to gs://gce-myusername-apigee-cassandra-backup/apigeecluster/dc-1 finished uploading schema.cql
検証
上り(内向き)の IP アドレスをテストして復元を確認します。
- 次のコマンドで
EXTERNAL-IP
を取得します。kubectl get svc -n istio-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-ingressgateway LoadBalancer 10.11.123.45 34.56.78.90 15021:32225/TCP,80:32208/TCP,443:31942/TCP,15012:32689/TCP,15443:31936/TCP 1d
-
次の例のように、コマンドラインで gcloud の認証情報を取得または更新します。
TOKEN=$(gcloud auth print-access-token)
- Apigee 環境にデプロイされた既存の apiproxy と API キーまたはアクセス トークンを使用して、上り(内向き)テストを行います。
Curl -v https://EXTERNAL-IP/basepath -H 'envgroup hostalias'
次に例を示します。
curl -v 'https://example.com/oauth/client_credential' \ --resolve edgehybrid-staging-func-runtime-wf.hybrid.e2e.apigeeks.net:443:34.56.78.90 \ -H 'Authorization: Bearer ${TOKEN}'
新しいクラスタとトラフィックのカットオーバーのための DNS 構成
検証が完了したら、トラフィックを新しいクラスタにリダイレクトし、DNS エントリを新しい上り(内向き)EXTERNAL-IP
アドレスに変更します。