Memecahkan masalah penskalaan - AWS ParallelCluster

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Memecahkan masalah penskalaan

Bagian ini relevan dengan cluster yang diinstal menggunakan AWS ParallelCluster versi 3.0.0 dan yang lebih baru dengan penjadwal pekerjaan Slurm. Untuk informasi selengkapnya tentang mengonfigurasi beberapa antrian, lihat. Konfigurasi beberapa antrian

Jika salah satu cluster yang sedang berjalan mengalami masalah, tempatkan klaster dalam STOPPED status dengan menjalankan perintah berikut sebelum Anda mulai memecahkan masalah. Ini mencegah timbulnya biaya tak terduga.

$ pcluster update-compute-fleet --cluster-name mycluster \ --status STOP_REQUESTED

Anda dapat membuat daftar aliran log yang tersedia dari node cluster dengan menggunakan pcluster list-cluster-log-streams perintah dan pemfilteran dengan menggunakan private-dns-name salah satu node yang gagal atau node kepala:

$ pcluster list-cluster-log-streams --cluster-name mycluster --region eu-west-1 \ --filters 'Name=private-dns-name,Values=ip-10-0-0-101'

Kemudian, Anda dapat mengambil konten aliran log untuk menganalisisnya dengan menggunakan pcluster get-cluster-log-events perintah dan meneruskan --log-stream-name yang sesuai dengan salah satu log kunci yang disebutkan di bagian berikut:

$ pcluster get-cluster-log-events --cluster-name mycluster \ --region eu-west-1 --log-stream-name ip-10-0-0-13.i-04e91cc1f4ea796fe.cfn-init

AWS ParallelCluster membuat aliran CloudWatch log cluster di grup log. Anda dapat melihat log ini di CloudWatch konsol Dasbor Kustom atau grup Log. Untuk informasi selengkapnya, lihat Integrasi dengan Amazon CloudWatch Logs dan CloudWatchDasbor Amazon.

Log kunci untuk debugging

Tabel berikut memberikan ikhtisar log kunci untuk node kepala:

  • /var/log/cfn-init.log- Ini adalah log AWS CloudFormation init. Ini berisi semua perintah yang dijalankan ketika sebuah instance disiapkan. Gunakan untuk memecahkan masalah inisialisasi.

  • /var/log/chef-client.log- Ini adalah log klien Chef. Ini berisi semua perintah yang dijalankan melalui chef/CINC. Gunakan untuk memecahkan masalah inisialisasi.

  • /var/log/parallelcluster/slurm_resume.log- Ini adalah ResumeProgram log. Ini meluncurkan instance untuk node dinamis. Gunakan untuk memecahkan masalah peluncuran node dinamis.

  • /var/log/parallelcluster/slurm_suspend.log- Ini SuspendProgram log. Ini disebut ketika instance dihentikan untuk node dinamis. Gunakan untuk memecahkan masalah penghentian node dinamis. Saat Anda memeriksa log ini, Anda juga harus memeriksa clustermgtd log.

  • /var/log/parallelcluster/clustermgtd- Ini clustermgtd log. Ini berjalan sebagai daemon terpusat yang mengelola sebagian besar tindakan operasi cluster. Gunakan untuk memecahkan masalah peluncuran, penghentian, atau operasi klaster apa pun.

  • /var/log/slurmctld.log- Ini adalah log daemon kontrol Slurm. AWS ParallelCluster tidak membuat keputusan penskalaan. Sebaliknya, ia hanya mencoba meluncurkan sumber daya untuk memenuhi persyaratan Slurm. Ini berguna untuk masalah penskalaan dan alokasi, masalah terkait pekerjaan, dan masalah peluncuran dan penghentian terkait penjadwal.

  • /var/log/parallelcluster/compute_console_output- Log ini merekam output konsol dari subset sampel node komputasi statis yang tiba-tiba dihentikan. Gunakan log ini jika node komputasi statis berakhir dan log node komputasi tidak tersedia di. CloudWatch compute_console_output logKonten yang Anda terima sama saat Anda menggunakan konsol EC2 atau AWS CLI untuk mengambil output konsol instans.

