Gunakan Rebalancing Kapasitas untuk menangani interupsi Spot Amazon EC2 - Amazon EC2 Auto Scaling

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

Gunakan Rebalancing Kapasitas untuk menangani interupsi Spot Amazon EC2

Anda dapat mengonfigurasi Amazon EC2 Auto Scaling untuk memonitor dan secara otomatis merespons perubahan yang memengaruhi ketersediaan Instance Spot Anda. Penyeimbangan Ulang Kapasitas membantu Anda mempertahankan ketersediaan beban kerja dengan secara proaktif menambah armada Anda dengan Instans Spot baru sebelum instans yang berjalan diinterupsi oleh Amazon EC2.

Tujuan dari Capacity Rebalancing adalah untuk terus memproses beban kerja Anda tanpa gangguan. Jika Instans Spot berisiko tinggi mengalami gangguan, layanan Amazon EC2 Spot memberi tahu Auto Scaling Amazon EC2 dengan rekomendasi penyeimbangan ulang instans EC2.

Saat Anda mengaktifkan Penyeimbangan Kembali Kapasitas untuk grup Auto Scaling, Auto Scaling Amazon EC2 mencoba mengganti Instans Spot secara proaktif di grup Anda yang telah menerima rekomendasi penyeimbangan ulang. Ini memberikan kesempatan untuk menyeimbangkan kembali beban kerja Anda ke Instans Spot baru yang tidak berisiko tinggi mengalami gangguan. Beban kerja Anda dapat terus memproses pekerjaan sementara Amazon EC2 Auto Scaling meluncurkan Instans Spot baru sebelum instans yang ada terputus.

Jika Anda tidak menggunakan Penyeimbangan Kembali Kapasitas, Auto Scaling Amazon EC2 tidak menggantikan Instans Spot hingga setelah layanan Spot Amazon EC2 mengganggu instans dan pemeriksaan kesehatannya gagal. Sebelum menyela instans, Amazon EC2 selalu memberikan rekomendasi penyeimbangan ulang instans EC2 dan pemberitahuan interupsi instans dua menit Spot.

Gambaran Umum

Untuk menggunakan Capacity Rebalancing dengan grup Auto Scaling Anda, langkah-langkah dasarnya adalah:

  1. Konfigurasikan grup Auto Scaling Anda untuk menggunakan beberapa jenis instans dan Availability Zone. Dengan cara ini, Auto Scaling Amazon EC2 dapat melihat kapasitas yang tersedia untuk Instans Spot di setiap Availability Zone. Untuk informasi selengkapnya, lihat Grup Auto Scaling dengan beberapa jenis instans dan opsi pembelian.

  2. Tambahkan kait siklus hidup sesuai kebutuhan untuk melakukan shutdown aplikasi Anda yang anggun di dalam instance yang menerima notifikasi penyeimbangan ulang. Untuk informasi selengkapnya, lihat Hook siklus aktif Amazon EC2 Auto Scaling.

    Berikut ini adalah beberapa alasan mengapa Anda mungkin menggunakan pengait siklus hidup:

    • Untuk pematian worker Amazon SQS secara baik

    • Untuk menyelesaikan deregistrasi dari Domain Name System (DNS)

    • Untuk menarik log sistem atau aplikasi dan mengunggahnya ke Amazon Simple Storage Service (Amazon S3)

  3. Kembangkan tindakan kustom untuk kait siklus hidup. Untuk menjalankan tindakan kustom Anda sesegera mungkin, Anda perlu tahu kapan sebuah instance siap untuk dihentikan. Cari tahu ini dengan mendeteksi status siklus hidup instance.

    • Untuk menjalankan tindakan di luar instance, tulis EventBridge aturan dan otomatiskan tindakan apa yang harus diambil ketika pola peristiwa cocok dengan aturan.

    • Untuk menjalankan tindakan di dalam instance, konfigurasikan instance untuk menjalankan skrip shutdown dan mengambil status siklus hidup melalui metadata instance.

    Sangat penting untuk merancang tindakan khusus untuk diselesaikan dalam waktu kurang dari dua menit. Ini memastikan ada cukup waktu untuk menyelesaikan tugas sebelum penghentian instance.

Setelah Anda menyelesaikan langkah-langkah ini, Anda dapat mulai menggunakan Capacity Rebalancing.

Perilaku penyeimbangan kembali kapasitas

