View a markdown version of this page

Mengerjakan Instans Spot Amazon EC2 - FSx untuk Lustre

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

Mengerjakan Instans Spot Amazon EC2

FSx for Lustre dapat digunakan dengan Instans Spot EC2 untuk menurunkan biaya Amazon EC2 Anda secara signifikan. Instans Spot adalah instans EC2 yang tidak digunakan yang tersedia dengan harga lebih rendah dari harga Sesuai Permintaan. Amazon EC2 dapat menginterupsi Instans Spot Anda saat harga Spot melebihi harga maksimum Anda, saat permintaan Instans Spot naik, atau saat pasokan Instans Spot menurun.

Saat menginterupsi Instans Spot, Amazon EC2 memberikan pemberitahuan interupsi Instans Spot, yang memberi instans peringatan dua menit sebelum Amazon EC2 menginterupsi. Untuk informasi selengkapnya, lihat Instans Spot di Panduan Pengguna Amazon EC2.

Untuk memastikan bahwa sistem file Amazon FSx tidak terpengaruh oleh Interupsi Instans Spot EC2, kami sarankan untuk melepaskan sistem file Amazon FSx sebelum mengakhiri atau menidurkan Instans Spot EC2. Untuk informasi selengkapnya, lihat Melepaskan sistem file.

Menangani Interupsi Instans Spot Amazon EC2

FSx untuk Lustre adalah sistem file terdistribusi di mana server dan instance klien bekerja sama untuk menyediakan sistem file yang berkinerja dan andal. Mereka mempertahankan status terdistribusi dan koheren di kedua instance klien dan server. FSx untuk server Lustre mendelegasikan izin akses sementara ke klien saat mereka secara aktif melakukan I/O dan menyimpan data sistem file. Klien diharapkan untuk membalas dalam waktu singkat ketika server meminta mereka untuk mencabut izin akses sementara mereka. Untuk melindungi sistem file dari klien yang berperilaku buruk, server dapat mengusir Lustre klien yang tidak merespons setelah beberapa menit. Untuk menghindari keharusan menunggu beberapa menit untuk klien yang tidak merespons untuk membalas permintaan server, penting untuk menghapus Lustre klien dengan bersih, terutama sebelum menghentikan Instans Spot EC2.

EC2 Spot mengirimkan pemberitahuan penghentian 2 menit sebelum mematikan sebuah instans. Kami menyarankan Anda mengotomatiskan proses melepas Lustre klien secara bersih sebelum menghentikan Instans Spot EC2.

contoh— Skrip untuk melepaskan total Instans Spot EC2 yang mengakhiri

Contoh skrip ini secara total melepaskan Instans Spot EC2 yang mengakhiri dengan melakukan hal berikut:

  • Melihat pemberitahuan Spot pengakhiran.

  • Ketika menerima pemberitahuan pengakhiran:

    • Hentikan aplikasi yang mengakses sistem file.

    • Lepaskan sistem file sebelum instans diakhiri.

Anda dapat menyesuaikan skrip sesuai kebutuhan, terutama untuk mematikan aplikasi Anda dengan benar. Untuk informasi lebih lanjut tentang praktik terbaik untuk menangani interupsi Spot Instans, lihat Praktik terbaik untuk menangani interupsi Instans Spot EC2.

#!/bin/bash # TODO: Specify below the FSx mount point you are using *FSXPATH=/fsx* cd / TOKEN=$(curl -s -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600") if [ "$?" -ne 0 ]; then echo "Error running 'curl' command" >&2 exit 1 fi # Periodically check for termination while sleep 5 do HTTP_CODE=$(curl -H "X-aws-ec2-metadata-token: $TOKEN" -s -w %{http_code} -o /dev/null http://169.254.169.254/latest/meta-data/spot/instance-action) if [[ "$HTTP_CODE" -eq 401 ]] ; then # Refreshing Authentication Token TOKEN=$(curl -s -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 30") continue elif [[ "$HTTP_CODE" -ne 200 ]] ; then # If the return code is not 200, the instance is not going to be interrupted continue fi echo "Instance is getting terminated. Clean and unmount '$FSXPATH' ..." curl -H "X-aws-ec2-metadata-token: $TOKEN" -s http://169.254.169.254/latest/meta-data/spot/instance-action echo # Gracefully stop applications accessing the filesystem # # TODO*: Replace with the proper command to stop your application if possible* # Kill every process still accessing Lustre filesystem echo "Kill every process still accessing Lustre filesystem..." fuser -kMm -TERM "${FSXPATH}"; sleep 2 fuser -kMm -KILL "${FSXPATH}"; sleep 2 # Unmount FSx For Lustre filesystem if ! umount -c "${FSXPATH}"; then echo "Error unmounting '$FSXPATH'. Processes accessing it:" >&2 lsof "${FSXPATH}" echo "Retrying..." continue fi # Start a graceful shutdown of the host shutdown now done