Ini adalah log kunci untuk node komputasi:

  • /var/log/cloud-init-output.log- Ini adalah log cloud-init. Ini berisi semua perintah yang dijalankan ketika sebuah instance disiapkan. Gunakan untuk memecahkan masalah inisialisasi.

  • /var/log/parallelcluster/computemgtd- Ini computemgtd log. Ini berjalan pada setiap node komputasi untuk memantau node dalam peristiwa yang tidak biasa bahwa clustermgtd daemon pada node kepala sedang offline. Gunakan untuk memecahkan masalah penghentian yang tidak terduga.

  • /var/log/slurmd.log- Ini adalah log daemon komputasi Slurm. Gunakan untuk memecahkan masalah inisialisasi dan kegagalan komputasi.

Melihat InsufficientInstanceCapacity kesalahan slurm_resume.log ketika saya gagal menjalankan pekerjaan, atau clustermgtd.log ketika saya gagal membuat cluster

Jika cluster menggunakan Slurm penjadwal, Anda mengalami masalah kapasitas yang tidak mencukupi. Jika tidak ada cukup instance yang tersedia saat permintaan peluncuran instance dibuat, InsufficientInstanceCapacity kesalahan akan dikembalikan.

Untuk kapasitas instance statis, Anda dapat menemukan kesalahan dalam clustermgtd log di/var/log/parallelcluster/clustermgtd.

Untuk kapasitas instance dinamis, Anda dapat menemukan kesalahan di ResumeProgram log di/var/log/parallelcluster/slurm_resume.log.

Pesannya terlihat mirip dengan contoh berikut:

An error occurred (InsufficientInstanceCapacity) when calling the RunInstances/CreateFleet operation...

Berdasarkan kasus penggunaan Anda, pertimbangkan untuk menggunakan salah satu metode berikut untuk menghindari jenis pesan kesalahan ini:

Memecahkan masalah inisialisasi node

Bagian ini mencakup bagaimana Anda dapat memecahkan masalah inisialisasi node. Ini termasuk masalah di mana node gagal diluncurkan, dinyalakan, atau bergabung dengan cluster.

Node kepala

Log yang berlaku:

  • /var/log/cfn-init.log

  • /var/log/chef-client.log

  • /var/log/parallelcluster/clustermgtd

  • /var/log/parallelcluster/slurm_resume.log

  • /var/log/slurmctld.log

Periksa /var/log/cfn-init.log dan /var/log/chef-client.log log atau aliran log yang sesuai. Log ini berisi semua tindakan yang dijalankan saat node kepala disiapkan. Sebagian besar kesalahan yang terjadi selama pengaturan harus memiliki pesan kesalahan yang terletak di /var/log/chef-client.log log. Jika OnNodeStart atau OnNodeConfigured skrip ditentukan dalam konfigurasi cluster, periksa kembali apakah skrip berjalan dengan sukses melalui pesan log.

Ketika sebuah cluster dibuat, node kepala harus menunggu node komputasi untuk bergabung dengan cluster sebelum dapat bergabung dengan cluster. Karena itu, jika node komputasi gagal bergabung dengan cluster, maka node kepala juga gagal. Anda dapat mengikuti salah satu dari rangkaian prosedur ini, tergantung pada jenis catatan komputasi yang Anda gunakan, untuk memecahkan masalah jenis ini:

Hitung node

  • Log yang berlaku:

    • /var/log/cloud-init-output.log

    • /var/log/slurmd.log

  • Jika node komputasi diluncurkan, periksa terlebih dahulu/var/log/cloud-init-output.log, yang harus berisi log pengaturan yang mirip dengan /var/log/chef-client.log log pada node kepala. Sebagian besar kesalahan yang terjadi selama pengaturan harus memiliki pesan kesalahan yang terletak di /var/log/cloud-init-output.log log. Jika skrip pra-instal atau pasca-instal ditentukan dalam konfigurasi cluster, periksa apakah skrip tersebut berhasil dijalankan.

  • Jika Anda menggunakan AMI kustom dengan modifikasi Slurm konfigurasi, maka mungkin ada kesalahan Slurm terkait yang mencegah node komputasi bergabung dengan cluster. Untuk kesalahan terkait penjadwal, periksa log. /var/log/slurmd.log

