Kurangi latensi untuk aplikasi dengan waktu boot yang lama menggunakan kolam hangat - EC2Auto Scaling Amazon

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

Kurangi latensi untuk aplikasi dengan waktu boot yang lama menggunakan kolam hangat

Kolam hangat memberi Anda kemampuan untuk mengurangi latensi untuk aplikasi Anda yang memiliki waktu boot yang sangat lama, misalnya, karena instance perlu menulis sejumlah besar data ke disk. Dengan kolam hangat, Anda tidak perlu lagi menyediakan grup Auto Scaling secara berlebihan untuk mengelola latensi guna meningkatkan kinerja aplikasi. Untuk informasi selengkapnya, lihat posting blog berikut Menskalakan aplikasi Anda lebih cepat dengan EC2 Auto Scaling Warm Pools.

penting

Membuat kolam hangat ketika tidak diperlukan dapat menyebabkan biaya yang tidak perlu. Jika waktu boot pertama Anda tidak menyebabkan masalah latensi yang nyata untuk aplikasi Anda, mungkin Anda tidak perlu menggunakan kolam hangat.

Konsep inti

Sebelum Anda memulai, biasakan diri Anda dengan konsep inti berikut:

Kolam hangat

Kolam hangat adalah kumpulan EC2 contoh pra-inisialisasi yang berada di samping grup Auto Scaling. Kapan pun aplikasi Anda perlu diskalakan keluar, grup Auto Scaling dapat menggunakan kolam hangat untuk memenuhi kapasitas baru yang diinginkan. Ini membantu Anda memastikan bahwa instance siap untuk mulai melayani lalu lintas aplikasi dengan cepat, mempercepat respons terhadap peristiwa penskalaan. Sebagai contoh meninggalkan kolam hangat, mereka menghitung ke arah kapasitas yang diinginkan dari kelompok. Ini dikenal sebagai awal yang hangat.

Saat instance berada di kolam hangat, kebijakan penskalaan Anda hanya dapat ditingkatkan jika nilai metrik dari instans yang berada di InService status lebih besar daripada ambang batas tinggi alarm kebijakan penskalaan (yang sama dengan pemanfaatan target kebijakan penskalaan pelacakan target).

Ukuran kolam hangat

Secara default, ukuran kolam hangat dihitung sebagai perbedaan antara kapasitas maksimum grup Auto Scaling dan kapasitas yang diinginkan. Misalnya, jika kapasitas yang diinginkan dari grup Auto Scaling Anda adalah 6 dan kapasitas maksimum adalah 10, ukuran kolam hangat Anda akan menjadi 4 saat Anda pertama kali mengatur kolam hangat dan kolam diinisialisasi.

Untuk menentukan kapasitas maksimum kolam hangat secara terpisah, gunakan opsi spesifikasi khusus (MaxGroupPreparedCapacity) dan tetapkan nilai khusus untuknya yang lebih besar dari kapasitas grup saat ini. Jika Anda memberikan nilai khusus, ukuran kolam hangat dihitung sebagai perbedaan antara nilai kustom dan kapasitas grup yang diinginkan saat ini. Misalnya, jika kapasitas yang diinginkan dari grup Auto Scaling Anda adalah 6, jika kapasitas maksimum adalah 20, dan jika nilai kustom adalah 8, ukuran kolam hangat Anda akan menjadi 2 saat Anda pertama kali mengatur kolam hangat dan kolam sedang diinisialisasi.

Anda mungkin hanya perlu menggunakan opsi spesifikasi khusus (MaxGroupPreparedCapacity) saat bekerja dengan grup Auto Scaling besar untuk mengelola manfaat biaya memiliki kolam hangat. Misalnya, grup Auto Scaling dengan 1.000 instans, kapasitas maksimum 1.500 (untuk menyediakan kapasitas ekstra untuk lonjakan lalu lintas darurat), dan kolam hangat 100 instance dapat membantu Anda mencapai tujuan Anda lebih baik daripada menyimpan 500 instans yang dicadangkan untuk penggunaan masa depan di dalam kolam hangat.

Ukuran kolam hangat minimum

Pertimbangkan untuk menggunakan pengaturan ukuran minimum untuk secara statis mengatur jumlah minimum instance untuk dipertahankan di kolam hangat. Tidak ada ukuran minimum yang ditetapkan secara default.

Status contoh kolam hangat

Anda dapat menyimpan contoh di kolam hangat di salah satu dari tiga negara bagian:Stopped,Running, atauHibernated. Menjaga contoh dalam suatu Stopped keadaan adalah cara yang efektif untuk meminimalkan biaya. Dengan instans berhenti, Anda hanya membayar volume yang Anda gunakan dan alamat IP Elastis yang dilampirkan ke instans.