Dengan Penyeimbangan Kembali Kapasitas, Auto Scaling Amazon EC2 berperilaku seperti berikut saat instans menerima rekomendasi penyeimbangan ulang:

  • Saat Instans Spot baru diluncurkan, Auto Scaling Amazon EC2 menunggu hingga instans baru melewati pemeriksaan kesehatannya sebelum menghentikan instance sebelumnya. Saat mengganti lebih dari satu instance, penghentian setiap instance sebelumnya dimulai setelah instans baru diluncurkan dan lulus pemeriksaan kesehatannya.

  • Karena Auto Scaling Amazon EC2 mencoba meluncurkan instans baru sebelum menghentikan instans sebelumnya, berada pada atau mendekati kapasitas maksimum yang ditentukan dapat menghambat atau sepenuhnya menghentikan aktivitas penyeimbangan kembali. Untuk menghindari masalah ini, Amazon EC2 Auto Scaling untuk sementara dapat melebihi ukuran maksimum grup hingga 10 persen dari kapasitas yang diinginkan.

  • Jika Anda tidak menambahkan kait siklus hidup ke grup Auto Scaling, Auto Scaling Amazon EC2 mulai menghentikan instans sebelumnya segera setelah instans baru lulus pemeriksaan kesehatannya.

  • Jika Anda menambahkan kait siklus hidup, ini memperpanjang jumlah waktu yang diperlukan sebelum kami mulai menghentikan instance sebelumnya dengan nilai batas waktu yang Anda tentukan untuk hook siklus hidup.

  • Jika Anda menggunakan kebijakan penskalaan atau penskalaan terjadwal, aktivitas penskalaan berjalan secara paralel. Jika aktivitas penskalaan sedang berlangsung dan grup Auto Scaling Anda berada di bawah kapasitas baru yang diinginkan, Auto Scaling Amazon EC2 akan keluar terlebih dahulu sebelum menghentikan instans sebelumnya.

Jika tidak ada kapasitas untuk jenis instans Anda di satu Availability Zone, Auto Scaling Amazon EC2 terus mencoba meluncurkan Instans Spot di Availability Zone lain yang diaktifkan hingga berhasil.

Dalam skenario terburuk, jika instance baru gagal diluncurkan atau pemeriksaan kesehatannya gagal, Auto Scaling Amazon EC2 terus mencoba meluncurkannya kembali. Saat mencoba meluncurkan instance baru, yang sebelumnya pada akhirnya akan terganggu dan dihentikan secara paksa dengan pemberitahuan interupsi dua menit.

Pertimbangan

Pertimbangkan hal berikut saat menggunakan Capacity Rebalancing:

Rancang aplikasi Anda agar toleran terhadap interupsi Spot

Aplikasi Anda harus dapat menangani perubahan dinamis dalam jumlah instance dan kemungkinan Instance Spot terputus lebih awal. Misalnya, jika grup Auto Scaling Anda berada di belakang penyeimbang beban Elastic Load Balancing, Auto Scaling Amazon EC2 akan menunggu instans membatalkan pendaftaran dari penyeimbang beban sebelum memanggil hook siklus hidup Anda. Jika waktu untuk membatalkan pendaftaran instans dan menyelesaikan tindakan siklus hidup terlalu lama, instans mungkin terputus saat Auto Scaling Amazon EC2 menunggu tindakan siklus hidup Anda selesai sebelum menghentikan instance.

Amazon EC2 tidak selalu memungkinkan untuk mengirim sinyal rekomendasi penyeimbangan ulang sebelum pemberitahuan interupsi Instans Spot dua menit. Terkadang, sinyal rekomendasi penyeimbangan kembali tiba bersamaan dengan pemberitahuan interupsi dua menit. Ketika ini terjadi, Amazon EC2 Auto Scaling memanggil hook siklus hidup dan mencoba meluncurkan Instans Spot baru dengan segera.

Hindari peningkatan risiko gangguan penggantian Instans Spot

Instans Spot pengganti Anda mungkin berisiko tinggi mengalami gangguan jika Anda menggunakan strategi lowest-price alokasi. Ini karena kami meluncurkan instans di kolam dengan harga terendah yang memiliki kapasitas yang tersedia pada saat itu, bahkan jika Instans Spot pengganti Anda kemungkinan akan terganggu segera setelah diluncurkan. Untuk menghindari peningkatan risiko gangguan, kami sangat menyarankan agar Anda tidak menggunakan strategi lowest-price alokasi. Sebagai gantinya, kami merekomendasikan strategi price-capacity-optimized alokasi. Strategi ini meluncurkan Instans Spot pengganti di kumpulan Spot yang paling tidak mungkin terganggu dan memiliki harga serendah mungkin. Oleh karena itu, mereka cenderung tidak terganggu dalam waktu dekat.