Node komputasi dinamis:

  • Cari ResumeProgram log (/var/log/parallelcluster/slurm_resume.log) untuk nama node komputasi Anda untuk melihat apakah pernah ResumeProgram dipanggil dengan node. (Jika ResumeProgram tidak pernah dipanggil, Anda dapat memeriksa slurmctld log (/var/log/slurmctld.log) untuk menentukan apakah Slurm pernah mencoba memanggil ResumeProgram dengan node).

  • Perhatikan bahwa izin yang salah untuk ResumeProgram dapat menyebabkan kegagalan ResumeProgram secara diam-diam. Jika Anda menggunakan AMI kustom dengan modifikasi untuk ResumeProgram penyiapan, periksa apakah AMI dimiliki oleh slurm pengguna dan memiliki izin 744 (rwxr--r--). ResumeProgram

  • Jika ResumeProgram dipanggil, periksa untuk melihat apakah sebuah instance diluncurkan untuk node. Jika tidak ada instance yang diluncurkan, Anda dapat melihat pesan kesalahan yang menjelaskan kegagalan peluncuran.

  • Jika instance diluncurkan, maka mungkin ada masalah selama proses penyiapan. Anda akan melihat alamat IP pribadi dan ID instance yang sesuai dari ResumeProgram log. Selain itu, Anda dapat melihat log pengaturan yang sesuai untuk contoh tertentu. Untuk informasi selengkapnya tentang pemecahan masalah kesalahan penyiapan dengan node komputasi, lihat bagian selanjutnya.

Node komputasi statis:

  • Periksa log clustermgtd (/var/log/parallelcluster/clustermgtd) untuk melihat apakah instance diluncurkan untuk node. Jika tidak diluncurkan, harus ada pesan kesalahan yang jelas yang merinci kegagalan peluncuran.

  • Jika instance diluncurkan, ada beberapa masalah selama proses penyiapan. Anda akan melihat alamat IP pribadi dan ID instance yang sesuai dari ResumeProgram log. Selain itu, Anda dapat melihat log pengaturan yang sesuai untuk instance tertentu.

Node komputasi yang didukung oleh Instans Spot:

  • Jika ini pertama kalinya Anda menggunakan Instans Spot dan pekerjaan tetap dalam PD (status tertunda), periksa kembali /var/log/parallelcluster/slurm_resume.log file tersebut. Anda mungkin akan menemukan kesalahan seperti berikut:

    2022-05-20 13:06:24,796 - [slurm_plugin.common:add_instances_for_nodes] - ERROR - Encountered exception when launching instances for nodes (x1) ['spot-dy-t2micro-2']: An error occurred (AuthFailure.ServiceLinkedRoleCreationNotPermitted) when calling the RunInstances operation: The provided credentials do not have permission to create the service-linked role for EC2 Spot Instances.

    Saat menggunakan Instans Spot, peran AWSServiceRoleForEC2Spot terkait layanan harus ada di akun Anda. Untuk membuat peran ini di akun Anda menggunakan AWS CLI, jalankan perintah berikut:

    $ aws iam create-service-linked-role --aws-service-name spot.amazonaws.com

    Untuk informasi selengkapnya, lihat Berkeja dengan Instans Spot di Panduan AWS ParallelCluster Pengguna dan peran terkait Layanan untuk permintaan Instans Spot di Panduan Pengguna Amazon EC2.

Memecahkan masalah penggantian dan penghentian node yang tidak terduga

Bagian ini terus mengeksplorasi bagaimana Anda dapat memecahkan masalah terkait node, khususnya ketika node diganti atau dihentikan secara tidak terduga.

  • Log yang berlaku:

    • /var/log/parallelcluster/clustermgtd(simpul kepala)

    • /var/log/slurmctld.log(simpul kepala)

    • /var/log/parallelcluster/computemgtd(simpul komputasi)

