將環境遷移至 Managed Airflow (第 3 代) (遷移指令碼)

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

本頁面說明如何使用遷移指令碼,將現有 Managed Airflow (第 2 代) 環境中的 DAG、資料和設定,遷移至新的 Managed Airflow (第 3 代) 環境。

寄件者 收件者 方法 指南
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 並排顯示,手動轉移 手動遷移指南

關於遷移指令碼

遷移指令碼是 Python 指令碼,適用於並行遷移,可自動執行從 Managed Airflow (第 2 代) 遷移至 Managed Airflow (第 3 代) 的程序。這項功能會使用環境快照,將環境的設定轉移至新環境。

指令碼會執行下列動作:

  1. 取得 Managed Airflow (第 2 代) 環境的設定。

  2. 建立 Managed Airflow (第 3 代) 環境,並使用與取得的設定相符的設定。

    由於 Managed Airflow (第 3 代) 環境採用不同架構,因此部分參數可能會經過調整,以配合這些差異。您也可以稍後調整大部分的環境參數。

  3. 逐一暫停 Managed Airflow (第 2 代) 環境中的所有 DAG。只有在 Managed Airflow (第 2 代) 環境中取消暫停的 DAG,稍後才會取消暫停。

  4. 儲存來源 Managed Airflow (第 2 代) 環境的快照。快照會儲存到快照的預設位置,也就是 Managed Airflow (第 2 代) 環境的值區。

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

    指令碼不會檢查自訂 PyPI 套件、環境變數和 Airflow 設定選項覆寫與 Managed Airflow (第 3 代) 環境的相容性。

    如果發生衝突,系統會在建立 Managed Airflow (第 3 代) 環境後,於載入快照的過程中停止遷移作業。在這種情況下,您可以調整 Managed Airflow (第 2 代) 環境的設定來解決衝突,也可以不使用遷移指令碼進行遷移,並在載入快照時略過載入自訂 PyPI 套件、環境變數或 Airflow 設定覆寫。

  6. 取消暫停 Managed Airflow (第 3 代) 環境中的 DAG。如果部分 DAG 在執行指令碼前已暫停,這些 DAG 會維持暫停狀態。

指令碼有下列限制:

  • 指令碼一律會建立新的 Managed Airflow (第 3 代) 環境。您無法將快照載入至現有的 Managed Airflow (第 3 代) 環境。如要這麼做,您可以使用快照遷移,不必使用遷移指令碼。

  • 這個指令碼只會在與代管 Airflow (第 2 代) 環境相同的區域和專案中,建立代管 Airflow (第 3 代) 環境。

  • 您只能將快照載入相同或較新版本的 Airflow。舉例來說,您無法將 Airflow 2.10.2 的快照載入 Airflow 2.9.3。

  • 只有 Managed Airflow (第 2 代) 環境可透過遷移指令碼遷移。

事前準備

  • 由於遷移指令碼會建立環境,然後儲存及載入快照,因此遷移程序可能需要超過一小時。

  • 指令碼會使用快照。支援快照

  • 在 Managed Airflow (第 2 代) 2.0.9 以上版本中。

  • 您的帳戶需要身分與存取權管理角色,才能建立環境、儲存快照及載入快照。

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

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

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

遷移至 Managed Airflow (第 3 代)

本節說明如何使用遷移指令碼進行遷移。

查看 Managed Airflow (第 2 代) 和 Managed Airflow (第 3 代) 的差異

請參閱這篇文章,瞭解 Managed Airflow 第 2 代和第 3 代之間的差異。

請確認環境未使用 Managed Airflow (第 3 代) 尚未提供的功能,並熟悉如何使用及設定 Managed Airflow (第 3 代) 專屬功能。

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

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

  • Managed Airflow (第 3 代) 環境中的套件清單可能與 Managed Airflow (第 2 代) 環境不同。這可能會影響 DAG 與代管 Airflow (第 3 代) 的相容性。

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

