このページでは、Cloud Storage を使用せずに Cassandra のバックアップをスケジュールする方法について説明します。この方法では、バックアップは Cloud Storage バケットではなく、ユーザーが指定したリモート サーバーに保存されます。Apigee は SSH を使用してリモート サーバーと通信します。
バックアップは cron ジョブとしてスケジュールする必要があります。バックアップ スケジュールがハイブリッド クラスタに適用されると、ランタイム プレーンのスケジュールに従って Kubernetes バックアップ ジョブが定期的に実行されます。このジョブがハイブリッド クラスタ内の各 Cassandra ノードでトリガーするバックアップ スクリプトにより、ノード上のすべてのデータが収集されてアーカイブ(圧縮)ファイルが作成され、overrides.yaml ファイルで指定されたサーバーに送信されます。
以下の手順には、SSH 認証鍵ペアの作成など、特定のタスクを完了するための一般的な例が含まれています。ご使用の環境に適した方法をお選びください。
このプロシージャは次のパートで構成されています。
サーバーと SSH を設定する
- バックアップに Linux サーバーまたは Unix サーバーを指定します。このサーバーは、Apigee ハイブリッド ランタイム プレーンから SSH で接続可能である必要があります。バックアップ用の十分なストレージが必要です。
- サーバーに SSH サーバーを設定するか、安全な SSH サーバーが構成されていることを確認します。
- SSH 認証鍵ペアを作成し、ハイブリッド ランタイム プレーンからアクセス可能なパスに秘密鍵ファイルを保存します。鍵ペアに空のパスワードを使用しないと、バックアップが失敗します。次に例を示します。ssh-keygen -t rsa -b 4096 -C exampleuser@example.comEnter 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]-----+
- バックアップ サーバーに「apigee」という名前のユーザー アカウントを作成します。新しいapigeeユーザーのホーム ディレクトリが/homeの下にあることを確認します。
- バックアップ サーバーで、新しい /home/apigeeディレクトリ内に「ssh」ディレクトリを作成します。
- 公開鍵(前の例の ssh_key.pub)を新しい/home/apigee/sshディレクトリのauthorized_keysという名前のファイルにコピーします。次に例を示します。cd /home/apigee mkdir .sshcd .sshvi authorized_keys
- バックアップ サーバーで、/home/apigee/ディレクトリ内にバックアップ ディレクトリを作成します。バックアップ ディレクトリは、apigeeユーザーがアクセスできる限り、任意のディレクトリにすることができます。次に例を示します。cd /home/apigee mkdir cassandra-backup
- 接続をテストします。Cassandra Pod が SSH を使用してバックアップ サーバーに接続できることを確認する必要があります。- Cassandra Pod のシェルにログインします。次に例を示します。kubectl exec -it -n apigee APIGEE_CASSANDRA_DEFAULT_0 -- /bin/bash ここで、APIGEE_CASSANDRA_DEFAULT_0 は Cassandra Pod の名前です。この名前は、接続元の Pod の名前に変更します。 
- サーバーの IP アドレスを使用して、SSH でバックアップ サーバーに接続します。ssh apigee@BACKUP_SERVER_IP 
 
- Cassandra Pod のシェルにログインします。次に例を示します。
バックアップのスケジュールと宛先を設定する
    overrides.yaml ファイルでバックアップのスケジュールと宛先を設定します。
- 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- GCP/HYBRID- Cloud Storage バックアップの場合は - GCPに設定します。たとえば、- cloudProvider: "GCP"です。- リモート サーバーのバックアップの場合は、プロパティを - HYBRIDに設定します。たとえば、- cloudProvider: "HYBRID"です。- backup:schedule- SCHEDULE - バックアップの開始時刻。標準の crontab 構文で指定します。デフォルト: - 0 2 * * *
- apigeectlを使用して、バックアップ構成をクラスタのストレージ スコープに適用します。- $APIGEECTL_HOME/apigeectl --datastore -f YOUR_OVERRIDES_FILE - ここで、YOUR_OVERRIDES_FILE は、編集したオーバーライド ファイルのパスです。 
- バックアップ ジョブを確認します。次に例を示します。kubectl get cronjob -n apigee NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE apigee-cassandra-backup 33 * * * * False 0 <none> 94s