Node diganti atau dihentikan secara tak terduga

  • Periksa clustermgtd log (/var/log/parallelcluster/clustermgtd) untuk melihat apakah clustermgtd diganti atau dihentikan node. Perhatikan bahwa clustermgtd menangani semua tindakan pemeliharaan node normal.

  • Jika clustermgtd diganti atau dihentikan node, harus ada pesan yang merinci mengapa tindakan ini diambil pada node. Jika alasannya terkait penjadwal (misalnya, karena node masukDOWN), periksa slurmctld log untuk informasi lebih lanjut. Jika alasannya terkait Amazon EC2, harus ada pesan informatif yang merinci masalah terkait Amazon EC2 yang memerlukan penggantian.

  • Jika clustermgtd tidak menghentikan node, periksa terlebih dahulu apakah ini merupakan penghentian yang diharapkan oleh Amazon EC2, lebih khusus lagi penghentian spot. computemgtd, berjalan pada node komputasi, juga dapat mengakhiri node jika clustermgtd ditentukan sebagai tidak sehat. Periksa computemgtd log (/var/log/parallelcluster/computemgtd) untuk melihat apakah node computemgtd dihentikan.

Node gagal

  • Periksa slurmctld log (/var/log/slurmctld.log) untuk melihat mengapa pekerjaan atau node gagal. Perhatikan bahwa pekerjaan secara otomatis diantrian ulang jika node gagal.

  • Jika slurm_resume melaporkan bahwa node diluncurkan dan clustermgtd melaporkan setelah beberapa menit bahwa tidak ada instance yang sesuai di Amazon EC2 untuk node tersebut, node mungkin gagal selama penyiapan. Untuk mengambil log dari compute (/var/log/cloud-init-output.log), lakukan langkah-langkah berikut:

    • Kirim pekerjaan untuk membiarkan Slurm putaran node baru.

    • Setelah node dimulai, aktifkan perlindungan terminasi menggunakan perintah ini.

      $ aws ec2 modify-instance-attribute --instance-id i-1234567890abcdef0 --disable-api-termination
    • Ambil output konsol dari node dengan perintah ini.

      $ aws ec2 get-console-output --instance-id i-1234567890abcdef0 --output text

Mengganti, mengakhiri, atau mematikan instance dan node yang bermasalah

  • Log yang berlaku:

    • /var/log/parallelcluster/clustermgtd(simpul kepala)

    • /var/log/parallelcluster/slurm_suspend.log(simpul kepala)

  • Dalam kebanyakan kasus, clustermgtd menangani semua tindakan penghentian instance yang diharapkan. Periksa di clustermgtd log untuk melihat mengapa gagal mengganti atau mengakhiri node.

  • Untuk node dinamis gagalSlurmSettingsProperti, periksa SuspendProgram log untuk melihat apakah SuspendProgram dipanggil slurmctld dengan node tertentu sebagai argumen. Perhatikan bahwa SuspendProgram tidak benar-benar melakukan tindakan apa pun. Sebaliknya, itu hanya log ketika dipanggil. Semua penghentian dan NodeAddr reset instance dilakukan olehclustermgtd. Slurm menempatkan node kembali ke POWER_SAVING keadaan setelah SuspendTimeout secara otomatis.

  • Jika node komputasi gagal terus menerus karena kegagalan bootstrap, verifikasi apakah node tersebut diluncurkan dengan Slurmmodus cluster dilindungi diaktifkan. Jika mode terlindungi tidak diaktifkan, ubah pengaturan mode terlindungi untuk mengaktifkan mode terlindungi. Memecahkan masalah dan memperbaiki skrip bootstrap.

Status antrian (partisi) Inactive

Jika Anda menjalankan sinfo dan output menunjukkan antrian dengan AVAIL statusinact, klaster Anda mungkin telah Slurmmodus cluster dilindungi diaktifkan dan antrian telah disetel ke INACTIVE status untuk jangka waktu yang telah ditentukan sebelumnya.

Memecahkan masalah node dan pekerjaan lain yang diketahui

Jenis lain dari masalah yang diketahui adalah yang AWS ParallelCluster mungkin gagal mengalokasikan pekerjaan atau membuat keputusan penskalaan. Dengan jenis masalah ini, AWS ParallelCluster hanya meluncurkan, mengakhiri, atau memelihara sumber daya sesuai dengan instruksi Slurm. Untuk masalah ini, periksa slurmctld log untuk memecahkan masalah mereka.