Cloud Composer 3 | Cloud Composer 2 | Cloud Composer�
本頁說明如何將現有 Cloud Composer 1 和 Airflow 2 環境中的 DAG、資料和設定,轉移至 Cloud Composer 2 和 Airflow 2。
其他遷移指南
| 寄件者 | 收件者 | 方法 | 指南 | 
|---|---|---|---|
| Cloud Composer 2 | Cloud Composer 3 | 並排使用遷移指令碼 | 指令碼遷移指南 | 
| Cloud Composer 2 | Cloud Composer 3 | 並排比較快照 | 快照遷移指南 | 
| Cloud Composer 1、Airflow 2 | Cloud Composer 3 | 並排比較快照 | 快照遷移指南 | 
| Cloud Composer 1、Airflow 2 | Cloud Composer 2 | 並排比較快照 | 本指南 | 
| Cloud Composer 1、Airflow 2 | Cloud Composer 2 | 並排比較,手動轉移 | 手動遷移指南 | 
| Cloud Composer 1、Airflow 1 | Cloud Composer 2、Airflow 2 | 並排比較快照 | 快照遷移指南 | 
| Cloud Composer 1、Airflow 1 | Cloud Composer 2、Airflow 2 | 並排比較,手動轉移 | 手動遷移指南 | 
| Cloud Composer 1、Airflow 1 | Cloud Composer 1、Airflow 2 | 並排比較,手動轉移 | 手動遷移指南 | 
事前準備
- Cloud Composer 2 版本 2.0.9 以上支援快照。Cloud Composer 1 支援在 1.18.5 中儲存環境快照。 
- Cloud Composer 支援從 Cloud Composer 1 遷移至 Cloud Composer 2。您無法從 Cloud Composer 1 就地升級至 Cloud Composer 2。 
- 支援快照的 Airflow 資料庫大小上限為 20 GB。如果環境的資料庫超過 20 GB,請縮減 Airflow 資料庫的大小。 
- 如要建立快照,環境值區中 - /dags、- /plugins和- /data資料夾的物件總數必須少於 100,000 個。
- 如果使用 XCom 機制傳輸檔案,請務必按照 Airflow 的指南使用。使用 XCom 傳輸大型檔案或大量檔案會影響 Airflow 資料庫的效能,並可能導致載入快照或升級環境時發生錯誤。請考慮使用 Cloud Storage 等替代方案來移轉大量資料。 
步驟 1:暫停 Cloud Composer 1 環境中的 DAG
為避免重複執行 DAG,請先暫停 Cloud Composer 1 環境中的所有 DAG,再儲存快照。
你可以使用下列任一選項:
- 在 Airflow 網頁介面中,前往「DAGs」並手動暫停所有 DAG。 
- 使用 composer_dags 指令碼暫停所有 DAG: - python3 composer_dags.py --environment COMPOSER_1_ENV \ --project PROJECT_ID \ --location COMPOSER_1_LOCATION \ --operation pause- 取代: - COMPOSER_1_ENV,其中包含 Cloud Composer 1 環境的名稱。
- 將 PROJECT_ID替換為專案 ID。
- COMPOSER_1_LOCATION改成環境所在的地區。
 
- (Airflow 2.9.1 以上版本) 如果暫停大量 DAG 時發生配額錯誤,可以使用下列 Airflow CLI 指令一次暫停所有 DAG: - gcloud composer environments run COMPOSER_1_ENV dags pause \ --project PROJECT_ID \ --location COMPOSER_1_LOCATION \ -- -y --treat-dag-id-as-regex ".*"
- (Airflow 2.9.1 之前的版本) 如果暫停大量 DAG 時發生配額錯誤,可以使用 Airflow REST API 暫停 DAG。另請參閱 Airflow 說明文件中的「試用 API」。 
步驟 2:儲存 Cloud Composer 1 環境的快照
主控台
建立環境快照:
- 前往 Google Cloud 控制台的「Environments」頁面。 
- 在環境清單中,按一下 Cloud Composer 1 環境的名稱。「環境詳細資料」頁面隨即開啟。 
- 按一下 [Create snapshot] (建立快照)。 
- 在「建立快照」對話方塊中,按一下「提交」。在本指南中,您會將快照儲存在 Cloud Composer 1 環境的值區,但也可以視需要選取其他位置。 
- 等待 Cloud Composer 建立快照。 
gcloud
- 取得 Cloud Composer 1 環境的 bucket URI: - 執行下列指令: - gcloud composer environments describe COMPOSER_1_ENV \ --location COMPOSER_1_LOCATION \ --format="value(config.dagGcsPrefix)"- 取代: - COMPOSER_1_ENV,其中包含 Cloud Composer 1 環境的名稱。
- COMPOSER_1_LOCATION改成環境所在的地區。
 
- 在輸出內容中,移除 - /dags資料夾。結果是 Cloud Composer 1 環境值區的 URI。- 舉例來說,將 - gs://us-central1-example-916807e1-bucket/dags變更為- gs://us-central1-example-916807e1-bucket。
 
