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

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

このページでは、既存の Managed Airflow(Gen 2)環境から Managed Airflow(Gen 3)に 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(Gen 2)バージョン 2.0.9 以降でサポートされています。

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

  • Managed Airflow(Gen 2)と Managed Airflow(Gen 3)の違いのリストを確認します。環境で Managed 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)環境のパッケージのリストは、マネージド Airflow(Gen 2)環境のリストと異なる場合があります。これが、DAG と Managed Airflow(Gen 3)の互換性に影響する可能性があります。

  • マネージド Airflow は、構成のオーバーライド、環境 変数、PyPI パッケージ をマネージド Airflow(Gen 2)環境のスナップショットから マネージド Airflow(Gen 3)に読み込みます。互換性のための 変更や調整は行いません。これらの構成パラメータ間の競合を解決するには、スナップショットを読み込むときにカスタム PyPI パッケージ、環境変数、Airflow 構成のオーバーライドの読み込みをスキップします。

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

マネージド Airflow(第 2 世代)環境で DAG を一時停止する

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

DAG を一時停止するには、次のいずれかのオプションを使用します。

  • コンソールで DAG をひとつずつ一時停止にします。 Google Cloud

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

      [環境] に移動

    2. 環境を選択して詳細を表示します。

    3. [環境の詳細] ページで、[DAG] タブに移動します。

    4. DAG の名前をクリックします。

    5. [DAG の詳細] ページで、[DAG の一時停止] をクリックします。

  • Airflow ウェブ インターフェースで、[DAG] に移動し、すべての 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(Gen 2)環境の名前に置き換えます。
    • PROJECT_ID は、プロジェクト ID に置き換えます。
    • COMPOSER_2_LOCATION は、環境が配置されているリージョン。

Managed Airflow(Gen 2)環境のスナップショットを保存する

コンソール

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

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

    [環境] に移動

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

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

  4. [スナップショットを作成] ダイアログで、[送信] をクリックします。このガイドでは、スナップショットを Managed Airflow(Gen 2)環境のバケットに保存しますが、必要に応じて別のロケーションを選択することもできます。カスタム ロケーションを指定する場合は、両方の環境のサービス アカウントには、指定したロケーションに対する読み取りと書き込みの権限が必要です。

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

  6. スナップショットが作成されると、表示されたメッセージにスナップショットの場所が出力されます。この情報を保存し、後でこのスナップショットを Managed Airflow(Gen 3)環境に読み込むときに使用します。

    たとえば、スナップショットの場所は gs://us-central1-example-916807e1-bucket/snapshots/snapshots_example-project_us-central1_example-environment/2024-05-15T15-23-12 のようになります。

gcloud

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

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

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

    • COMPOSER_2_ENV は、Managed Airflow(Gen 2)環境の名前に置き換えます。
    • COMPOSER_2_LOCATION は、Managed Airflow(Gen 2)環境が配置されているリージョン。
    • (省略可)--snapshot-location 引数を使用して、環境のスナップショットを保存するカスタム ロケーションを指定できます。

      このガイドでは、スナップショットを Managed Airflow(Gen 2)環境のバケットに保存しますが、必要に応じて別のロケーションを選択することもできます。カスタム ロケーションを指定する場合は、 両方の環境のサービス アカウント には、指定したロケーションに対する読み取りと書き込みの権限が必要です。

  2. スナップショットが作成されると、表示されたメッセージにスナップショットの場所が出力されます。この情報を保存し、後でこのスナップショットを Managed Airflow(Gen 3)環境に読み込むときに使用します。

    たとえば、スナップショットの場所は gs://us-central1-example-916807e1-bucket/snapshots/snapshots_example-project_us-central1_example-environment/2024-05-15T15-23-12 のようになります。

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

次のガイドラインに沿ってManaged Airflow(Gen 3)環境を作成します。

  • マネージド Airflow(Gen 2)環境と同じリソースの上限構成から始めて、その後に構成をさらにスケーリングして最適化することができます。

  • マネージド Airflow(Gen 3)環境では、 Airflow DAG プロセッサは個別の 環境コンポーネントとして実行されます。DAG プロセッサはスケジューラから DAG の解析をオフロードするため、以前に Airflow スケジューラに割り振られたリソースを再分配することをおすすめします。マネージド Airflow(Gen 3)に移行してスケジューラと DAG プロセッサのパフォーマンスをモニタリングした後で、この操作を行うことができます。

  • Managed Airflow(第 3 世代)では、Managed Airflow(第 2 世代)と比較して、ネットワーク設定がより合理化され、簡素化されています。パブリック IP とプライベート IP のネットワーク構成の切り替え、VPC ネットワークの接続および切断を行えます。IP 範囲を指定する必要はありません。マネージド Airflow(Gen 3)環境のネットワーキング構成が、対応するマネージド Airflow(Gen 2)構成と一致していることを確認します。

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

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

コンソール

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

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

    [環境] に移動

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

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

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

  5. スナップショットのあるフォルダを選択します。

    このガイドのデフォルトの場所を使用する場合、このフォルダは /snapshots フォルダの Managed Airflow(Gen 2)環境バケットにあり、名前はスナップショット保存オペレーションのタイムスタンプになります。スナップショットの作成が成功したことを示すメッセージにも、同じ場所が表示されていました。

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

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

gcloud

マネージド Airflow(Gen 2)環境のスナップショットをマネージド 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 2)環境のバケットの URI の後にスナップショットのパスを付加したもの。スナップショットの作成が成功したことを示すメッセージにも、同じ場所が表示されていました。例: gs://us-central1-example-916807e1-bucket/snapshots/example-project_us-central1_example-environment_2024-05-15T15-23-12

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

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

  • コンソールで DAG をひとつずつ一時停止解除します。 Google Cloud

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

      [環境] に移動

    2. 環境を選択して詳細を表示します。

    3. [環境の詳細] ページで、[DAG] タブに移動します。

    4. DAG の名前をクリックします。

    5. [DAG の詳細] ページで、[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 は、環境が配置されているリージョン。

DAG エラーを確認する

  1. Airflow ウェブ インターフェースで、[DAG] に移動し、報告された DAG 構文エラーを確認します。

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

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

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

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

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

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

次のステップ