Auto Scaling Amazon EC2 hanya akan meluncurkan instance baru jika ketersediaannya sama atau lebih baik

Salah satu tujuan dari Penyeimbangan Ulang kapasitas adalah untuk meningkatkan ketersediaan Instans Spot. Jika Instans Spot yang ada menerima rekomendasi penyeimbangan ulang, Auto Scaling Amazon EC2 hanya akan meluncurkan instans baru jika instans baru memberikan ketersediaan yang sama atau lebih baik daripada instans yang ada. Jika risiko gangguan instans baru akan lebih buruk daripada instans yang ada, maka Amazon EC2 Auto Scaling tidak akan meluncurkan instans baru. Namun, Amazon EC2 Auto Scaling akan terus menilai kumpulan kapasitas Spot berdasarkan informasi yang diberikan oleh layanan Amazon EC2 Spot, dan akan meluncurkan instans baru jika ketersediaan meningkat.

Ada kemungkinan instans Anda yang ada akan terganggu tanpa Auto Scaling Amazon EC2 secara proaktif meluncurkan instans baru. Ketika ini terjadi, Amazon EC2 Auto Scaling mencoba meluncurkan instans baru segera setelah menerima pemberitahuan gangguan Instans Spot. Ini terjadi terlepas dari apakah instance baru memiliki risiko gangguan yang tinggi.

Penyeimbangan Ulang Kapasitas tidak meningkatkan tingkat interupsi Instans Spot Anda

Saat Anda mengaktifkan Penyeimbangan Ulang Kapasitas, hal tersebut tidak meningkatkan tingkat interupsi Instans Spot Anda (jumlah Instans Spot yang diklaim kembali saat Amazon EC2 membutuhkan kapasitas kembali). Namun, jika Capacity Rebalancing mendeteksi instans berisiko mengalami gangguan, Auto Scaling Amazon EC2 akan segera mencoba meluncurkan instans baru. Oleh karena itu, lebih banyak instans mungkin diganti daripada jika Anda menunggu Auto Scaling Amazon EC2 meluncurkan instans baru setelah instans berisiko terputus.

Meskipun Anda mungkin mengganti lebih banyak instance dengan Capacity Rebalancing diaktifkan, Anda mendapat manfaat dari menjadi proaktif daripada reaktif. Ini memberi Anda lebih banyak waktu untuk mengambil tindakan sebelum instans Anda terganggu. Dengan pemberitahuan interupsi Instans Spot, Anda biasanya hanya memiliki waktu hingga dua menit untuk mematikan instans Anda dengan baik. Dengan Capacity Rebalancing meluncurkan instans baru sebelumnya, Anda memberikan kesempatan yang lebih baik untuk menyelesaikan proses yang ada pada instans berisiko Anda. Anda juga dapat memulai prosedur penghentian instans, mencegah pekerjaan baru dijadwalkan pada instans berisiko Anda, dan menyiapkan instans yang baru diluncurkan untuk mengambil alih aplikasi. Dengan penggantian proaktif dalam Penyeimbangan Kembali Kapasitas, Anda mendapat manfaat dari kontinuitas yang anggun.

Contoh teoritis berikut menunjukkan risiko dan manfaat menggunakan Capacity Rebalancing:

  • 14:00 - Rekomendasi penyeimbangan ulang diterima misalnya A. Auto Scaling Amazon EC2 segera mencoba meluncurkan instans pengganti B, memberi Anda waktu untuk memulai prosedur shutdown Anda.

  • 2:30 PM — Rekomendasi penyeimbangan ulang diterima misalnya B, yang diganti dengan contoh C. Ini memberi Anda waktu untuk memulai prosedur shutdown Anda.

  • 14:32 — Jika Penyeimbangan Kembali Kapasitas tidak diaktifkan, dan jika pemberitahuan gangguan Instans Spot akan diterima pada pukul 14:32 misalnya A, Anda hanya memiliki dua menit untuk mengambil tindakan. Namun, Instance A akan terus berjalan hingga saat ini.

Aktifkan Rebalancing Kapasitas (konsol)

Anda dapat mengaktifkan atau menonaktifkan Capacity Rebalancing saat membuat atau memperbarui grup Auto Scaling.

