Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Tutorial: Uji interupsi Instans Spot menggunakan AWS FIS
Instans Spot menggunakan EC2 kapasitas cadangan yang tersedia, hingga diskon 90% dibandingkan dengan harga On-Demand. Namun, Amazon EC2 dapat mengganggu Instans Spot Anda saat membutuhkan kapasitas kembali. Saat menggunakan Instans Spot, Anda harus siap menghadapi potensi gangguan. Untuk informasi selengkapnya, lihat Interupsi Instans Spot di EC2Panduan Pengguna Amazon.
Anda dapat menggunakan AWS Layanan Injeksi Kesalahan (AWS FIS) untuk menguji bagaimana aplikasi Anda menangani interupsi Instans Spot. Gunakan tutorial ini untuk membuat template eksperimen yang menggunakan AWS FISaws:ec2:send-spot-instance-interruptions
tindakan untuk mengganggu salah satu Instans Spot Anda.
Atau, untuk memulai eksperimen menggunakan EC2 konsol Amazon, lihat Memulai interupsi Instans Spot di Panduan Pengguna Amazon EC2.
Prasyarat
Sebelum Anda dapat menggunakan AWS FISuntuk mengganggu Instance Spot, selesaikan prasyarat berikut.
1. Buat IAM peran
Buat peran dan lampirkan kebijakan yang memungkinkan AWS FISuntuk melakukan aws:ec2:send-spot-instance-interruptions
tindakan atas nama Anda. Untuk informasi selengkapnya, lihat Peran IAM untuk eksperimen AWS FIS.
2. Verifikasi akses ke AWS FIS
Pastikan Anda memiliki akses ke AWS FIS. Untuk informasi selengkapnya, silakan lihat AWS FIScontoh kebijakan.
3. (Opsional) Buat permintaan Instans Spot
Jika Anda ingin Instance Spot baru digunakan untuk eksperimen ini, gunakan perintah run-instance untuk meminta Instance Spot. Defaultnya adalah menghentikan Instans Spot yang terputus. Jika Anda menyetel perilaku interupsistop
, Anda juga harus menyetel jenisnya. persistent
Untuk tutorial ini, jangan atur perilaku interupsihibernate
, karena proses hibernasi segera dimulai.
aws ec2 run-instances \ --image-id
ami-0ab193018fEXAMPLE
\ --instance-type "t2.micro
" \ --count 1 \ --subnet-idsubnet-1234567890abcdef0
\ --security-group-idssg-111222333444aaab
\ --instance-market-options file://spot-options.json
\ --query Instances[*].InstanceId
Berikut ini adalah contoh file spot-options.json
.
{ "MarketType": "spot", "SpotOptions": { "SpotInstanceType": "persistent", "InstanceInterruptionBehavior": "stop" } }
--query
Opsi dalam perintah contoh membuatnya sehingga perintah hanya mengembalikan ID instance dari Instance Spot. Berikut ini adalah output contoh.
[ "i-0abcdef1234567890" ]
4. Tambahkan tag sehingga AWS FISdapat mengidentifikasi Instance Spot target
Gunakan perintah create-tags untuk menambahkan tag Name=interruptMe ke Instance Spot target Anda.
aws ec2 create-tags \ --resources
i-0abcdef1234567890
\ --tags Key=Name,Value=interruptMe
Langkah 1: Buat template percobaan
Buat template eksperimen menggunakan AWS FISkonsol. Dalam template, Anda menentukan tindakan yang akan berjalan. Tindakan menginterupsi Instance Spot dengan tag yang ditentukan. Jika ada lebih dari satu Instance Spot dengan tag, AWS FISmemilih salah satu dari mereka secara acak.
Untuk membuat template percobaan
Buka AWS FISkonsol di https://console.aws.amazon.com/fis/
. -
Di panel navigasi, pilih Template eksperimen.
-
Pilih Buat template eksperimen.
-
Untuk Deskripsi dan nama, masukkan deskripsi dan nama untuk templat.
-
Untuk Tindakan, lakukan hal berikut:
-
Pilih Tambahkan tindakan.
-
Masukkan nama untuk tindakan tersebut. Misalnya, masukkan
interruptSpotInstance
. -
Untuk tipe Action, pilih aws:ec2:. send-spot-instance-interruptions
-
Untuk Target, pertahankan target yang AWS FISmenciptakan untuk Anda.
-
Untuk parameter Tindakan, Durasi sebelum interupsi, tentukan 2 Menit (PT2M).
-
Pilih Simpan.
-
-
Untuk Target, lakukan langkah berikut:
-
Pilih Edit untuk target yang AWS FISsecara otomatis dibuat untuk Anda di langkah sebelumnya.
-
Ganti nama default dengan nama yang lebih deskriptif. Misalnya, masukkan
oneSpotInstance
. -
Verifikasi bahwa tipe Resource adalah aws:ec2:spot-instance.
-
Untuk metode Target, pilih Tag sumber daya, filter, dan parameter.
-
Untuk tag Sumber Daya, pilih Tambahkan tag baru, dan masukkan kunci tag dan nilai tag. Gunakan tag yang Anda tambahkan ke Instance Spot untuk menginterupsi, seperti yang dijelaskan dalam Prasyarat untuk tutorial ini.
-
Untuk filter Sumber daya pilih Tambahkan filter baru dan masukkan
State.Name
sebagai jalur danrunning
sebagai nilai. -
Untuk mode Seleksi, pilih Hitung. Untuk Jumlah sumber daya, masukkan
1
. -
Pilih Simpan.
-
-
Untuk Akses Layanan, pilih Gunakan IAM peran yang ada, lalu pilih IAM peran yang Anda buat seperti yang dijelaskan dalam prasyarat untuk tutorial ini. Jika peran Anda tidak ditampilkan, verifikasi bahwa ia memiliki hubungan kepercayaan yang diperlukan. Untuk informasi selengkapnya, lihat Peran IAM untuk eksperimen AWS FIS.
-
(Opsional) Untuk Tag, pilih Tambahkan tag baru dan tentukan kunci tag dan nilai tag. Tag yang Anda tambahkan diterapkan ke template eksperimen Anda, bukan eksperimen yang dijalankan menggunakan template.
-
Pilih Buat template eksperimen. Saat diminta konfirmasi, masukkan
create
lalu pilih Buat templat eksperimen.
(Opsional) Untuk melihat template percobaan JSON
Pilih tab Ekspor. Berikut ini adalah contoh yang JSON dibuat oleh prosedur konsol sebelumnya.
{ "description": "Test Spot Instance interruptions", "targets": { "oneSpotInstance": { "resourceType": "aws:ec2:spot-instance", "resourceTags": { "Name": "interruptMe" }, "filters": [ { "path": "State.Name", "values": [ "running" ] } ], "selectionMode": "COUNT(1)" } }, "actions": { "interruptSpotInstance": { "actionId": "aws:ec2:send-spot-instance-interruptions", "parameters": { "durationBeforeInterruption": "PT2M" }, "targets": { "SpotInstances": "oneSpotInstance" } } }, "stopConditions": [ { "source": "none" } ], "roleArn": "arn:aws:iam::
123456789012
:role/AllowFISSpotInterruptionActions
", "tags": { "Name": "my-template" } }
Langkah 2: Mulai percobaan
Setelah selesai membuat templat eksperimen, Anda dapat menggunakannya untuk memulai eksperimen.
Untuk memulai percobaan
-
Anda harus berada di halaman detail untuk template eksperimen yang baru saja Anda buat. Jika tidak, pilih Templat eksperimen lalu pilih ID templat eksperimen untuk membuka halaman detail.
-
Pilih Mulai percobaan.
-
(Opsional) Untuk menambahkan tag ke eksperimen Anda, pilih Tambahkan tag baru dan masukkan kunci tag dan nilai tag.
-
Pilih Mulai percobaan. Saat diminta konfirmasi, masukkan
start
dan pilih Mulai eksperimen.
Langkah 3: Lacak kemajuan eksperimen
Anda dapat melacak kemajuan eksperimen yang sedang berjalan hingga percobaan selesai, dihentikan, atau gagal.
Untuk melacak kemajuan eksperimen
-
Anda harus berada di halaman detail untuk eksperimen yang baru saja Anda mulai. Jika tidak, pilih Eksperimen lalu pilih ID eksperimen untuk membuka halaman detail.
-
Untuk melihat status percobaan, periksa Status di panel Detail. Untuk informasi lebih lanjut, lihat status eksperimen.
-
Ketika keadaan percobaan sedang berjalan, lanjutkan ke langkah berikutnya.
Langkah 4: Verifikasi hasil percobaan
Ketika tindakan untuk percobaan ini selesai, berikut ini terjadi:
-
Instance Spot target menerima rekomendasi penyeimbangan ulang instans.
-
Pemberitahuan interupsi Instans Spot dikeluarkan dua menit sebelum Amazon EC2 menghentikan atau menghentikan instans Anda.
-
Setelah dua menit, Instans Spot dihentikan atau dihentikan.
-
Instance Spot yang dihentikan oleh AWS FIStetap berhenti sampai Anda memulai ulang.
Untuk memverifikasi bahwa instance terputus oleh percobaan
-
Buka EC2 konsol Amazon di https://console.aws.amazon.com/ec2/
. -
Dari panel navigasi, buka Permintaan Spot dan Instans di tab atau jendela peramban yang terpisah.
-
Untuk Permintaan Spot, pilih permintaan Instans Spot. Status awal adalah
fulfilled
. Setelah percobaan selesai, status berubah sebagai berikut:terminate
- Status berubah menjadiinstance-terminated-by-experiment
.stop
- Status berubah menjadimarked-for-stop-by-experiment
dan kemudianinstance-stopped-by-experiment
.
-
Untuk Instans, pilih Instans Spot. Status awal adalah
Running
. Dua menit setelah Anda menerima pemberitahuan interupsi Instans Spot, status berubah sebagai berikut:stop
- Status berubah menjadiStopping
dan kemudianStopped
.terminate
- Status berubah menjadiShutting-down
dan kemudianTerminated
.
Langkah 5: Bersihkan
Jika Anda membuat Instance Spot pengujian untuk eksperimen ini dengan perilaku interupsi stop
dan Anda tidak lagi membutuhkannya, Anda dapat membatalkan permintaan Instans Spot dan menghentikan Instans Spot.
Untuk membatalkan permintaan dan menghentikan instance menggunakan AWS CLI
-
Gunakan cancel-spot-instance-requestsperintah untuk membatalkan permintaan Instans Spot.
aws ec2 cancel-spot-instance-requests --spot-instance-request-ids
sir-ksie869j
-
Gunakan perintah terminate-instance untuk mengakhiri instance.
aws ec2 terminate-instances --instance-ids
i-0abcdef1234567890
Jika Anda tidak lagi membutuhkan templat percobaan, Anda dapat menghapusnya.
Untuk menghapus template eksperimen menggunakan AWS FISkonsol
Buka AWS FISkonsol di https://console.aws.amazon.com/fis/
. -
Di panel navigasi, pilih Template eksperimen.
-
Pilih template eksperimen, lalu pilih Tindakan, Hapus template eksperimen.
-
Saat diminta konfirmasi, masukkan
delete
lalu pilih Hapus templat eksperimen.