Automatic Horizontal Scaling
Selain automatic vertical scaling, platform ini juga dapat secara otomatis menskalakan node secara horizontal, mengubah jumlah container di dalam sebuah layer (nodeGroup) berdasarkan beban yang masuk. Di sini, semua instance dalam layer yang sama didistribusikan secara merata di seluruh set perangkat keras (host) yang tersedia menggunakan aturan anti-affinity. Yakni, ketika container baru dibuat, itu ditempatkan di host dengan jumlah instance dari layer yang sama paling sedikit dan nilai beban terendah, yang memastikan reliabilitas dan ketersediaan tinggi dari proyek yang dihosting.
Automatic horizontal scaling diimplementasikan dengan bantuan tunable triggers, yang merupakan kondisi kustom untuk penambahan node (scale out) dan penghapusan node (scale in) berdasarkan beban. Setiap menit, platform menganalisis konsumsi sumber daya rata-rata (untuk jumlah menit yang ditentukan dalam trigger) untuk memutuskan apakah penyesuaian jumlah node diperlukan.
Di sini, statistik dikumpulkan untuk seluruh layer, sehingga jika ada tiga node dengan beban masing-masing 20%, 50%, dan 20%, nilai rata-rata yang dihitung adalah 30%. Selain itu, kondisi scale in dan out independen, yaitu periode yang dianalisis untuk satu tidak di-reset ketika yang lain dieksekusi.
Di bawah ini, kita akan membahas cara:
Triggers for Automatic Scaling
Untuk mengonfigurasi trigger untuk automatic horizontal scaling, ikuti langkah-langkah di bawah ini.
Saat satu server aplikasi bersertifikat (bukan container Docker kustom) di-scale out pada environment tanpa load balancers, NGINX balancer ditambahkan secara otomatis. Jika Anda memerlukan balancer lain untuk aplikasi Anda, itu harus ditambahkan secara manual sebelum peristiwa scaling pertama.
1. Klik tombol Settings untuk environment yang diperlukan.
2. Di tab yang terbuka, navigasikan ke bagian Monitoring > Auto Horizontal Scaling, di mana Anda dapat melihat daftar scaling triggers yang dikonfigurasi untuk environment saat ini (jika ada).
Gunakan tombol di panel alat untuk mengelola auto horizontal scaling untuk environment:
- Add - membuat trigger baru
- Edit - menyesuaikan trigger yang ada
- Remove - menghapus trigger yang tidak diperlukan
- Refresh - memperbarui daftar scaling triggers yang ditampilkan
Klik Add untuk melanjutkan.
3. Pilih layer environment yang diperlukan dari daftar drop-down dan pilih tipe sumber daya yang akan dimonitor melalui salah satu tab yang sesuai (CPU, Memory, Network, Disk I/O, Disk IOPS).
Node awal (master) dapat digunakan sebagai storage server untuk berbagi data dalam seluruh layer, termasuk node yang ditambahkan melalui automatic horizontal scaling. Batas CPU dan Memory dihitung berdasarkan jumlah cloudlets yang dialokasikan (unit sumber daya khusus platform, yang mewakili 400 MHz CPU dan 128 MiB RAM secara bersamaan).
4. Grafik di sebelah kanan menunjukkan statistik konsumsi sumber daya yang dipilih. Anda dapat memilih periode yang diperlukan untuk data yang ditampilkan (hingga satu minggu) menggunakan daftar drop-down yang sesuai. Jika diperlukan, Anda dapat mengaktifkan/nonaktifkan fungsi Auto Refresh statistik.
Anda juga dapat mengarahkan kursor ke grafik untuk melihat jumlah sumber daya yang digunakan pada saat tertentu. Gunakan informasi ini untuk mengatur kondisi yang tepat untuk trigger Anda.
5. Setiap trigger memiliki kondisi Add dan Remove Nodes, yang dapat diaktifkan dengan kotak centang yang sesuai di depan judul.
Keduanya dikonfigurasi dengan cara yang sama:
- When loading is more (less) than - batas atas (bawah) dalam persentase untuk beban rata-rata (yaitu mengeksekusi trigger jika melebihi)
Nilai yang diperlukan dapat dinyatakan melalui slider yang sesuai pada grafik. Nilai 100% secara otomatis menonaktifkan trigger Add Nodes, dan 0% menonaktifkan trigger Remove Nodes. Perbedaan minimum yang diizinkan antara kondisi Add dan Remove Nodes adalah 20%. Unit Mbps dapat dipilih untuk trigger Network sebagai pengganti persentase. Kami merekomendasikan menetapkan beban rata-rata untuk trigger Add Nodes di atas ambang 50% untuk menghindari scaling yang tidak diperlukan (yaitu sumber daya/biaya yang terbuang).
- For at least - jumlah menit yang dihitung konsumsi rata-ratanya (hingga satu jam dengan interval 5 menit, misalnya 1, 5, 10, 15, dll.)
- Scale out (in) to - jumlah maksimum (minimum) node untuk layer, yang dapat dikonfigurasi karena automatic horizontal scaling
- Scale by - jumlah node yang akan ditambahkan/dihapus sekaligus saat trigger dieksekusi
Saat mengonfigurasi trigger, kami merekomendasikan untuk mempertimbangkan scaling mode dari layer. Misalnya, Anda harus menetapkan persentase beban yang lebih rendah dalam trigger Add Nodes untuk mode stateful, karena cloning konten membutuhkan waktu (terutama untuk container dengan banyak data) dan Anda dapat mencapai batas sumber daya sebelum node baru dibuat.
6. Anda akan menerima notifikasi email secara otomatis tentang aktivitas trigger automatic horizontal scaling yang dikonfigurasi; namun, jika diperlukan, Anda dapat menonaktifkannya dengan Send Email Notifications switcher yang sesuai.
7. Di bagian bawah formulir, Anda memiliki tombol berikut:
- Undo Changes - kembali ke keadaan sebelumnya (hanya untuk pengeditan)
- Close - keluar dari dialog tanpa perubahan
- Apply (Add) - mengonfirmasi perubahan untuk trigger
Pilih opsi yang diperlukan untuk menyelesaikan pembuatan (penyesuaian) trigger.
Triggers Execution History
Anda dapat melihat riwayat eksekusi scaling triggers untuk environment tertentu.
Dalam contoh di bawah ini, kami akan menerapkan beban tinggi selama 5 menit (lihat statistik penggunaan RAM pada gambar di bawah) di application server dengan trigger berikut dikonfigurasi:
- add node ketika beban RAM rata-rata lebih dari 65% selama minimal 5 menit
- remove node ketika beban RAM rata-rata kurang dari 20% selama minimal 10 menit
Sekarang, mari kita lihat perilaku automatic horizontal scaling:
1. Navigasikan ke bagian Settings > Monitoring > Events History dan pilih opsi Horizontal Scaling dalam daftar drop-down Type.
Selain itu, Anda dapat menyesuaikan periode untuk menampilkan aktivitas trigger melalui kolom From dan To yang sesuai.
2. Detail berikut disediakan dalam daftar:
- Date dan waktu eksekusi trigger
- Action yang dilakukan (Add atau Remove Nodes)
- Nodes tipe yang diterapkan scaling
- Info tentang kondisi eksekusi trigger
Selain itu, dengan mengarahkan kursor ke rekaman tertentu, Anda dapat memeriksa Loading Value (penggunaan sumber daya pada saat eksekusi) dan Node Count (jumlah node yang dihasilkan).
Trigger Add dan Remove Nodes independen, sehingga kondisi penghapusan (beban rata-rata kurang dari 20% selama minimal 10 menit) tidak di-reset dan terus diperiksa bahkan setelah penambahan node baru. Pendekatan semacam itu memberikan deteksi lebih cepat terhadap beban rata-rata yang cukup selama interval yang ditentukan. Disarankan untuk menetapkan perbedaan signifikan antara batas scale out dan scale in untuk menghindari perubahan topologi yang sering.
Itu saja! Dengan cara ini, Anda dapat mengonfigurasi serangkaian tunable triggers untuk memastikan performa aplikasi Anda dan melacak aktivitas automatic horizontal scaling langsung melalui dashboard.
Jika Anda memiliki pertanyaan, jangan ragu untuk meminta bantuan dari ahli teknis kami di Stackoverflow.