マネージド Airflow(レガシー Gen 1)からマネージド Airflow(Gen 3)に移行する(Airflow 2)

Managed Airflow(Gen 3) | Managed Airflow(Gen 2) | Managed Airflow(レガシー Gen 1)

このページでは、スナップショットを使用して、既存の Managed Airflow(以前の Gen 1)環境と Airflow 2 環境から Managed Airflow(Gen 3)と Airflow 2 に DAG、データ、構成を転送する方法について説明します。

移行元 移行先 メソッド ガイド
Managed Airflow(Gen 3)、Airflow 2 マネージド Airflow(Gen 3)、Airflow 3 並列処理、手動転送 手動移行ガイド
マネージド Airflow(Gen 2) マネージド Airflow(Gen 3) 並列処理、移行スクリプトを使用 スクリプト移行ガイド
マネージド Airflow(Gen 2) マネージド Airflow(Gen 3) 並列処理、スナップショットを使用 スナップショット移行ガイド
Managed Airflow(以前の Gen 1)、Airflow 2 マネージド Airflow(Gen 3) 並列処理、スナップショットを使用 このガイド
Managed Airflow(以前の Gen 1)、Airflow 2 マネージド Airflow(Gen 2) 並列処理、スナップショットを使用 スナップショット移行ガイド
Managed Airflow(以前の Gen 1)、Airflow 2 マネージド Airflow(Gen 2) 並列処理、手動転送 手動移行ガイド
Managed Airflow(以前の Gen 1)、Airflow 1 Managed Airflow(Gen 2)、Airflow 2 並列処理、スナップショットを使用 スナップショット移行ガイド
Managed Airflow(以前の Gen 1)、Airflow 1 Managed Airflow(Gen 2)、Airflow 2 並列処理、手動転送 手動移行ガイド
Managed Airflow(以前の Gen 1)、Airflow 1 Managed Airflow(以前の Gen 1)、Airflow 2 並列処理、手動転送 手動移行ガイド

始める前に

  • Managed Airflow は、Managed Airflow(レガシー Gen 1)から Managed Airflow(Gen 3)への並列移行をサポートしています。マネージド Airflow(レガシー Gen 1)からマネージド Airflow(Gen 3)へのインプレース アップグレードはできません。

  • マネージド Airflow(レガシー Gen 1)、マネージド Airflow(Gen 2)、マネージド Airflow(Gen 3)の違いのリストを確認してください。

  • スナップショットをサポートする Airflow データベースの最大サイズは 20 GB です。環境のデータベースが 20 GB を超える場合は、Airflow データベースのサイズを縮小します。

  • スナップショットを作成するには、環境のバケット内の /dags/plugins/data フォルダ内のオブジェクトの合計数が 100,000 未満にする必要があります。

  • XCom メカニズムを使用してファイルを転送する場合は、Airflow のガイドラインに従って使用するようにしてください。XCom を使用して大きなファイルや大量のファイルを転送すると、Airflow データベースのパフォーマンスに影響し、スナップショットの読み込みや環境のアップグレード時に障害が発生する可能性があります。大量のデータを転送するには、Cloud Storage などの代替手段の使用を検討してください。

DAG が Managed Airflow(Gen 3)と互換性があることを確認する

次の推奨事項に沿って、DAG が Managed Airflow(Gen 3)と互換性があることを確認します。

  • マネージド Airflow(Gen 3)環境の [パッケージのリスト][cc-versions] は、マネージド Airflow(レガシー Gen 1)環境のリストと異なる場合があります。 これが、DAG と Managed Airflow(Gen 3)の互換性に影響する可能性があります。

  • Managed Airflow は、構成のオーバーライド、環境変数、PyPI パッケージをマネージド Airflow(以前の Gen 1)環境のスナップショットから Managed Airflow(Gen 3)に読み込みます。互換性のための変更や調整は行いません。カスタム PyPI パッケージによって依存関係に競合が生じる場合は、スナップショットを読み込むときにインストールをスキップできます。

  • マネージド Airflow(Gen 3)では、環境のクラスタ はテナント プロジェクトに配置されています。DAG がこの変更と互換性があることを確認してください。特に、 KubernetesPodOperator ワークロードは 環境から独立してスケーリングされるようになり、また、Pod アフィニティ構成を使用できなくなりました。

  • Managed Airflow(Gen 3)では、Airflow データベースに直接アクセスできません。DAG がこの変更と互換性があることを確認してください。

マネージド Airflow(レガシー Gen 1)環境で DAG を一時停止する

DAG の重複実行を回避するには、スナップショットを保存する前に Managed Airflow(レガシー Gen 1)環境内のすべての DAG を一時停止します。ライブネス モニタリング DAG(airflow_monitoring)はスキップします。これはモニタリング目的で使用され、環境スナップショットには含まれません。

