Google Cloud を使用しない場合のバックアップと復元

このセクションでは、Google Cloud を使用せずに、ssh とファイル システムを使用して、Cassandra データベースのバックアップと復元を構成する方法を説明します。関連情報:

クラウド サービスを使用しない Cassandra のバックアップと復元

クラウド サービスを使用しないバックアップでは、Cassandra データベースのバックアップを、指定したサーバーのファイル システムに保存します。バックアップは、オーバーライド ファイルで指定したスケジュールに従って実行されます。サーバーへの接続は、安全な SSH を使用して行われます。

クラウド サービスを使用しないバックアップの設定

以下の手順には、SSH 認証鍵ペアの作成など、特定のタスクを完了するための一般的な例が含まれています。ご使用の環境に適した方法をお選びください。

このプロシージャは次のパートで構成されています。

サーバーと SSH を設定する

  1. バックアップに Linux サーバーまたは Unix サーバーを指定します。このサーバーは、Apigee ハイブリッド ランタイム プレーンから SSH で接続可能である必要があります。バックアップ用の十分なストレージが必要です。
  2. サーバーに SSH サーバーを設定するか、安全な SSH サーバーが構成されていることを確認します。
  3. SSH 認証鍵ペアを作成し、ハイブリッド ランタイム プレーンからアクセス可能なパスに秘密鍵ファイルを保存します。鍵ペアに空のパスワードを使用しないと、バックアップが失敗します。次に例を示します。
    ssh-keygen -t rsa -b 4096 -C exampleuser@example.com
      Enter file in which to save the key (/Users/exampleuser/.ssh/id_rsa): $APIGEE_HOME/hybrid-files/certs/ssh_key
      Enter passphrase (empty for no passphrase):
      Enter same passphrase again:
      Your identification has been saved in ssh_key
      Your public key has been saved in ssh_key.pub
      The key fingerprint is:
      SHA256:DWKo334XMZcZYLOLrd/8HNpjTERPJJ0mc11UYmrPvSA exampleuser@example.com
      The key's randomart image is:
      +---[RSA 4096]----+
      |          +.  ++X|
      |     .   . o.=.*+|
      |    . o . . o==o |
      |   . . . =oo+o...|
      |  .     S +E oo .|
      |   . .   .. . o .|
      |    . . .  . o.. |
      |     .  ...o ++. |
      |      .. .. +o+. |
      +----[SHA256]-----+
  4. バックアップ サーバーに「apigee」という名前のユーザー アカウントを作成します。新しい apigee ユーザーのホーム ディレクトリが /home の下にあることを確認します。
  5. バックアップ サーバーで、新しい /home/apigee ディレクトリ内に「ssh」ディレクトリを作成します。
  6. 公開鍵(前の例の ssh_key.pub)を新しい /home/apigee/ssh ディレクトリの authorized_keys という名前のファイルにコピーします。次に例を示します。
    cd /home/apigee
    mkdir .ssh
    cd .ssh
    vi authorized_keys
  7. バックアップ サーバーで、/home/apigee/ ディレクトリ内にバックアップ ディレクトリを作成します。バックアップ ディレクトリは、apigee ユーザーがアクセスできる限り、任意のディレクトリにすることができます。次に例を示します。
    cd /home/apigee
    mkdir cassandra-backup
  8. 接続をテストします。Cassandra Pod が SSH を使用してバックアップ サーバーに接続できることを確認する必要があります。
    1. Cassandra Pod のシェルにログインします。次に例を示します。
      kubectl exec -it -n apigee APIGEE_CASSANDRA_DEFAULT_0 -- /bin/bash

      ここで、APIGEE_CASSANDRA_DEFAULT_0 は Cassandra Pod の名前です。この名前は、接続元の Pod の名前に変更します。

    2. サーバーの IP アドレスを使用して、SSH でバックアップ サーバーに接続します。
      ssh apigee@BACKUP_SERVER_IP

バックアップのスケジュールと宛先を設定する

overrides.yaml ファイルでバックアップのスケジュールと宛先を設定します。

  1. overrides.yaml ファイルに次のパラメータを追加します。

    パラメータ

    cassandra:
      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"
    

    cassandra:
      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 * * *"
    

    ここで

    プロパティ 説明
    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 * * *

  2. apigeectl を使用して、バックアップ構成をクラスタのストレージ スコープに適用します。
    $APIGEECTL_HOME/apigeectl --datastore -f YOUR_OVERRIDES_FILE

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

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

復元を構成する

復元プロセスでは、バックアップのロケーションからデータが取得され、同じ数のノードを持つ新しい Cassandra クラスタにデータが復元されます。古い Cassandra クラスタからデータは取得されません。

以下の復元手順は、バックアップに Google Cloud Storage を使用しない単一のリージョン デプロイを対象としています。その他のデプロイの場合は、以下のページをご覧ください。

Cassandra のバックアップを復元するには:

  1. ハイブリッド ランタイム デプロイの復元に使用する既存の Kubernetes クラスタ内に、新しい Namespace を作成します。新しい Namespace には元の Namespace 名を使用しないでください。古い Namespace は復元に使用しないでください。
  2. ルート ハイブリッド インストール ディレクトリに、新しい overrides-restore.yaml ファイルを作成します。
  3. 元の overrides.yaml ファイルの完全な Cassandra 構成を新しい overrides-restore.yaml ファイルにコピーします。次に例を示します。
    cp ./overrides.yaml ./overrides-restore.yaml
    
  4. 新しい overrides-restore.yaml ファイルに Namespace の要素を追加します。

    パラメータ

    namespace: YOUR_RESTORE_NAMESPACE
    cassandra:
      ...
      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"
      ..
    

    namespace: cassandra-restore
    cassandra:
      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"
    
  5. ここで

    プロパティ 説明
    namespace

    YOUR_RESTORE_NAMESPACE

    手順 1 で新しい Cassandra クラスタに作成した新しい Namespace の名前。元のクラスタで使用していた Namespace は使用しないでください。

    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 の値です。

  6. 次のコマンドを実行して、古い Namespace の Cassandra ノードの app ラベルを変更します。
    kubectl label pods --overwrite --namespace=OLD_NAMESPACE -l app=apigee-cassandra app=apigee-cassandra-old
    
  7. 新しいハイブリッド ランタイム デプロイを作成します。これにより、新しい Cassandra クラスタが作成され、クラスタへのバックアップ データの復元が開始します。
    ./apigeectl init  -f ../overrides-restore.yaml
    
    ./apigeectl apply  -f ../overrides-restore.yaml
    
  8. 復元が完了したら、新しい 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}}'
    
  9. トラフィックの切り替えが完了すると、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