將環境遷移至 Cloud Composer 3

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

本頁說明如何將有向無環圖、資料和設定從現有的 Cloud Composer 2 環境轉移至 Cloud Composer 3。

其他遷移指南

寄件者 收件者 方法 指南
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 支援從 Cloud Composer 2 遷移至 Cloud Composer 3。您無法從 Cloud Composer 2 就地升級至 Cloud Composer 3。

  • 請參閱 Cloud Composer 2 和 Cloud Composer 3 的差異清單。確認環境未使用的功能尚未在 Cloud Composer 3 中推出。

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

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

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

確認 DAG 與 Cloud Composer 3 相容

請按照下列建議操作,確保 DAG 與 Cloud Composer 3 相容:

  • Cloud Composer 3 環境中的套件清單可能與 Cloud Composer 2 環境不同。這可能會影響 DAG 與 Cloud Composer 3 的相容性。

  • Cloud Composer 會從 Cloud Composer 2 環境的快照載入設定覆寫、環境變數和 PyPI 套件至 Cloud Composer 3,且不會為了相容性而變更或調整這些項目。如要解決這些設定參數之間的衝突,您可以在載入快照時略過載入自訂 PyPI 套件、環境變數和 Airflow 設定覆寫。

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

暫停 Cloud Composer 2 環境中的 DAG

為避免重複執行 DAG,請先暫停 Cloud Composer 2 環境中的所有 DAG,再儲存快照。略過即時監控 DAG (airflow_monitoring),這個 DAG 用於監控,不會納入環境快照。

您可以透過下列任一方式暫停 DAG:

  • 在 Google Cloud 控制台中逐一暫停 DAG:

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

      前往「環境」

    2. 選取環境即可查看詳細資料。

    3. 在「環境詳細資料」頁面中,前往「DAG」分頁。

    4. 按一下 DAG 名稱。

    5. 在「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,並將其替換為 Cloud Composer 2 環境的名稱。
    • PROJECT_ID 替換為專案 ID
    • COMPOSER_2_LOCATION 改成環境所在的地區。

儲存 Cloud Composer 2 環境的快照

主控台

建立環境快照:

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

    前往「環境」

  2. 在環境清單中,按一下 Cloud Composer 2 環境的名稱。「環境詳細資料」頁面隨即開啟。

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

  4. 在「建立快照」對話方塊中,按一下「提交」。在本指南中,您會將快照儲存在 Cloud Composer 2 環境的 bucket,但也可以視需要選取其他位置。如果您指定自訂位置,兩個環境的服務帳戶都必須具備指定位置的讀取和寫入權限。

  5. 等待 Cloud Composer 建立快照。

  6. 建立快照後,顯示的訊息會輸出快照位置。請儲存這項資訊,以便稍後將快照載入 Cloud Composer 3 環境時使用。

    舉例來說,快照位置可能如下所示: gs://us-central1-example-916807e1-bucket/snapshots/snapshots_example-project_us-central1_example-environment/2024-05-15T15-23-12

gcloud

  1. 建立 Cloud Composer 2 環境的快照:

    gcloud composer environments snapshots save \
      COMPOSER_2_ENV \
      --location COMPOSER_2_LOCATION
    

    取代:

    • COMPOSER_2_ENV,並將其替換為 Cloud Composer 2 環境的名稱。
    • COMPOSER_2_LOCATION,其中 Cloud Composer 2 環境位於該區域。
    • (選用) 您可以使用 --snapshot-location 引數,指定環境快照的儲存位置。

      在本指南中,您會將快照儲存在 Cloud Composer 2 環境的值區中,但也可以選擇其他位置。如果您指定自訂位置,兩個環境的服務帳戶都必須具備指定位置的讀取和寫入權限。

  2. 建立快照後,顯示的訊息會輸出快照位置。請儲存這項資訊,以便稍後將快照載入 Cloud Composer 3 環境時使用。

    舉例來說,快照位置可能如下所示: gs://us-central1-example-916807e1-bucket/snapshots/snapshots_example-project_us-central1_example-environment/2024-05-15T15-23-12

