Rancang aplikasi Anda untuk menangani penghentian instans dengan anggun - Amazon EC2 Auto Scaling

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

Rancang aplikasi Anda untuk menangani penghentian instans dengan anggun

Topik ini mencakup fitur-fitur yang dapat Anda gunakan untuk mencegah grup Auto Scaling menghentikan instans yang belum siap untuk dihentikan, atau menghentikan instans terlalu cepat bagi mereka untuk menyelesaikan pekerjaan yang ditetapkan. Anda dapat menggunakan ketiga fitur ini dalam kombinasi atau secara terpisah untuk merancang aplikasi Anda untuk menangani penghentian instans dengan anggun.

Misalnya, Anda memiliki antrian Amazon SQS yang mengumpulkan pesan masuk untuk pekerjaan yang berjalan lama. Ketika pesan baru tiba, sebuah instance dalam grup Auto Scaling mengambil pesan dan mulai memprosesnya. Setiap pesan membutuhkan waktu 3 jam untuk diproses. Seiring bertambahnya jumlah pesan, instance baru secara otomatis ditambahkan ke grup Auto Scaling. Karena jumlah pesan berkurang, instance yang ada akan dihentikan secara otomatis. Dalam hal ini, Auto Scaling Amazon EC2 harus memutuskan instance mana yang akan dihentikan. Secara default, ada kemungkinan bahwa Amazon EC2 Auto Scaling dapat menghentikan instance yang 2,9 jam untuk memproses pekerjaan selama 3 jam, bukan instance yang saat ini tidak digunakan. Untuk menghindari masalah dengan penghentian yang tidak terduga saat menggunakan Auto Scaling Amazon EC2, Anda harus mendesain aplikasi untuk menanggapi skenario ini.

penting

Saat mendesain aplikasi Anda di Amazon EC2 Auto Scaling untuk menangani penghentian instans dengan baik, ingatlah poin-poin ini.

  • Jika instans tidak sehat, Auto Scaling Amazon EC2 akan menggantikannya terlepas dari fitur yang Anda gunakan (kecuali jika Anda menangguhkan ReplaceUnhealthy prosesnya). Anda dapat menggunakan kait siklus hidup untuk memungkinkan aplikasi dimatikan dengan anggun atau menyalin data apa pun yang perlu Anda pulihkan sebelum instance dihentikan.

  • Pengait siklus hidup terminasi tidak dijamin akan berjalan atau selesai sebelum instance dihentikan. Jika sesuatu gagal, Amazon EC2 Auto Scaling masih menghentikan instance.

Proteksi penurunan skala instance

Anda dapat menggunakan perlindungan skala dalam instance dalam banyak situasi di mana penghentian instance adalah tindakan penting yang harus ditolak secara default, dan hanya diizinkan secara eksplisit untuk instance tertentu. Misalnya, saat menjalankan beban kerja kontainer, biasanya ingin melindungi semua instance dan menghapus perlindungan hanya untuk instance tanpa tugas saat ini atau yang dijadwalkan. Layanan seperti Amazon ECS telah membangun integrasi dengan perlindungan skala instans ke dalam produk mereka.

Anda dapat mengaktifkan perlindungan scale-in pada grup Auto Scaling untuk menerapkan perlindungan scale-in ke instance saat dibuat dan mengaktifkannya untuk instance yang ada. Ketika sebuah instance tidak memiliki pekerjaan lagi yang harus dilakukan, itu dapat mematikan perlindungan. Instans dapat melanjutkan polling untuk pekerjaan baru dan mengaktifkan kembali perlindungan ketika ada pekerjaan baru yang ditugaskan.

Aplikasi dapat mengatur perlindungan baik dari bidang kontrol terpusat yang mengelola apakah sebuah instance dapat dihentikan atau tidak, atau dari instance itu sendiri. Namun, armada besar dapat mengalami masalah pelambatan jika sejumlah besar instance terus beralih perlindungan skala-in mereka.

Untuk informasi selengkapnya, lihat Gunakan perlindungan skala dalam instance untuk mengontrol penghentian instans.