Untuk mengaktifkan Capacity Rebalancing untuk grup Auto Scaling baru
  1. Buka konsol Amazon EC2 di https://console.aws.amazon.com/ec2/, dan pilih Grup Auto Scaling dari panel navigasi.

  2. Pilih Buat grup Auto Scaling.

  3. Untuk Langkah 1: Pilih template peluncuran atau konfigurasi, masukkan nama untuk grup Auto Scaling, pilih template peluncuran, lalu pilih Berikutnya untuk melanjutkan ke langkah berikutnya.

  4. Untuk Langkah 2: Pilih opsi peluncuran instance, untuk persyaratan jenis Instance, pilih pengaturan untuk membuat grup instance campuran. Ini termasuk jenis instans yang dapat diluncurkan, opsi pembelian instans, dan strategi alokasi untuk Instans Spot dan Sesuai Permintaan. Secara default, pengaturan ini tidak dikonfigurasi. Untuk mengonfigurasinya, Anda harus memilih Override launch template. Untuk informasi selengkapnya tentang membuat grup instance campuran, lihatGrup Auto Scaling dengan beberapa jenis instans dan opsi pembelian.

  5. Di bawah Jaringan, pilih opsi yang diinginkan. Verifikasi bahwa subnet yang ingin Anda gunakan berada di Availability Zone yang berbeda.

  6. Di bawah bagian Strategi alokasi, pilih strategi alokasi Spot. Aktifkan atau nonaktifkan Penyeimbangan Kembali Kapasitas dengan memilih atau membersihkan kotak centang di bawah Penyeimbangan Kembali Kapasitas. Anda hanya melihat opsi ini ketika Anda meminta persentase grup Auto Scaling untuk diluncurkan sebagai Instans Spot di bagian Opsi pembelian Instans.

  7. Buat grup Auto Scaling.

  8. (Opsional) Tambahkan kait siklus hidup sesuai kebutuhan. Untuk informasi selengkapnya, lihat Tambahkan hook siklus aktif.

Untuk mengaktifkan atau menonaktifkan Penyeimbangan Ulang Kapasitas untuk grup Auto Scaling yang ada
  1. Buka konsol Amazon EC2 di https://console.aws.amazon.com/ec2/, dan pilih Grup Auto Scaling dari panel navigasi.

  2. Pilih kotak centang di samping grup Auto Scaling Anda. Panel split terbuka di bagian bawah halaman.

  3. Pada tab Detail, pilih Strategi alokasi, Edit.

  4. Di bawah bagian Strategi alokasi, aktifkan atau nonaktifkan Penyeimbangan Kembali Kapasitas dengan memilih atau menghapus kotak centang di bawah Penyeimbangan Kembali Kapasitas.

  5. Pilih Perbarui.

Aktifkan Rebalancing Kapasitas ()AWS CLI

Contoh berikut menunjukkan cara menggunakan untuk mengaktifkan dan menonaktifkan Capacity Rebalancing. AWS CLI

Gunakan perintah create-auto-scaling-group atau update-auto-scaling-group dengan parameter berikut:

  • --capacity-rebalance/--no-capacity-rebalance— Nilai Boolean yang menunjukkan apakah Capacity Rebalancing diaktifkan.

Sebelum Anda memanggil perintah create-auto-scaling-group, Anda memerlukan nama template peluncuran yang dikonfigurasi untuk digunakan dengan grup Auto Scaling. Untuk informasi selengkapnya, lihat Membuat template peluncuran untuk grup Auto Scaling.

catatan

Prosedur berikut menunjukkan cara menggunakan file konfigurasi dalam format JSON atau YAML. Jika Anda menggunakan AWS CLI versi 1, Anda harus menentukan file konfigurasi berformat JSON. Jika Anda menggunakan AWS CLI versi 2, Anda dapat menentukan file konfigurasi yang diformat dalam YAMAL atau JSON.

