更新 Cloud Composer 環境

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

本頁說明如何更新環境。

關於更新作業

變更環境參數 (例如指定新的資源調度和效能參數,或安裝自訂 PyPI 套件) 時,環境會更新。

這項作業完成後,變更就會在您的環境中生效。

單一 Cloud Composer 環境一次只能啟動一項更新作業。您必須等待更新作業完成,才能開始其他環境作業。

觸發器 CPU 上限

Cloud Composer 2.4.4 版採用不同的Airflow 觸發器元件效能調整方法,適用於所有 Cloud Composer 2 版本。

在 2.4.4 之前的版本中,Cloud Composer 環境最多只能使用 1 或 2 個觸發器。變更後,每個環境最多可有 10 個觸發器,但每個觸發器最多只能有 1 個 vCPU。

如果環境設定為每個觸發條件使用超過 1 個 vCPU,環境更新作業就會失敗。您必須調整設定,符合 1 個 vCPU 的限制,才能更新其他元件。

如需詳細資訊,請參閱:

更新對正在執行的 Airflow 工作有何影響

執行更新作業時,環境中的 Airflow 排程器和工作站可能需要重新啟動。在這種情況下,所有目前執行的工作都會終止。更新作業完成後,Airflow 會根據您為 DAG 設定重試的方式,排定這些工作的重試時間。

下列變更會導致 Airflow 工作終止:

  • 將環境升級至新版本。
  • 新增、變更或刪除自訂 PyPI 套件。
  • 變更 Cloud Composer 環境變數。
  • 新增或移除 Airflow 設定選項覆寫,或變更其值。
  • 變更 Airflow 工作人員的 CPU、記憶體或儲存空間。
  • 如果新值低於目前執行中的工作站數量,則減少 Airflow 工作站數量上限。舉例來說,如果環境目前執行三個工作站,但上限減少為兩個。

  • 變更環境的彈性模式。

下列變更不會導致 Airflow 工作終止:

  • 建立、更新或刪除 DAG (不包括更新作業)。
  • 暫停或取消暫停 DAG (不是更新作業)。
  • 變更 Airflow 變數 (不是更新作業)。
  • 變更 Airflow 連線 (不是更新作業)。
  • 啟用或停用 Dataplex Universal Catalog 資料歷程整合功能。
  • 變更環境大小。
  • 變更排程器數量。
  • 變更 Airflow 排程器的 CPU、記憶體或儲存空間。
  • 變更觸發條件數量。
  • 變更 Airflow 觸發器的 CPU、記憶體或儲存空間。
  • 變更 Airflow 網頁伺服器的 CPU、記憶體或儲存空間。
  • 增加或減少工作站數量下限。
  • 減少 Airflow 工作站數量上限。舉例來說,如果環境目前執行兩個工作站,而上限減少為三個。
  • 變更維護期間。
  • 變更排程快照設定。
  • 變更環境標籤。

使用 Terraform 更新

terraform apply 之前執行 terraform plan,看看 Terraform 是否會建立新環境,而不是更新現有環境。

事前準備

  • 確認您帳戶、環境的服務帳戶,以及專案中的 Cloud Composer 服務代理程式帳戶,都具備必要權限:

  • gcloud composer environments update 指令會在作業完成時終止。您可以加上 --async 旗標,以避免等待作業完成。

更新環境

如要進一步瞭解如何更新環境,請參閱其他說明文件頁面,瞭解特定更新作業。例如:

查看環境詳細資料

主控台

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

    前往「環境」

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

gcloud

執行下列 gcloud 指令:

gcloud composer environments describe ENVIRONMENT_NAME \
  --location LOCATION

取代:

  • ENVIRONMENT_NAME 替換為環境的名稱。
  • LOCATION 改成環境所在的地區。

API

建構 environments.get API 要求。

範例:

GET https://composer.googleapis.com/v1/projects/example-project/
locations/us-central1/environments/example-environment

Terraform

針對環境的資源執行 terraform state show 指令。

環境的 Terraform 資源名稱可能與環境名稱不同。

terraform state show google_composer_environment.RESOURCE_NAME

取代:

  • RESOURCE_NAME 改為環境資源的名稱。

復原更新變更

在極少數情況下,更新作業可能會中斷 (例如因為逾時),且要求的變更可能不會在所有環境元件 (例如 Airflow 網頁伺服器) 中復原。

舉例來說,更新作業可能會安裝或移除額外的 PyPI 模組、重新定義或定義新的 Airflow 或 Cloud Composer 環境變數,或是變更部分 Airflow 相關參數。

舉例來說,如果觸發更新作業時,其他作業正在進行中 (例如 Cloud Composer 叢集的自動調整或維護作業),就可能發生這種情況。

在這種情況下,建議您重複執行作業。

更新或升級作業的持續時間

更新和升級作業的持續時間會受到下列因素影響:

  • 大多數更新或升級作業都需要重新啟動 Airflow 元件,例如 Airflow 排程器、工作站和網路伺服器。重新啟動元件後,必須先初始化,初始化期間,Airflow 排程器和工作站會從環境的 bucket 下載 /dags/plugins 資料夾的內容。將檔案同步到 Airflow 排程器和工作站的程序不會立即完成,所需時間取決於這些資料夾中所有物件的總大小和數量。

    建議您只在 /dags/plugins 資料夾中保留 DAG 和外掛程式檔案,並移除所有其他檔案。/dags/plugins 資料夾中的資料過多,可能會導致 Airflow 元件初始化速度變慢,在某些情況下甚至可能無法初始化。

    建議您將 /dags/plugins 資料夾中的資料量維持在 30 MB 以下,且絕對不要超過 100 MB。詳情請參閱「處理大量 DAG 和外掛程式」。

  • Airflow 資料庫的大小可能會大幅增加升級作業的時間。建議您維護環境的 Airflow 資料庫,以維持 Airflow 資料庫大小。

後續步驟