単一リージョンでの復元

このページでは、単一リージョンで 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