Atau, Anda dapat menyimpan instance dalam Hibernated status untuk menghentikan instance tanpa menghapus konten memori (). RAM Ketika sebuah instance hibernasi, ini menandakan sistem operasi untuk menyimpan konten Anda RAM ke volume EBS root Amazon Anda. Ketika instance dimulai lagi, volume root dikembalikan ke keadaan sebelumnya dan RAM isinya dimuat ulang. Saat instans dalam hibernasi, Anda hanya membayar EBS volume, termasuk penyimpanan untuk RAM konten, dan alamat IP Elastis yang dilampirkan ke instans.

Menjaga keadaan dalam Running keadaan di dalam kolam hangat juga dimungkinkan, tetapi sangat tidak disarankan untuk menghindari biaya yang tidak perlu. Ketika instance dihentikan atau hibernasi, Anda menghemat biaya instans itu sendiri. Anda membayar untuk contoh hanya ketika mereka berjalan.

Kait siklus hidup

Anda menggunakan kait siklus hidup untuk menempatkan instance ke status tunggu sehingga Anda dapat melakukan tindakan kustom pada instance. Tindakan kustom dilakukan saat instance diluncurkan atau sebelum dihentikan.

Dalam konfigurasi kolam hangat, kait siklus hidup menunda instance agar tidak dihentikan atau dihibernasi dan dimasukkan ke dalam layanan selama acara scale-out hingga selesai diinisialisasi. Jika Anda menambahkan kolam hangat ke grup Auto Scaling tanpa pengait siklus hidup, instance yang membutuhkan waktu lama untuk menyelesaikan inisialisasi dapat dihentikan atau dihibernasi dan kemudian dimasukkan ke dalam layanan selama acara scale-out sebelum siap.

Kebijakan penggunaan kembali instans

Secara default, Amazon EC2 Auto Scaling menghentikan instans Anda saat grup Auto Scaling Anda masuk. Kemudian, ia meluncurkan instance baru ke kolam hangat untuk menggantikan instance yang dihentikan.

Jika Anda ingin mengembalikan instance ke kolam hangat, Anda dapat menentukan kebijakan penggunaan kembali instance. Ini memungkinkan Anda menggunakan kembali instance yang sudah dikonfigurasi untuk melayani lalu lintas aplikasi. Untuk memastikan bahwa kolam hangat Anda tidak disediakan secara berlebihan, Amazon EC2 Auto Scaling dapat menghentikan instance di kolam hangat untuk mengurangi ukurannya ketika lebih besar dari yang diperlukan berdasarkan pengaturannya. Saat mengakhiri instance di kolam hangat, ia menggunakan kebijakan penghentian default untuk memilih instance mana yang akan dihentikan terlebih dahulu.

penting

Jika Anda ingin hibernasi instance pada skala dan ada instance yang ada di grup Auto Scaling, instance tersebut harus memenuhi persyaratan misalnya hibernasi. Jika tidak, ketika instance kembali ke kolam hangat, mereka akan mundur untuk dihentikan alih-alih hibernasi.

catatan

Saat ini, Anda hanya dapat menentukan kebijakan penggunaan kembali instance dengan menggunakan AWS CLI atau. SDK Fitur ini tidak tersedia dari konsol.

Prasyarat

Sebelum Anda membuat kolam hangat untuk grup Auto Scaling, putuskan bagaimana Anda akan menggunakan kait siklus hidup untuk menginisialisasi instance baru dengan status awal yang sesuai.

Untuk melakukan tindakan kustom pada instance saat berada dalam status tunggu karena hook siklus hidup, Anda memiliki dua opsi:

  • Untuk skenario sederhana di mana Anda ingin menjalankan perintah pada instance saat peluncuran, Anda dapat menyertakan skrip data pengguna saat membuat templat peluncuran atau konfigurasi peluncuran untuk grup Auto Scaling Anda. Skrip data pengguna hanyalah skrip shell normal atau direktif cloud-init yang dijalankan oleh cloud-init saat instance Anda dimulai. Skrip juga dapat mengontrol saat instance Anda bertransisi ke status berikutnya dengan menggunakan ID instance yang dijalankannya. Jika Anda belum melakukannya, perbarui skrip Anda untuk mengambil data ID instance dari metadata instance. Untuk informasi selengkapnya, lihat Mengambil metadata instans di Panduan Pengguna Amazon EC2.

    Tip

    Untuk menjalankan skrip data pengguna saat instance dimulai ulang, data pengguna harus dalam format MIME multi-bagian dan tentukan yang berikut ini di #cloud-config bagian data pengguna:

    #cloud-config cloud_final_modules: - [scripts-user, always]
  • Untuk skenario lanjutan di mana Anda memerlukan layanan seperti AWS Lambda melakukan sesuatu saat instance memasuki atau meninggalkan kolam hangat, Anda dapat membuat kait siklus hidup untuk grup Auto Scaling dan mengonfigurasi layanan target untuk melakukan tindakan kustom berdasarkan pemberitahuan siklus hidup. Untuk informasi selengkapnya, lihat Target notifikasi yang didukung.

