本頁面說明如何為 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.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_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 設定,自動觸發備份工作。不過,您也可以視需要使用下列指令手動啟動備份工作:
kubectl create job -n APIGEE_NAMESPACE --from=cronjob/apigee-cassandra-backup MANUAL_BACKUP_JOB_NAME
其中 MANUAL_BACKUP_JOB_NAME 是您要建立的手動備份工作名稱。
疑難排解
- 
    測試從 Cassandra Pod 建立的連線。您必須確保 Cassandra 容器可以使用 SSH 連線至備份伺服器:
    - 
        登入 Cassandra pod 的殼層。例如:
        kubectl exec -it -n APIGEE_NAMESPACE APIGEE_CASSANDRA_POD -- /bin/bash 其中 APIGEE_CASSANDRA_POD 是 Cassandra Pod 的名稱。將其變更為要連線的 Pod 名稱。 
- 
        使用已掛載 Cassandra 容器的私密安全殼層金鑰和伺服器 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