Memigrasikan lingkungan ke Cloud Composer 2 (dari Airflow 2)

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

Halaman ini menjelaskan cara mentransfer DAG, data, dan konfigurasi dari lingkungan Cloud Composer 1 dan Airflow 2 yang ada ke Cloud Composer 2 dan Airflow 2.

Panduan migrasi lainnya

Dari Ke Metode Panduan
Cloud Composer 2 Cloud Composer 3 Secara berdampingan, menggunakan skrip migrasi Panduan migrasi skrip
Cloud Composer 2 Cloud Composer 3 Berdampingan, menggunakan snapshot Panduan migrasi snapshot
Cloud Composer 1, Airflow 2 Cloud Composer 3 Berdampingan, menggunakan snapshot Panduan migrasi snapshot
Cloud Composer 1, Airflow 2 Cloud Composer 2 Berdampingan, menggunakan snapshot Panduan migrasi snapshot
Cloud Composer 1, Airflow 2 Cloud Composer 2 Berdampingan, transfer manual Panduan ini
Cloud Composer 1, Airflow 1 Cloud Composer 2, Airflow 2 Berdampingan, menggunakan snapshot Panduan migrasi snapshot
Cloud Composer 1, Airflow 1 Cloud Composer 2, Airflow 2 Berdampingan, transfer manual Panduan migrasi manual
Cloud Composer 1, Airflow 1 Cloud Composer 1, Airflow 2 Berdampingan, transfer manual Panduan migrasi manual

Sebelum memulai

Langkah 1: Dapatkan daftar penggantian konfigurasi, paket PyPI kustom, dan variabel lingkungan

Konsol

Dapatkan daftar penggantian konfigurasi, paket PyPI kustom, dan variabel lingkungan di lingkungan Cloud Composer 1 Anda:

  1. Buka halaman Environments di konsol Google Cloud :

    Buka Lingkungan

  2. Pilih lingkungan Cloud Composer 1 Anda.

  3. Lihat variabel lingkungan di tab Variabel lingkungan.

  4. Lihat penggantian konfigurasi di tab Penggantian konfigurasi Airflow.

  5. Lihat paket PyPI kustom di tab Paket PyPI.

gcloud

Untuk mendapatkan daftar variabel lingkungan, jalankan:

gcloud composer environments describe \
    COMPOSER_1_ENV \
    --location COMPOSER_1_LOCATION \
    --format="value(config.softwareConfig.envVariables)"

Untuk mendapatkan daftar penggantian konfigurasi Airflow lingkungan, jalankan:

gcloud composer environments describe \
    COMPOSER_1_ENV \
    --location COMPOSER_1_LOCATION \
    --format="value(config.softwareConfig.airflowConfigOverrides)"

Untuk mendapatkan daftar paket PyPI kustom, jalankan:

gcloud composer environments describe \
    COMPOSER_1_ENV \
    --location COMPOSER_1_LOCATION \
    --format="value(config.softwareConfig.pypiPackages)"

Ganti:

  • COMPOSER_1_ENV dengan nama lingkungan Cloud Composer 1 Anda.
  • COMPOSER_1_LOCATION dengan region tempat lingkungan Cloud Composer 1 berada.

Terraform

Lewati langkah ini. Konfigurasi lingkungan Cloud Composer 1 Anda sudah mencantumkan penggantian konfigurasi, paket PyPI kustom, dan variabel lingkungan untuk lingkungan Anda.

Langkah 2: Buat lingkungan Cloud Composer 2

Pada langkah ini, buat lingkungan Cloud Composer 2. Anda dapat memulai dengan preset lingkungan yang sesuai dengan perkiraan permintaan resource Anda, lalu menskalakan dan mengoptimalkan lingkungan lebih lanjut.

Konsol

Buat lingkungan Cloud Composer 2 dan tentukan penggantian konfigurasi dan variabel lingkungan.

Sebagai alternatif, Anda dapat mengganti konfigurasi Airflow dan variabel lingkungan setelah Anda membuat lingkungan.

gcloud

Buat lingkungan Cloud Composer 2 dan tentukan penggantian konfigurasi dan variabel lingkungan.

Sebagai alternatif, Anda dapat mengganti konfigurasi Airflow dan variabel lingkungan setelah Anda membuat lingkungan.

Terraform

