Bekerja dengan Instans EC2 Spot Amazon - FSxuntuk Lustre

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

Bekerja dengan Instans EC2 Spot Amazon

FSxuntuk Lustre dapat digunakan dengan Instans EC2 Spot untuk secara signifikan menurunkan biaya Amazon Anda. EC2 Instance Spot adalah contoh yang tidak terpakai EC2 yang tersedia dengan harga kurang dari harga On-Demand. Amazon EC2 dapat mengganggu Instans Spot Anda ketika harga Spot melebihi harga maksimum Anda, saat permintaan untuk Instans Spot naik, atau ketika pasokan Instans Spot menurun.

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

Untuk memastikan bahwa sistem FSx file Amazon tidak terpengaruh oleh Interupsi Instans EC2 Spot, sebaiknya lepaskan sistem FSx file Amazon sebelum menghentikan atau hibernasi Instans Spot. EC2 Untuk informasi selengkapnya, lihat Melepaskan sistem file.

Menangani interupsi Instans EC2 Spot Amazon

FSxuntuk 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. FSxuntuk server Lustre mendelegasikan izin akses sementara ke klien saat mereka secara aktif melakukan I/O dan data sistem file caching. 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 klien Lustre yang tidak merespons setelah beberapa menit. Untuk menghindari keharusan menunggu beberapa menit untuk klien yang tidak merespons untuk membalas permintaan server, penting untuk menghapus klien Lustre dengan bersih, terutama sebelum menghentikan Instans Spot. EC2

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

contoh — Skrip untuk menghapus Instans Spot yang mengakhiri EC2 dengan bersih

Skrip contoh ini dengan bersih melepaskan penghentian Instans EC2 Spot 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 selengkapnya tentang praktik terbaik dalam menangani interupsi Instans Spot, lihat Praktik terbaik untuk menangani interupsi Instans EC2 Spot.

#!/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