Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
このページでは、スナップショットを使用して、既存の Cloud Composer 1 の DAG、データ、構成の Airflow 2 環境を Cloud Composer 3(Airflow 2)に移行する方法について説明します。
その他の移行ガイド
移行元 | 移行先 | メソッド | ガイド |
---|---|---|---|
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 では、Cloud Composer 1 から Cloud Composer 3 への移し換え移行がサポートされています。Cloud Composer 1 から Cloud Composer 3 への置き換えアップグレードはできません。
Cloud Composer 1、Cloud Composer 2、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 環境の [パッケージのリスト][cc-versions] は、Cloud Composer 1 環境のリストと異なる場合があります。これが、DAG と Cloud Composer 3 の互換性に影響する可能性があります。
Cloud Composer は、構成のオーバーライド、環境変数、PyPI パッケージを Cloud Composer 1 環境のスナップショットから Cloud Composer 3 に読み込みます。互換性のために変更や調整は行いません。カスタム PyPI パッケージによって依存関係に競合が生じる場合は、スナップショットを読み込むときにインストールをスキップできます。
Cloud Composer 3 では、環境のクラスタはテナント プロジェクトに配置されています。DAG がこの変更と互換性があることを確認してください。特に、
KubernetesPodOperator
ワークロードは環境から独立してスケーリングされるようになり、また、Pod アフィニティ構成を使用できなくなりました。Cloud Composer 3 では、Airflow データベースに直接アクセスすることはできません。DAG がこの変更と互換性があることを確認してください。
Cloud Composer 1 環境で DAG を一時停止する
DAG の重複実行を回避するには、スナップショットを保存する前に Cloud Composer 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
は、Cloud Composer 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 の試用もご覧ください。
Cloud Composer 1 環境のスナップショットを保存する
コンソール
環境のスナップショットを作成します。
Google Cloud コンソールで、[環境] ページに移動します。
環境のリストで、ご利用の Cloud Composer 1 環境の名前をクリックします。[環境の詳細] ページが開きます。
[スナップショットを作成] をクリックします。
[スナップショットを作成] ダイアログで、[送信] をクリックします。このガイドでは、スナップショットを Cloud Composer 1 環境のバケットに保存しますが、必要に応じて別のロケーションを選択することもできます。
Cloud Composer がスナップショットを作成するまで待ちます。
gcloud
Cloud Composer 1 環境のバケット URI を取得します。
次のコマンドを実行します。
gcloud composer environments describe COMPOSER_1_ENV \ --location COMPOSER_1_LOCATION \ --format="value(config.dagGcsPrefix)"
以下のように置き換えます。
COMPOSER_1_ENV
は、Cloud Composer 1 環境の名前に置き換えます。COMPOSER_1_LOCATION
は、環境が配置されているリージョン。
出力で、
/dags
フォルダを削除します。結果は、Cloud Composer 1 環境のバケットの URI です。たとえば、
gs://us-central1-example-916807e1-bucket/dags
をgs://us-central1-example-916807e1-bucket
に変更します。
Cloud Composer 1 環境のスナップショットを作成します。
gcloud composer environments snapshots save \ COMPOSER_1_ENV \ --location COMPOSER_1_LOCATION \ --snapshot-location "COMPOSER_1_SNAPSHOTS_FOLDER"
以下のように置き換えます。
COMPOSER_1_ENV
は、Cloud Composer 1 環境の名前。COMPOSER_1_LOCATION
は、Cloud Composer 1 環境が配置されているリージョン。COMPOSER_1_SNAPSHOTS_FOLDER
は、Cloud Composer 1 環境のバケットの URI。このガイドでは、スナップショットを Cloud Composer 1 環境のバケットに保存しますが、必要に応じて別のロケーションを選択することもできます。カスタム ロケーションを指定する場合は、両方の環境のサービス アカウントに、両方の環境のサービス アカウントが使用できるすべてのロケーションに対する読み取りと書き込みの権限が必要です。
Cloud Composer 3 環境を作成する
Cloud Composer 3 環境を作成します。想定されるリソース需要を満たす環境プリセットから始めて、後で環境をさらにスケーリングして最適化できます。
構成のオーバーライドと環境変数は、Cloud Composer 1 環境のスナップショットを読み込むときに後で置き換えるため、指定する必要はありません。
スナップショットを Cloud Composer 3 環境に読み込む
コンソール
スナップショットを Cloud Composer 3 環境に読み込むには:
Google Cloud コンソールで、[環境] ページに移動します。
環境のリストで、ご利用の Cloud Composer 3 環境の名前をクリックします。[環境の詳細] ページが開きます。
[スナップショットを読み込む] をクリックします。
[スナップショットを読み込む] ダイアログで、[参照] をクリックします。
スナップショットのあるフォルダを選択します。このガイドのデフォルトの場所を使用する場合、このフォルダは
/snapshots
フォルダの Cloud Composer 1 環境バケットにあり、名前はスナップショット保存オペレーションのタイムスタンプになります。例:us-central1-example-916807e1-bucket/snapshots_example-project_us-central1_example-environment/2022-01-05T18-59-00
。[読み込む] をクリックし、Cloud Composer によってスナップショットが読み込まれるまで待ちます。
gcloud
Cloud Composer 1 環境のスナップショットを 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 1 環境のバケットの URI の後にスナップショットのパスを付加したものに置き換えます。例:gs://us-central1-example-916807e1-bucket/snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00
Cloud Composer 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
は、Cloud Composer 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 エラーを確認する
Airflow ウェブ インターフェースで、[DAG] に移動し、報告された DAG 構文エラーを確認します。
DAG 実行が正しい時間にスケジュール設定されていることを確認します。
Cloud Composer 3 環境で DAG の実行が発生するのを待ち、成功したかどうかを確認します。DAG の実行が成功した場合は、Cloud Composer 1 環境で一時停止を解除しないでください。解除すると、Cloud Composer 1 環境で同じ日時に DAG が実行されます。
特定の DAG の実行が失敗した場合は、Cloud Composer 3 で正常に実行されるまで DAG のトラブルシューティングを行います。
Cloud Composer 3 環境をモニタリングする
すべての DAG と構成を Cloud Composer 3 環境に移行した後、潜在的な問題、失敗した DAG 実行、環境全体の健全性をモニタリングします。
Cloud Composer 3 環境が、十分な時間、問題なく動作している場合は、Cloud Composer 1 環境の削除を検討してください。