為高復原力環境執行容錯移轉測試

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

本頁說明如何針對高復原力環境執行資料庫和叢集容錯測試。

環境的容錯測試會模擬資料中心中某個區域完全中斷的情況。在這種情況下,叢集的區域停機和資料庫的區域停機可能會同時發生。執行這兩項容錯測試後,您就能監控高度彈性環境的容錯運作情形,並檢查這會對 DAG 和工作造成什麼影響。

事前準備

  • 如要執行備援測試,您的帳戶必須具備下列角色和權限:

  • 如果您使用已授權網路,則必須從可存取 GKE 叢集控制層端點的機器上執行 kubectl 指令。視您設定環境控制平面端點存取權的方式而定,您可以使用多種選項。詳情請參閱「在私人 IP 環境中執行指令」。

檢查環境是否正常運作

請務必只在正常運作的環境中執行資料庫和環境的叢集容錯測試。

如要檢查環境是否正常運作,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「Environments」頁面。

    前往「環境」

  2. 在環境清單中,按一下環境名稱。「環境詳細資料」頁面隨即開啟。

  3. 前往「監控」分頁。

  4. 確認所有健康指標均為綠色。

執行資料庫容錯移轉測試

您可以使用 Google Cloud CLI 指令觸發資料庫容錯測試,模擬區域停機。舉例來說,您可能想評估環境資料庫切換至其他區域所需的時間。

如要為環境執行資料庫容錯移轉測試,請按照下列步驟操作:

  1. 確認環境是否正常運作

  2. 取得環境資料庫的主要區域:

    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
    
  3. 開始執行資料庫容錯測試:

    gcloud composer environments database-failover \
        ENVIRONMENT_NAME \
        --location LOCATION
    

    更改下列內容:

    • ENVIRONMENT_NAME:Cloud Composer 環境名稱。
    • LOCATION:環境所在的地區。

    範例:

    gcloud composer environments database-failover \
        example-environment \
        --location us-central1
    
  4. 等待資料庫容錯測試完成。這項程序最多可能需要 3 分鐘的時間。

  5. 確認環境資料庫的主要區域是否已變更:

    gcloud composer environments fetch-database-properties \
        ENVIRONMENT_NAME \
        --location LOCATION
    
  6. 請檢查環境的健康指標,確認環境是否正常

  7. 可用於容錯移轉的資料庫 (composer.googleapis.com/environment/database/available_for_failover) 環境指標變成 True 時,環境的資料庫就會準備好進行另一次容錯移轉。如要進一步瞭解如何在 Cloud Monitoring 中查看環境指標,請參閱「監控環境」。

執行環境的叢集容錯移轉測試

您可以為環境的叢集執行容錯移轉測試,模擬區域停機情形。舉例來說,您可能想評估環境切換至其他區域所需的時間。

檢查環境是否正常運作

開始測試前,請確認環境是否正常運作

為環境的叢集設定憑證

如要取得叢集憑證,請按照下列步驟操作:

  1. 前往 Google Cloud 控制台的「Environments」頁面。

    前往「環境」

  2. 在環境清單中,按一下環境名稱。「環境詳細資料」頁面隨即開啟。

  3. 前往「環境設定」分頁。

  4. 按一下「查看叢集詳細資料」

  5. 按一下「連線」

  6. 複製並執行顯示的 Google Cloud CLI 指令。

    例如:

    gcloud container clusters get-credentials \
      us-central1-exam-db23ee12-gke \
      --region us-central1 \
      --project example-project
    

檢查環境叢集

檢查工作負載在環境叢集中執行的可用區和節點。您稍後會使用這些資訊模擬區域停機情形。您也可以在執行容錯測試時再次執行這些指令,瞭解環境叢集如何執行容錯。

  1. 檢查節點和區域:

    kubectl get nodes \
      -o=custom-columns=NAME:.metadata.name,NODE:.metadata.labels.topology\\.gke\\.io/zone
    
  2. 檢查 pod:

    kubectl get pods --all-namespaces \
    -o=custom-columns=NAME:.metadata.name,STATUS:.status.phase,NODE:.spec.nodeName \
    --field-selector metadata.namespace!=kube-system
    
  3. 查看 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:要模擬叢集區域故障的區域。

查看環境指標

模擬區域服務中斷期間的環境指標
圖 1. 模擬區域停機期間的環境指標 (按一下可放大圖片)
  1. 前往 Google Cloud 控制台的「Environments」頁面。

    前往「環境」

  2. 在環境清單中,按一下環境名稱。「環境詳細資料」頁面隨即開啟。

  3. 前往「監控」分頁。

  4. 請確認下列指標在備援作業期間為「綠色」,或最多維持「紅色」狀態幾分鐘。

    • 環境健康狀態
    • 排程器活動訊號
    • 網路伺服器健康狀態
    • 資料庫健康狀態
    • 活躍的工作站數量
    • 使用中的排程器
    • 使用中的網路伺服器
    • 有效觸發條件

    請注意,模擬中斷服務的作業會標示為「叢集維護作業」。

  5. 測試結束後,您不需要採取任何其他動作,即可讓環境叢集恢復備援就緒狀態。在測試期間,環境叢集會自動新增節點,取代受模擬中斷服務影響的節點。

後續步驟