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 服務代理程式帳戶,都具備必要權限:
您的帳戶必須具備可觸發環境更新作業的角色。
環境的服務帳戶必須具備足夠權限可執行更新作業的角色。
Cloud Composer 服務代理程式帳戶必須具備建立繫結的權限,才能在環境的服務帳戶和環境叢集的 Kubernetes 服務帳戶之間建立繫結。
gcloud composer environments update
指令會在作業完成時終止。您可以加上--async
旗標,以避免等待作業完成。
更新環境
如要進一步瞭解如何更新環境,請參閱其他說明文件頁面,瞭解特定更新作業。例如:
查看環境詳細資料
主控台
前往 Google Cloud 控制台的「Environments」頁面。
在環境清單中,按一下環境名稱。 「環境詳細資料」頁面隨即開啟。
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 資料庫大小。