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 Fault Injection Service (AWS FIS) untuk menguji bagaimana aplikasi Anda menangani interupsi Instans Spot. Gunakan tutorial ini untuk membuat template eksperimen yang menggunakan AWS FIS aws: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 FIS untuk mengganggu Instance Spot, selesaikan prasyarat berikut.
1. Buat IAM peran
Buat peran dan lampirkan kebijakan yang memungkinkan AWS FIS untuk 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, lihat contoh AWS FIS 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. Standarnya 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 FIS dapat 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 FIS konsol. 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 FIS pilih salah satunya secara acak.
Untuk membuat template percobaan
Buka konsol AWS FIS di https://console.aws.amazon.com/fis/
. -
Di panel navigasi, pilih Template eksperimen.
-
Pilih Buat template eksperimen.
-
Untuk Langkah 1, Tentukan detail template, lakukan hal berikut:
-
Untuk Deskripsi dan nama, masukkan deskripsi dan nama untuk templat.
-
Pilih Berikutnya, dan pindah ke Langkah 2, Tentukan tindakan dan target.
-
-
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 FIS diciptakan untuk Anda.
-
Untuk parameter Tindakan, Durasi sebelum interupsi, tentukan 2 Menit (PT2M).
-
Pilih Simpan.
-
-
Untuk Target, lakukan langkah berikut:
-
Pilih Edit untuk target yang dibuat AWS FIS secara otomatis 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.
-
-
Pilih Berikutnya untuk pindah ke Langkah 3, Konfigurasi akses layanan.
-
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.
-
Pilih Berikutnya untuk pindah ke Langkah 4, Konfigurasikan pengaturan opsional.
-
(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 Berikutnya untuk pindah ke Langkah 5, Tinjau dan buat.
-
Tinjau template dan pilih Buat template eksperimen. Ketika diminta untuk konfirmasi, masukkan
create
, Lalu pilih Buat template percobaan.
(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.
-
Instans Spot yang dihentikan oleh AWS FIS tetap 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 FIS konsol
Buka konsol AWS FIS 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.