単一リージョンでの復元

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

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

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

Apigee ハイブリッドに使用している管理ツールに応じて、以下の手順を選択してください。

Helm

  1. 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 に設定する必要があります。
  2. 最初からクリーンなクラスタがない場合は、Helm のハイブリッド リージョンを廃止するのドキュメントに沿って、既存の Hybrid インストールをクリーンな状態にします(Cert Manager はインストールしたままにできます)。これにより、ステップ 11 の開始まで Helm ランタイムの設定マニュアルに従った場合と同じ状態になります。

  3. Apigee の名前空間に Pod が残っていないことを確認します。

    kubectl get pods -n apigee
            kubectl get pods -n apigee-system
  4. CSI バックアップを使用している場合は、次のコマンドを実行して、復元プロセスで使用する volumesnapshots が表示されることを確認します。

    kubectl get volumesnapshot -n apigee
              
  5. インストール マニュアルのステップ 11 に記載されているように、すべての Hybrid コンポーネントを 1 つずつインストールします。datastore をインストールするコマンドを実行すると、apigee-cassandra-restore Pod が作成されますが、apigee-org コンポーネントをインストールした後にのみ running 状態になります。

Cassandra のバックアップと復元について詳しくは、Cassandra のバックアップの概要をご覧ください。

apigeectl

構成では、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 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 * * *

  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

復元ジョブの進行状況を確認し、apigeeds と他のすべての Pod が稼働していることを確認します。

  1. apigeeds を確認します。
    kubectl get apigeeds -n apigee
  2. 他のすべての Pod を確認します。
    kubectl get pods -n apigee

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

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

    Helm

    helm upgrade datastore apigee-datastore/ \
    --install \
    --namespace apigee \
    --atomic \
    -f overrides.yaml

    apigeectl

    ./apigeectl apply -f ../overrides.yaml