Kesalahan kumpulan dan simpul Azure Batch

Perhatian

Artikel ini mereferensikan CentOS, distribusi Linux yang mendekati status End Of Life (EOL). Harap pertimbangkan penggunaan dan perencanaan Anda yang sesuai. Untuk informasi selengkapnya, lihat panduan Akhir Masa Pakai CentOS.

Beberapa operasi pembuatan dan manajemen kumpulan Azure Batch segera terjadi. Mendeteksi kegagalan untuk operasi ini mudah, karena kesalahan biasanya langsung kembali dari API, baris perintah, atau antarmuka pengguna. Namun, beberapa operasi tidak sinkron, berjalan di latar belakang, dan membutuhkan waktu beberapa menit untuk diselesaikan. Artikel ini menjelaskan cara untuk mendeteksi dan menghindari kegagalan yang dapat terjadi di operasi latar belakang untuk kumpulan dan simpul.

Pastikan untuk mengatur aplikasi Anda untuk menerapkan pemeriksaan kesalahan komprehensif, terutama untuk operasi asinkron. Pemeriksaan kesalahan komprehensif dapat membantu Anda segera mengidentifikasi dan mendiagnosis masalah.

Kesalahan kumpulan

Kesalahan kumpulan mungkin terkait dengan mengubah ukuran batas waktu atau kegagalan, kegagalan penskalaan otomatis, atau kegagalan penghapusan kumpulan.

Mengubah ukuran waktu habis atau kegagalan

Saat Anda membuat kumpulan baru atau mengubah ukuran kumpulan yang ada, Anda menentukan jumlah target simpul. Operasi membuat atau mengubah ukuran segera selesai, tetapi alokasi aktual simpul baru atau penghapusan simpul yang ada mungkin memakan waktu beberapa menit. Anda dapat menentukan batas waktu pengubahan ukuran di Kumpulan - Tambahkan atau Kumpulan - Mengubah Ukuran API. Jika Batch tidak dapat mengalokasikan jumlah target simpul selama periode batas waktu pengubahan ukuran, kumpulan masuk ke status stabil, dan melaporkan kesalahan pengubahan ukuran.

Properti resizeError mencantumkan kesalahan yang terjadi untuk evaluasi terbaru.

Beberapa penyebab umum kesalahan pengubahan ukuran meliputi:

  • Mengubah ukuran batas waktu terlalu pendek. Biasanya, batas waktu default 15 menit cukup lama untuk mengalokasikan atau menghapus simpul kumpulan. Jika Anda mengalokasikan sejumlah besar simpul, seperti lebih dari 1.000 simpul dari gambar Marketplace Azure, atau lebih dari 300 simpul dari gambar komputer virtual (VM) kustom, Anda dapat mengatur batas waktu pengurangan ukuran menjadi 30 menit.

  • Kuota inti tidak cukup. Akun Batch terbatas dalam jumlah inti yang dapat dialokasikan di semua kumpulan, dan berhenti mengalokasikan simpul setelah mencapai kuota tersebut. Anda dapat meningkatkan kuota inti sehingga Batch dapat mengalokasikan lebih banyak simpul. Untuk informasi selengkapnya, lihat Kuota dan batasan layanan Batch.

  • IP subnet tidak mencukupi saat kumpulan berada di jaringan virtual. Subnet jaringan virtual harus memiliki alamat IP yang cukup untuk dialokasikan ke setiap simpul kumpulan yang diminta. Jika tidak, maka simpul tersebut tidak dapat dibuat. Untuk informasi selengkapnya, lihat Membuat kumpulan Azure Batch di jaringan virtual.

  • Sumber daya tidak mencukup ketika kumpulan berada di jaringan virtual. Saat membuat kumpulan di jaringan virtual, Anda dapat membuat sumber daya seperti load balancer, IP publik, dan grup keamanan jaringan (NSG) dalam langganan yang sama dengan akun Batch. Pastikan kuota langganan cukup untuk sumber daya ini.

  • Kumpulan besar dengan gambar VM kustom. Kumpulan besar yang menggunakan gambar VM kustom dapat memakan waktu lebih lama untuk dialokasikan, dan mengubah ukuran batas waktu dapat terjadi. Untuk rekomendasi tentang batas dan konfigurasi, lihat Membuat kumpulan dengan Azure Compute Gallery.

Kegagalan penskalaan otomatis

