從 Managed Airflow (舊版第 1 代) 遷移至 Managed Airflow (第 3 代) (Airflow 2)

代管 Airflow (第 3 代) | 代管 Airflow (第 2 代) | 代管 Airflow (舊版第 1 代)

本頁說明如何使用快照,將現有 Managed Airflow (舊版第 1 代) 和 Airflow 2 環境的 DAG、資料和設定,移轉至 Managed Airflow (第 3 代) 和 Airflow 2。

寄件者 收件者 方法 指南
Managed Airflow (第 3 代)、Airflow 2 Managed Airflow (第 3 代)、Airflow 3 並排顯示,手動轉移 手動遷移指南
Managed Airflow (第 2 代) Managed Airflow (第 3 代) 並排使用遷移指令碼 指令碼遷移指南
Managed Airflow (第 2 代) Managed Airflow (第 3 代) 並排比較快照 快照遷移指南
Managed Airflow (舊版第 1 代)、Airflow 2 Managed Airflow (第 3 代) 並排比較快照 這篇指南
Managed Airflow (舊版第 1 代)、Airflow 2 Managed Airflow (第 2 代) 並排比較快照 快照遷移指南
Managed Airflow (舊版第 1 代)、Airflow 2 Managed Airflow (第 2 代) 並排顯示,手動轉移 手動遷移指南
Managed Airflow (舊版第 1 代)、Airflow 1 Managed Airflow (第 2 代)、Airflow 2 並排比較快照 快照遷移指南
Managed Airflow (舊版第 1 代)、Airflow 1 Managed Airflow (第 2 代)、Airflow 2 並排顯示,手動轉移 手動遷移指南
Managed Airflow (舊版第 1 代)、Airflow 1 Managed Airflow (舊版第 1 代)、Airflow 2 並排顯示,手動轉移 手動遷移指南

事前準備

  • Managed Airflow 支援從 Managed Airflow (舊版第 1 代) 逐步遷移至 Managed Airflow (第 3 代)。無法從 Managed Airflow (舊版第 1 代) 就地升級至 Managed Airflow (第 3 代)。

  • 請參閱差異清單,瞭解代管 Airflow (舊版第 1 代)、代管 Airflow (第 2 代) 和代管 Airflow (第 3 代) 之間的差異。

  • 支援快照的 Airflow 資料庫大小上限為 20 GB。如果環境的資料庫超過 20 GB,請縮減 Airflow 資料庫的大小

  • 如要建立快照,環境值區中 /dags/plugins/data 資料夾的物件總數必須少於 100,000 個。

  • 如果使用 XCom 機制傳輸檔案,請務必按照 Airflow 的指南使用。使用 XCom 傳輸大型檔案或大量檔案會影響 Airflow 資料庫的效能,並可能導致載入快照或升級環境時發生失敗。建議改用 Cloud Storage 等替代方案,傳輸大量資料。

確認 DAG 與 Managed Airflow (第 3 代) 相容

請按照下列建議操作,確保 DAG 與 Managed Airflow (第 3 代) 相容:

  • Managed Airflow (第 3 代) 環境中的 [套件清單][cc-versions],可能與 Managed Airflow (舊版第 1 代) 環境不同。這可能會影響 DAG 與代管 Airflow (第 3 代) 的相容性。

  • 代管 Airflow 會從代管 Airflow (舊版第 1 代) 環境的快照載入設定覆寫、環境變數和 PyPI 套件至代管 Airflow (第 3 代),不會變更或調整這些項目以確保相容性。如果自訂 PyPI 套件導致依附元件衝突,您可以在載入快照時略過安裝這些套件。

  • 在 Managed Airflow (第 3 代) 中,環境的叢集位於租戶專案。請確認 DAG 與這項變更相容。具體來說,KubernetesPodOperator 工作負載現在會獨立於環境進行擴縮,且無法使用 Pod 親和性設定。

  • 在 Managed Airflow (第 3 代) 中,您無法直接存取 Airflow 資料庫。請確認 DAG 與這項變更相容。

暫停 Managed Airflow (舊版第 1 代) 環境中的 DAG