檢查設定是否相容

您可以進行升級檢查,確認 Managed Airflow (第 2 代) 環境的設定是否與 Managed Airflow (第 3 代) 相容。建議您先解決這項檢查回報的所有阻礙衝突,再開始遷移。

安裝指令碼的依附元件

  • 這個指令碼需要 Python 3.8 以上版本。

  • 遷移指令碼會使用 gcloud CLI 和 curl 公用程式。確認電腦上已安裝這兩項公用程式。

下載指令碼

GitHub 存放區下載遷移指令碼 (composer_migrate.py)。

在 gcloud CLI 中授權

在 gcloud CLI 中授權

gcloud auth login

預覽新環境的參數

您可以先預覽 Managed Airflow (第 3 代) 環境的參數,再進行遷移。您可以藉此瞭解 Managed Airflow (第 2 代) 環境的設定如何對應至 Managed Airflow (第 3 代)。

Airflow 設定選項覆寫、自訂 PyPI 套件和環境變數會從環境快照載入,且不會顯示在預覽畫面中。

展開

執行下列指令:

python3 composer_migrate.py \
    --project PROJECT_ID \
    --location LOCATION \
    --source_environment COMPOSER_2_ENV \
    --target_environment COMPOSER_3_ENV \
    --target_airflow_version COMPOSER_3_AIRFLOW_VERSION \
    --dry_run

更改下列內容:

  • PROJECT_ID專案 ID
  • COMPOSER_2_ENV:代管 Airflow (第 2 代) 環境的名稱。
  • LOCATION:Managed Airflow (第 2 代) 環境所在的區域。系統會在相同區域中建立 Managed Airflow (第 3 代) 環境。
  • COMPOSER_3_AIRFLOW_VERSION:Managed Airflow (第 3 代) 環境的 Airflow 版本。這個版本必須與 Managed Airflow (第 2 代) 環境中的版本相同或更新,且必須是 Managed Airflow (第 3 代) 支援的版本

範例:

python3 composer_migrate.py \
    --project example-project \
    --location us-central1 \
    --source_environment example-composer-2-environment \
    --target_environment example-composer-3-environment \
    --target_airflow_version 2.10.2

檢查環境的健康狀態

確認要遷移的 Managed Airflow (第 2 代) 環境運作正常。

如果環境不健全,建立新的 Managed Airflow (第 3 代) 環境後,遷移程序就會失敗,因為系統無法建立快照。

如要進一步瞭解如何檢查環境和資料庫的健康狀態,請參閱「使用監控資訊主頁」。

執行遷移指令碼

執行下列指令:

python3 composer_migrate.py \
    --project PROJECT_ID \
    --location LOCATION \
    --source_environment COMPOSER_2_ENV \
    --target_environment COMPOSER_3_ENV \
    --target_airflow_version COMPOSER_3_AIRFLOW_VERSION

更改下列內容:

  • PROJECT_ID專案 ID
  • COMPOSER_2_ENV:代管 Airflow (第 2 代) 環境的名稱。
  • LOCATION:Managed Airflow (第 2 代) 環境所在的區域。系統會在相同區域中建立 Managed Airflow (第 3 代) 環境。
  • COMPOSER_3_AIRFLOW_VERSION:Managed Airflow (第 3 代) 環境的 Airflow 版本。這個版本必須與 Managed Airflow (第 2 代) 環境中的版本相同或更新,且必須是 Managed Airflow (第 3 代) 支援的版本

檢查 DAG 錯誤

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

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

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

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

監控 Managed Airflow (第 3 代) 環境

監控 Managed Airflow (第 3 代) 環境的潛在問題、DAG 執行失敗情形,以及整體環境健康狀態。

如果 Managed Airflow (第 3 代) 環境運作正常的時間夠長,請考慮刪除 Managed Airflow (第 2 代) 環境。

後續步驟