Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3
Halaman ini menjelaskan cara mentransfer DAG, data, dan konfigurasi dari lingkungan Cloud Composer 1, Airflow 2 yang ada ke Cloud Composer 2, Airflow 2.
Panduan migrasi lainnya
Dari | Ke | Metode | Panduan |
---|---|---|---|
Cloud Composer 1, Airflow 2 | Cloud Composer 2, Airflow 2 | Berdampingan, menggunakan snapshot | Panduan migrasi (snapshot) |
Cloud Composer 1, Airflow 1 | Cloud Composer 2, Airflow 2 | Berdampingan, menggunakan snapshot | Panduan migrasi (snapshot) |
Cloud Composer 1, Airflow 2 | Cloud Composer 2, Airflow 2 | Transfer manual berdampingan | Panduan ini (migrasi manual) |
Cloud Composer 1, Airflow 1 | Cloud Composer 2, Airflow 2 | Transfer manual berdampingan | Panduan migrasi manual |
Aliran udara 1 | Airflow 2 | Transfer manual berdampingan | Panduan migrasi manual |
Sebelum memulai
- Cloud Composer mendukung migrasi berdampingan dari Cloud Composer 1 ke Cloud Composer 2. Anda tidak dapat mengupgrade dari Cloud Composer 1 ke Cloud Composer 2 secara langsung.
- Lihat daftar perbedaan antara Cloud Composer 1 dan Cloud Composer 2.
Langkah 1: Dapatkan daftar penggantian konfigurasi, paket PyPI kustom, dan variabel lingkungan
Konsol
Dapatkan daftar penggantian konfigurasi lingkungan Cloud Composer 1, paket PyPI kustom, dan variabel lingkungan:
Buka halaman Environments di konsol Google Cloud:
Pilih lingkungan Cloud Composer 1 Anda.
Lihat variabel lingkungan di tab Variabel lingkungan.
Lihat penggantian konfigurasi di tab Penggantian konfigurasi alur data.
Lihat paket PyPI kustom di tab PyPI packages.
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 cocok dengan permintaan resource yang diharapkan, 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 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 membuat lingkungan.
Terraform
Buat lingkungan Cloud Composer 2 berdasarkan konfigurasi lingkungan Cloud Composer 1:
- Salin konfigurasi lingkungan Cloud Composer 1 Anda.
- Ubah nama lingkungan Anda.
Gunakan penyedia
google-beta
:resource "google_composer_environment" "example_environment_composer_2" { provider = google-beta # ... }
Tentukan image Cloud Composer 2 di blok
config.software_config
:software_config { image_version = "composer-2.9.11-airflow-2.9.3" # ... }
Jika belum, tentukan penggantian konfigurasi dan variabel lingkungan.
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
Buka halaman Environments di konsol Google Cloud:
Pilih lingkungan Cloud Composer 2 Anda.
Buka tab Paket PyPI, lalu klik Edit.
Salin persyaratan paket PyPI dari lingkungan Cloud Composer 1 Anda. Klik Save dan tunggu hingga lingkungan diperbarui.
gcloud
Buat file
requirements.txt
dengan daftar paket PyPI kustom:numpy scipy>=1.1.0
Perbarui lingkungan Anda dan teruskan file
requirements.txt
di :to 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: Mentransfer variabel dan kumpulan
Airflow mendukung ekspor variabel dan kumpulan ke file JSON. Kemudian, Anda dapat mengimpor file ini ke lingkungan Cloud Composer 2.
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
Mengekspor variabel dari lingkungan Cloud Composer 1:
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.
Mengekspor kumpulan dari lingkungan Cloud Composer 1:
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.
Dapatkan URI bucket lingkungan Cloud Composer 2 Anda.
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.
Dalam output, hapus folder
/dags
. Hasilnya adalah URI bucket lingkungan Cloud Composer 2 Anda.Misalnya, ubah
gs://us-central1-example-916807e1-bucket/dags
menjadigs://us-central1-example-916807e1-bucket
.
Transfer file JSON dengan variabel dan kumpulan ke lingkungan Cloud Composer 2:
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, 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.
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
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
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 Anda
Transfer plugin dan data lainnya dari bucket lingkungan Cloud Composer 1 Anda.
gcloud
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
Pastikan folder
/plugins
berhasil diimpor:gcloud composer environments storage plugins list \ --environment=COMPOSER_2_ENV \ --location=COMPOSER_2_LOCATION
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
Pastikan 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
Untuk mendapatkan daftar koneksi di lingkungan Cloud Composer 1, jalankan:
gcloud composer environments run \ COMPOSER_1_ENV \ --location COMPOSER_1_LOCATION \ connections list
Untuk membuat koneksi baru di lingkungan Cloud Composer 2, jalankan perintah
connections
Airflow CLI melaluigcloud
. 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: Mentransfer akun pengguna
Langkah ini menjelaskan cara mentransfer pengguna dengan membuatnya secara manual.
UI Airflow
Untuk melihat daftar pengguna di lingkungan Cloud Composer 1:
Buka antarmuka web Airflow untuk lingkungan Cloud Composer 1 Anda.
Buka Security > List Users.
Untuk membuat pengguna di lingkungan Cloud Composer 2:
Buka antarmuka web Airflow untuk lingkungan Cloud Composer 2 Anda.
Buka Security > List Users.
Klik Add a new record.
gcloud
-
Untuk melihat daftar pengguna di lingkungan Cloud Composer 1, jalankan perintah
users list
Airflow CLI melaluigcloud
: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.
Untuk membuat akun pengguna baru di lingkungan Cloud Composer 2, jalankan perintah
users create
Airflow CLI melaluigcloud
. 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, termasuk peran pengguna.
Cara alternatif untuk mentransfer akun pengguna
Sebagai alternatif, Anda dapat menggunakan perintah CLI Airflow
users export
dan users import
.
Ekspor akun pengguna ke file di folder bucket
/data
lingkungan Anda:gcloud composer environments run \ COMPOSER_1_ENV \ --location COMPOSER_1_LOCATION \ users export -- /home/airflow/gcs/data/users.json
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
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
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 di antara lingkungan:
Jika DAG diaktifkan (tidak dijeda) di kedua lingkungan, setiap lingkungan akan menjalankan salinan DAG-nya sendiri, seperti yang dijadwalkan. Hal ini dapat menyebabkan DAG duplikat berjalan untuk data dan waktu eksekusi yang sama.
Karena penyesuaian DAG, Airflow menjadwalkan operasi DAG tambahan, mulai dari tanggal mulai yang ditentukan dalam DAG Anda. Hal ini terjadi karena instance Airflow baru tidak memperhitungkan histori DAG yang berjalan dari lingkungan Cloud Composer 1. Hal ini dapat menyebabkan banyak DAG berjalan sesuai jadwal 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
catch up di Cloud Composer 2 Anda. Dengan cara ini, setelah Anda mengupload DAG ke
lingkungan Cloud Composer 2, Airflow tidak menjadwalkan operasi DAG yang
sudah berjalan 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:
Upload DAG dari lingkungan Cloud Composer 1 ke lingkungan Cloud Composer 2. Lewati DAG
airflow_monitoring.py
.DAG dijeda di lingkungan Cloud Composer 2 karena penggantian konfigurasi, sehingga tidak ada DAG yang dijalankan sesuai jadwal.
Di antarmuka web Airflow, buka DAG dan periksa error sintaksis DAG yang dilaporkan.
Pada saat Anda berencana mentransfer DAG:
Jeda DAG di lingkungan Cloud Composer 1 Anda.
Batalkan jeda DAG di lingkungan Cloud Composer 2 Anda.
Pastikan DAG baru yang berjalan dijadwalkan pada waktu yang tepat.
Tunggu hingga DAG dijalankan di lingkungan Cloud Composer 2 dan periksa apakah DAG berhasil dijalankan. Jika operasi DAG berhasil, jangan hentikan jeda di lingkungan Cloud Composer 1; jika Anda melakukannya, operasi DAG akan berjalan pada waktu dan tanggal yang sama di lingkungan Cloud Composer 1.
Jika DAG tertentu gagal dijalankan, coba pecahkan masalah DAG hingga berhasil dijalankan di Cloud Composer 2.
Jika diperlukan, Anda selalu dapat kembali ke DAG versi Cloud Composer 1 dan menjalankan DAG yang gagal di Cloud Composer 2 dari lingkungan Cloud Composer 1:
Jeda DAG di lingkungan Cloud Composer 2 Anda.
Batalkan jeda DAG di lingkungan Cloud Composer 1 Anda. Tindakan ini menjadwalkan operasi DAG untuk mengejar 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, monitor untuk mengetahui potensi masalah, operasi DAG yang gagal, dan kondisi lingkungan secara keseluruhan. Jika lingkungan Cloud Composer 2 berjalan tanpa masalah selama periode waktu yang memadai, pertimbangkan untuk menghapus lingkungan Cloud Composer 1.
Langkah selanjutnya
- Memecahkan masalah DAG
- Memecahkan masalah pembuatan lingkungan
- Memecahkan masalah update lingkungan
- Menggunakan paket backport