このセクションでは、Google Cloud を使用せずに ssh とファイル システムを使用して、Cassandra データベースのバックアップと復元を構成する方法について説明します。関連情報:
Google Cloud Services を使用しない 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
」ディレクトリを作成します。 - 新しい
/home/apigee/ssh
ディレクトリの「authorized_keys
」という名前のファイルに、公開鍵(前述の例のssh_key.pub
)をコピーします。次に例を示します。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
に設定する必要があります。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 ノードが再作成されます。ノードが再起動する前にバックアップが開始されると(数分前であっても)、バックアップは失敗します。
apigeectl
を使用して、バックアップ構成をクラスタのストレージ スコープに適用します。$APIGEECTL_HOME/apigeectl --datastore -f your-overrides-file
ここで、your-overrides-file は、編集したオーバーライド ファイルのパスです。
復元の設定
指定したタイムスタンプを持つバックアップ ファイルからデータを取得し、同じ数のポッドを持つ新しい Cassandra クラスタに復元します。新しいクラスタには、ランタイム プレーン クラスタとは異なる名前空間が必要です。
Cassandra のバックアップを復元するには:
- 新しい Namespace を使用して新しい Kubernetes クラスタを作成します。元のハイブリッド インストールに使用したのと同じクラスタ / Namespace を使用することはできません。
- ルート ハイブリッド インストール ディレクトリに、新しい
overrides-restore.yaml
ファイルを作成します。 - 元の
overrides.yaml
ファイルから新しい Cassandra 構成を新しいファイルにコピーします。 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 構文で指定します(ワイルドカードは使用できません)。 apigeectl
を使用して、バックアップ構成をクラスタのストレージ スコープに適用します。$APIGEECTL_HOME/apigeectl --datastore -f your-overrides-restore-file
your-overrides-restore-file は、編集した
overrides-restore.yaml
ファイルのパスです。