環境を Cloud Composer に移行する 3

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

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

始める前に

  • この移行ガイドでは、スナップショットを使用します。スナップショットは、Cloud Composer 2 バージョン 2.0.9 以降でサポートされています。

  • Cloud Composer では、Cloud Composer 2 から Cloud Composer 3 への移し換え移行がサポートされています。Cloud Composer 2 から Cloud Composer 3 への置き換えアップグレードはできません。

  • Cloud Composer 2 と Cloud Composer 3 の相違点の一覧を確認してください。環境で 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 環境のパッケージのリストは、Cloud Composer 2 環境のリストと異なる場合があります。これが、DAG と Cloud Composer 3 の互換性に影響する可能性があります。

  • Cloud Composer は、構成のオーバーライド、環境変数、PyPI パッケージを Cloud Composer 2 環境のスナップショットから Cloud Composer 3 に読み込みます。互換性のための変更や調整は行いません。カスタム PyPI パッケージによって依存関係に競合が生じる場合は、スナップショットを読み込むときにインストールをスキップできます。

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

  • Cloud Composer 3 では、Airflow データベースに直接アクセスすることはできません。DAG がこの変更と互換性があることを確認してください。

Cloud Composer 2 環境で DAG を一時停止する

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

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

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

    1. 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 は、Cloud Composer 2 環境の名前。
    • PROJECT_ID は、プロジェクト ID に置き換えます。
    • COMPOSER_2_LOCATION は、環境が配置されているリージョン。

Cloud Composer 2 環境のスナップショットを保存する

コンソール

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

  1. Google Cloud Console で [環境] ページに移動します。

    [環境] に移動

  2. 環境のリストで、ご利用の Cloud Composer 2 環境の名前をクリックします。[環境の詳細] ページが開きます。

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

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

  5. Cloud Composer がスナップショットを作成するまで待ちます。

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

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

gcloud

  1. Cloud Composer 2 環境のスナップショットを作成します。

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

    以下のように置き換えます。

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

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

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

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

Cloud Composer 3 環境を作成する

次のガイドラインに沿って Cloud Composer 3 環境を作成します。

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

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

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

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

スナップショットを Cloud Composer 3 環境に読み込む

コンソール

スナップショットを Cloud Composer 3 環境に読み込むには:

  1. Google Cloud Console で [環境] ページに移動します。

    [環境] に移動

  2. 環境のリストで、ご利用の Cloud Composer 3 環境の名前をクリックします。[環境の詳細] ページが開きます。

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

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

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

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

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

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

gcloud

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

Cloud Composer 3 環境で DAG の一時停止を解除する

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

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

    1. 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 は、Cloud Composer 3 環境の名前。
    • PROJECT_ID は、プロジェクト ID に置き換えます。
    • COMPOSER_3_LOCATION は、環境が配置されているリージョン。

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 環境をモニタリングする

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

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

次のステップ