Anda dapat mengatur Azure Batch untuk menskalakan jumlah simpul secara otomatis dalam kumpulan, dan Anda menentukan parameter untuk rumus penskalaan otomatis untuk kumpulan. Layanan Batch kemudian menggunakan rumus untuk mengevaluasi jumlah simpul secara berkala dalam kumpulan dan menetapkan nomor target baru. Untuk informasi selengkapnya, lihat Membuat rumus otomatis untuk menskalakan simpul komputasi di kumpulan Batch.

Masalah berikut dapat terjadi saat Anda menggunakan penskalakan otomatis:

  • Evaluasi penskalaan otomatis gagal.
  • Operasi mengubah ukuran yang dihasilkan gagal dan waktu habis.
  • Masalah dengan rumus penskalaan otomatis mengarah ke nilai target simpul yang salah. Pengubahan ukuran mungkin berfungsi atau waktu habis.

Untuk mendapatkan informasi tentang evaluasi penskalaan otomatis terakhir, gunakan properti autoScaleRun. Properti ini melaporkan waktu evaluasi, nilai dan hasil, dan kesalahan kinerja apa pun.

peristiwa lengkap kumpulan pengubahan ukuran menangkap informasi tentang semua evaluasi.

Kegagalan penghapusan kumpulan

Untuk menghapus kumpulan yang berisi simpul, Batch terlebih dahulu menghapus simpul, yang dapat memakan waktu beberapa menit untuk diselesaikan. Batch kemudian menghapus objek kumpulan itu sendiri.

Batch mengatur poolState ke deleting selama proses penghapusan. Aplikasi panggilan dapat mendeteksi apakah penghapusan kumpulan memakan waktu terlalu lama dengan menggunakan state properti dan stateTransitionTime .

Jika penghapusan kumpulan memakan waktu lebih lama dari yang diharapkan, Batch akan mencoba kembali secara berkala hingga kumpulan berhasil dihapus. Dalam beberapa kasus, penundaan disebabkan oleh pemadaman layanan Azure atau masalah sementara lainnya. Faktor lain yang mencegah penghapusan kumpulan yang berhasil mungkin mengharuskan Anda mengambil tindakan untuk memperbaiki masalah. Faktor-faktor ini dapat mencakup masalah berikut:

  • Kunci sumber daya mungkin ditempatkan pada sumber daya yang dibuat Batch, atau pada sumber daya jaringan yang digunakan Batch.

  • Sumber daya yang Anda buat mungkin bergantung pada sumber daya yang dibuat Batch. Misalnya, jika Anda membuat kumpulan di jaringan virtual, Batch membuat NSG, alamat IP publik, dan load balancer. Jika Anda menggunakan sumber daya ini di luar kumpulan, Anda tidak dapat menghapus kumpulan.

  • Penyedia Microsoft.Batch sumber daya mungkin tidak terdaftar dari langganan yang berisi kumpulan Anda.

  • Untuk akun Batch mode langganan pengguna, Microsoft Azure Batch mungkin tidak lagi memiliki peran Kontributor atau Pemilik ke langganan yang berisi kumpulan Anda. Untuk informasi selengkapnya, lihat Mengizinkan Batch untuk mengakses langganan.

Kesalahan simpul

Bahkan ketika Batch berhasil mengalokasikan simpul dalam kumpulan, berbagai masalah dapat menyebabkan beberapa simpul tidak sehat dan tidak dapat menjalankan tugas. Simpul ini masih dikenakan biaya, jadi penting untuk mendeteksi masalah untuk menghindari membayar simpul yang tidak dapat Anda gunakan. Mengetahui tentang kesalahan node umum dan mengetahui jobState saat ini berguna untuk pemecahan masalah.

Kegagalan tugas memulai

Anda dapat menentukan startTask opsional untuk kumpulan. Seperti halnya tugas apa pun, tugas mulai menggunakan baris perintah dan dapat mengunduh file sumber daya dari penyimpanan. Tugas mulai berjalan untuk setiap simpul saat simpul dimulai. Properti waitForSuccess menentukan apakah Batch menunggu hingga tugas mulai berhasil diselesaikan sebelum menjadwalkan tugas apa pun ke simpul. Jika Anda mengonfigurasi simpul untuk menunggu penyelesaian tugas mulai yang berhasil, tetapi tugas mulai gagal, simpul tidak dapat digunakan tetapi masih dikenakan biaya.

