Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
本頁說明如何為高復原力環境執行資料庫和叢集容錯移轉測試。
環境的容錯移轉測試會模擬資料中心可用區完全中斷的情況。在這種情況下,叢集和資料庫的區域性中斷可能會同時發生。執行這兩項容錯移轉測試,即可監控高復原力環境執行容錯移轉的成效,並檢查這對 DAG 和工作造成的影響。
事前準備
如要執行容錯移轉測試,您的 Google 帳戶必須具備下列角色和權限:
composer.environments.update
權限。如要查看具有這項權限的角色清單,請參閱「使用 IAM 控管存取權」。Kubernetes Engine 叢集管理員 (
roles/container.clusterAdmin
) 角色,可在環境的叢集上執行kubectl
指令。您也可以直接在 GKE 中佈建 Kubernetes RBAC 角色。
如果您使用授權網路,則必須從可存取 GKE 叢集控制層端點的機器執行
kubectl
指令。視您設定環境控制層端點存取權的方式而定,您可以使用多種選項。詳情請參閱在私人 IP 環境中執行指令。
確認環境健康狀態良好
請務必只在運作正常的環境中執行容錯移轉測試。如要檢查環境是否正常運作,請按照下列步驟操作:
前往 Google Cloud 控制台的「Environments」頁面。
在環境清單中,按一下環境名稱。 「環境詳細資料」頁面隨即開啟。
前往「監控」分頁。
確認所有健康指標都呈現綠色。
執行資料庫容錯移轉測試
您可以執行資料庫容錯移轉測試 (模擬區域中斷),方法是使用 Google Cloud CLI 指令觸發測試。舉例來說,您可能想藉此評估環境資料庫切換至其他區域所需的時間。
如要為環境執行資料庫容錯移轉測試,請按照下列步驟操作:
確認環境狀態良好。
取得環境資料庫的主要區域:
gcloud composer environments fetch-database-properties \ ENVIRONMENT_NAME \ --location LOCATION
更改下列內容:
ENVIRONMENT_NAME
:Cloud Composer 環境的名稱。LOCATION
:環境所在的區域。
範例:
gcloud composer environments fetch-database-properties \ example-environment \ --location us-central1
啟動資料庫容錯移轉測試:
gcloud composer environments database-failover \ ENVIRONMENT_NAME \ --location LOCATION
更改下列內容:
ENVIRONMENT_NAME
:Cloud Composer 環境的名稱。LOCATION
:環境所在的區域。
範例:
gcloud composer environments database-failover \ example-environment \ --location us-central1
等待資料庫容錯移轉測試完成。這項程序最多可能需要 3 分鐘的時間。
確認環境資料庫的主要區域已變更:
gcloud composer environments fetch-database-properties \ ENVIRONMENT_NAME \ --location LOCATION
檢查環境的健康指標,確保環境運作正常。
當「Database available for failover」(可供容錯移轉的資料庫) 環境指標 (
composer.googleapis.com/environment/database/available_for_failover
) 變成True
時,環境的資料庫即可進行另一次容錯移轉。如要進一步瞭解如何在 Cloud Monitoring 中查看環境指標,請參閱「監控環境」一文。
執行環境的叢集容錯移轉測試
您可以對環境的叢集執行容錯移轉測試,模擬可用區中斷情形。舉例來說,您可能想藉此評估環境切換至其他可用區所需的時間。
確認環境健康狀態良好
開始測試前,請確認環境運作正常。
設定環境叢集的憑證
如要取得叢集憑證,請按照下列步驟操作:
前往 Google Cloud 控制台的「Environments」頁面。
在環境清單中,按一下環境名稱。 「環境詳細資料」頁面隨即開啟。
前往「環境設定」分頁。
按一下「查看叢集詳細資料」。
按一下「連線」。
複製並執行顯示的 Google Cloud CLI 指令。
例如:
gcloud container clusters get-credentials \ us-central1-exam-db23ee12-gke \ --region us-central1 \ --project example-project
檢查環境的叢集
檢查環境叢集中執行工作負載的可用區和節點。 您稍後會使用這項資訊模擬區域中斷。您也可以在執行容錯移轉測試時再次執行這些指令,瞭解環境的叢集如何執行容錯移轉。
檢查節點和區域:
kubectl get nodes \ -o=custom-columns=NAME:.metadata.name,NODE:.metadata.labels.topology\\.gke\\.io/zone
檢查 Pod:
kubectl get pods --all-namespaces \ -o=custom-columns=NAME:.metadata.name,STATUS:.status.phase,NODE:.spec.nodeName \ --field-selector metadata.namespace!=kube-system
查看 Pod 的詳細資訊:
kubectl get pods --all-namespaces -o wide \ --field-selector metadata.namespace!=kube-system
排空節點
選擇要模擬中斷的可用區。如果您要一併執行叢集容錯移轉測試和資料庫容錯移轉測試,建議選擇環境中高可用性 Cloud SQL 執行個體的主要區域。舉例來說,如果主要 Cloud SQL 執行個體在 us-central1-a
中執行,您可以先執行資料庫容錯移轉測試,然後在 us-central1-a
中執行叢集的容錯移轉測試,模擬整個 us-central1-a
區域發生中斷。
下列指令會模擬特定區域中的一組節點無法使用。強制從指定可用區的節點中移除 Pod,並防止在這些節點上重新排定 Pod。由於無法排程新的 Pod,因此系統會將新節點新增至叢集。
這個指令不會影響在 composer-system
命名空間中執行的工作負載。您可能會在指令輸出中看到相關錯誤訊息。這不會影響容錯移轉測試。所選可用區中的節點仍標示為不可排程。
如要在所選區域中模擬叢集區域故障,請按照下列步驟操作:
kubectl get nodes -o name -l "topology.gke.io/zone=ZONE" | \
xargs kubectl drain \
--ignore-daemonsets --delete-emptydir-data --force --disable-eviction
更改下列內容:
ZONE
:要模擬叢集區域故障的區域。
查看環境指標

前往 Google Cloud 控制台的「Environments」頁面。
在環境清單中,按一下環境名稱。 「環境詳細資料」頁面隨即開啟。
前往「監控」分頁。
確認下列指標在容錯移轉作業期間為「綠色」,或最多維持「紅色」狀態幾分鐘。
- 環境健康狀態
- 排程器活動訊號
- 網路伺服器健康狀態
- 資料庫健康狀態
- 活躍的工作站數量
- 使用中的排程器
- 使用中的網路伺服器
- 有效觸發條件
請注意,模擬中斷會標示為「叢集維護作業」。
測試完成後,您不需要採取任何額外動作,即可讓環境的叢集恢復容錯移轉就緒狀態。測試期間,環境的叢集會自動新增節點,取代受模擬中斷影響的節點。