Cloud Composer 1 | Cloud Composer 2
このページでは、DAG と既存の Cloud Composer 1 のデータと構成の Airflow 1 環境を、Cloud Composer 2(Airflow 2)に移行する方法について説明します。
この移行ガイドでは、スナップショット機能を使用しています。
その他の移行ガイド
移行元 | 終了日 | メソッド | ガイド |
---|---|---|---|
Cloud Composer 1、Airflow 2 | Cloud Composer 2、Airflow 2 | 並列処理、スナップショットを使用 | 移行ガイド(スナップショット) |
Cloud Composer 1、Airflow 1 | Cloud Composer 2、Airflow 2 | 並列処理、スナップショットを使用 | このガイド(スナップショット) |
Cloud Composer 1、Airflow 2 | Cloud Composer 2、Airflow 2 | 並列処理、手動転送 | 手動移行ガイド |
Cloud Composer 1、Airflow 1 | Cloud Composer 2、Airflow 2 | 並列処理、手動転送 | 手動移行ガイド |
Airflow 1 | Airflow 2 | 並列処理、手動転送 | 手動移行ガイド |
準備
スナップショットは、Cloud Composer 2 バージョン 2.0.9 以降でサポートされています。Cloud Composer 1 では、1.18.5 で環境スナップショットの保存がサポートされています。
Cloud Composer では、Cloud Composer 1 から Cloud Composer 2 への移し換え移行がサポートされています。Cloud Composer 1 から Cloud Composer 2 への置き換えアップグレードはできません。
スナップショットをサポートする Airflow データベースの最大サイズは 20 GB です。環境のデータベースが 20 GB を超える場合は、Airflow データベースのサイズを小さくします。
Cloud Composer 2 では Airflow 2 が使用されるため、移行には DAG と環境構成の Airflow 2 への切り替えが含まれます。Cloud Composer における Airflow 1 から Airflow 2 への互換性を失う変更については、Airflow 1 から Airflow 2 への移行ガイドをご覧ください。
このガイドは、Airflow 2 への移行と Cloud Composer 2 への移行を組み合わせて 1 つの移行手順にしています。これにより、Cloud Composer 2 に移行する前に、Airflow 2 がある Cloud Composer 1 環境に移行する必要はありません。
ステップ 1: Airflow 1.10.15 にアップグレードする
環境で 1.10.15 より前の Airflow バージョンを使用している場合は、Airflow 1.10.15 を使用し、スナップショットをサポートする Cloud Composer のバージョンに環境をアップグレードします。
ステップ 2: Airflow 2 との互換性を確認する
Airflow 2 との競合の可能性を確認するには、既存の Airflow 1.10.15 環境で Airflow が提供するアップグレード チェック スクリプトを使用します。
gcloud
gcloud composer environments run
コマンドを使用してアップグレード チェックを実行します。スタンドアロンの Airflow 1.10.15 に関連する一部のアップグレード チェックは Cloud Composer とは関係ありません。次のコマンドは、これらのチェックを除外します。gcloud composer environments run \ COMPOSER_1_ENV \ --location=COMPOSER_1_LOCATION \ upgrade_check \ -- --ignore VersionCheckRule --ignore LoggingConfigurationRule \ --ignore PodTemplateFileRule --ignore SendGridEmailerMovedRule
次のように置き換えます。
COMPOSER_1_ENV
は、Airflow 1.10.15 環境の名前。COMPOSER_1_LOCATION
は、環境が配置されているリージョン。
コマンドの出力を確認します。更新チェック スクリプトにより、既存の環境での潜在的な互換性の問題が報告されます。
Airflow 2.0+ のアップグレード ガイドの DAG のアップグレードについてのセクションで説明されているように、DAG に対するその他の変更を実装します。
ステップ 3: DAG が Airflow 2 に対応する準備ができていることを確認する
DAG を Cloud Composer 2 環境に移行する前に、次のことを確認してください。
DAG に対するアップグレード チェック スクリプトが正常に実行され、互換性の問題が残っていない。
DAG で正しいインポート ステートメントを使用している。
たとえば、
BigQueryCreateDataTransferOperator
の新しいインポート ステートメントは次のようになります。from airflow.providers.google.cloud.operators.bigquery_dts \ import BigQueryCreateDataTransferOperator
DAG が Airflow 2 用にアップグレードされます。この変更は、Airflow 1.10.14 以降のバージョンと互換性があります。
ステップ 4: Cloud Composer 1 環境で DAG を一時停止する
DAG の重複実行を回避するには、スナップショットを保存する前に Cloud Composer 1 環境内のすべての DAG を一時停止します。
次のいずれかのオプションを使用できます。
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
は、環境が配置されているリージョン。
ステップ 5: Cloud Composer 1 環境のスナップショットを保存する
Console
環境のスナップショットを作成します。
Google Cloud Console で [環境] ページに移動します。
環境のリストで、ご利用の 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 beta 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 環境のバケットに保存しますが、必要に応じて別の場所を選択することもできます。カスタム ロケーションを指定する場合は、両方の環境のサービス アカウントに、指定したロケーションに対する読み取りと書き込みの権限が必要です。
ステップ 6: Cloud Composer 2 環境を作成する
Cloud Composer 2 環境を作成します。想定されるリソース需要を満たす環境プリセットから始めて、後で環境をさらにスケーリングして最適化できます。
構成のオーバーライドと環境変数を指定する必要はありません。これらは、後で Cloud Composer 1 環境のスナップショットを読み込むときに置換されます。
Airflow 1 の一部の構成オプションでは、Airflow 2 とは別の名前とセクションを使用します。詳細については、構成の変更をご覧ください。
ステップ 7: スナップショットを Cloud Composer 2 環境に読み込む
コンソール
スナップショットを Cloud Composer 2 環境に読み込むには:
Google Cloud Console で [環境] ページに移動します。
環境のリストで、ご利用の Cloud Composer 2 環境の名前をクリックします。[環境の詳細] ページが開きます。
[スナップショットを読み込む] をクリックします。
[スナップショットを読み込む] ダイアログで、[参照] をクリックします。
スナップショットがあるフォルダを選択します。このガイドのデフォルトの場所を使用する場合、このフォルダは
/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 2 環境に読み込みます。
gcloud beta composer environments snapshots load \
COMPOSER_2_ENV \
--location COMPOSER_2_LOCATION \
--snapshot-path "SNAPSHOT_PATH"
次のように置き換えます。
COMPOSER_2_ENV
は、Cloud Composer 2 環境の名前。COMPOSER_2_LOCATION
は、Cloud Composer 2 環境が配置されているリージョン。SNAPSHOT_PATH
を、Cloud Composer 1 環境のバケットの URI の後にスナップショットのパスを付加したものに置き換えます。例:gs://us-central1-example-916807e1-bucket/snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00
ステップ 8: Cloud Composer 2 環境で DAG の一時停止を解除する
次のいずれかのオプションを使用できます。
Airflow ウェブ インターフェースで、[DAG] に移動し、すべての DAG の一時停止を手動で 1 つずつ解除します。
composer_dags スクリプトを使用して、すべての DAG の一時停止を解除します。
python3 composer_dags.py --environment COMPOSER_2_ENV \ --project PROJECT_ID \ --location COMPOSER_2_LOCATION \ --operation unpause
次のように置き換えます。
COMPOSER_2_ENV
は、Cloud Composer 2 環境の名前。PROJECT_ID
は、プロジェクト ID に置き換えます。COMPOSER_2_LOCATION
は、環境が配置されているリージョン。
ステップ 9: DAG エラーを確認する
Airflow ウェブ インターフェースで、[DAG] に移動し、報告された DAG 構文エラーを確認します。
DAG 実行が正しい時間にスケジュール設定されていることを確認します。
Cloud Composer 2 環境で DAG の実行が発生するのを待ち、成功したかどうかを確認します。DAG の実行が成功した場合は、Cloud Composer 1 環境で一時停止を解除しないでください。解除すると、DAG が Cloud Composer 1 の環境で同じ日時に実行されます。
特定の DAG の実行が失敗した場合は、Cloud Composer 2 で正常に実行されるまで DAG のトラブルシューティングを行います。
ステップ 10: Cloud Composer 2 環境をモニタリングする
すべての DAG と構成を Cloud Composer 2 環境に移行した後、潜在的な問題、失敗した DAG 実行、環境全体の健全性をモニタリングします。
Cloud Composer 2 環境が、十分な時間、問題なく動作している場合は、Cloud Composer 1 環境の削除を検討してください。