本頁面說明如何為 Cassandra 排定備份作業,而不需要使用 Cloud Storage。在這種方法中,備份會儲存在您指定的遠端伺服器上,而不是 Cloud Storage 值區。Apigee 會使用 SSH 與遠端伺服器通訊。
您必須將備份作業排定為 cron
工作。將備份排程套用至混合叢集後,Kubernetes 備份工作會定期執行,並遵循執行階段平面中的排程。這項工作會在混合叢集中的每個 Cassandra 節點上觸發備份指令碼,收集節點上的所有資料、建立資料的封存 (壓縮) 檔案,然後將封存檔案傳送至 overrides.yaml
檔案中指定的伺服器。
以下步驟包含完成特定工作 (例如建立 SSH 金鑰組) 的常見範例。請使用適合安裝方式的方法。
這項程序包含以下部分:
設定伺服器和 SSH
- 指定 Linux 或 Unix 伺服器用於備份。您必須透過 SSH 從 Apigee 混合式執行階段層存取這部伺服器。必須有足夠的儲存空間來備份資料。
- 在伺服器上設定 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 格式的帳戶名稱,即可快速辨識哪個帳戶與金鑰相關。 - 在備份伺服器上建立名為
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 名稱。
- 使用掛載 Cassandra 容器的私密安全殼層金鑰和伺服器 IP 位址,透過 SSH 連線至備份伺服器:
ssh -i /var/secrets/keys/key 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_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 apply --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