Anda dapat mendeteksi kegagalan tugas mulai dengan menggunakan properti taskExecutionResult dan taskFailureInformation dari properti node startTaskInformation tingkat atas.

Tugas mulai yang gagal juga menyebabkan Batch mengatur computeNodeState ke starttaskfailed, jika waitForSuccess diatur ke true.

Seperti halnya tugas apa pun, bisa ada banyak penyebab kegagalan tugas mulai. Untuk memecahkan masalah, periksa stdout, stderr, dan file log khusus tugas lainnya.

Tugas mulai harus di-entrant ulang, karena tugas mulai dapat berjalan beberapa kali pada simpul yang sama, misalnya ketika simpul digambut ulang atau di-boot ulang. Dalam kasus yang jarang terjadi, ketika tugas mulai berjalan setelah peristiwa menyebabkan reboot node, satu sistem operasi (OS) atau disk sementara disk sementara yang lain tidak. Karena tugas mulai Batch dan semua tugas Batch berjalan dari disk ephemeral, situasi ini biasanya tidak menjadi masalah. Namun, dalam kasus di mana tugas mulai menginstal aplikasi ke disk OS dan menyimpan data lain pada disk sementara, mungkin ada masalah sinkronisasi. Lindungi aplikasi Anda sesuai jika Anda menggunakan kedua disk.

Kegagalan pengunduhan paket aplikasi

Anda dapat menentukan satu atau beberapa paket aplikasi untuk kumpulan. Batch mengunduh file paket yang ditentukan ke setiap simpul dan membatalkan kompresi file setelah simpul dimulai, tetapi sebelum menjadwalkan tugas. Biasanya menggunakan perintah mulai tugas dengan paket aplikasi, misalnya menyalin file ke lokasi lain atau menjalankan penyiapan.

Jika paket aplikasi gagal diunduh dan dibongkar, properti computeNodeError melaporkan kegagalan, dan mengatur status simpul ke unusable.

Kegagalan pengunduhan kontainer

Anda dapat menentukan satu atau beberapa referensi kontainer pada kumpulan. Batch mengunduh kontainer yang ditentukan ke setiap simpul. Jika kontainer gagal diunduh, properti computeNodeError melaporkan kegagalan, dan mengatur status simpul ke unusable.

Pembaruan OS Node

Untuk kumpulan Windows, enableAutomaticUpdates diatur ke true secara default. Meskipun mengizinkan pembaruan otomatis disarankan, pembaruan dapat mengganggu kemajuan tugas, terutama jika tugas berjalan lama. Anda dapat mengatur nilai false jika Anda perlu memastikan bahwa pembaruan OS tidak terjadi secara tidak terduga.

Node dalam keadaan tidak dapat digunakan

Batch mungkin mengatur computeNodeState ke karena unusable berbagai alasan. Anda tidak dapat menjadwalkan tugas ke simpul unusable , tetapi simpul masih dikenakan biaya.

Jika Batch dapat menentukan penyebabnya, properti computeNodeError melaporkannya. Jika node dalam keadaan unusable , tetapi tidak memiliki computeNodeError, itu berarti Batch tidak dapat berkomunikasi dengan VM. Dalam hal ini, Batch selalu mencoba memulihkan VM. Namun, Batch tidak secara otomatis mencoba memulihkan VM yang gagal menginstal paket atau kontainer aplikasi, bahkan jika statusnya adalah unusable.

Alasan lain untuk unusable node mungkin termasuk penyebab berikut:

  • Gambar VM kustom tidak valid. Misalnya, gambar tidak disiapkan dengan benar.
  • VM dipindahkan karena kegagalan infrastruktur atau peningkatan tingkat rendah. Batch memulihkan node.
  • Gambar VM telah disebarkan pada perangkat keras yang tidak mendukungnya. Misalnya, gambar CentOS HPC disebarkan pada VM Standard_D1_v2 .
  • VM berada dalam jaringan virtual Azure,dan lalu lintas telah diblokir ke port kunci.
  • VM berada dalam jaringan virtual, tetapi lalu lintas keluar ke Azure Storage diblokir.
  • VM berada di jaringan virtual dengan konfigurasi DNS kustom, dan server DNS tidak dapat mengatasi penyimpanan Azure.

File log agen node

