從 Apigee hybrid 1.9 開始,您可以使用 CSI (容器儲存介面) 快照備份及還原混合式資料。CSI 備份會產生磁碟快照,並以加密資料的形式儲存在雲端儲存空間。CSI 備份不需要 Google Cloud Storage bucket 或遠端伺服器來儲存備份資料。
建議您為 Google Cloud、AWS 或 Azure 中代管的混合執行個體使用 CSI 備份。
本頁說明如何使用混合式 CSI 備份和還原功能。如需混合備份與還原作業的總覽,請參閱「Cassandra 備份與還原總覽」。
備份與還原限制
使用 CSI 備份和還原功能時,請注意下列限制:
- 所設定儲存空間類別使用的 CSI 驅動程式必須支援 CSI 快照。如需驅動程式資訊,請參閱這份 Kubernetes CSI 驅動程式清單。
- 系統僅支援部分平台,僅支援 Google Cloud、AWS 和 Azure 平台。
- 由於磁碟區快照限制,因此不支援 OpenShift Container Platform。
- 僅支援雲端平台。不支援地端平台。
- CSI 備份資料和非 CSI 混合備份資料不相容。非 CSI 備份無法用於 CSI 還原,CSI 備份也無法用於非 CSI 還原。
- CSI 驅動程式的安裝和功能由 CSI 驅動程式供應商負責。
- 使用者有責任確保叢集資源充足,可佈建 CSI 快照。
- 使用者有責任移除舊的快照資料。
設定 CSI 備份
如要使用 CSI 安排混合備份作業,請按照下列步驟操作:
- 如果先前未設定混合備份:
- 執行下列
create-service-account指令,建立具有標準roles/storage.objectAdmin角色的 Google Cloud 服務帳戶 (SA)。 這個 SA 角色可讓您將備份資料寫入 Cloud Storage。在hybrid-base-directory/hybrid-files目錄中執行下列指令: 這個指令會建立名為./tools/create-service-account --env non-prod --dir ./service-accounts
apigee-non-prod的單一服務帳戶,供非正式環境使用,並將下載的金鑰檔案放在./service-accounts目錄中。 如要進一步瞭解 Google Cloud 服務帳戶,請參閱「建立及管理服務帳戶」。 create-service-account指令會儲存含有服務帳戶私密金鑰的 JSON 檔案。檔案會儲存在執行指令的目錄中。您將在後續步驟中用到這個檔案的路徑。
- 執行下列
- 開啟
overrides.yaml檔案。設定下列參數,如範例覆寫檔案所示。- 在
backup區塊中設定下列一般參數。如果您已為非 CSI 混合備份解決方案設定這些參數,則可將相同參數用於 CSI 快照。 如要進一步瞭解每個值,請參閱備份屬性參考表。
針對
backup:- enabled:設為
true即可啟用排定的備份。 - 映像檔中的 pullPolicy:設為
Always。 - serviceAccountPath: 服務帳戶的路徑。
- schedule:提供 Cron 運算式排程。
- enabled:設為
- 為 CSI 專屬備份設定下列參數:
- Cassandra 儲存空間群組值:設定的 Cassandra 儲存空間類別必須支援 CSI 快照,CSI 備份和還原功能才能運作。如要檢查儲存空間類別是否支援 CSI 快照,請執行下列指令來取得可用的儲存空間類別:
查看各儲存空間類別的「Provisioner」輸出內容。使用 CSI 的佈建器名稱通常會包含「.csi.」部分,例如「pd.csi.storage.gke.io」。在這個 Kubernetes CSI 驅動程式清單中,尋找佈建者名稱。 如果供應商的「其他功能」欄包含「SNAPSHOT」一詞,則使用供應商的儲存空間類別支援 CSI 快照。kubectl get sc
在儲存空間群組中新增這些參數。這兩個值都必須提供。
- storageclass:已啟用 CSI 快照的儲存空間級別名稱。
- 容量:磁碟容量。
- 雲端服務供應商類型:
確認 CSI 快照功能後,請修改覆寫檔案,使用 CSI 備份和還原功能:
- cloudProvider:在
backup中將cloudProvider和restore設為CSI。
- cloudProvider:在
- Cassandra 儲存空間群組值:設定的 Cassandra 儲存空間類別必須支援 CSI 快照,CSI 備份和還原功能才能運作。如要檢查儲存空間類別是否支援 CSI 快照,請執行下列指令來取得可用的儲存空間類別:
- 在
備份設定範例
本節顯示範例overrides.yaml 檔案中與備份相關的部分。
cassandra: hostNetwork: false replicaCount: 3 storage: storageclass: standard-rwo capacity: 100Gi image: pullPolicy: Always backup: enabled: true image: pullPolicy: Always serviceAccountPath: "/Users/myuser/apigee-hybrid/hybrid-files/service-accounts/mycompany-hybrid-apigee-cassandra.json" cloudProvider: "CSI" schedule: "0 * * 11 *"
啟動手動備份
系統會根據 overrides.yaml 檔案中設定的 cron 排程,自動產生 CSI 備份。
如要啟動手動 CSI 備份作業,請使用下列指令:
kubectl create job -n apigee --from=cronjob/apigee-cassandra-backup backup-pod-name
backup-pod-name 是要建立的備份 Pod 名稱。
驗證備份
如要確認備份作業是否成功,其中一種方法是使用下列指令,檢查 Kubernetes 叢集上的磁碟區快照:
kubectl get volumesnapshot -n apigee
輸出內容會顯示叢集上目前的快照清單。CSI 備份程序會為每個 Cassandra 磁碟建立快照。產生的快照數量應與叢集中的 Cassandra Pod 總數相符。
還原備份
使用這個程序還原先前產生的 CSI 備份。如需還原備份的一般資訊和程序總覽,請參閱還原總覽頁面。
如要啟動 CSI 備份還原作業,請按照混合式非 CSI 單一區域還原的指示操作,但請在 overrides.yaml 的 restore 區塊中使用下列值。如要進一步瞭解每個值,請參閱備份屬性參考資料表,並參閱還原設定範例。
- enabled:設為
true,即可還原以snapshotTimestamp時間戳記參照的備份。 - snapshotTimestamp:提供先前 CSI 備份的時間戳記。
- serviceAccountPath: 服務帳戶的路徑。
- 映像檔中的 pullPolicy:設為
Always。
如要尋找要還原的 snapshotTimestamp 值,請執行下列指令,取得可用快照清單:
kubectl get volumesnapshot -n apigee
pvc-us-west2-b-20220803004907-47beff0e306d8861
20220803004907。
還原設定範例
本節顯示範例overrides.yaml 檔案中與還原相關的部分。
cassandra: hostNetwork: false replicaCount: 3 storage: storageclass: standard-rwo capacity: 100Gi image: pullPolicy: Always restore: enabled: true snapshotTimestamp: "20220908222130" serviceAccountPath: "/Users/myuser/apigee-hybrid/hybrid-files/service-accounts/mycompany-hybrid-apigee-cassandra.json" cloudProvider: "CSI" image: pullPolicy: Always
遷移至 CSI 備份與還原
如果您先前未使用混合備份與還原功能,可以按照「設定 CSI 備份」中的操作說明建立新的 CSI 備份,不必執行本節中的步驟。這些步驟將引導您從非 CSI 備份和還原解決方案遷移至 CSI 備份。
- 使用目前設定的非 CSI 備份方法產生新的備份。
- 變更混合式
overrides.yaml檔案中的備份設定,使用 CSI 備份覆寫,如備份設定範例所示。 - 在
overrides.yaml檔案中套用變更:
$APIGEECTL_HOME/apigeectl apply -f YOUR_OVERRIDES_FILE
- 驗證備份工作:
kubectl get cronjob -n apigee
- 備份工作完成後,請確認已建立快照。產生的快照數量應等同於 Hybrid 執行個體中的 Cassandra 節點數量。
kubectl get volumesnapshot -n apigee