Managed Airflow (第 3 代) | Managed Airflow (第 2 代) | Managed Airflow (舊版第 1 代)
本頁說明如何將 DAG、資料和設定從現有的 Managed Airflow (第 2 代) 環境移轉至 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 (Legacy Gen 1)、Airflow 1 | Managed Airflow (第 2 代)、Airflow 2 | 並排比較快照 | 快照遷移指南 |
| Managed Airflow (Legacy Gen 1)、Airflow 1 | Managed Airflow (第 2 代)、Airflow 2 | 並排顯示,手動轉移 | 手動遷移指南 |
| Managed Airflow (Legacy Gen 1)、Airflow 1 | Managed Airflow (舊版第 1 代)、Airflow 2 | 並排顯示,手動轉移 | 手動遷移指南 |
事前準備
本遷移指南使用快照。快照支援 Managed Airflow (第 2 代) 2.0.9 以上版本。
Managed Airflow 支援從 Managed Airflow (第 2 代) 逐步遷移至 Managed Airflow (第 3 代)。您無法從 Managed Airflow (第 2 代) 就地升級至 Managed Airflow (第 3 代)。
請參閱這份清單,瞭解 Managed Airflow (第 2 代) 和 Managed Airflow (第 3 代) 的差異。確認環境未使用的功能尚未在 Managed 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 代) 環境中的套件清單可能與 Managed Airflow (第 2 代) 環境不同。這可能會影響 DAG 與代管 Airflow (第 3 代) 的相容性。
Managed Airflow 會從 Managed Airflow (第 2 代) 環境的快照載入設定覆寫、環境變數和 PyPI 套件,然後直接套用至 Managed Airflow (第 3 代),不必變更或調整這些項目來確保相容性。如要解決這些設定參數之間的衝突,您可以在載入快照時略過載入自訂 PyPI 套件、環境變數和 Airflow 設定覆寫。
在 Managed Airflow (第 3 代) 中,環境的叢集位於租戶專案。請確認 DAG 與這項變更相容。具體來說,
KubernetesPodOperator工作負載現在會獨立於環境進行擴縮,且無法使用 Pod 親和性設定。
暫停 Managed Airflow (第 2 代) 環境中的 DAG
為避免重複執行 DAG,請先暫停 Managed Airflow (第 2 代) 環境中的所有 DAG,再儲存快照。略過即時監控 DAG (airflow_monitoring),這項 DAG 用於監控,不會納入環境快照。
您可以透過下列任一方式暫停 DAG:
在 Google Cloud 控制台中逐一暫停 DAG:
前往 Google Cloud 控制台的「Environments」(環境) 頁面。
選取環境即可查看詳細資料。
在「Environment details」(環境詳細資料) 頁面中,前往「DAGs」分頁。
按一下 DAG 名稱。
在「DAG details」(DAG 詳細資料) 頁面中,按一下「Pause DAG」(暫停 DAG)。
在 Airflow 網頁介面中,前往「DAGs」並手動暫停所有 DAG。
使用 composer_dags 指令碼暫停所有 DAG:
python3 composer_dags.py --environment COMPOSER_2_ENV \ --project PROJECT_ID \ --location COMPOSER_2_LOCATION \ --operation pause更改項目:
COMPOSER_2_ENV,並輸入 Managed Airflow (第 2 代) 環境的名稱。- 將
PROJECT_ID替換為專案 ID。 - 將
COMPOSER_2_LOCATION替換為環境所在的區域。
儲存 Managed Airflow (第 2 代) 環境的快照
控制台
建立環境快照:
前往 Google Cloud 控制台的「Environments」(環境) 頁面。
在環境清單中,按一下代管 Airflow (第 2 代) 環境的名稱。「環境詳細資料」頁面隨即開啟。
按一下 [Create snapshot] (建立快照)。
在「建立快照」對話方塊中,按一下「提交」。在本指南中,您會將快照儲存在 Managed Airflow (第 2 代) 環境的 bucket 中,但您也可以選擇其他位置。如果您指定自訂位置,兩個環境的服務帳戶都必須具備指定位置的讀取和寫入權限。
請等待 Managed Airflow 建立快照。
建立快照後,顯示的訊息會輸出快照的位置。儲存這項資訊,以便日後將快照載入 Managed Airflow (第 3 代) 環境時使用。
舉例來說,快照位置可能如下所示:
gs://us-central1-example-916807e1-bucket/snapshots/snapshots_example-project_us-central1_example-environment/2024-05-15T15-23-12。
gcloud
建立 Managed Airflow (第 2 代) 環境的快照:
gcloud composer environments snapshots save \ COMPOSER_2_ENV \ --location COMPOSER_2_LOCATION更改項目:
COMPOSER_2_ENV,並輸入 Managed Airflow (第 2 代) 環境的名稱。COMPOSER_2_LOCATION,其中包含 Managed Airflow (第 2 代) 環境所在的區域。(選用) 您可以使用
--snapshot-location引數,指定環境快照的儲存位置。在本指南中,您會將快照儲存在 Managed Airflow (第 2 代) 環境的值區中,但您也可以選擇其他位置。如果您指定自訂位置,兩個環境的服務帳戶都必須具備指定位置的讀取和寫入權限。
建立快照後,顯示的訊息會輸出快照的位置。儲存這項資訊,以便日後將快照載入 Managed Airflow (第 3 代) 環境時使用。
舉例來說,快照位置可能如下所示:
gs://us-central1-example-916807e1-bucket/snapshots/snapshots_example-project_us-central1_example-environment/2024-05-15T15-23-12。
建立 Managed Airflow (第 3 代) 環境
請按照下列指南建立 Managed Airflow (第 3 代) 環境:
您可以從與 Managed Airflow (第 2 代) 環境相同的資源限制設定開始,之後再進一步擴充及最佳化設定。
在 Managed Airflow (第 3 代) 環境中,Airflow DAG 處理器會做為獨立的環境元件執行。由於 DAG 處理器會將 DAG 的剖析作業從排程器卸載,您可能需要重新分配先前分配給 Airflow 排程器的資源。遷移至 Managed Airflow (第 3 代) 後,您可以稍後再執行這項操作,並監控排程器和 DAG 處理器的效能。
相較於 Managed Airflow (第 2 代),Managed Airflow (第 3 代) 的網路設定更精簡。您可以切換公用 IP 和私人 IP 網路設定,以及附加和卸離虛擬私有雲網路。您不需要指定 IP 範圍。請確認代管 Airflow (第 3 代) 環境的網路設定,與對應的代管 Airflow (第 2 代) 設定相符。
您不需要指定設定覆寫和環境變數,因為載入 Managed Airflow (第 2 代) 環境的快照時,系統會覆寫這些設定。
將快照載入 Managed Airflow (第 3 代) 環境
控制台
如要將快照載入 Managed Airflow (第 3 代) 環境,請按照下列步驟操作:
前往 Google Cloud 控制台的「Environments」(環境) 頁面。
在環境清單中,按一下代管 Airflow (第 3 代) 環境的名稱。「環境詳細資料」頁面隨即開啟。
按一下「載入快照」。
在「載入快照」對話方塊中,按一下「瀏覽」。
選取含有快照的資料夾。
如果您使用本指南的預設位置,這個資料夾會位於 Managed Airflow (第 2 代) 環境 bucket 的
/snapshots資料夾中,且名稱是快照儲存作業的時間戳記。訊息中顯示的快照建立成功位置與上述相同。例如
us-central1-example-916807e1-bucket/snapshots_example-project_us-central1_example-environment/2024-05-15T15-23-12。按一下「Load」,然後等待 Managed Airflow 載入快照。
gcloud
將 Managed Airflow (第 2 代) 環境的快照載入 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 (第 2 代) 環境 bucket 的 URI,以及快照的路徑。訊息中顯示的位置與快照建立成功時相同。例如:gs://us-central1-example-916807e1-bucket/snapshots/example-project_us-central1_example-environment_2024-05-15T15-23-12。
在 Managed Airflow (第 3 代) 環境中取消暫停 DAG
你可以使用下列任一選項:
在 Google Cloud 控制台中逐一取消暫停 DAG:
前往 Google Cloud 控制台的「Environments」(環境) 頁面。
選取環境即可查看詳細資料。
在「Environment details」(環境詳細資料) 頁面中,前往「DAGs」分頁。
按一下 DAG 名稱。
在「DAG details」(DAG 詳細資料) 頁面上,按一下「Unpause DAG」(取消暫停 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替換為環境所在的區域。
檢查 DAG 錯誤
在 Airflow 網頁介面中,前往「DAGs」,檢查是否有回報的 DAG 語法錯誤。
確認 DAG 執行作業排定的時間是否正確。
等待 DAG 在 Managed Airflow (第 3 代) 環境中執行,並檢查是否成功。如果 DAG 執行作業成功,請勿在 Managed Airflow (第 2 代) 環境中取消暫停,否則 Managed Airflow (第 2 代) 環境會針對相同時間和日期執行 DAG。
如果特定 DAG 執行作業失敗,請嘗試排解 DAG 問題,直到 DAG 在 Managed Airflow (第 3 代) 中順利執行為止。
監控 Managed Airflow (第 3 代) 環境
將所有 DAG 和設定轉移至 Managed Airflow (第 3 代) 環境後,請監控潛在問題、失敗的 DAG 執行作業,以及整體環境健康狀態。
如果 Managed Airflow (第 3 代) 環境運作正常的時間夠長,請考慮刪除 Managed Airflow (第 2 代) 環境。