Buat lingkungan Cloud Composer 2 berdasarkan konfigurasi lingkungan Cloud Composer 1:

  1. Salin konfigurasi lingkungan Cloud Composer 1 Anda.
  2. Ubah nama lingkungan Anda.
  3. Menggunakan penyedia google-beta:

    resource "google_composer_environment" "example_environment_composer_2" {
      provider = google-beta
      # ...
    }
    
  4. Tentukan image Cloud Composer 2 di blok config.software_config:

    software_config {
      image_version = "composer-2.14.4-airflow-2.10.5"
      # ...
    }
    
  5. Jika belum, tentukan penggantian konfigurasi dan variabel lingkungan.

  6. Tentukan paket PyPI kustom di blok config.software_config.pypi_packages:

    software_config {
    
      # ...
    
      pypi_packages = {
        numpy = ""
        scipy = ">=1.1.0"
      }
    
    }
    

Langkah 3: Instal paket PyPI ke lingkungan Cloud Composer 2

Setelah lingkungan Cloud Composer 2 dibuat, instal paket PyPI kustom ke lingkungan tersebut.

Konsol

  1. Buka halaman Environments di konsol Google Cloud :

    Buka Lingkungan

  2. Pilih lingkungan Cloud Composer 2 Anda.

  3. Buka tab Paket PyPI, lalu klik Edit.

  4. Salin persyaratan paket PyPI dari lingkungan Cloud Composer 1 Anda. Klik Simpan dan tunggu hingga lingkungan diperbarui.

gcloud

  1. Buat file requirements.txt dengan daftar paket PyPI kustom:

      numpy
      scipy>=1.1.0
    
  2. Perbarui lingkungan Anda dan teruskan file requirements.txt di :ke perintah --update-pypi-packages-from-file:

    gcloud composer environments update COMPOSER_2_ENV \
      --location COMPOSER_2_LOCATION  \
      --update-pypi-packages-from-file requirements.txt
    

    Ganti:

    • COMPOSER_2_ENV dengan nama lingkungan Cloud Composer 2 Anda.
    • COMPOSER_2_LOCATION dengan region tempat lingkungan Cloud Composer 2 berada.

Terraform

Lewati langkah ini. Anda telah menginstal paket PyPI kustom saat membuat lingkungan.

Langkah 4: Transfer variabel dan kumpulan

Airflow mendukung ekspor variabel dan pool ke file JSON. Kemudian, Anda dapat mengimpor file ini ke lingkungan Cloud Composer 2 Anda.

Perintah Airflow CLI yang digunakan dalam langkah ini beroperasi pada file lokal di pekerja Airflow. Untuk mengupload atau mendownload file, gunakan folder /data di bucket Cloud Storage lingkungan Anda. Folder ini disinkronkan ke direktori /home/airflow/gcs/data/ di pekerja Airflow. Dalam perintah CLI Airflow, tentukan /home/airflow/gcs/data/ dalam parameter FILEPATH.

