Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Gunakan kait siklus hidup dengan kolam hangat di grup Penskalaan Otomatis
Instans di kolam hangat mempertahankan siklus hidup independennya sendiri untuk membantu Anda membuat tindakan kustom yang sesuai untuk setiap transisi. Siklus hidup ini dirancang untuk membantu Anda memanggil tindakan dalam layanan target (misalnya, fungsi Lambda) saat instance masih diinisialisasi dan sebelum dimasukkan ke layanan.
catatan
Operasi API yang Anda gunakan untuk menambah dan mengelola kait siklus hidup dan menyelesaikan tindakan siklus hidup tidak diubah. Hanya siklus hidup instance yang diubah.
Untuk informasi selengkapnya tentang menambahkan kait siklus hidup, lihatTambahkan kait siklus hidup ke grup Penskalaan Otomatis Anda. Untuk informasi selengkapnya tentang menyelesaikan tindakan siklus hidup, lihatMenyelesaikan tindakan siklus hidup dalam grup Penskalaan Otomatis.
Untuk contoh memasuki kolam hangat, Anda mungkin memerlukan kait siklus hidup karena salah satu alasan berikut:
-
Anda ingin meluncurkan instans EC2 dari AMI yang membutuhkan waktu lama untuk menyelesaikan inisialisasi.
-
Anda ingin menjalankan skrip data pengguna untuk mem-bootstrap instans EC2.
penting
Segera setelah instance selesai diluncurkan ke kolam hangat, Amazon EC2 Auto Scaling menghentikan atau melakukan hibernasi instans. Amazon EC2 Auto Scaling tidak menunggu data pengguna selesai berjalan, sehingga tindakan berhenti atau hibernasi dapat mengganggu skrip yang masih berjalan.
Secara default, cloud-init menjalankan data pengguna hanya pada boot pertama. Skrip yang terputus tidak berjalan lagi ketika instance meninggalkan kolam hangat dan memasuki layanan. Instans dapat mencapai InService status tanpa menyelesaikan skrip bootstrap-nya, dan Amazon EC2 Auto Scaling melaporkan instans sebagai sehat.
Untuk mencegah bootstrap yang tidak lengkap, gunakan salah satu opsi berikut:
-
Tambahkan kait siklus hidup untuk tindakan
EC2_INSTANCE_LAUNCHINGsiklus hidup. Instance kemudian tetap dalamWarmed:Pending:Waitstatus sampai skrip bootstrap Anda selesai dan dipanggilCompleteLifecycleAction. -
Sertakan langkah-langkah bootstrap di AMI Anda sehingga sedikit atau tidak ada pekerjaan yang tersisa untuk data pengguna.
-
Konfigurasikan data pengguna untuk berjalan pada setiap boot, seperti yang dijelaskan dalamPrasyarat. Skrip kemudian berjalan lagi ketika instance dimulai ulang saat meninggalkan kolam hangat.
Untuk kasus meninggalkan kolam yang hangat, Anda mungkin memerlukan kait siklus hidup karena salah satu alasan berikut:
-
Anda dapat menggunakan waktu ekstra untuk menyiapkan instans EC2 untuk digunakan. Misalnya, Anda mungkin memiliki layanan yang harus dimulai saat instance dimulai ulang sebelum aplikasi Anda dapat bekerja dengan benar.
-
Anda ingin mengisi data cache terlebih dahulu sehingga server baru tidak diluncurkan dengan cache kosong.
-
Anda ingin mendaftarkan instans baru sebagai instans terkelola dengan layanan manajemen konfigurasi Anda.
Transisi status siklus hidup untuk instance di kolam hangat
Instans Auto Scaling dapat melakukan transisi melalui banyak status sebagai bagian dari siklus hidupnya.
Diagram berikut menunjukkan transisi antara status Auto Scaling saat Anda menggunakan kolam hangat:
¹ Status ini bervariasi berdasarkan pengaturan status kolam renang hangat. Jika status kumpulan disetel keRunning, maka status ini adalah sebagai Warmed:Running gantinya. Jika status kumpulan disetel keHibernated, maka status ini adalah sebagai Warmed:Hibernated gantinya.
Saat menambahkan kait siklus hidup, pertimbangkan hal berikut:
-
Saat hook siklus hidup dikonfigurasi untuk tindakan
autoscaling:EC2_INSTANCE_LAUNCHINGsiklus hidup, instans yang baru diluncurkan pertama-tama berhenti untuk melakukan tindakan kustom ketika mencapaiWarmed:Pending:Waitstatus, dan kemudian lagi ketika instance dimulai ulang dan mencapai status.Pending:Wait -
Saat hook siklus hidup dikonfigurasi untuk tindakan
EC2_INSTANCE_TERMINATINGsiklus hidup, instance penghentian berhenti untuk melakukan tindakan kustom saat mencapai status.Terminating:WaitNamun, jika Anda menentukan kebijakan penggunaan kembali instans untuk mengembalikan instans ke kumpulan hangat sesuai skala alih-alih menghentikannya, maka instance yang kembali ke kumpulan hangat akan berhenti untuk melakukan tindakan kustom padaWarmed:Pending:Waitstatus untuk tindakanEC2_INSTANCE_TERMINATINGsiklus hidup. -
Jika permintaan pada aplikasi Anda menghabiskan kolam hangat, Amazon EC2 Auto Scaling dapat meluncurkan instans langsung ke grup Penskalaan Otomatis selama grup belum mencapai kapasitas maksimumnya. Jika instance diluncurkan langsung ke grup, instans hanya akan dijeda untuk melakukan tindakan kustom di
Pending:Waitstatus. -
Untuk mengontrol berapa lama instance tetap dalam status tunggu sebelum beralih ke status berikutnya, konfigurasikan tindakan kustom Anda untuk menggunakan complete-lifecycle-action perintah tersebut. Dengan kait siklus hidup, instans tetap dalam status tunggu sampai Anda memberi tahu Amazon EC2 Auto Scaling bahwa tindakan siklus hidup yang ditentukan selesai, atau hingga periode batas waktu berakhir (satu jam secara default).
Berikut ini merangkum alur untuk peristiwa scale-out.
Saat instans mencapai status tunggu, Amazon EC2 Auto Scaling mengirimkan pemberitahuan. Contoh pemberitahuan ini tersedia di EventBridge bagian panduan ini. Untuk informasi selengkapnya, lihat Acara dan pola contoh kolam hangat.
Target notifikasi yang didukung
Amazon EC2 Auto Scaling menyediakan dukungan untuk menentukan salah satu dari berikut ini sebagai target notifikasi untuk pemberitahuan siklus hidup:
-
EventBridge aturan
-
Topik Amazon SNS
-
Antrean Amazon SQS
-
AWS Lambda fungsi
penting
Jika Anda memiliki skrip data pengguna (cloud-init) di template peluncuran atau konfigurasi peluncuran yang mengonfigurasi instance Anda saat diluncurkan, Anda tidak perlu menerima pemberitahuan untuk melakukan tindakan khusus pada instans yang memulai atau memulai ulang.
Bagian berikut berisi tautan ke dokumentasi yang menjelaskan cara mengonfigurasi target notifikasi:
EventBridge rules — Untuk menjalankan kode saat Amazon EC2 Auto Scaling menempatkan instance ke status tunggu, Anda dapat membuat EventBridge aturan dan menentukan fungsi Lambda sebagai targetnya. Untuk memanggil fungsi Lambda yang berbeda berdasarkan pemberitahuan siklus hidup yang berbeda, Anda dapat membuat beberapa aturan dan mengaitkan setiap aturan dengan pola peristiwa tertentu dan fungsi Lambda. Untuk informasi selengkapnya, lihat Buat EventBridge aturan untuk acara kolam hangat.
Topik Amazon SNS — Untuk menerima pemberitahuan saat instance dimasukkan ke dalam status tunggu, Anda membuat topik Amazon SNS lalu mengatur pemfilteran pesan Amazon SNS untuk mengirimkan pemberitahuan siklus hidup secara berbeda berdasarkan atribut pesan. Untuk informasi selengkapnya, lihat Terima notifikasi menggunakan Amazon SNS.
Antrian Amazon SQS — Untuk menyiapkan titik pengiriman untuk pemberitahuan siklus hidup di mana konsumen yang relevan dapat mengambil dan memprosesnya, Anda dapat membuat antrian Amazon SQS dan konsumen antrian yang memproses pesan dari antrian SQS. Jika Anda ingin konsumen antrian memproses pemberitahuan siklus hidup secara berbeda berdasarkan atribut pesan, Anda juga harus mengatur konsumen antrian untuk mengurai pesan dan kemudian bertindak berdasarkan pesan ketika atribut tertentu cocok dengan nilai yang diinginkan. Untuk informasi selengkapnya, lihat Menerima pemberitahuan menggunakan Amazon SQS.
AWS Lambda function — Untuk menjalankan kode kustom saat Amazon EC2 Auto Scaling menempatkan instance ke status tunggu, Anda dapat menentukan fungsi Lambda sebagai target notifikasi. Fungsi Lambda dipanggil dengan data notifikasi siklus hidup, memungkinkan Anda melakukan tindakan khusus seperti konfigurasi instans, pengaturan aplikasi, atau integrasi dengan layanan lain AWS . Anda harus mengonfigurasi kebijakan berbasis sumber daya fungsi Lambda untuk mengizinkan peran terkait layanan Auto Scaling memanggil fungsi. Untuk informasi selengkapnya, lihat Rute notifikasi ke AWS Lambda langsung.