環境を Managed Airflow(第 3 世代)に移行する(移行スクリプト)

Managed Airflow(第 3 世代) | Managed Airflow(第 2 世代) | Managed Airflow(以前の第 1 世代)

このページでは、移行スクリプトを使用して、既存の Managed Airflow(第 2 世代)環境から新しい Managed Airflow(第 3 世代)環境に DAG、データ、構成を移行する方法について説明します。

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

移行スクリプトについて

移行スクリプトは、Managed Airflow(第 2 世代)から Managed Airflow(第 3 世代)への移行プロセスを自動化するサイドバイサイド移行用の Python スクリプトです。環境スナップショットを使用して、環境の構成を新しい環境に転送します。

このスクリプトは、次のアクションを実行します。

  1. Managed Airflow(第 2 世代)環境の構成を取得します。

  2. 取得した構成と一致する構成で Managed Airflow(第 3 世代)環境を作成します。

    Managed Airflow(第 3 世代)環境はアーキテクチャが異なるため、その違いに合わせて一部のパラメータが調整されることがあります。環境のほとんどのパラメータは後で調整することもできます。

  3. Managed Airflow(第 2 世代)環境内のすべての DAG を 1 つずつ一時停止します。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 がすでに一時停止されていた場合、それらは一時停止されたままになります。

このスクリプトには次の制限があります。

  • スクリプトは常に新しい Managed Airflow(第 3 世代)環境を作成します。既存の Managed Airflow(第 3 世代)環境にスナップショットを読み込むことはできません。これを行うには、移行スクリプトを使用せずにスナップショットを使用して移行します。

  • このスクリプトは、Managed Airflow(第 3 世代)環境と同じリージョンとプロジェクトにのみ Managed Airflow(第 2 世代)環境を作成します。

  • スナップショットの読み込みは、同じバージョンまたはそれ以降のバージョンの Airflow に対してのみ実行できます。たとえば、Airflow 2.10.2 から Airflow 2.9.3 にスナップショットを読み込むことはできません。

  • 移行スクリプトを使用して移行できるのは、Managed Airflow(第 2 世代)環境のみです。

始める前に

  • 移行スクリプトは環境を作成し、スナップショットを保存して読み込むため、移行プロセスに 1 時間以上かかることがあります。

  • このスクリプトでは、スナップショットを使用します。スナップショットがサポートされている

  • Managed Airflow(第 2 世代)バージョン 2.0.9 以降。

  • アカウントには、環境の作成、スナップショットの保存、スナップショットの読み込みを行うことができる IAM ロールが必要です。

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

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

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

Managed Airflow(第 3 世代)に移行する

このセクションでは、移行スクリプトを使用した移行プロセスについて説明します。

マネージド Airflow(第 2 世代)とマネージド Airflow(第 3 世代)の違いを確認する

Managed Airflow(第 2 世代)と Managed Airflow(第 3 世代)の違いの一覧を確認してください。

環境で Managed Airflow(第 3 世代)でまだ利用できない機能が使用されていないこと、Managed Airflow(第 3 世代)固有の機能の使用方法と構成方法を理解していることを確認します。

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

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

  • Managed Airflow(Gen 3)環境のパッケージのリストは、Managed Airflow(Gen 2)環境のリストと異なる場合があります。これが、DAG と Managed Airflow(第 3 世代)の互換性に影響する可能性があります。

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

構成の互換性を確認する

アップグレード チェックを実行して、Managed Airflow(第 2 世代)環境の構成が Managed Airflow(第 3 世代)と互換性があるかどうかを確認できます。移行を開始する前に、このチェックで報告されたすべてのブロック競合を解決することをおすすめします。

スクリプトの依存関係をインストールする

  • このスクリプトには Python バージョン 3.8 以降が必要です。

  • 移行スクリプトは、gcloud CLI と curl ユーティリティを使用します。両方のユーティリティがパソコンにインストールされていることを確認します。

スクリプトをダウンロードする

移行スクリプト(composer_migrate.py)を GitHub のリポジトリからダウンロードします。

gcloud CLI で承認する

gcloud CLI で承認します。

gcloud auth login

新しい環境のパラメータをプレビューする

移行する前に、Managed Airflow(第 3 世代)環境のパラメータをプレビューできます。これを使用して、マネージド Airflow(第 2 世代)環境の構成がマネージド 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: Managed Airflow(第 2 世代)環境の名前。
  • LOCATION: Managed Airflow(第 2 世代)環境が配置されているリージョン。Managed Airflow(第 3 世代)環境は同じリージョンに作成されます。
  • COMPOSER_3_AIRFLOW_VERSION: Managed Airflow(Gen 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: Managed 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 ウェブ インターフェースで、[DAG] に移動し、報告された DAG 構文エラーを確認します。

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

  3. Managed Airflow(第 3 世代)環境で DAG の実行が発生するまで待機し、実行が成功したかどうかを確認します。DAG の実行が成功した場合は、Managed Airflow(第 2 世代)環境で一時停止を解除しないでください。解除すると、Managed Airflow(第 2 世代)環境で同じ日時に DAG が実行されます。

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

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

Managed Airflow(第 3 世代)環境で、潜在的な問題、失敗した DAG 実行、環境全体の健全性をモニタリングします。

Managed Airflow(Gen 3)環境が、十分な時間、問題なく動作している場合は、Managed Airflow(Gen 2)環境の削除を検討してください。

次のステップ