Managed Airflow (Gen 3) | Managed Airflow (Gen 2) | Managed Airflow (Gen 1 Lama)
Halaman ini mencantumkan masalah umum Managed Airflow. Untuk mengetahui informasi tentang perbaikan masalah, lihat Catatan rilis.
Operasi DAG pertama untuk file DAG yang diupload memiliki beberapa tugas yang gagal
Saat Anda mengupload file DAG, terkadang beberapa tugas pertama dari operasi DAG pertama untuk file tersebut gagal dengan error Unable to read remote log.... Masalah ini terjadi karena file DAG disinkronkan antara bucket lingkungan Anda, pekerja Airflow, dan scheduler Airflow lingkungan Anda. Jika scheduler mendapatkan file DAG dan menjadwalkannya untuk dieksekusi oleh pekerja, dan jika pekerja belum memiliki file DAG, eksekusi tugas akan gagal.
Untuk mengurangi masalah ini, lingkungan dengan Airflow 2 dikonfigurasi untuk melakukan dua percobaan ulang untuk tugas yang gagal secara default. Jika tugas gagal, tugas akan dicoba ulang dua kali dengan interval 5 menit.
Managed Airflow tidak akan terpengaruh oleh Kerentanan Apache Log4j 2 (CVE-2021-44228)
Sebagai respons terhadap Kerentanan Apache Log4j 2 (CVE-2021-44228), Managed Airflow telah melakukan investigasi mendetail dan kami yakin bahwa Managed Airflow tidak rentan terhadap eksploitasi ini.
UI Airflow terkadang mungkin tidak memuat ulang plugin setelah diubah
Jika plugin terdiri dari banyak file yang mengimpor modul lain, UI Airflow mungkin tidak dapat mengenali fakta bahwa plugin harus dimuat ulang. Dalam kasus seperti itu, mulai ulang server web Airflow lingkungan Anda.
Error 504 saat mengakses UI Airflow
Anda dapat mendapatkan error 504 Gateway Timeout saat mengakses UI Airflow. Error ini dapat disebabkan oleh beberapa hal:
Masalah komunikasi sementara. Dalam hal ini, coba akses UI Airflow nanti. Anda juga dapat memulai ulang server web Airflow.
(Hanya Managed Airflow (Gen 3)) Masalah konektivitas. Jika UI Airflow tidak tersedia secara permanen, dan error waktu tunggu atau 504 dihasilkan, pastikan lingkungan Anda dapat mengakses
*.composer.googleusercontent.com.(Hanya Managed Airflow (Gen 2)) Masalah konektivitas. Jika UI Airflow tidak tersedia secara permanen, dan error waktu tunggu atau 504 dihasilkan, pastikan lingkungan Anda dapat mengakses
*.composer.cloud.google.com. Jika Anda menggunakan Akses Google Pribadi dan mengirim traffic melalui IP Virtualprivate.googleapis.com, atau Kontrol Layanan VPC dan mengirim traffic melalui IP Virtualrestricted.googleapis.com, pastikan Cloud DNS Anda juga dikonfigurasi untuk nama domain*.composer.cloud.google.com.Server web Airflow tidak responsif. Jika error 504 berlanjut, tetapi Anda masih dapat mengakses UI Airflow pada waktu tertentu, server web Airflow mungkin tidak responsif karena kelebihan beban. Coba tingkatkan parameter skala dan performa server web.
Error 502 saat mengakses UI Airflow
Error 502 Internal server exception menunjukkan bahwa UI Airflow tidak dapat menayangkan permintaan masuk. Error ini dapat disebabkan oleh beberapa hal:
Masalah komunikasi sementara. Coba akses UI Airflow nanti.
Gagal memulai server web. Untuk memulai, server web memerlukan file konfigurasi yang harus disinkronkan terlebih dahulu. Periksa log server web untuk menemukan entri log yang terlihat mirip dengan:
GCS sync exited with 1: gcloud storage cp gs://<bucket-name>/airflow.cfg /home/airflow/gcs/airflow.cfg.tmpatauGCS sync exited with 1: gcloud storage cp gs://<bucket-name>/env_var.json.cfg /home/airflow/gcs/env_var.json.tmp. Jika Anda melihat error ini, periksa apakah file yang disebutkan dalam pesan error masih ada di bucket lingkungan.Jika file tersebut tidak sengaja dihapus (misalnya, karena kebijakan retensi dikonfigurasi), Anda dapat memulihkannya:
Tetapkan variabel lingkungan baru di lingkungan Anda. Anda dapat menggunakan nama dan nilai variabel apa pun.
Ganti opsi konfigurasi Airflow. Anda dapat menggunakan opsi konfigurasi Airflow yang tidak ada.
Mengarahkan kursor ke instance tugas di tampilan Hierarki akan menampilkan TypeError yang tidak tertangkap
Di Airflow 2, tampilan Hierarki di UI Airflow terkadang mungkin tidak berfungsi dengan benar saat zona waktu non-default digunakan. Sebagai solusinya , konfigurasikan zona waktu secara eksplisit di UI Airflow.
Folder kosong di Scheduler dan Pekerja
Managed Airflow tidak secara aktif menghapus folder kosong dari pekerja dan scheduler Airflow. Entitas tersebut mungkin dibuat sebagai hasil dari proses sinkronisasi bucket lingkungan saat folder ini ada di bucket dan akhirnya dihapus.
Rekomendasi: Sesuaikan DAG Anda agar siap untuk melewati folder kosong tersebut.
Entitas tersebut akhirnya dihapus dari penyimpanan lokal pekerja dan scheduler Airflow saat komponen ini dimulai ulang (misalnya, sebagai hasil dari operasi penskalaan atau pemeliharaan di cluster lingkungan Anda).
Dukungan untuk Kerberos
Managed Airflow tidak mendukung konfigurasi Kerberos Airflow.
Dukungan untuk class komputasi di Managed Airflow (Gen 2) dan Managed Airflow (Gen 3)
Managed Airflow (Gen 3) dan Managed Airflow (Gen 2) hanya mendukung tujuan umum class komputasi. Artinya, menjalankan Pod yang meminta class komputasi lain (seperti Seimbang atau Penskalaan) tidak memungkinkan.
Class tujuan umum memungkinkan menjalankan Pod yang meminta memori hingga 110 GB dan CPU hingga 30 (seperti yang dijelaskan dalam Permintaan Maksimum Class Komputasi.
Jika Anda ingin menggunakan arsitektur berbasis ARM atau memerlukan lebih banyak CPU dan Memori, Anda harus menggunakan class komputasi lain, yang tidak didukung dalam cluster Managed Airflow (Gen 3) dan Managed Airflow (Gen 2).
Rekomendasi: Gunakan GKEStartPodOperator untuk menjalankan Pod Kubernetes di
cluster lain yang mendukung class komputasi yang dipilih. Jika Anda menjalankan Pod kustom yang memerlukan class komputasi lain, Pod tersebut juga harus berjalan di cluster non-Managed Airflow.
Tidak dapat mengurangi penyimpanan Cloud SQL
Managed Airflow menggunakan Cloud SQL untuk menjalankan database Airflow. Seiring waktu, penyimpanan disk untuk instance Cloud SQL mungkin bertambah karena disk ditingkatkan skalanya agar sesuai dengan data yang disimpan oleh operasi Cloud SQL saat database Airflow bertambah.
Ukuran disk Cloud SQL tidak dapat diperkecil skalanya.
Sebagai solusinya, jika Anda ingin menggunakan ukuran disk Cloud SQL terkecil, Anda dapat membuat ulang lingkungan Managed Airflow dengan snapshot.
Metrik penggunaan Disk Database tidak berkurang setelah menghapus data dari Cloud SQL
Database relasional, seperti Postgres atau MySQL, tidak menghapus baris secara fisik saat baris tersebut dihapus atau diperbarui. Sebagai gantinya, database akan menandai baris tersebut sebagai "tuple mati" untuk mempertahankan konsistensi data dan menghindari pemblokiran transaksi serentak.
MySQL dan Postgres menerapkan mekanisme untuk mengklaim kembali ruang setelah data dihapus.
Meskipun database dapat dipaksa untuk mengklaim kembali ruang disk yang tidak digunakan, operasi ini memerlukan banyak resource dan juga mengunci database sehingga Managed Airflow tidak tersedia. Oleh karena itu, sebaiknya gunakan mekanisme build untuk mengklaim kembali ruang yang tidak digunakan.
Akses diblokir: Error Otorisasi
Jika masalah ini memengaruhi pengguna, dialog Akses diblokir: Error Otorisasi akan berisi pesan Error 400: admin_policy_enforced.
Jika opsi Kontrol API > Aplikasi pihak ketiga yang tidak dikonfigurasi > Jangan izinkan pengguna mengakses aplikasi pihak ketiga mana pun diaktifkan di Google Workspace dan aplikasi Apache Airflow di Managed Airflow tidak diizinkan secara eksplisit, pengguna tidak dapat mengakses UI Airflow kecuali jika mereka mengizinkan aplikasi tersebut secara eksplisit.
Untuk mengizinkan akses, lakukan langkah-langkah yang diberikan di Mengizinkan akses ke UI Airflow di Google Workspace.
Loop login saat mengakses UI Airflow
Masalah ini mungkin disebabkan oleh hal berikut:
Jika binding Akses Kontekstual Chrome Enterprise Premium digunakan dengan tingkat akses yang mengandalkan atribut perangkat, dan aplikasi Apache Airflow di Managed Airflow tidak dikecualikan, UI Airflow tidak dapat diakses karena loop login. Untuk mengizinkan akses, lakukan langkah-langkah yang diberikan di Mengizinkan akses ke UI Airflow di binding Akses Kontekstual.
Jika aturan ingress dikonfigurasi dalam perimeter Kontrol Layanan VPC yang melindungi project, dan aturan ingress yang mengizinkan akses ke layanan Managed Airflow menggunakan jenis identitas
ANY_SERVICE_ACCOUNTatauANY_USER_ACCOUNT, pengguna tidak dapat mengakses UI Airflow, sehingga mengalami loop login. Untuk mengetahui informasi selengkapnya tentang cara mengatasi skenario ini, lihat Mengizinkan akses ke UI Airflow dalam aturan ingress Kontrol Layanan VPC.
Folder /data tidak tersedia di server web Airflow
Di Managed Airflow (Gen 2) dan Managed Airflow (Gen 3), server web Airflow dimaksudkan sebagai komponen yang sebagian besar hanya baca dan Managed Airflow tidak menyinkronkan folder data/ ke komponen ini.
Terkadang, Anda mungkin ingin membagikan file umum di antara semua komponen Airflow, termasuk server web Airflow.
Solusi:
Gabungkan file yang akan dibagikan dengan server web ke dalam modul PYPI dan instal sebagai paket PYPI reguler. Setelah modul PYPI diinstal di lingkungan, file akan ditambahkan ke image komponen Airflow dan tersedia untuk komponen tersebut.
Tambahkan file ke folder
plugins/. Folder ini disinkronkan ke server web Airflow.
Diagram ukuran DAG bag dan waktu penguraian DAG yang tidak berkelanjutan dalam pemantauan
Diagram ukuran DAG bag dan waktu penguraian DAG yang tidak berkelanjutan di dasbor pemantauan menunjukkan masalah dengan waktu penguraian DAG yang lama (lebih dari 5 menit).
Solusi: Sebaiknya pertahankan waktu penguraian DAG total di bawah 5 menit. Untuk mengurangi waktu penguraian DAG, ikuti panduan penulisan DAG.
Log tugas muncul dengan penundaan
Gejala:
- Di Managed Airflow (Gen 3), log tugas Airflow tidak langsung muncul dan tertunda selama beberapa menit.
- Anda mungkin menemukan pesan
Logs not found for Cloud Logging filterdi log Airflow
Penyebab:
Jika lingkungan Anda menjalankan banyak tugas secara bersamaan, log tugas dapat tertunda karena ukuran infrastruktur lingkungan tidak cukup untuk memproses semua log dengan cukup cepat.
Solusi:
- Pertimbangkan untuk meningkatkan ukuran infrastruktur lingkungan guna meningkatkan performa.
- Sebarkan operasi DAG dari waktu ke waktu, sehingga tugas tidak dieksekusi secara bersamaan.
Waktu startup yang meningkat untuk KubernetesPodOperator dan KubernetesExecutor
Pod yang dibuat dengan KubernetesPodOperator dan tugas yang dieksekusi dengan KubernetesExecutor mengalami peningkatan waktu startup. Tim Managed Airflow sedang berupaya mencari solusi dan akan mengumumkan kapan masalah ini diselesaikan.
Solusi:
- Luncurkan Pod dengan lebih banyak CPU.
- Jika memungkinkan, optimalkan image (lebih sedikit layer, ukuran lebih kecil).
Lingkungan berada dalam status ERROR setelah akun penagihan project dihapus atau dinonaktifkan, atau Cloud Composer API dinonaktifkan
Lingkungan Managed Airflow yang terpengaruh oleh masalah ini tidak dapat dipulihkan:
- Setelah akun penagihan project dihapus atau dinonaktifkan, meskipun akun lain ditautkan nanti.
- Setelah Cloud Composer API dinonaktifkan di project, meskipun diaktifkan nanti.
Anda dapat melakukan hal berikut untuk mengatasi masalah ini:
Anda masih dapat mengakses data yang disimpan di bucket lingkungan Anda, tetapi lingkungan itu sendiri tidak dapat digunakan lagi. Anda dapat membuat lingkungan Managed Airflow baru, lalu mentransfer DAG dan data Anda.
Jika Anda ingin melakukan salah satu operasi yang membuat lingkungan Anda tidak dapat dipulihkan, pastikan untuk mencadangkan data Anda, misalnya, dengan membuat snapshot lingkungan. Dengan cara ini, Anda dapat membuat lingkungan lain dan mentransfer datanya dengan memuat snapshot ini.
Log untuk tugas Airflow tidak dikumpulkan jika [core]execute_tasks_new_python_interpreter ditetapkan ke True
Managed Airflow tidak mengumpulkan log untuk tugas Airflow jika opsi konfigurasi Airflow
[core]execute_tasks_new_python_interpreter
ditetapkan ke True.
Solusi yang mungkin:
- Hapus penggantian untuk opsi konfigurasi ini, atau tetapkan
nilainya ke
False.
Error saat menghapus Lampiran Jaringan saat lingkungan dihapus
Jika beberapa lingkungan yang menggunakan network attachment yang sama dihapus secara bersamaan, beberapa operasi penghapusan akan gagal dengan error.
Gejala:
Error berikut dihasilkan:
Got error while removing Network Attachment: <error code>
Kode error yang dilaporkan dapat berupa Bad request: <resource> is not ready, atau
Precondition failed: Invalid fingerprint.
Solusi yang mungkin:
Hapus lingkungan yang menggunakan lampiran jaringan yang sama satu per satu.
Nonaktifkan koneksi ke jaringan VPC untuk lingkungan Anda sebelum menghapusnya. Sebaiknya gunakan solusi ini untuk penghapusan lingkungan otomatis.
Performa lingkungan yang menurun di beberapa versi paket google-api-core
Versi paket google-api-core yang telah diinstal sebelumnya dari 2.28.0 hingga 2.30.2 dapat menyebabkan penurunan performa lingkungan, yang dapat mengakibatkan waktu yang lebih lama untuk mengeksekusi tugas dan waktu yang lebih lama untuk memindahkan tugas dari status dalam antrean ke status dieksekusi.
Build Managed Airflow (Gen 3) yang terpengaruh:
- composer-3-airflow-3.1.7-build.0 hingga composer-3-airflow-3.1.7-build.5
- composer-3-airflow-3.1.0-build.5 hingga composer-3-airflow-3.1.0-build.10
- composer-3-airflow-2.11.1-build.0
- composer-3-airflow-2.10.5-build.22 hingga composer-3-airflow-2.10.5-build.33
- composer-3-airflow-2.9.3-build.42 hingga composer-3-airflow-2.9.3-build.53
Build Managed Airflow (Gen 2) yang terpengaruh:
- composer-2.16.10-airflow-2.11.1
- composer-2.16.0-airflow-2.10.5 hingga composer-2.16.10-airflow-2.10.5
- composer-2.16.0-airflow-2.9.3 hingga composer-2.16.10-airflow-2.9.3
Sebaiknya upgrade lingkungan Anda ke versi berikut, yang berisi versi paket tempat masalah diperbaiki atau tidak ada:
- composer-3-airflow-3.1.7-build.7 dan yang lebih baru
- composer-3-airflow-2.11.1-build.3 dan yang lebih baru
- composer-3-airflow-2.10.5-build.36 dan yang lebih baru
- composer-3-airflow-2.9.3-build.54 (berisi 2.27.0)
- composer-2.17.0-airflow-2.11.1 dan yang lebih baru
- composer-2.17.0-airflow-2.10.5 dan yang lebih baru
- composer-2.16.11-airflow-2.11.1 (berisi 2.27.0)
- composer-2.16.11-airflow-2.10.5 (berisi 2.27.0)
- composer-2.16.11-airflow-2.9.3 (berisi 2.27.0)
Sebagai solusinya, Anda dapat menginstal versi
google-api-corepaket yang lebih baru secara manual ke lingkungan yang terpengaruh dengan menentukan >=2.30.3
sebagai versi yang diperlukan.
TI tidak lagi dalam status berjalan dan tugas harus dihentikan serta error Tugas Tidak Ditemukan di Airflow 3
Airflow 3 memiliki dua masalah terkait scheduler yang kehilangan status tugas selama scheduler dimulai ulang:
Status Konflik 409: Kondisi race di scheduler menyebabkan penjadwalan instance tugas duplikat ( #59378, diselesaikan di #60330).
Masalah ini telah diperbaiki di Airflow 3.2.2.
Error 404 Tidak Ditemukan: Pekerja Airflow kehilangan informasi instance tugas selama memulai ulang loop scheduler reguler, yang terjadi setelah scheduler mencapai
[scheduler]num_runs. Hal ini mengubah ID instance tugas yang ada dan menghasilkan error 404 berikutnya dari pekerja yang tidak mengetahui perubahan tersebut ( #53140, #60330, diselesaikan di #61631).Masalah ini telah diperbaiki di Airflow 3.3.1.
Gejala
Konflik 409: Status pembersihan yatim piatu scheduler yang dimulai ulang menandai tugas aktif sebagai
FAILED, sehingga pekerja menghentikan tugas secara tidak normal:Server indicated the task shouldn't be running anymore [supervisor] detail={'detail': {'reason': 'not_running', 'message': 'TI is no longer in the running state and task should terminate', 'current_state': 'scheduled'}} status_code=409 ti_id=UUID('...')404 Tidak Ditemukan: Scheduler yang dimulai ulang kehilangan status tugas dan gagal melakukan pemeriksaan detak pekerja aktif:
Server indicated the task shouldn't be running anymore [detail={'detail': {'reason': 'not_found', 'message': 'Task Instance not found'}}] [status_code=404] [ti_id=...]
Solusi:
- Kedua masalah ini telah diperbaiki di Airflow versi 3.3.1 dan yang lebih baru. Tingkatkan lingkungan Anda ke versi yang menggunakan Airflow 3.3.1.
Solusi yang mungkin:
Masalah ini tidak dapat sepenuhnya diatasi di versi Airflow yang lebih lama dari 3.3.1. Setiap peristiwa eksternal yang menyebabkan satu scheduler dimulai ulang secara tidak terduga akan memicu 404 dan 409 (di versi Airflow yang lebih lama dari 3.2.2). Contoh peristiwa tersebut adalah upgrade otomatis node di cluster lingkungan Anda, kondisi OOM di Pod, atau konsumsi memori dan CPU yang tinggi oleh scheduler.
Menurunkan skala lingkungan Anda ke satu scheduler dan menetapkan opsi konfigurasi
[scheduler]num_runske-1akan mengurangi penyebab kondisi race di scheduler.Untuk lingkungan yang sangat tangguh (Ketersediaan Tinggi), jumlah scheduler tidak dapat dikurangi menjadi satu. Anda masih dapat menetapkan
[scheduler]num_runske-1.Pastikan konsumsi memori dan CPU oleh scheduler berada dalam batas resource yang tersedia.