Untuk membuat dan mengonfigurasi grup Auto Scaling baru
  • Gunakan perintah create-auto-scaling-group berikut untuk membuat grup Auto Scaling baru dan aktifkan Capacity Rebalancing. Perintah ini mereferensikan file JSON sebagai satu-satunya parameter untuk grup Auto Scaling Anda.

    aws autoscaling create-auto-scaling-group --cli-input-json file://~/config.json

    Jika Anda belum memiliki file konfigurasi CLI yang menentukan kebijakan bauran instance, buat file tersebut.

    Tambahkan baris berikut ke objek JSON level-atas di file konfigurasi.

    { "CapacityRebalance": true }

    Berikut ini adalah contoh file config.json.

    { "AutoScalingGroupName": "my-asg", "DesiredCapacity": 12, "MinSize": 12, "MaxSize": 15, "CapacityRebalance": true, "MixedInstancesPolicy": { "InstancesDistribution": { "OnDemandBaseCapacity": 0, "OnDemandPercentageAboveBaseCapacity": 25, "SpotAllocationStrategy": "price-capacity-optimized" }, "LaunchTemplate": { "LaunchTemplateSpecification": { "LaunchTemplateName": "my-launch-template", "Version": "$Default" }, "Overrides": [ { "InstanceType": "c5.large" }, { "InstanceType": "c5a.large" }, { "InstanceType": "m5.large" }, { "InstanceType": "m5a.large" }, { "InstanceType": "c4.large" }, { "InstanceType": "m4.large" }, { "InstanceType": "c3.large" }, { "InstanceType": "m3.large" } ] } }, "TargetGroupARNs": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-alb-target-group/943f017f100becff", "VPCZoneIdentifier": "subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782" }
Untuk membuat dan mengonfigurasi grup Auto Scaling baru
  • Gunakan perintah create-auto-scaling-group berikut untuk membuat grup Auto Scaling baru dan aktifkan Capacity Rebalancing. Perintah ini mereferensikan file YAMAL sebagai satu-satunya parameter untuk grup Auto Scaling Anda.

    aws autoscaling create-auto-scaling-group --cli-input-yaml file://~/config.yaml

    Tambahkan baris berikut ke file konfigurasi Anda dalam format YAML.

    CapacityRebalance: true

    Berikut ini adalah contoh file config.yaml.

    --- AutoScalingGroupName: my-asg DesiredCapacity: 12 MinSize: 12 MaxSize: 15 CapacityRebalance: true MixedInstancesPolicy: InstancesDistribution: OnDemandBaseCapacity: 0 OnDemandPercentageAboveBaseCapacity: 25 SpotAllocationStrategy: price-capacity-optimized LaunchTemplate: LaunchTemplateSpecification: LaunchTemplateName: my-launch-template Version: $Default Overrides: - InstanceType: c5.large - InstanceType: c5a.large - InstanceType: m5.large - InstanceType: m5a.large - InstanceType: c4.large - InstanceType: m4.large - InstanceType: c3.large - InstanceType: m3.large TargetGroupARNs: - arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-alb-target-group/943f017f100becff VPCZoneIdentifier: subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782
Untuk mengaktifkan Capacity Rebalancing untuk grup Auto Scaling yang ada
  • Gunakan perintah update-auto-scaling-group berikut untuk mengaktifkan Capacity Rebalancing.

    aws autoscaling update-auto-scaling-group --auto-scaling-group-name my-asg \ --capacity-rebalance
Untuk memverifikasi bahwa Capacity Rebalancing sudah diaktifkan untuk grup Auto Scaling
  • Gunakan perintah describe-auto-scaling-groups berikut untuk memverifikasi bahwa Capacity Rebalancing diaktifkan dan untuk melihat detailnya.

    aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name my-asg

    Berikut ini adalah contoh respons.

    { "AutoScalingGroups": [ { "AutoScalingGroupName": "my-asg", "AutoScalingGroupARN": "arn", ... "CapacityRebalance": true } ] }
Untuk menonaktifkan Capacity Rebalancing

Gunakan perintah update-auto-scaling-group dengan opsi untuk menonaktifkan Capacity Rebalancing. --no-capacity-rebalance

aws autoscaling update-auto-scaling-group --auto-scaling-group-name my-asg \ --no-capacity-rebalance

Untuk informasi selengkapnya tentang Penyeimbangan Kembali Kapasitas, lihat Mengelola siklus hidup Instans Spot secara proaktif menggunakan fitur Rebalancing Kapasitas baru untuk EC2 Auto Scaling di Blog Komputasi. AWS

Untuk informasi selengkapnya tentang rekomendasi penyeimbangan ulang instans EC2, lihat rekomendasi penyeimbangan ulang instans EC2 di Panduan Pengguna Amazon EC2.

Untuk mempelajari lebih lanjut tentang kait siklus hidup, lihat sumber daya berikut.

Batasan

  • Auto Scaling Amazon EC2 dapat menggantikan instans yang menerima pemberitahuan penyeimbangan ulang hanya jika instans tidak dilindungi dari skala masuk. Namun, perlindungan scale-in tidak mencegah penghentian dari gangguan Spot. Untuk informasi selengkapnya, lihat Gunakan perlindungan skala dalam instance.

  • Support for Capacity Rebalancing tersedia di semua iklan Wilayah AWS di mana Amazon EC2 Auto Scaling tersedia, kecuali untuk Wilayah Timur Tengah (UEA).