環境を Cloud Composer 3 に移行する(移行スクリプト)

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

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

移行元 移行先 メソッド ガイド
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 から Cloud Composer 3 への移行プロセスを自動化する、並行移行用の Python スクリプトです。環境スナップショットを使用して、環境の構成を新しい環境に転送します。

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

  1. Cloud Composer 2 環境の構成を取得します。

  2. 取得した構成と一致する構成で Cloud Composer 3 環境を作成します。

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

  3. Cloud Composer 2 環境内のすべての DAG を一時停止します。後で、Cloud Composer 2 環境で一時停止が解除された DAG のみが一時停止が解除されます。

  4. ソースの Cloud Composer 2 環境のスナップショットを保存します。スナップショットは、スナップショットのデフォルトの場所である Cloud Composer 2 環境のバケットに保存されます。

  5. スナップショットを Cloud Composer 3 環境に読み込みます。

    このスクリプトは、カスタム PyPI パッケージ、環境変数、Airflow 構成オプションのオーバーライドの Cloud Composer 3 環境との互換性をチェックしません。

    競合が発生した場合、Cloud Composer 3 環境の作成後に、スナップショットの読み込みプロセス中に移行が失敗します。この場合、Cloud Composer 2 環境の構成を調整して競合を解決するか、移行スクリプトなしで移行し、スナップショットを読み込むときにカスタム PyPI パッケージ、環境変数、Airflow 構成のオーバーライドの読み込みをスキップします。

  6. Cloud Composer 3 環境で DAG の一時停止を解除します。スクリプトを実行する前に一部の DAG が一時停止されていた場合、それらの DAG は一時停止されたままになります。

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

  • このスクリプトでは、常に新しい Cloud Composer 3 環境が作成されます。スナップショットを既存の Cloud Composer 3 環境に読み込むことはできません。そのためには、移行スクリプトを使用せずに、スナップショットを使用して移行できます。

  • このスクリプトは、Cloud Composer 2 環境と同じリージョンとプロジェクトにのみ Cloud Composer 3 環境を作成します。

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

  • 移行スクリプトを使用して移行できるのは、Cloud Composer 2 環境のみです。

始める前に

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

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

  • でサポートされています。

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

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

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

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

Cloud Composer 3 に移行する

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

Cloud Composer 2 と Cloud Composer 3 の違いを確認する

Cloud Composer 2 と Cloud Composer 3 の相違点の一覧を確認してください。

環境で Cloud Composer 3 でまだ利用できない機能が使用されていないこと、および Cloud Composer 3 に固有の機能の使用方法と構成方法を理解していることを確認します。

DAG が Cloud Composer 3 と互換性があることを確認する

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

  • Cloud Composer 3 環境のパッケージのリストは、Cloud Composer 2 環境のリストと異なる場合があります。これが、DAG と Cloud Composer 3 の互換性に影響する可能性があります。

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

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

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

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

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

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

gcloud CLI で承認する

gcloud CLI で承認します。

gcloud auth login

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

移行前に、Cloud Composer 3 環境のパラメータをプレビューできます。これを使用して、Cloud Composer 2 環境の構成が Cloud Composer 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: Cloud Composer 2 環境の名前。
  • LOCATION: Cloud Composer 2 環境が配置されているリージョン。Cloud Composer 3 環境は同じリージョンに作成されます。
  • COMPOSER_3_AIRFLOW_VERSION: Cloud Composer 3 環境の Airflow のバージョン。このバージョンは、Cloud Composer 2 環境と同じバージョン以上で、Cloud Composer 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

環境の健全性を確認する

移行する Cloud Composer 2 環境が正常であることを確認します。

環境の状態が良好でない場合、スナップショットを作成できないため、新しい Cloud Composer 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: Cloud Composer 2 環境の名前。
  • LOCATION: Cloud Composer 2 環境が配置されているリージョン。Cloud Composer 3 環境は同じリージョンに作成されます。
  • COMPOSER_3_AIRFLOW_VERSION: Cloud Composer 3 環境の Airflow のバージョン。このバージョンは、Cloud Composer 2 環境と同じバージョン以上で、Cloud Composer 3 で使用可能なバージョンのいずれかである必要があります。

DAG エラーを確認する

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

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

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

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

Cloud Composer 3 環境をモニタリングする

Cloud Composer 3 環境で潜在的な問題、失敗した DAG 実行、環境全体の健全性をモニタリングします。

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

次のステップ