Proses agen Batch yang berjalan pada setiap simpul kumpulan menyediakan file log yang mungkin membantu jika Anda perlu menghubungi dukungan tentang masalah simpul kumpulan. Anda dapat mengunggah file log untuk simpul melalui portal Azure, Batch Explorer, atau Compute Node - Upload Batch Service Logs API. Setelah mengunggah dan menyimpan file log, Anda dapat menghapus simpul atau kumpulan untuk menghemat biaya menjalankan simpul.

Diska node penuh

Batch menggunakan drive sementara pada VM kumpulan simpul untuk menyimpan file seperti file pekerjaan, file tugas, dan file bersama berikut:

  • File paket aplikasi
  • File sumber daya tugas
  • File khusus aplikasi yang diunduh ke salah satu folder Batch
  • File stdout dan stderr untuk setiap eksekusi aplikasi tugas
  • Berkas keluaran khusus aplikasi

File seperti paket aplikasi atau memulai file sumber daya tugas hanya menulis sekali ketika Batch membuat simpul kumpulan. Meskipun hanya menulis sekali, jika file-file ini terlalu besar, mereka dapat mengisi drive sementara.

File lain, seperti stdout dan stderr, ditulis untuk setiap tugas yang dijalankan simpul. Jika sejumlah besar tugas berjalan pada simpul yang sama, atau file tugas terlalu besar, tugas tersebut dapat mengisi drive sementara.

Simpul juga membutuhkan sedikit ruang pada disk OS untuk membuat pengguna setelah dimulai.

Ukuran drive sementara tergantung pada ukuran VM. Salah satu pertimbangan saat memilih ukuran VM adalah untuk memastikan bahwa drive sementara memiliki cukup ruang untuk beban kerja yang direncanakan.

Saat menambahkan kumpulan di portal Azure, Anda dapat menampilkan daftar lengkap ukuran VM, termasuk kolom Ukuran disk sumber daya. Artikel yang menjelaskan ukuran VM memiliki tabel dengan kolom Penyimpanan Sementara. Untuk detail selengkapnya, lihat Menghitung ukuran mesin virtual yang dioptimalkan. Untuk contoh tabel ukuran, lihat Seri Fsv2.

Anda dapat menentukan waktu retensi untuk file yang ditulis oleh setiap tugas. Waktu retensi menentukan berapa lama untuk menyimpan file tugas sebelum membersihkannya secara otomatis. Anda dapat mengurangi waktu retensi untuk menurunkan persyaratan penyimpanan.

Jika disk sementara atau OS kehabisan ruang, atau hampir kehabisan ruang, simpul berpindah ke unusablecomputeNoteState, dan kesalahan simpul mengatakan bahwa disk penuh.

Jika Anda tidak yakin apa yang memakan ruang pada simpul, coba sambungkan dari jarak jauh ke simpul dan selidiki secara manual. Anda juga dapat menggunakan File - List From Compute Node API untuk memeriksa file, misalnya output tugas, di folder terkelola Batch. API ini hanya mencantumkan file di direktori terkelola Batch. Jika tugas Anda membuat file di tempat lain, API ini tidak menampilkannya.

Setelah memastikan untuk mengambil data apa pun yang Anda butuhkan dari simpul atau mengunggahnya ke penyimpanan yang tahan lama, Anda dapat menghapus data sesuai kebutuhan untuk mengosongkan ruang.

Anda dapat menghapus pekerjaan atau tugas lama yang data tugasnya masih ada di simpul. Lihat dalam recentTasks koleksi di taskInformation pada simpul, atau gunakan File - Daftar Dari API Simpul Komputasi. Menghapus pekerjaan akan menghapus semua tugas dalam pekerjaan. Menghapus tugas dalam pekerjaan memicu penghapusan data di direktori tugas pada simpul, dan mengosongkan ruang. Setelah Anda mengosongkan cukup ruang, reboot simpul. Simpul harus bergerak keluar dari unusable status dan ke dalam idle lagi.

Untuk memulihkan simpul yang tidak dapat digunakan di kumpulan VirtualMachineConfiguration , Anda dapat menghapus simpul dari kumpulan dengan menggunakan Pool - Remove Node API. Kemudian Anda dapat menumbuhkan kumpulan lagi untuk mengganti node buruk dengan simpul segar. Untuk kumpulan CloudServiceConfiguration , Anda dapat mencitrakan ulang simpul dengan menggunakan Compute Node - Reimage API untuk membersihkan seluruh disk. Reimage saat ini tidak didukung untuk kumpulan VirtualMachineConfiguration .

Langkah berikutnya