- 建立 Cloud Composer 1 環境的快照: - gcloud composer environments snapshots save \ COMPOSER_1_ENV \ --location COMPOSER_1_LOCATION \ --snapshot-location "COMPOSER_1_SNAPSHOTS_FOLDER"- 取代: - COMPOSER_1_ENV,其中包含 Cloud Composer 1 環境的名稱。
- COMPOSER_1_LOCATION,其中包含 Cloud Composer 1 環境所在的區域。
- COMPOSER_1_SNAPSHOTS_FOLDER,並填入 Cloud Composer 1 環境值區的 URI。在本指南中,您會將快照儲存在 Cloud Composer 1 環境的 bucket 中,但您也可以選擇其他位置。如果您指定自訂位置,兩個環境的服務帳戶都必須具備指定位置的讀取和寫入權限。
 
步驟 3:建立 Cloud Composer 2 環境
建立 Cloud Composer 2 環境。您可以從符合預期資源需求的環境預設集開始,之後再進一步擴充及最佳化環境。
您不需要指定設定覆寫和環境變數,因為載入 Cloud Composer 1 環境的快照時,您會稍後替換這些項目。
步驟 4:將快照載入 Cloud Composer 2 環境
主控台
如要將快照載入 Cloud Composer 2 環境,請按照下列步驟操作:
- 前往 Google Cloud 控制台的「Environments」頁面。 
- 在環境清單中,按一下 Cloud Composer 2 環境的名稱。「環境詳細資料」頁面隨即開啟。 
- 按一下「載入快照」。 
- 在「載入快照」對話方塊中,按一下「瀏覽」。 
- 選取含有快照的資料夾。如果您使用本指南的預設位置,這個資料夾會位於 Cloud Composer 1 環境值區的 - /snapshots資料夾中,名稱是快照儲存作業的時間戳記。例如:- us-central1-example-916807e1-bucket/snapshots_example-project_us-central1_example-environment/2022-01-05T18-59-00。
- 按一下「載入」,等待 Cloud Composer 載入快照。 
gcloud
將 Cloud Composer 1 環境的快照載入 Cloud Composer 2 環境:
gcloud composer environments snapshots load \
  COMPOSER_2_ENV \
  --location COMPOSER_2_LOCATION \
  --snapshot-path "SNAPSHOT_PATH"
取代:
- COMPOSER_2_ENV,並將其替換為 Cloud Composer 2 環境的名稱。
- COMPOSER_2_LOCATION,其中 Cloud Composer 2 環境位於該區域。
- SNAPSHOT_PATH,並提供 Cloud Composer 1 環境值區的 URI,然後是快照的路徑。例如:- gs://us-central1-example-916807e1-bucket/snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00。
步驟 5:在 Cloud Composer 2 環境中取消暫停 DAG
你可以使用下列任一選項:
- 在 Airflow 網頁介面中,前往「DAGs」,然後手動逐一取消暫停所有 DAG。 
- 使用 composer_dags 指令碼取消暫停所有 DAG: - python3 composer_dags.py --environment COMPOSER_2_ENV \ --project PROJECT_ID \ --location COMPOSER_2_LOCATION \ --operation unpause- 取代: - COMPOSER_2_ENV,並將其替換為 Cloud Composer 2 環境的名稱。
- 將 PROJECT_ID替換為專案 ID。
- COMPOSER_2_LOCATION改成環境所在的地區。
 
- (Airflow 2.9.1 以上版本) 如果暫停大量 DAG 時發生配額錯誤,可以使用下列 Airflow CLI 指令一次取消暫停所有 DAG: - gcloud composer environments run COMPOSER_2_ENV dags unpause \ --project PROJECT_ID \ --location COMPOSER_2_LOCATION \ -- -y --treat-dag-id-as-regex ".*"
- (Airflow 2.9.1 之前的版本) 如果暫停大量 DAG 時發生配額錯誤,可以使用 Airflow REST API 暫停 DAG。另請參閱 Airflow 說明文件中的「試用 API」。 
步驟 6:檢查 DAG 錯誤
- 在 Airflow 網頁介面中,前往「DAGs」,檢查是否有回報的 DAG 語法錯誤。 
- 確認 DAG 執行作業排定的時間是否正確。 
- 等待 DAG 在 Cloud Composer 2 環境中執行,並確認是否成功。如果 DAG 執行作業成功,請勿在 Cloud Composer 1 環境中取消暫停,否則 Cloud Composer 1 環境會針對相同時間和日期執行 DAG。 
- 如果特定 DAG 執行作業失敗,請嘗試排解 DAG 問題,直到 DAG 在 Cloud Composer 2 中成功執行為止。 
步驟 7:監控 Cloud Composer 2 環境
將所有 DAG 和設定檔轉移至 Cloud Composer 2 環境後,請監控潛在問題、失敗的 DAG 執行作業,以及整體環境健康狀態。
如果 Cloud Composer 2 環境運作正常的時間夠長,請考慮刪除 Cloud Composer 1 環境。