Cloud Storage でのバックアップのスケジュール設定

このページでは、Cloud Storage で Cassandra のバックアップをスケジュールする方法について説明します。この方法では、指定した Cloud Storage バケットにバックアップが保存されます。

Cassandra のバックアップをスケジュールするには、次の手順に従います。

  1. 次の create-service-account コマンドを実行して、標準の roles/storage.objectAdmin ロールを持つ Google Cloud サービス アカウント(SA)を作成します。この SA ロールを使用すると、バックアップ データを Cloud Storage に書き込むことができます。$APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/ ディレクトリで次のコマンドを実行します。
    ./tools/create-service-account --env non-prod --dir ./

    このコマンドにより、非本番環境で使用する apigee-non-prod という名前の 1 つのサービス アカウントが作成され、ダウンロードしたキーファイルが ./ ディレクトリに配置されます。

    Google Cloud サービス アカウントの詳細については、サービス アカウントの作成と管理をご覧ください。

  2. create-service-account コマンドにより、サービス アカウントの秘密鍵を含む JSON ファイルが保存されます。そのファイルは、コマンドを実行したのと同じディレクトリに保存されます。次のステップでは、このファイルへのパスが必要になります。
  3. Cloud Storage バケットを作成する。 バケット用に、適当なデータ保持ポリシーを指定してください。15 日のデータ保持ポリシーを使用することをおすすめします。
  4. overrides.yaml ファイルを開きます。
  5. 次の cassandra.backup プロパティを追加してバックアップを有効にします。すでに構成されているプロパティはどれも削除しないでください。

    パラメータ

    cassandra:
        ...
    
        backup:
          enabled: true
          serviceAccountPath: SA_JSON_FILE_PATH
          dbStorageBucket: CLOUD_STORAGE_BUCKET_NAME
          schedule: BACKUP_SCHEDULE_CODE
          cloudProvider: "GCP"  # For remote server backup set this to HYBRID (all caps)
    
        ...
        

      ...
    
      cassandra:
        storage:
          type: gcepd
          capacity: 50Gi
          gcepd:
            replicationType: regional-pd
        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: "my-cassandra-backup-sa.json"
          dbStorageBucket: "myname-cassandra-backup"
          schedule: "45 23 * * 6"
          cloudProvider: "GCP"
          
    
    
        ... 
  6. ここで
    プロパティ 説明
    backup:enabled バックアップはデフォルトでは無効になっています。このプロパティを true に設定する必要があります。
    backup:serviceAccountPath

    SA_JSON_FILE_PATH

    create-service-account コマンドを実行したときにダウンロードされたサービス アカウント JSON ファイルへのファイルシステム上のパス。

    パスは、apigee-datastore チャート ディレクトリからの相対パスにする必要があります。例: serviceAccountPath: myproject-apigee-cassandra.json

    backup:dbStorageBucket

    CLOUD_STORAGE_BUCKET_NAME

    バックアップ アーカイブの保存に使用する既存の Google Cloud Storage バケットの名前。バケットを作成する必要がある場合は、バケットの作成をご覧ください。

    backup:cloudProvider

    GCP/HYBRID

    Cloud Storage バックアップの場合は、プロパティを GCP に設定します。次に例を示します。cloudProvider: "GCP"

    リモート サーバーのバックアップの場合は、プロパティを HYBRID に設定します。次に例を示します。cloudProvider: "HYBRID"

    backup:schedule

    BACKUP_SCHEDULE_CODE

    バックアップの開始時刻。標準の crontab 構文で指定します。デフォルト: 0 2 * * *

  7. 構成の変更を新しいクラスタに適用します。次に例を示します。
    helm upgrade datastore apigee-datastore/ \
      --namespace APIGEE_NAMESPACE \
      --atomic \
      -f OVERRIDES_FILE.yaml
    

    ここで、OVERRIDES_FILE は、先ほど編集したオーバーライド ファイルのパスです。

  8. バックアップ ジョブを確認します。次に例を示します。
    kubectl get cronjob -n APIGEE_NAMESPACE
      NAME                      SCHEDULE     SUSPEND   ACTIVE   LAST SCHEDULE   AGE
      apigee-cassandra-backup   33 * * * *   False     0        <none>          94s

手動バックアップを開始する

Cassandra バックアップは、overrides.yaml ファイルに設定された cron スケジュールに従って自動的に生成されます。

手動バックアップを開始するには、次のコマンドを使用します。

kubectl create job -n APIGEE_NAMESPACE --from=cronjob/apigee-cassandra-backup BACKUP_POD_NAME