本頁說明如何排定 Cassandra 備份作業,而不使用 Cloud Storage。使用這種方法時,備份會儲存在您指定的遠端伺服器,而不是 Cloud Storage bucket。Apigee 會使用 SSH 與遠端伺服器通訊。
您必須將備份作業排定為 cron 工作。將備份排程套用至混合式叢集後,系統會根據執行階段平面中的排程,定期執行 Kubernetes 備份工作。這項工作會觸發混合式叢集中每個 Cassandra 節點上的備份指令碼,收集節點上的所有資料、建立資料的封存 (壓縮) 檔案,並將封存檔案傳送至 overrides.yaml 檔案中指定的伺服器。
下列步驟包含完成特定工作的常見範例,例如建立 SSH 金鑰組。請使用適合安裝作業的方法。
這項程序包含下列部分:
設定伺服器和 SSH
- 選取備份伺服器:選擇 Linux 或 Unix 伺服器,並確保伺服器有足夠的儲存空間來備份資料,且可透過 Apigee Hybrid 執行階段平面存取。
- 設定 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]-----+其中:exampleuser@example.com 是字串。
ssh-keygen指令中-C後方的任何字串,都會成為新建立的ssh金鑰中包含的註解。輸入字串可以是任何字串。使用 exampleuser@example.com 格式的帳戶名稱時,您可以快速識別金鑰所屬的帳戶。這項指令會產生兩個 SSH 金鑰檔案:私密金鑰檔案 (例如 `ssh_key.rsa`) 和公開金鑰檔案 (例如 `ssh_key.pub`)。
將私密金鑰儲存至執行階段層可存取的位置。
- 新增使用者帳戶:在備份伺服器上,建立名為 apigee 的使用者,並在
/home/apigee下建立主目錄。確認新apigee使用者在/home下有主目錄。 - 設定 .ssh 目錄:在備份伺服器上,於
/home/apigee/.ssh中建立.ssh目錄。例如:cd /home/apigeemkdir .sshcd .sshvi 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:keyFilePATH_TO_PRIVATE_KEY_FILE
本機檔案系統中安全殼層私密金鑰檔案的路徑 (在建立安全殼層金鑰組的步驟中,該檔案名為
ssh_key)。這個路徑必須相對於apigee-datastore圖表目錄。backup:serverBACKUP_SERVER_IP
備份伺服器的 IP 位址。
backup:storageDirectoryBACKUP_DIRECTORY
備份伺服器上的備份目錄名稱。這必須是
home/apigee內的目錄 (備份目錄在建立備份目錄的步驟中命名為cassandra_backup)。backup:cloudProviderHYBRID如要備份至遠端伺服器,請將屬性設為
HYBRID。backup:scheduleSCHEDULE
備份開始時間,以標準 crontab 語法指定。時間以 Kubernetes 叢集的當地時區為準。預設值:
0 2 * * * - 將備份設定套用至叢集的儲存空間範圍:
helm upgrade datastore apigee-datastore/ \ --install \ --namespace APIGEE_NAMESPACE \ --atomic \ -f OVERRIDES_FILE.yaml
其中 OVERRIDES_FILE 是指您剛編輯的覆寫檔案路徑。
- 驗證備份工作。例如:
kubectl get cronjob -n APIGEE_NAMESPACE
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE apigee-cassandra-backup 33 * * * * False 0 <none> 94s
啟動手動備份
系統會根據 overrides.yaml 檔案中 cassandra.backup.schedule 設定的 Cron 排程,自動觸發備份工作。不過,您也可以視需要使用下列指令,手動啟動備份工作:
kubectl create job -n APIGEE_NAMESPACE --from=cronjob/apigee-cassandra-backup MANUAL_BACKUP_JOB_NAME
其中 MANUAL_BACKUP_JOB_NAME 是要建立的手動備份工作名稱。
疑難排解
-
從 Cassandra Pod 測試連線。請務必確認 Cassandra Pod 可以使用 SSH 連線至備份伺服器:
-
登入 Cassandra Pod 的殼層。例如:
kubectl exec -it -n APIGEE_NAMESPACE APIGEE_CASSANDRA_POD -- /bin/bash
其中 APIGEE_CASSANDRA_POD 是 Cassandra Pod 的名稱。將此值變更為要從中連線的 Pod 名稱。
-
使用已掛接 Cassandra Pod 的私密 SSH 金鑰和伺服器 IP 位址,透過 SSH 連線至備份伺服器:
ssh -i /var/secrets/keys/key apigee@BACKUP_SERVER_IP
-
登入 Cassandra Pod 的殼層。例如:
- 如果無法從 Cassandra Pod 存取遠端伺服器,請再次檢查遠端伺服器的 SSH 設定,並確認升級資料存放區是否成功。
-
登入 Cassandra Pod 後,執行下列指令並比較輸出內容與您建立的私密金鑰,即可檢查 Cassandra 是否使用正確的私密金鑰:
cat /var/secrets/keys/key