gcloud

  1. Ekspor variabel dari lingkungan Cloud Composer 1 Anda:

    gcloud composer environments run \
        COMPOSER_1_ENV \
        --location COMPOSER_1_LOCATION \
         variables export -- /home/airflow/gcs/data/variables.json
    

    Ganti:

    • COMPOSER_1_ENV dengan nama lingkungan Cloud Composer 1 Anda.
    • COMPOSER_1_LOCATION dengan region tempat lingkungan Cloud Composer 1 berada.
  2. Mengekspor kumpulan dari lingkungan Cloud Composer 1 Anda:

    gcloud composer environments run \
        COMPOSER_1_ENV \
        --location COMPOSER_1_LOCATION \
         pools export -- /home/airflow/gcs/data/pools.json
    

    Ganti:

    • COMPOSER_1_ENV dengan nama lingkungan Cloud Composer 1 Anda.
    • COMPOSER_1_LOCATION dengan region tempat lingkungan Cloud Composer 1 berada.
  3. Dapatkan URI bucket lingkungan Cloud Composer 2 Anda.

    1. Jalankan perintah berikut:

      gcloud composer environments describe COMPOSER_2_ENV \
          --location COMPOSER_2_LOCATION \
           --format="value(config.dagGcsPrefix)"
      

      Ganti:

      • COMPOSER_2_ENV dengan nama lingkungan Cloud Composer 2 Anda.
      • COMPOSER_2_LOCATION dengan region tempat lingkungan berada.
    2. Di output, hapus folder /dags. Hasilnya adalah URI bucket lingkungan Cloud Composer 2 Anda.

      Misalnya, ubah gs://us-central1-example-916807e1-bucket/dags menjadi gs://us-central1-example-916807e1-bucket.

  4. Transfer file JSON dengan variabel dan kumpulan ke lingkungan Cloud Composer 2 Anda:

    gcloud composer environments storage data export \
        --destination=COMPOSER_2_BUCKET/data \
        --environment=COMPOSER_1_ENV \
        --location=COMPOSER_1_LOCATION \
        --source=variables.json
    
    gcloud composer environments storage data export \
        --destination=COMPOSER_2_BUCKET/data \
        --environment=COMPOSER_1_ENV \
        --location=COMPOSER_1_LOCATION \
        --source=pools.json
    

    Ganti:

    • COMPOSER_2_BUCKET dengan URI bucket lingkungan Cloud Composer 2 Anda, yang diperoleh pada langkah sebelumnya.
    • COMPOSER_1_ENV dengan nama lingkungan Cloud Composer 1 Anda.
    • COMPOSER_1_LOCATION dengan region tempat lingkungan Cloud Composer 1 berada.
  5. Mengimpor variabel dan kumpulan ke Cloud Composer 2:

    gcloud composer environments run \
        COMPOSER_2_ENV \
        --location COMPOSER_2_LOCATION \
        variables import \
        -- /home/airflow/gcs/data/variables.json
    
    gcloud composer environments run \
        COMPOSER_2_ENV \
        --location COMPOSER_2_LOCATION \
        pools import \
        -- /home/airflow/gcs/data/pools.json
    
  6. Pastikan variabel dan kumpulan diimpor:

    gcloud composer environments run \
        COMPOSER_2_ENV \
        --location COMPOSER_2_LOCATION \
        variables list
    
    gcloud composer environments run \
        COMPOSER_2_ENV \
        --location COMPOSER_2_LOCATION \
        pools list
    
  7. Hapus file JSON dari bucket:

    gcloud composer environments storage data delete \
        variables.json \
        --environment=COMPOSER_2_ENV \
        --location=COMPOSER_2_LOCATION
    
    gcloud composer environments storage data delete \
        pools.json \
        --environment=COMPOSER_2_ENV \
        --location=COMPOSER_2_LOCATION
    
    gcloud composer environments storage data delete \
        variables.json \
        --environment=COMPOSER_1_ENV \
        --location=COMPOSER_1_LOCATION
    
    gcloud composer environments storage data delete \
        pools.json \
        --environment=COMPOSER_1_ENV \
        --location=COMPOSER_1_LOCATION
    

Langkah 5: Transfer data lain dari bucket lingkungan Cloud Composer 1

Transfer plugin dan data lainnya dari bucket lingkungan Cloud Composer 1 Anda.

gcloud

  1. Transfer plugin ke lingkungan Cloud Composer 2 Anda. Untuk melakukannya, ekspor plugin dari bucket lingkungan Cloud Composer 1 ke folder /plugins di bucket lingkungan Cloud Composer 2:

    gcloud composer environments storage plugins export \
        --destination=COMPOSER_2_BUCKET/plugins \
        --environment=COMPOSER_1_ENV \
        --location=COMPOSER_1_LOCATION
    
  2. Periksa apakah folder /plugins berhasil diimpor:

    gcloud composer environments storage plugins list \
        --environment=COMPOSER_2_ENV \
        --location=COMPOSER_2_LOCATION
    
  3. Ekspor folder /data dari lingkungan Cloud Composer 1 ke lingkungan Airflow 2:

    gcloud composer environments storage data export \
        --destination=COMPOSER_2_BUCKET/data \
        --environment=COMPOSER_1_ENV \
        --location=COMPOSER_1_LOCATION
    
  4. Periksa apakah folder /data berhasil diimpor:

    gcloud composer environments storage data list \
        --environment=COMPOSER_2_ENV \
        --location=COMPOSER_2_LOCATION
    

Langkah 6: Transfer koneksi

Langkah ini menjelaskan cara mentransfer koneksi dengan membuatnya secara manual.