Kebijakan penghentian kustom

Seperti perlindungan penskalaan instance, kebijakan penghentian khusus membantu Anda mencegah grup Auto Scaling menghentikan instance tertentu.

Secara default, grup Auto Scaling Anda menggunakan kebijakan penghentian default untuk menentukan instance mana yang dihentikan terlebih dahulu. Jika ingin lebih mengontrol instance mana yang dihentikan terlebih dahulu, Anda dapat menerapkan kebijakan penghentian kustom Anda sendiri menggunakan fungsi Lambda. Auto Scaling Amazon EC2 memanggil fungsi kapan pun harus memutuskan instance mana yang akan dihentikan. Ini hanya akan mengakhiri sebuah instance yang dikembalikan oleh fungsi. Jika fungsi error, waktu habis, atau menghasilkan daftar kosong, Auto Scaling Amazon EC2 tidak menghentikan instans.

Kebijakan penghentian kustom berguna jika diketahui ketika sebuah instance cukup berlebihan atau kurang dimanfaatkan sehingga dapat dihentikan. Untuk mendukung hal ini, Anda perlu mengimplementasikan aplikasi Anda dengan bidang kontrol yang memantau beban kerja di seluruh grup. Dengan begitu, jika sebuah instance masih memproses pekerjaan, fungsi Lambda tahu untuk tidak memasukkannya.

Untuk informasi selengkapnya, lihat Membuat kebijakan penghentian kustom dengan Lambda.

Kait siklus hidup penghentian

Pengait siklus hidup terminasi memperpanjang masa pakai instance yang sudah dipilih untuk penghentian. Ini memberikan waktu ekstra untuk menyelesaikan semua pesan atau permintaan yang saat ini ditugaskan ke instance, atau untuk menyimpan kemajuan dan mentransfer pekerjaan ke instance lain.

Untuk banyak beban kerja, pengait siklus hidup mungkin cukup untuk mematikan aplikasi dengan anggun pada instance yang dipilih untuk penghentian. Ini adalah pendekatan upaya terbaik dan tidak dapat digunakan untuk mencegah penghentian jika ada kegagalan.

Untuk menggunakan kait siklus hidup, Anda perlu tahu kapan sebuah instance dipilih untuk dihentikan. Anda memiliki dua cara untuk mengetahui hal ini:

Opsi Deskripsi Paling baik digunakan untuk Tautan ke dokumentasi
Di dalam instance Layanan Metadata Instance (IMDS) adalah titik akhir aman yang dapat Anda polling untuk status instance langsung dari instance. Jika metadata kembali denganTerminated, maka instance Anda dijadwalkan untuk dihentikan. Aplikasi di mana Anda harus melakukan tindakan pada instance sebelum instance dihentikan. Mengambil status siklus hidup target
Di luar contoh Ketika sebuah instance berakhir, pemberitahuan acara dihasilkan. Anda dapat membuat aturan menggunakan Amazon EventBridge, Amazon SQS, atau Amazon SNS untuk menangkap peristiwa ini, dan memanggil respons seperti dengan fungsi Lambda. Aplikasi yang perlu mengambil tindakan di luar instance. Konfigurasikan target notifikasi

Untuk menggunakan kait siklus hidup, Anda juga perlu tahu kapan instance Anda siap untuk dihentikan sepenuhnya. Auto Scaling Amazon EC2 tidak akan memberi tahu Amazon EC2 untuk menghentikan instans hingga menerima panggilan atau batas waktu berlalu, mana CompleteLifecycleActionyang terjadi lebih dulu.

Secara default, sebuah instance dapat terus berjalan selama satu jam (batas waktu detak jantung) karena pengait siklus hidup penghentian. Anda dapat mengonfigurasi batas waktu default jika satu jam tidak cukup waktu untuk menyelesaikan tindakan siklus hidup. Saat tindakan siklus hidup sedang berlangsung, Anda dapat memperpanjang batas waktu dengan RecordLifecycleActionHeartbeatpanggilan API.

Untuk informasi selengkapnya, lihat Hook siklus aktif Amazon EC2 Auto Scaling.