Siapkan contoh untuk hibernasi

Untuk menyiapkan instans Auto Scaling agar menggunakan status Hibernated kumpulan, buat templat peluncuran baru atau konfigurasi peluncuran yang diatur dengan benar untuk mendukung hibernasi instans, seperti yang dijelaskan dalam topik prasyarat Hibernasi di Panduan Pengguna Amazon. EC2 Kemudian, kaitkan template peluncuran baru atau konfigurasi peluncuran dengan grup Auto Scaling dan mulai penyegaran instance untuk mengganti instance yang terkait dengan templat peluncuran atau konfigurasi peluncuran sebelumnya. Untuk informasi selengkapnya, lihat Menggunakan penyegaran instans untuk memperbarui instance dalam grup Auto Scaling.

Perbarui contoh di kolam yang hangat

Untuk memperbarui instance di kolam hangat, Anda membuat templat peluncuran baru atau konfigurasi peluncuran dan mengaitkannya dengan grup Auto Scaling. Setiap instance baru diluncurkan menggunakan pembaruan baru AMI dan lainnya yang ditentukan dalam templat peluncuran atau konfigurasi peluncuran, tetapi instance yang ada tidak terpengaruh.

Untuk memaksa instance kumpulan hangat pengganti diluncurkan yang menggunakan templat peluncuran baru atau konfigurasi peluncuran, Anda dapat memulai penyegaran instans untuk melakukan pembaruan bergulir grup Anda. Penyegaran instance pertama menggantikan InService instance. Kemudian menggantikan contoh di kolam hangat. Untuk informasi selengkapnya, lihat Menggunakan penyegaran instans untuk memperbarui instance dalam grup Auto Scaling.

Anda dapat mengunjungi GitHubrepositori kami untuk contoh kait siklus hidup untuk kolam hangat.

Batasan

  • Anda tidak dapat menambahkan kolam hangat ke grup Auto Scaling yang memiliki kebijakan instance campuran. Anda juga tidak dapat menambahkan kolam hangat ke grup Auto Scaling yang memiliki templat peluncuran atau konfigurasi peluncuran yang meminta Instans Spot.

  • Amazon EC2 Auto Scaling dapat menempatkan instance dalam Hibernated status Stopped atau hanya jika memiliki EBS volume Amazon sebagai perangkat root. Instance yang menggunakan penyimpanan instance untuk perangkat root tidak dapat dihentikan atau dihibernasi.

  • EC2Auto Scaling Amazon dapat menempatkan instance dalam Hibernated status hanya jika memenuhi semua persyaratan yang tercantum dalam topik prasyarat Hibernasi di Panduan Pengguna Amazon. EC2

  • Jika kolam hangat Anda habis saat ada acara scale-out, instance akan diluncurkan langsung ke grup Auto Scaling (awal yang dingin). Anda juga bisa mengalami start dingin jika Availability Zone di luar kapasitas.

  • Jika instance dalam kumpulan hangat mengalami masalah selama proses peluncuran, mencegahnya mencapai InService status, instance akan dianggap sebagai peluncuran yang gagal dan dihentikan. Ini berlaku terlepas dari penyebab yang mendasarinya, seperti kesalahan kapasitas yang tidak mencukupi atau faktor lainnya.

  • Jika Anda mencoba menggunakan kolam hangat dengan grup node terkelola Amazon Elastic Kubernetes Service (EKSAmazon), instance yang masih diinisialisasi dapat mendaftar ke cluster Amazon Anda. EKS Akibatnya, cluster mungkin menjadwalkan pekerjaan pada sebuah instance karena sedang bersiap untuk dihentikan atau hibernasi.

  • Demikian juga, jika Anda mencoba menggunakan kolam hangat dengan ECS cluster Amazon, instance mungkin mendaftar ke cluster sebelum selesai diinisialisasi. Untuk mengatasi masalah ini, Anda harus mengonfigurasi templat peluncuran atau konfigurasi peluncuran yang menyertakan variabel konfigurasi agen khusus dalam data pengguna. Untuk informasi selengkapnya, lihat Menggunakan kolam hangat untuk grup Auto Scaling Anda di Panduan Pengembang Layanan Kontainer Elastis Amazon.

  • Dukungan hibernasi untuk kolam hangat tersedia di semua iklan di mana Wilayah AWS Amazon Auto EC2 Scaling dan hibernasi tersedia, kecuali yang berikut:

    • Asia Pasifik (Hyderabad)

    • Asia Pasifik (Melbourne)

    • Kanada Barat (Calgary)

    • Wilayah Tiongkok (Beijing)

    • Wilayah China (Ningxia)

    • Eropa (Spanyol)

    • Israel (Tel Aviv)