gcloud

  1. Untuk mendapatkan daftar koneksi di lingkungan Cloud Composer 1 Anda, jalankan:

    gcloud composer environments run \
        COMPOSER_1_ENV \
        --location COMPOSER_1_LOCATION \
        connections list
    
  2. Untuk membuat koneksi baru di lingkungan Cloud Composer 2, jalankan perintah Airflow CLI connections melalui gcloud. Contoh:

    gcloud composer environments run \
        COMPOSER_2_ENV \
        --location COMPOSER_2_LOCATION \
        connections add \
        -- --conn-host postgres.example.com \
        --conn-port 5432 \
        --conn-type postgres \
        --conn-login example_user \
        --conn-password example_password \
        --conn-description "Example connection" \
        example_connection
    

Langkah 7: Transfer akun pengguna

Langkah ini menjelaskan cara mentransfer pengguna dengan membuat akun mereka secara manual.

UI Airflow

  1. Untuk melihat daftar pengguna di lingkungan Cloud Composer 1 Anda:

    1. Buka antarmuka web Airflow untuk lingkungan Cloud Composer 1 Anda.

    2. Buka Keamanan > Buat Daftar Pengguna.

  2. Untuk membuat pengguna di lingkungan Cloud Composer 2 Anda:

    1. Buka antarmuka web Airflow untuk lingkungan Cloud Composer 2 Anda.

    2. Buka Keamanan > Buat Daftar Pengguna.

    3. Klik Add a new record.

gcloud

  1. Untuk melihat daftar pengguna di lingkungan Cloud Composer 1, jalankan perintah Airflow CLI users list melalui gcloud:

    gcloud composer environments run \
        COMPOSER_1_ENV \
        --location COMPOSER_1_LOCATION \
        users list
    

    Ganti:

    • COMPOSER_1_ENV dengan nama lingkungan Cloud Composer 1 Anda.
    • COMPOSER_1_LOCATION dengan region tempat lingkungan Cloud Composer 1 berada.
  2. Untuk membuat akun pengguna baru di lingkungan Cloud Composer 2, jalankan perintah Airflow CLI users create melalui gcloud. Contoh:

    gcloud composer environments run \
        COMPOSER_2_ENV \
        --location COMPOSER_2_LOCATION \
        users create \
        -- --username example_username \
        --firstname Example-Name \
        --lastname Example-Surname \
        --email example-user@example.com \
        --use-random-password \
        --role Op
    

    Ganti:

    • COMPOSER_2_ENV dengan nama lingkungan Cloud Composer 2 Anda.
    • COMPOSER_2_LOCATION dengan region tempat lingkungan Cloud Composer 2 berada.
    • Semua parameter konfigurasi pengguna dengan nilainya dari lingkungan Cloud Composer 1 Anda, termasuk peran pengguna.

Cara alternatif untuk mentransfer akun pengguna

Sebagai alternatif, Anda dapat menggunakan perintah CLI Airflow users export dan users import.

  1. Mengekspor akun pengguna ke file di folder /data bucket lingkungan Anda:

    gcloud composer environments run \
        COMPOSER_1_ENV \
        --location COMPOSER_1_LOCATION \
        users export -- /home/airflow/gcs/data/users.json
    
  2. Ekspor file ini ke bucket lingkungan Cloud Composer 2 Anda:

    gcloud composer environments storage data export \
        --destination=COMPOSER_2_BUCKET/data \
        --environment=COMPOSER_1_ENV \
        --location=COMPOSER_1_LOCATION \
        --source=users.json
    
  3. Impor akun pengguna dari file ini ke lingkungan Cloud Composer 2 Anda:

    gcloud composer environments run \
        COMPOSER_2_ENV \
        --location COMPOSER_2_LOCATION \
        users import \
        -- /home/airflow/gcs/data/users.json
    
  4. Hapus file JSON di kedua lingkungan:

    gcloud composer environments storage data delete \
        --environment=COMPOSER_1_ENV \
        --location=COMPOSER_1_LOCATION  \
        users.json
    
    gcloud composer environments storage data delete \
        --environment=COMPOSER_2_ENV \
        --location=COMPOSER_2_LOCATION  \
        users.json
    

Ganti:

  • COMPOSER_1_ENV dengan nama lingkungan Cloud Composer 1 Anda.
  • COMPOSER_2_ENV dengan nama lingkungan Cloud Composer 2 Anda.
  • COMPOSER_1_LOCATION dengan region tempat lingkungan Cloud Composer 1 berada.
  • COMPOSER_2_LOCATION dengan region tempat lingkungan Cloud Composer 2 berada.
  • COMPOSER_2_BUCKET dengan URI bucket lingkungan Cloud Composer 2 Anda, yang diperoleh pada langkah sebelumnya.

