単一リージョンでの復元

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

単一リージョンのデプロイでは、Apigee ハイブリッドは単一のデータセンターまたはリージョンにデプロイされます。デプロイに複数の Apigee 組織がある場合、復元プロセスではすべての組織のデータが復元されます。複数組織の設定で、特定の組織を復元することはできません。

リージョンをバックアップから復元する

構成では、Cassandra のバックアップを Cloud Storage とリモート サーバーのいずれかに配置できます。いずれの場合も、復元は次の手順を実施します。

  1. ハイブリッド バージョンを確認します。
    apigeectl version
    バージョンが、ストレージにバックアップ ファイルを作成したバージョンと同じであることを確認します。
  2. 復元先の 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
  3. overrides.yaml ファイルを開き、restore プロパティを目的の値に設定します。

    Cloud Storage

    パラメータ

    namespace: YOUR_RESTORE_NAMESPACE # Use the 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: true
        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: true
        serviceAccountPath: "/Users/myhome/.ssh/my_cassandra_backup.json"
        dbStorageBucket: "gs://myname-cassandra-backup"
        cloudProvider: "GCP"
        schedule: "0 2 * * *"
      ...

    各要素の意味は次のとおりです。

    プロパティ 説明
    namespace

    YOUR_RESTORE_NAMESPACE

    復元用の Namespace。元のクラスタの 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 に設定する必要があります。
    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 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: true
        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: true
        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

    復元用の Namespace。元のクラスタの 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 に設定する必要があります。
    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 * * *

  4. 新しいハイブリッド ランタイム デプロイを作成します。これにより、新しい 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
  5. 復元ジョブの進行状況を確認し、apigeeds と他のすべての Pod が稼働していることを確認します。
    • apigeeds を確認するには、次の手順を実施します。
      kubectl get apigeeds -n apigee
    • 他のすべての Pod を確認するには、次の手順を実施します。
      kubectl get pods -n apigee

復元が正常に完了し、ランタイム コンポーネントが正常であることを確認したら、クラスタにバックアップを構成することをおすすめします。

  1. overrides-restore.yaml ファイルから restore 構成を削除します。
  2. backup 構成を overrides-restore.yaml ファイルに追加します。
  3. 以下のコマンドを使用して backup 構成を適用します。
    ./apigeectl apply -f ../overrides-restore.yaml