您可以使用 CSI (容器儲存介面) 快照,備份及還原混合資料。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。在適合管理工具的目錄中執行下列指令:- Helm 資訊套件:
$APIGEE_HELM_CHARTS_HOME/apigee-operator/etc/ apigeectl:HYBRID_BASE_DIRECTORY/hybrid-files/
./tools/create-service-account --env non-prod --dir ./service-accounts
這個指令會建立名為
apigee-non-prod的單一服務帳戶,供非正式環境使用,並將下載的金鑰檔案放在./service-accounts目錄中。如要進一步瞭解 Google Cloud 服務帳戶,請參閱「建立及管理服務帳戶」。
- Helm 資訊套件:
create-service-account指令會儲存含有服務帳戶私密金鑰的 JSON 檔案。檔案會儲存在執行指令的目錄中。您將在後續步驟中用到這個檔案的路徑。
- 執行下列
- 開啟
overrides.yaml檔案。設定下列參數,如範例覆寫檔案所示。- 在
backup區塊中設定下列一般參數。如果您已為非 CSI 混合備份解決方案設定這些參數,則可將相同參數用於 CSI 快照。 如要進一步瞭解每個值,請參閱備份屬性參考表。
針對
backup:- enabled:設為
true即可啟用排定的備份。 - 映像檔中的 pullPolicy:設為
Always。 - 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 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 備份的時間戳記。
- 映像檔中的 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" cloudProvider: "CSI" image: pullPolicy: Always
遷移至 CSI 備份與還原
如果您先前未使用混合備份與還原功能,可以按照「設定 CSI 備份」中的操作說明建立新的 CSI 備份,不必執行本節中的步驟。這些步驟將引導您從非 CSI 備份和還原解決方案遷移至 CSI 備份。
- 使用目前設定的非 CSI 備份方法產生新的備份。
- 變更混合式
overrides.yaml檔案中的備份設定,使用 CSI 備份覆寫,如備份設定範例所示。 - 在
overrides.yaml檔案中套用變更:Helm
helm upgrade datastore apigee-datastore/ \ --namespace apigee \ --atomic \ -f OVERRIDES_FILE.yaml
Error: UPGRADE FAILED: "datastore" has no deployed releasesapigeectl$APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE.yaml
- 驗證備份工作:
kubectl get cronjob -n apigee
- 備份工作完成後,請確認已建立快照。產生的快照數量應等同於 Hybrid 執行個體中的 Cassandra 節點數量。
kubectl get volumesnapshot -n apigee