Langkah 8: Transfer DAG ke lingkungan Cloud Composer 2

Potensi masalah berikut dapat terjadi saat Anda mentransfer DAG antarlingkungan:

  • Jika DAG diaktifkan (tidak dijeda) di kedua lingkungan, setiap lingkungan menjalankan salinan DAG-nya sendiri, sesuai jadwal. Hal ini dapat menyebabkan duplikasi eksekusi DAG untuk data dan waktu eksekusi yang sama.

  • Karena penyusulan DAG, Airflow menjadwalkan operasi DAG tambahan, dimulai dari tanggal mulai yang ditentukan dalam DAG Anda. Hal ini terjadi karena instance Airflow baru tidak memperhitungkan histori eksekusi DAG dari lingkungan Cloud Composer 1. Hal ini dapat menyebabkan sejumlah besar eksekusi DAG dijadwalkan mulai dari tanggal mulai yang ditentukan.

Mencegah operasi DAG duplikat

Di lingkungan Cloud Composer 2, di lingkungan Airflow 2, tambahkan penggantian opsi konfigurasi Airflow untuk opsi dags_are_paused_at_creation. Setelah Anda melakukan perubahan ini, semua DAG baru akan dijeda secara default.

Bagian Kunci Nilai
core dags_are_paused_at_creation True

Mencegah operasi DAG tambahan atau yang tidak ada

Untuk menghindari kesenjangan dan tumpang-tindih dalam tanggal eksekusi, nonaktifkan pengejaran di Cloud Composer 2. Dengan cara ini, setelah Anda mengupload DAG ke lingkungan Cloud Composer 2, Airflow tidak menjadwalkan eksekusi DAG yang sudah dijalankan di lingkungan Cloud Composer 1. Tambahkan penggantian opsi konfigurasi Airflow untuk opsi catchup_by_default:

Bagian Kunci Nilai
scheduler catchup_by_default False

Mentransfer DAG ke lingkungan Cloud Composer 2

Untuk mentransfer DAG ke lingkungan Cloud Composer 2:

  1. Upload DAG dari lingkungan Cloud Composer 1 ke lingkungan Cloud Composer 2. Lewati DAG airflow_monitoring.py.

  2. DAG dijeda di lingkungan Cloud Composer 2 karena penggantian konfigurasi, sehingga tidak ada eksekusi DAG yang dijadwalkan.

  3. Di antarmuka web Airflow, buka DAG dan periksa error sintaksis DAG yang dilaporkan.

  4. Pada saat Anda berencana mentransfer DAG:

    1. Jeda DAG di lingkungan Cloud Composer 1 Anda.

    2. Batalkan jeda DAG di lingkungan Cloud Composer 2 Anda.

    3. Pastikan bahwa DAG baru dijalankan sesuai jadwal pada waktu yang tepat.

    4. Tunggu hingga DAG dijalankan di lingkungan Cloud Composer 2 dan periksa apakah berhasil. Jika operasi DAG berhasil, jangan batalkan jedanya di lingkungan Cloud Composer 1; jika Anda melakukannya, operasi DAG untuk waktu dan tanggal yang sama akan terjadi di lingkungan Cloud Composer 1.

  5. Jika DAG tertentu gagal dijalankan, coba pecahkan masalah DAG hingga berhasil dijalankan di Cloud Composer 2.

    Jika diperlukan, Anda dapat kembali ke versi DAG Cloud Composer 1 dan menjalankan eksekusi DAG yang gagal di Cloud Composer 2 dari lingkungan Cloud Composer 1:

    1. Jeda DAG di lingkungan Cloud Composer 2 Anda.

    2. Batalkan jeda DAG di lingkungan Cloud Composer 1 Anda. Tindakan ini menjadwalkan operasi DAG catch-up untuk waktu saat DAG dijeda di lingkungan Cloud Composer 1.

Langkah 9: Pantau lingkungan Cloud Composer 2 Anda

Setelah Anda mentransfer semua DAG dan konfigurasi ke lingkungan Cloud Composer 2, pantau potensi masalah, kegagalan operasi DAG, dan keseluruhan kesehatan lingkungan. Jika lingkungan Cloud Composer 2 berjalan tanpa masalah selama jangka waktu yang cukup, pertimbangkan untuk menghapus lingkungan Cloud Composer 1.

Langkah berikutnya