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

  2. Di panel navigasi, pilih Template eksperimen.

  3. Pilih Buat template eksperimen.

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

  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 FISmenciptakan 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 AWS FISsecara otomatis dibuat 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. 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.

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

  9. 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
  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 FISkonsol
  1. Buka AWS FISkonsol 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.