Tutorial: Uji interupsi Instans Spot menggunakan AWS FIS - AWS Layanan Injeksi Kesalahan

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-id subnet-1234567890abcdef0 \ --security-group-ids sg-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" } }

--queryOpsi 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
  1. Buka konsol AWS FIS di https://console.aws.amazon.com/fis/.

  2. Di panel navigasi, pilih Template eksperimen.

  3. Pilih Buat template eksperimen.

  4. Untuk Langkah 1, Tentukan detail template, lakukan hal berikut:

    1. Untuk Deskripsi dan nama, masukkan deskripsi dan nama untuk templat.

    2. Pilih Berikutnya, dan pindah ke Langkah 2, Tentukan tindakan dan target.

  5. Untuk Tindakan, lakukan hal berikut:

    1. Pilih Tambahkan tindakan.

    2. Masukkan nama untuk tindakan tersebut. Misalnya, masukkan interruptSpotInstance.

    3. Untuk tipe Action, pilih aws:ec2:. send-spot-instance-interruptions

    4. Untuk Target, pertahankan target yang AWS FIS diciptakan untuk Anda.

    5. Untuk parameter Tindakan, Durasi sebelum interupsi, tentukan 2 Menit (PT2M).

    6. Pilih Simpan.

  6. Untuk Target, lakukan langkah berikut:

    1. Pilih Edit untuk target yang dibuat AWS FIS secara otomatis untuk Anda di langkah sebelumnya.

    2. Ganti nama default dengan nama yang lebih deskriptif. Misalnya, masukkan oneSpotInstance.

    3. Verifikasi bahwa tipe Resource adalah aws:ec2:spot-instance.

    4. Untuk metode Target, pilih Tag sumber daya, filter, dan parameter.

    5. 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.

    6. Untuk filter Sumber daya pilih Tambahkan filter baru dan masukkan State.Name sebagai jalur dan running sebagai nilai.

    7. Untuk mode Seleksi, pilih Hitung. Untuk Jumlah sumber daya, masukkan1.

    8. Pilih Simpan.

  7. Pilih Berikutnya untuk pindah ke Langkah 3, Konfigurasi akses layanan.

  8. 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.

  9. Pilih Berikutnya untuk pindah ke Langkah 4, Konfigurasikan pengaturan opsional.

  10. (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.

  11. Pilih Berikutnya untuk pindah ke Langkah 5, Tinjau dan buat.

  12. Tinjau template dan pilih Buat template eksperimen. Ketika diminta untuk konfirmasi, masukkancreate, 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
  1. 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.

  2. Pilih Mulai percobaan.

  3. (Opsional) Untuk menambahkan tag ke eksperimen Anda, pilih Tambahkan tag baru dan masukkan kunci tag dan nilai tag.

  4. 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
  1. 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.

  2. Untuk melihat status percobaan, periksa Status di panel Detail. Untuk informasi lebih lanjut, lihat status eksperimen.

  3. Ketika keadaan percobaan sedang berjalan, lanjutkan ke langkah berikutnya.

Langkah 4: Verifikasi hasil percobaan

Ketika tindakan untuk percobaan ini selesai, berikut ini terjadi:

Untuk memverifikasi bahwa instance terputus oleh percobaan
  1. Buka EC2 konsol Amazon di https://console.aws.amazon.com/ec2/.

  2. Dari panel navigasi, buka Permintaan Spot dan Instans di tab atau jendela peramban yang terpisah.

  3. 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 menjadi marked-for-stop-by-experiment dan kemudianinstance-stopped-by-experiment.

  4. 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 menjadi Stopping dan kemudianStopped.

    • terminate- Status berubah menjadi Shutting-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
  1. Gunakan cancel-spot-instance-requestsperintah untuk membatalkan permintaan Instans Spot.

    aws ec2 cancel-spot-instance-requests --spot-instance-request-ids sir-ksie869j
  2. 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
  1. Buka konsol AWS FIS di https://console.aws.amazon.com/fis/.

  2. Di panel navigasi, pilih Template eksperimen.

  3. Pilih template eksperimen, lalu pilih Tindakan, Hapus template eksperimen.

  4. Saat diminta konfirmasi, masukkan delete lalu pilih Hapus templat eksperimen.