このページでは、Cloud Storage を使用せずに Cassandra のバックアップをスケジュールする方法について説明します。この方法では、バックアップは Cloud Storage バケットではなく、ユーザーが指定したリモート サーバーに保存されます。Apigee は SSH を使用してリモート サーバーと通信します。
バックアップは cron
ジョブとしてスケジュールする必要があります。バックアップ スケジュールがハイブリッド クラスタに適用されると、ランタイム プレーンのスケジュールに従って Kubernetes バックアップ ジョブが定期的に実行されます。このジョブは、ハイブリッド クラスタ内の各 Cassandra ノードでバックアップ スクリプトをトリガーし、ノード上のすべてのデータを収集して、データのアーカイブ(圧縮)ファイルを作成し、アーカイブを overrides.yaml
ファイルで指定されたサーバーに送信します。
以下の手順には、SSH 認証鍵ペアの作成など、特定のタスクを完了するための一般的な例が含まれています。ご使用の環境に適した方法をお選びください。
このプロシージャは次のパートで構成されています。
サーバーと SSH を設定する
- バックアップ サーバーを選択する: バックアップに十分なストレージがある Linux サーバーまたは Unix サーバーを選択し、Apigee ハイブリッド ランタイム プレーンから SSH 経由でアクセスできることを確認します。
- SSH サーバーを構成する: SSH サーバーをインストールするか、既存の SSH サーバーが安全であることを確認します。
- SSH 認証鍵ペアを作成する: パスフレーズなしで 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]-----+ここで、exampleuser@example.com は文字列です。
ssh-keygen
コマンドの-C
に続く文字列はすべて、新しく作成されたssh
キーに含まれるコメントになります。入力文字列には任意の文字列を指定できます。exampleuser@example.com の形式でアカウント名を使用すると、鍵に対応するアカウントをすばやく特定できます。このコマンドは、秘密鍵ファイル(ssh_key.rsa など)と公開鍵ファイル(ssh_key.pub など)の 2 つの SSH 認証鍵ファイルを生成します。
ランタイム プレーンがアクセスできる場所に秘密鍵を保存します。
- ユーザー アカウントを追加する: バックアップ サーバーで、
/home/apigee
の下にホーム ディレクトリを持つ apigee という名前のユーザーを作成します。新しいapigee
ユーザーのホーム ディレクトリが/home
の下にあることを確認します。 - .ssh ディレクトリを設定する: バックアップ サーバーで、
/home/apigee/.ssh
に.ssh
ディレクトリを作成します。次に例を示します。cd /home/apigee
mkdir .ssh
cd .ssh
vi authorized_keys
- 公開鍵をインストールする: 公開鍵を
/home/apigee/
ディレクトリ内のauthorized_keys
ファイルに配置します。バックアップ ディレクトリには、apigee
ユーザーがアクセス可能な任意のディレクトリを使用できます。ssh public key
ファイルの内容をファイルに貼り付けます。 - SSH アクセスを確認する: ローカルマシンまたはクラスタノードから接続をテストします。
ssh -i PATH_TO_PRIVATE_KEY_FILE apigee@BACKUP_SERVER_IP
バックアップのスケジュールと宛先を設定する
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: "private.key" # path relative to apigee-datastore path 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
と名付けています)へのパス。このパスは、apigee-datastore
チャート ディレクトリからの相対パスにする必要があります。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 構文で指定します。時刻は Kubernetes クラスタのローカル タイムゾーンで指定します。デフォルト:
0 2 * * *
- バックアップ構成をクラスタのストレージ スコープに適用します。
helm upgrade datastore apigee-datastore/ \ --namespace apigee \ --atomic \ -f OVERRIDES_FILE.yaml
ここで、OVERRIDES_FILE は、先ほど編集したオーバーライド ファイルのパスです。
- バックアップ ジョブを確認します。次に例を示します。
kubectl get cronjob -n apigee
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE apigee-cassandra-backup 33 * * * * False 0 <none> 94s
トラブルシューティング
- Cassandra Pod から接続をテストします。Cassandra Pod が SSH を使用してバックアップ サーバーに接続できることを確認する必要があります。
- Cassandra Pod のシェルにログインします。次に例を示します。
kubectl exec -it -n apigee APIGEE_CASSANDRA_DEFAULT_0 -- /bin/bash
ここで、APIGEE_CASSANDRA_DEFAULT_0 は Cassandra Pod の名前です。この名前を接続元の Pod の名前に変更します。
- Cassandra Pod にマウントした SSH 秘密鍵とサーバーの IP アドレスを使用して、SSH でバックアップ サーバーに接続します。
ssh -i /var/secrets/keys/key apigee@BACKUP_SERVER_IP
- Cassandra Pod のシェルにログインします。次に例を示します。
- Cassandra Pod からリモート サーバーにアクセスできない場合は、リモート サーバーの SSH 構成を再度確認し、データストアのアップグレードが正常に終了したことを確認してください。
- Cassandra が正しい秘密鍵を使用しているかどうかは、Cassandra Pod にログインしているときに次のコマンドを実行し、出力を作成した秘密鍵と比較することで確認できます。
cat /var/secrets/keys/key