您可以使用 CSI (容器儲存空間介面) 快照來備份及還原混合式資料。CSI 備份會觸發底層儲存空間系統使用提供的 CSI 驅動程式拍攝的磁碟快照。CSI 備份不需要 Google Cloud Storage 值區或遠端伺服器來儲存備份資料。
建議在 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
可啟用排定的備份。 - image 中的 pullPolicy:設為
Always
。 - schedule:提供 Cron 運算式排程。
- enabled:設為
- 設定 CSI 專屬備份的參數:
- Cassandra 儲存空間群組值:已設定的 Cassandra 儲存空間類別必須支援 CSI 快照,才能執行 CSI 備份和還原作業。如要檢查儲存空間類別是否支援 CSI 快照,請執行下列指令,取得可用的儲存空間類別:
查看各儲存空間級別的「Provisioner」輸出內容。使用 CSI 的 Provisioner 名稱通常會包含「.csi.」部分,例如「pd.csi.storage.gke.io」。請在這個 Kubernetes CSI 驅動程式清單中尋找提供者名稱。如果供應工具的「其他功能」欄包含「快照」字樣,則使用供應工具的儲存空間類別會支援 CSI 快照。kubectl get sc
在儲存空間群組中新增這些參數。這兩個值都是必填項目。
- storageclass:支援 CSI 快照的儲存空間級別名稱。
- capacity:磁碟的容量。
- 雲端供應商類型:
確認 CSI 快照功能後,請修改覆寫檔案,以便使用 CSI 備份和還原功能:
- cloudProvider:將
backup
和restore
中的cloudProvider
設為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 *"
啟動手動備份
CSI 備份會根據 overrides.yaml
檔案中設定的 cron 排程自動產生。
如要啟動手動 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 備份的時間戳記。
- image 中的 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
apigeectl
$APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE.yaml
- 驗證備份工作:
kubectl get cronjob -n apigee
- 備份工作完成後,請確認快照已建立。產生的快照數量應與混合型執行個體中的 Cassandra 節點數量相同。
kubectl get volumesnapshot -n apigee