このセクションでは、Google Cloud を使用せずに、ssh
とファイル システムを使用して、Cassandra データベースのバックアップと復元を構成する方法を説明します。関連情報:
クラウド サービスを使用しない Cassandra のバックアップと復元
クラウド サービスを使用しないバックアップでは、Cassandra データベースのバックアップを、指定したサーバーのファイル システムに保存します。バックアップは、オーバーライド ファイルで指定したスケジュールに従って実行されます。サーバーへの接続は、安全な SSH を使用して行われます。
クラウド サービスを使用しないバックアップの設定
以下の手順には、SSH 認証鍵ペアの作成など、特定のタスクを完了するための一般的な例が含まれています。ご使用の環境に適した方法をお選びください。
このプロシージャは次のパートで構成されています。
サーバーと SSH を設定する
- バックアップに Linux サーバーまたは Unix サーバーを指定します。このサーバーは、Apigee ハイブリッド ランタイム プレーンから 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]-----+ - バックアップ サーバーに「
apigee
」という名前のユーザー アカウントを作成します。新しいapigee
ユーザーのホーム ディレクトリが/home
の下にあることを確認します。 - バックアップ サーバーで、新しい
/home/apigee
ディレクトリ内に「ssh
」ディレクトリを作成します。 - 公開鍵(前の例の
ssh_key.pub
)を新しい/home/apigee/ssh
ディレクトリのauthorized_keys
という名前のファイルにコピーします。次に例を示します。cd /home/apigee
mkdir .ssh
cd .ssh
vi 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
HYBRID
cloudProvider: "HYBRID"
プロパティは必須です。backup:schedule
SCHEDULE
バックアップの開始時刻。標準の crontab 構文で指定します。デフォルト:
0 2 * * *
apigeectl
を使用して、クラスタのストレージ スコープにバックアップ構成を適用します。$APIGEECTL_HOME/apigeectl --datastore -f YOUR_OVERRIDES_FILE
ここで、YOUR_OVERRIDES_FILE は、編集したオーバーライド ファイルのパスです。
復元を構成する
復元プロセスでは、バックアップのロケーションからデータが取得され、同じ数のノードを持つ新しい Cassandra クラスタにデータが復元されます。古い Cassandra クラスタからデータは取得されません。
以下の復元手順は、バックアップに Google Cloud Storage を使用しない単一のリージョン デプロイを対象としています。その他のデプロイの場合は、以下のページをご覧ください。
- バックアップに Google Cloud Storage を使用する単一リージョンのデプロイの場合は、Cassandra のバックアップと復元をご覧ください。
- マルチリージョン デプロイの場合は、GKE と GKE On-Prem でのマルチリージョン デプロイをご覧ください。
Cassandra のバックアップを復元するには:
- ハイブリッド ランタイム デプロイの復元に使用する既存の Kubernetes クラスタ内に、新しい Namespace を作成します。新しい Namespace には元の Namespace 名を使用しないでください。古い Namespace は復元に使用しないでください。
- ルート ハイブリッド インストール ディレクトリに、新しい
overrides-restore.yaml
ファイルを作成します。 -
元の
overrides.yaml
ファイルの完全な Cassandra 構成を新しいoverrides-restore.yaml
ファイルにコピーします。次に例を示します。cp ./overrides.yaml ./overrides-restore.yaml
- 新しい
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"
- 次のコマンドを実行して、古い Namespace の Cassandra ノードの
app
ラベルを変更します。kubectl label pods --overwrite --namespace=OLD_NAMESPACE -l app=apigee-cassandra app=apigee-cassandra-old
- 新しいハイブリッド ランタイム デプロイを作成します。これにより、新しい Cassandra クラスタが作成され、クラスタへのバックアップ データの復元が開始します。
./apigeectl init -f ../overrides-restore.yaml
./apigeectl apply -f ../overrides-restore.yaml
-
復元が完了したら、新しい 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}}'
- トラフィックの切り替えが完了すると、
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
ここで
プロパティ | 説明 |
---|---|
namespace |
YOUR_RESTORE_NAMESPACE 手順 1 で新しい Cassandra クラスタに作成した新しい Namespace の名前。元のクラスタで使用していた Namespace は使用しないでください。 |
restore:enabled |
デフォルトでは、復元は無効になっています。このプロパティを true に設定する必要があります。 |
restore:keyFile |
PATH_TO_PRIVATE_KEY_FILE ローカル ファイル システム上の SSH 秘密鍵ファイルのパス(SSH 認証鍵ペアを作成したステップの |
restore:server |
BACKUP_SERVER_IP バックアップ サーバーの IP アドレス。 |
restore:storageDirectory |
BACKUP_DIRECTORY バックアップ サーバー上のバックアップ ディレクトリの名前。これは、 |
restore:cloudProvider |
|
restore:snapshotTimestamp |
TIMESTAMP
復元するバックアップ スナップショットのタイムスタンプ。使用できるタイムスタンプを確認するには、
ここで、20210203213003 は、その時点で作成されたバックアップを復元する場合に使用する |