為避免重複執行 DAG,請先暫停 Managed Airflow (舊版第 1 代) 環境中的所有 DAG,再儲存快照。略過即時監控 DAG (airflow_monitoring),這項 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,並輸入 Managed Airflow (舊版第 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」。

儲存 Managed Airflow (舊版第 1 代) 環境的快照

控制台

建立環境快照:

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

    前往「環境」

  2. 在環境清單中,按一下代管 Airflow (舊版第 1 代) 環境的名稱。「環境詳細資料」頁面隨即開啟。

  3. 按一下 [Create snapshot] (建立快照)。

  4. 在「建立快照」對話方塊中,按一下「提交」。在本指南中,您會將快照儲存在 Managed Airflow (舊版第 1 代) 環境的 bucket 中,但您也可以選取其他位置。

  5. 請等待 Managed Airflow 建立快照。

gcloud

  1. 取得 Managed Airflow (舊版第 1 代) 環境的 bucket URI:

    1. 執行下列指令:

      gcloud composer environments describe COMPOSER_1_ENV \
          --location COMPOSER_1_LOCATION \
           --format="value(config.dagGcsPrefix)"
      

      更改項目:

      • COMPOSER_1_ENV,並將其替換為 Managed Airflow (舊版第 1 代) 環境的名稱。
      • COMPOSER_1_LOCATION 替換為環境所在的區域。
    2. 在輸出內容中,移除 /dags 資料夾。結果是代管 Airflow (舊版第 1 代) 環境值區的 URI。

      舉例來說,將 gs://us-central1-example-916807e1-bucket/dags 變更為 gs://us-central1-example-916807e1-bucket

  2. 建立 Managed Airflow (舊版第 1 代) 環境的快照:

    gcloud composer environments snapshots save \
      COMPOSER_1_ENV \
      --location COMPOSER_1_LOCATION \
      --snapshot-location "COMPOSER_1_SNAPSHOTS_FOLDER"
    

    更改項目:

    • COMPOSER_1_ENV,並輸入 Managed Airflow (舊版第 1 代) 環境的名稱。
    • COMPOSER_1_LOCATION,其中包含 Managed Airflow (舊版第 1 代) 環境所在的區域。
    • COMPOSER_1_SNAPSHOTS_FOLDER,並使用 Managed Airflow (舊版第 1 代) 環境的 bucket URI。在本指南中,您會將快照儲存在 Managed Airflow (舊版第 1 代) 環境的值區中,但您也可以選擇其他位置。如果您指定自訂位置,兩個環境的服務帳戶都必須具備讀取和寫入權限,才能存取兩個環境服務帳戶可用的任何位置。

建立 Managed Airflow (第 3 代) 環境

建立 Managed Airflow (第 3 代) 環境。您可以從符合預期資源需求的環境預設集開始,然後進一步擴充及最佳化環境。

您不需要指定設定覆寫和環境變數,因為稍後載入 Managed Airflow (舊版第 1 代) 環境的快照時,會取代這些設定。

將快照載入 Managed Airflow (第 3 代) 環境

控制台

如要將快照載入 Managed Airflow (第 3 代) 環境,請按照下列步驟操作:

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

    前往「環境」

  2. 在環境清單中,按一下 Managed Airflow (第 3 代) 環境的名稱。「環境詳細資料」頁面隨即開啟。

  3. 按一下「載入快照」

  4. 在「載入快照」對話方塊中,按一下「瀏覽」

  5. 選取含有快照的資料夾。如果您使用本指南的預設位置,這個資料夾會位於 Managed Airflow (舊版第 1 代) 環境的 bucket 中,位於 /snapshots 資料夾內,名稱是快照儲存作業的時間戳記。例如:us-central1-example-916807e1-bucket/snapshots_example-project_us-central1_example-environment/2022-01-05T18-59-00

  6. 按一下「載入」,等待 Managed Airflow 載入快照。

gcloud

將 Managed Airflow (舊版第 1 代) 環境的快照載入 Managed Airflow (第 3 代) 環境:

gcloud composer environments snapshots load \
  COMPOSER_3_ENV \
  --location COMPOSER_3_LOCATION \
  --snapshot-path "SNAPSHOT_PATH"

更改項目:

  • COMPOSER_3_ENV,並將其替換為 Managed Airflow (第 3 代) 環境的名稱。
  • COMPOSER_3_LOCATION,其中包含 Managed Airflow (第 3 代) 環境所在的區域。
  • SNAPSHOT_PATH,並提供 Managed Airflow (舊版第 1 代) 環境的 bucket URI,然後是快照的路徑。例如:gs://us-central1-example-916807e1-bucket/snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00

在 Managed Airflow (第 3 代) 環境中取消暫停 DAG

你可以使用下列任一選項:

  • Airflow 網頁介面中,前往「DAGs」,然後手動逐一取消暫停所有 DAG。

  • 使用 composer_dags 指令碼取消暫停所有 DAG:

    python3 composer_dags.py --environment COMPOSER_3_ENV \
      --project PROJECT_ID \
      --location COMPOSER_3_LOCATION \
      --operation unpause
    

    更改項目:

    • COMPOSER_3_ENV,並將其替換為 Managed Airflow (第 3 代) 環境的名稱。
    • PROJECT_ID 替換為專案 ID
    • COMPOSER_3_LOCATION 替換為環境所在的區域。
  • (Airflow 2.9.1 以上版本) 如果取消暫停大量 DAG 時發生配額錯誤,可以使用下列 Airflow CLI 指令一次取消暫停所有 DAG:

    gcloud composer environments run COMPOSER_3_ENV dags unpause \
      --project PROJECT_ID \
      --location COMPOSER_3_LOCATION \
      -- -y --treat-dag-id-as-regex ".*"
    
  • (Airflow 2.9.1 以前的版本) 如果取消暫停大量 DAG 時發生配額錯誤,可以使用 Airflow REST API 取消暫停 DAG。另請參閱 Airflow 說明文件中的「試用 API」。

檢查 DAG 錯誤

  1. Airflow 網頁介面中,前往「DAGs」,檢查是否有回報的 DAG 語法錯誤。

  2. 確認 DAG 執行作業排定的時間是否正確。

  3. 等待 DAG 在 Managed Airflow (第 3 代) 環境中執行,並檢查是否成功。如果 DAG 執行作業成功,請勿在 Managed Airflow (舊版第 1 代) 環境中取消暫停,否則 Managed Airflow (舊版第 1 代) 環境會針對相同時間和日期執行 DAG。

  4. 如果特定 DAG 執行作業失敗,請嘗試排解 DAG 問題,直到 DAG 在 Managed Airflow (第 3 代) 中成功執行為止。

監控 Managed Airflow (第 3 代) 環境

將所有 DAG 和設定轉移至 Managed Airflow (第 3 代) 環境後,請監控潛在問題、失敗的 DAG 執行作業,以及整體環境健康狀態。

如果代管 Airflow (第 3 代) 環境運作一段時間後沒有問題,可以考慮刪除代管 Airflow (舊版第 1 代) 環境。

後續步驟