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

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

Google Cloud Services を使用しない 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. 新しい /home/apigee/ssh ディレクトリの「authorized_keys」という名前のファイルに、公開鍵(前述の例の ssh_key.pub)をコピーします。次に例を示します。
    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 に設定する必要があります。
    path-to-private-key-file ローカル ファイル システム上の SSH 秘密鍵ファイルへのパス(SSH 認証鍵ペアを作成したステップssh_key という名前)。
    backup-server-ip バックアップ サーバーの IP アドレス。
    backup-directory バックアップ サーバー上のバックアップ ディレクトリの名前。これは、home/apigee 内のディレクトリにする必要があります(バックアップ ディレクトリを作成したステップでバックアップ ディレクトリに cassandra_backup という名前を付けています)。
    HYBRID cloudProvider: "HYBRID" プロパティは必須です。
    schedule バックアップの開始時刻。標準の crontab 構文で指定します。デフォルトは 0 2 * * * です。

    注: バックアップをスケジュールする際、バックアップ構成をクラスタに適用した後すぐにバックアップが開始されるようにはしないでください。バックアップ構成を適用すると、Kubernetes によって Cassandra ノードが再作成されます。ノードが再起動する前にバックアップが開始されると(数分前であっても)、バックアップは失敗します。

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

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

復元の設定

指定したタイムスタンプを持つバックアップ ファイルからデータを取得し、同じ数のポッドを持つ新しい Cassandra クラスタに復元します。新しいクラスタには、ランタイム プレーン クラスタとは異なる名前空間が必要です。

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

  1. 新しい Namespace を使用して新しい Kubernetes クラスタを作成します。元のハイブリッド インストールに使用したのと同じクラスタ / Namespace を使用することはできません。
  2. ルート ハイブリッド インストール ディレクトリに、新しい overrides-restore.yaml ファイルを作成します。
  3. 元の overrides.yaml ファイルから新しい Cassandra 構成を新しいファイルにコピーします。
  4. overrides-restore.yaml ファイルに次のパラメータを追加します。

    パラメータ

    namespace: 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: "backup-to-restore"
    

    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"
    

    ここで

    プロパティ 説明
    restore-namespace 新しい Cassandra クラスタの新しい名前空間の名前。 元のクラスタと同じ Namespace は使用しないでください。
    restore:enabled デフォルトでは、復元は無効になっています。このプロパティを true に設定する必要があります。
    path-to-private-key-file ローカル ファイル システム上の SSH 秘密鍵ファイルへのパス(SSH 認証鍵ペアを作成したステップssh_key という名前)。
    backup-server-ip バックアップ サーバーの IP アドレス。
    backup-directory バックアップ サーバー上のバックアップ ディレクトリの名前。これは、home/apigee 内のディレクトリにする必要があります(バックアップ ディレクトリを作成したステップでバックアップ ディレクトリに cassandra_backup という名前を付けています)。
    HYBRID cloudProvider: "HYBRID" プロパティは必須です。
    backup-to-restore 復元する特定のバックアップを標準の crontab 構文で指定します(ワイルドカードは使用できません)。
  5. apigeectl を使用して、バックアップ構成をクラスタのストレージ スコープに適用します。
    $APIGEECTL_HOME/apigeectl --datastore -f your-overrides-restore-file

    your-overrides-restore-file は、編集した overrides-restore.yaml ファイルのパスです。