設定高度彈性的環境

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

本頁說明如何設定高復原力 (高可用性) Cloud Composer 環境。

關於高復原力 (高可用性) 環境

高復原力環境是多區域環境,至少會在所選區域的兩個區域中執行。Cloud Composer 會自動將環境元件分配到各個可用區。

舉例來說,區域性中斷會中斷在特定區域執行的 Airflow 工作。隨後,高復原力環境會復原,在不同區域重新啟動受影響的元件,並將資料庫切換至次要區域。因此,Airflow 可以重新排定並重新啟動失敗的 Airflow 工作,同時保留 DAG 執行記錄和其他設定。

環境的高可用性資料庫簡介

在高可用性 Cloud Composer 環境中,儲存環境資料庫的 Cloud SQL 元件會以高可用性模式執行。Cloud SQL 的主要執行個體和待命執行個體會分散在各個可用區。

如果發生中斷情形,環境的 Cloud SQL 執行個體會自動將資料庫容錯移轉至待命 Cloud SQL 執行個體。您不需要在 Cloud Composer 環境中執行任何其他動作。主要可用區恢復運作後,環境會切換回兩個可用區 (主要和次要)。在某些情況下,主要和次要可用區可以互換。高可用性模式下的 Cloud SQL 執行個體在容錯移轉後,會使用相同的 IP 位址。

關於高可用性 Airflow 元件

高復原力環境是多區域環境,至少會在所選區域的兩個區域中執行。下列元件會在不同區域中執行:

工作站數量下限設為兩個,且環境的叢集會在區域之間分配工作站執行個體。如果發生區域服務中斷,受影響的工作人員執行個體會重新排定至其他區域。

如要進一步瞭解高復原力環境的架構,請參閱「高復原力環境架構」。

事前準備

  • 在 Cloud Composer 3 中,高復原力適用於私人 IP 和公開 IP 環境。

  • 高復原力環境會執行額外的環境元件。與一般環境相比,這會導致成本增加

  • 如要將標準環境更新為高復原力環境,請確認環境符合下列設定需求。如果環境不符合這些需求,請更新環境的規模和效能參數

    • Airflow 工作站數量下限為兩個以上。
    • Airflow 排程器數量正好為兩個。

    • 至少兩個 DAG 處理器。

    • 如果您在 DAG 中使用可延遲運算子,則至少需要兩個觸發器。

建立高復原力環境

如要建立高韌性環境,請在建立環境時啟用高韌性模式

將標準環境更新為高彈性模式

主控台

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

    前往「環境」

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

  3. 選取「環境設定」分頁標籤。

  4. 在「復原模式」部分中,按一下「編輯」

  5. 選取「高復原力」,然後按一下「儲存」

gcloud

  gcloud composer environments update ENVIRONMENT_NAME \
    --location LOCATION \
    --enable-high-resilience

更改下列內容:

  • ENVIRONMENT_NAME:環境名稱。
  • LOCATION:環境所在的區域。

API

  1. 建構 environments.patch API 要求。

  2. 在這個要求中:

    1. updateMask 參數中,指定 config.resilienceMode 遮罩。

    2. 在要求主體中,指定 HIGH_RESILIENCE 即可切換至高復原力模式。

範例:

// PATCH https://composer.googleapis.com/v1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.resilienceMode

{
 "config": {
   "resilience_mode": { "HIGH_RESILIENCE" }
   }
 }

Terraform

config 區塊中的 resilience_mode 欄位會指定復原模式。如要使用高復原模式,請將此值設為 HIGH_RESILIENCE

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  config {

    resilience_mode = "HIGH_RESILIENCE"

  }
}

更改下列內容:

  • ENVIRONMENT_NAME:環境名稱。
  • LOCATION:環境所在的區域。

範例:

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"

  config {

    resilience_mode = "HIGH_RESILIENCE"

}

將高彈性環境變更為標準彈性模式

您隨時可以將環境變更為標準復原模式。這項作業:

  • 將環境中的網頁伺服器數量減少為一個。
  • 關閉環境 Airflow 資料庫的高可用性模式
  • 不會變更 Airflow 工作站、排程器或觸發器數量下限的設定。

主控台

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

    前往「環境」

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

  3. 選取「環境設定」分頁標籤。

  4. 在「復原模式」部分中,按一下「編輯」

  5. 選取「標準復原能力 (預設)」,然後按一下「儲存」

gcloud

  gcloud composer environments update ENVIRONMENT_NAME \
    --location LOCATION \
    --disable-high-resilience

更改下列內容:

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

API

  1. 建構 environments.patch API 要求。

  2. 在這個要求中:

    1. updateMask 參數中,指定 config.resilienceMode 遮罩。

    2. 在要求主體中,指定 RESILIENCE_MODE_UNSPECIFIED 切換至標準復原模式。

範例:

// PATCH https://composer.googleapis.com/v1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.resilienceMode

{
 "config": {
   "resilience_mode": { "RESILIENCE_MODE_UNSPECIFIED" }
   }
 }

Terraform

config 區塊中的 resilience_mode 欄位會指定復原模式。如要使用標準復原模式,請將此值設為 STANDARD_RESILIENCE

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  config {

    resilience_mode = "STANDARD_RESILIENCE"

  }
}

更改下列內容:

  • ENVIRONMENT_NAME:環境名稱。
  • LOCATION:環境所在的區域。

範例:

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"

  config {

    resilience_mode = "STANDARD_RESILIENCE"

}

檢查環境是否以高復原模式執行

主控台

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

    前往「環境」

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

  3. 選取「環境設定」分頁標籤。

  4. 在「韌性模式」部分,查看環境的韌性模式。

gcloud

如要檢查環境是否已啟用高復原力模式,請執行下列 Google Cloud CLI 指令。True 值表示環境已啟用高復原模式。

gcloud composer environments describe ENVIRONMENT_NAME \
  --location LOCATION \
  --format="value(config.resilienceMode)"

更改下列內容:

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

後續步驟