Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
本頁說明如何針對高復原力環境執行資料庫和叢集容錯測試。
環境的容錯測試會模擬資料中心中某個區域完全中斷的情況。在這種情況下,叢集的區域停機和資料庫的區域停機可能會同時發生。執行這兩項容錯測試後,您就能監控高度彈性環境的容錯運作情形,並檢查這會對 DAG 和工作造成什麼影響。
事前準備
如要執行備援測試,您的帳戶必須具備下列角色和權限:
composer.environments.update
權限。如要查看具備此權限的角色清單,請參閱「使用身分與存取權管理功能控管存取權」。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
請檢查環境的健康指標,確認環境是否正常。
當可用於容錯移轉的資料庫 (
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」頁面。
在環境清單中,按一下環境名稱。「環境詳細資料」頁面隨即開啟。
前往「監控」分頁。
請確認下列指標在備援作業期間為「綠色」,或最多維持「紅色」狀態幾分鐘。
- 環境健康狀態
- 排程器活動訊號
- 網路伺服器健康狀態
- 資料庫健康狀態
- 活躍的工作站數量
- 使用中的排程器
- 使用中的網路伺服器
- 有效觸發條件
請注意,模擬中斷服務的作業會標示為「叢集維護作業」。
測試結束後,您不需要採取任何其他動作,即可讓環境叢集恢復備援就緒狀態。在測試期間,環境叢集會自動新增節點,取代受模擬中斷服務影響的節點。