次のいずれかのオプションを使用できます。

  • Airflow ウェブ インターフェースで、[DAG] に移動し、すべての 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(レガシー Gen 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(レガシー Gen 1)環境のスナップショットを保存する

コンソール

環境のスナップショットを作成します。

  1. Google Cloud コンソールで、[**環境**] ページに移動します。

    [環境] に移動

  2. 環境のリストで、Managed Airflow(レガシー Gen 1)環境の名前をクリックします。[環境の詳細] ページが開きます。

  3. [スナップショットを作成] をクリックします。

  4. [スナップショットを作成] ダイアログで、[送信] をクリックします。このガイドでは、スナップショットを Managed Airflow(レガシー Gen 1)環境のバケットに保存しますが、必要に応じて別のロケーションを選択することもできます。

  5. マネージド Airflow がスナップショットを作成するまで待ちます。

gcloud

  1. Managed Airflow(レガシー Gen 1)環境のバケット URI を取得します。

    1. 次のコマンドを実行します。

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

      次のように置き換えます。

      • COMPOSER_1_ENV は、Managed Airflow(レガシー Gen 1)環境の名前に置き換えます。
      • COMPOSER_1_LOCATION は、環境が配置されているリージョン。
    2. 出力で、/dags フォルダを削除します。結果は、Managed Airflow(以前の Gen 1)環境のバケットの URI です。

      たとえば、gs://us-central1-example-916807e1-bucket/dagsgs://us-central1-example-916807e1-bucketに変更します。

  2. Managed Airflow(レガシー Gen 1)環境のスナップショットを作成します。

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

    次のように置き換えます。

    • COMPOSER_1_ENV は、Managed Airflow(レガシー Gen 1)環境の名前に置き換えます。
    • COMPOSER_1_LOCATION は、Managed Airflow(レガシー Gen 1)環境が配置されているリージョン。
    • COMPOSER_1_SNAPSHOTS_FOLDER は、Managed Airflow(レガシー Gen 1)環境のバケットの URI。このガイドでは、スナップショットを Managed Airflow(レガシー Gen 1)環境のバケットに保存しますが、必要に応じて別のロケーションを選択することもできます。カスタム ロケーションを指定する場合は、 両方の環境のサービス アカウントに、両方の環境のサービス アカウントが利用できる任意のロケーションに対する読み取りと書き込みの権限が 必要です。

Managed Airflow(Gen 3)環境を作成する

Managed Airflow(Gen 3)環境を作成します。想定されるリソース需要を満たす 環境プリセットから始めて、後で環境を さらにスケーリングして最適化できます。

構成のオーバーライドと環境変数は、Managed Airflow(レガシー Gen 1)環境のスナップショットを読み込むときに後で置き換えるため、指定する必要はありません。

スナップショットを Managed Airflow(第 3 世代)環境に読み込む

コンソール

スナップショットをマネージド Airflow(Gen 3)環境に読み込むには:

  1. Google Cloud コンソールで、[**環境**] ページに移動します。

    [環境] に移動

  2. 環境のリストで、Managed Airflow(Gen 3)環境の名前をクリックします。[環境の詳細] ページが開きます。

  3. [スナップショットを読み込む] をクリックします。

  4. [スナップショットを読み込む] ダイアログで、[参照] をクリックします。

  5. スナップショットのあるフォルダを選択します。このガイドのデフォルトの場所を使用する場合、このフォルダは /snapshots フォルダの Managed Airflow(レガシー Gen 1)環境バケットにあり、名前はスナップショット保存オペレーションのタイムスタンプになります。例: us-central1-example-916807e1-bucket/snapshots_example-project_us-central1_example-environment/2022-01-05T18-59-00

  6. [読み込む] をクリックし、Managed Airflow がスナップショットを読み込むまで待ちます。

gcloud

Managed Airflow(レガシー Gen 1)環境のスナップショットを Managed Airflow(Gen 3)環境に読み込みます。

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

次のように置き換えます。

  • COMPOSER_3_ENV は、Managed Airflow(Gen 3)環境の名前に置き換えます。
  • COMPOSER_3_LOCATION は、Managed Airflow(Gen 3)環境が配置されているリージョン。
  • SNAPSHOT_PATH を、Managed Airflow(以前の Gen 1)環境のバケットの URI の後にスナップショットのパスを付加したものに置き換えます。例: gs://us-central1-example-916807e1-bucket/snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00

Managed Airflow(Gen 3)環境で DAG の一時停止を解除する

次のいずれかのオプションを使用できます。

  • Airflow ウェブ インターフェースで、[DAG] に移動し、すべての DAG の一時停止を手動で 1 つずつ解除します。

  • 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(Gen 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 ウェブ インターフェースで、[DAG] に移動し、報告された DAG 構文エラーを確認します。

  2. DAG 実行が正しい時間にスケジュール設定されていることを確認します。

  3. マネージド Airflow(Gen 3)環境で DAG の実行が発生するのを待ち、成功したかどうかを確認します。DAG の実行が成功した場合は、Managed Airflow(レガシー Gen 1)環境で一時停止を解除しないでください。解除すると、Managed Airflow(レガシー Gen 1)環境で同じ日時に DAG が実行されます。

  4. 特定の DAG の実行が失敗した場合は、 DAG のトラブルシューティングを Managed Airflow(Gen 3)で正常に 実行されるまで行います。

Managed Airflow(Gen 3)環境をモニタリングする

すべての DAG と構成を Managed Airflow(Gen 3)環境に移行した後、潜在的な問題、失敗した DAG 実行、環境全体の健全性をモニタリングします。

マネージド Airflow(Gen 3)環境が、十分な時間、問題なく動作している場合は、マネージド Airflow(レガシー Gen 1)環境の削除を検討してください。

次のステップ