View a markdown version of this page

Mengerjakan Instans Spot Amazon EC2 - FSx for 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 kurang dari harga. On-Demand 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 for Lustre adalah sistem file terdistribusi di mana server dan instance klien bekerja sama untuk menyediakan sistem file yang berkinerja dan andal. Instans-instans ini mempertahankan keadaan terdistribusi dan koheren baik di instans klien maupun server. Server FSx for Lustre mendelegasikan izin akses sementara ke klien saat mereka secara aktif melakukan dan menyimpan data sistem file. I/O 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. Sebuah unmount bersih dimulai dengan menggunakan umount perintah tanpa -f atau. -l

Jika Lustre klien dimatikan tanpa melepas sistem file dengan bersih, klien lain yang menggunakan sistem file tersebut cenderung mengalami peningkatan latensi sementara, operasi gantung, atau kesalahan. I/O

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.

catatan

Diperlukan waktu bagi Lustre klien untuk melepas sistem file. Jika Anda memasang banyak sistem file pada Instans Spot Amazon EC2 yang sama, mungkin perlu waktu terlalu lama untuk melepas semuanya dalam jendela pemberitahuan penghentian Spot dua menit. Jika Anda perlu memasang sejumlah besar sistem file pada satu host, sebaiknya gunakan On-Demand Instans untuk menghindari masalah dengan unmount yang tidak bersih karena interupsi Instans Spot Amazon 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