建立 Cloud Composer 3 環境

按照下列指南建立 Cloud Composer 3 環境

  • 您可以從與 Cloud Composer 2 環境相同的資源限制設定開始,之後再進一步擴充及最佳化設定。

  • 在 Cloud Composer 3 環境中,Airflow DAG 處理器會做為獨立的環境元件執行。由於 DAG 處理器會將 DAG 的剖析作業從排程器卸載,您可能需要重新分配先前分配給 Airflow 排程器的資源。遷移至 Cloud Composer 3 後,您可以稍後再執行這項操作,並監控排程器和 DAG 處理器的效能。

  • 與 Cloud Composer 2 相比,Cloud Composer 3 的網路設定更精簡簡化。您可以切換公用 IP 和私人 IP 網路設定,以及附加和卸離虛擬私有雲網路。您不需要指定 IP 範圍。請確認 Cloud Composer 3 環境的網路設定與對應的 Cloud Composer 2 設定相符。

  • 您不需要指定設定覆寫和環境變數,因為稍後載入 Cloud Composer 2 環境的快照時,會取代這些設定。

將快照載入 Cloud Composer 3 環境

主控台

如要將快照載入 Cloud Composer 3 環境,請按照下列步驟操作:

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

    前往「環境」

  2. 在環境清單中,按一下 Cloud Composer 3 環境的名稱。「環境詳細資料」頁面隨即開啟。

  3. 按一下「載入快照」

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

  5. 選取含有快照的資料夾。

    如果您使用本指南的預設位置,這個資料夾會位於 Cloud Composer 2 環境值區的 /snapshots 資料夾中,名稱則是快照儲存作業的時間戳記。快照建立成功訊息中顯示的位置相同。

    例如 us-central1-example-916807e1-bucket/snapshots_example-project_us-central1_example-environment/2024-05-15T15-23-12

  6. 按一下「載入」,等待 Cloud Composer 載入快照。

gcloud

將 Cloud Composer 2 環境的快照載入 Cloud Composer 3 環境:

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

取代:

  • COMPOSER_3_ENV,並將其替換為 Cloud Composer 3 環境的名稱。
  • COMPOSER_3_LOCATION,其中包含 Cloud Composer 3 環境所在的地區。
  • SNAPSHOT_PATH,並加上 Cloud Composer 2 環境值區的 URI,然後是快照的路徑。快照建立成功訊息中顯示的也是這個位置。例如: gs://us-central1-example-916807e1-bucket/snapshots/example-project_us-central1_example-environment_2024-05-15T15-23-12

在 Cloud Composer 3 環境中取消暫停 DAG

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

  • 在 Google Cloud 控制台中逐一取消暫停 DAG:

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

      前往「環境」

    2. 選取環境即可查看詳細資料。

    3. 在「環境詳細資料」頁面中,前往「DAG」分頁。

    4. 按一下 DAG 名稱。

    5. 在「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,並將其替換為 Cloud Composer 3 環境的名稱。
    • PROJECT_ID 替換為專案 ID
    • COMPOSER_3_LOCATION 改成環境所在的地區。

檢查 DAG 錯誤

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

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

  3. 等待 DAG 在 Cloud Composer 3 環境中執行,並確認是否成功。如果 DAG 執行作業成功,請勿在 Cloud Composer 2 環境中取消暫停,否則 Cloud Composer 2 環境會針對相同時間和日期執行 DAG。

  4. 如果特定 DAG 執行作業失敗,請嘗試排解 DAG 問題,直到 DAG 在 Cloud Composer 3 中成功執行為止。

監控 Cloud Composer 3 環境

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

如果 Cloud Composer 3 環境運作正常一段時間,請考慮刪除 Cloud Composer 2 環境。

後續步驟