Auto Scaling mendukung tugas terjadwal maupun tugas berbasis peristiwa (termasuk aturan pelacakan target). Jika keduanya diaktifkan secara bersamaan, konfigurasi yang tidak tepat dapat menyebabkan tugas berbasis peristiwa menggantikan skala keluar terjadwal, sehingga menghasilkan kapasitas yang tidak diharapkan. Memahami interaksi antara keduanya membantu Anda mengonfigurasinya dengan benar dan menghindari konflik penskalaan.
Skenario masalah
Ketika sebuah grup penskalaan memiliki jumlah instans yang diharapkan, tugas terjadwal, dan tugas berbasis peristiwa (seperti aturan pelacakan target) diaktifkan secara bersamaan, konflik dapat terjadi: tugas terjadwal memicu skala keluar, tetapi sebelum selesai, tugas berbasis peristiwa dijalankan dan menimpa jumlah instans yang diharapkan, sehingga mencegah skala keluar tersebut berlaku.
Kasus khas
Analisis penyebab
Akar permasalahan terletak pada mekanisme eksekusi yang berbeda antara tugas terjadwal dan tugas berbasis peristiwa:
|
Aspek |
Tugas terjadwal (hanya memodifikasi jumlah instans yang diharapkan) |
Tugas berbasis peristiwa |
|
Metode eksekusi |
Hanya memodifikasi nilai jumlah instans yang diharapkan tanpa langsung memicu aktivitas penskalaan. |
Langsung memicu aktivitas penskalaan dan sekaligus memperbarui jumlah instans yang diharapkan. |
|
Waktu berlaku |
Memerlukan waktu 30 detik hingga 1 menit untuk berlaku setelah jumlah instans yang diharapkan dimodifikasi. |
Berlaku segera. |
|
Risiko konflik |
Selama jendela penundaan, nilainya dapat ditimpa oleh tugas lain. |
Setelah dieksekusi, jumlah instans yang diharapkan diperbarui ke nilai aktual saat ini. |
Inti masalah: Ketika tugas terjadwal hanya memodifikasi jumlah instans yang diharapkan, operasi tersebut bukan perubahan kapasitas atomik yang langsung berlaku. Selama penundaan 30 detik hingga 1 menit, tugas berbasis peristiwa dapat memicu aktivitas penskalaan berdasarkan jumlah instans aktual saat ini, menghitung ulang, dan menimpa jumlah instans yang diharapkan.
Praktik terbaik: Tugas terjadwal untuk kapasitas dasar, tugas berbasis peristiwa untuk kapasitas elastis
Ikhtisar solusi
Gunakan model kapasitas berlapis "dasar + elastis" untuk memisahkan secara jelas tanggung jawab tugas terjadwal dan tugas berbasis peristiwa:
-
Kapasitas dasar (dikelola oleh tugas terjadwal): Gunakan tugas terjadwal untuk menetapkan jumlah minimum dan jumlah instans yang diharapkan, sehingga lantai kapasitas selama jam sibuk tidak dapat dikurangi oleh tugas berbasis peristiwa.
-
Kapasitas elastis (dikelola oleh tugas berbasis peristiwa): Gunakan aturan pelacakan target atau tugas berbasis peristiwa untuk menambah atau menghapus instans secara dinamis di atas kapasitas dasar berdasarkan beban aktual.

Prosedur
Contoh berikut menunjukkan konfigurasi yang direkomendasikan. Asumsikan bisnis Anda perlu melakukan skala keluar dari garis dasar harian 10 instans menjadi 50 pada pukul 08.00 setiap hari, memulihkan ke tingkat normal pada pukul 22.00, dan menggunakan aturan pelacakan target untuk mempertahankan utilisasi CPU pada 60%.
Langkah 1: Buat tugas skala keluar terjadwal
Buat tugas terjadwal yang menetapkan jumlah minimum dan jumlah instans yang diharapkan pada awal jam sibuk, sehingga kapasitas dasar langsung berlaku dan tidak dapat digantikan oleh tugas berbasis peristiwa.
-
Masuk ke Auto Scaling console.
-
Pada panel navigasi kiri, klik Scaling Groups.
-
Temukan grup penskalaan target dan klik namanya untuk membuka halaman detailnya.
-
Klik tab Scaling Rules and Tasks. Pada tab Scheduled Tasks, klik Create Scheduled Task.
-
Buat tugas skala keluar terjadwal dengan pengaturan berikut:
Parameter
Nilai
Task Name
scheduled-scale-up
Executed At
08.00 setiap hari (atau awal jam sibuk bisnis Anda)
Recurrence
Daily
Scaling Method
Configure Number of Instances in Scaling Group
Minimum Instances
50
Expected Instances
50
Konfigurasi kunci: Tetapkan Scaling Method ke Configure Number of Instances in Scaling Group, dan tetapkan baik Minimum Instances maupun Expected Instances ke 50. Dengan cara ini, tugas terjadwal secara simultan memperbarui jumlah minimum instans dan jumlah instans yang diharapkan, sehingga mencegah tugas berbasis peristiwa melakukan skala-masuk di bawah 50 instans.
Langkah 2: Buat tugas skala-masuk terjadwal
Buat tugas skala-masuk terjadwal berpasangan. Setelah jam sibuk berakhir, kembalikan jumlah minimum instans ke tingkat normal untuk menghindari pemborosan resource.
-
Pada tab Scheduled Tasks, klik Create Scheduled Task dan gunakan pengaturan berikut:
Parameter
Nilai
Task Name
scheduled-scale-down
Executed At
22.00 setiap hari (atau akhir jam sibuk bisnis Anda)
Recurrence
Daily
Scaling Method
Configure Number of Instances in Scaling Group
Minimum Instances
10
Expected Instances
10
Langkah 3: Konfigurasi aturan pelacakan target
Buat aturan pelacakan target yang memungkinkan tugas berbasis peristiwa melakukan penskalaan otomatis berdasarkan beban aktual di atas kapasitas dasar yang ditetapkan oleh tugas terjadwal.
-
Klik tab Scaling Rules and Tasks. Pada tab Scaling Rules, klik Create Scaling Rule.
-
Buat aturan pelacakan target dengan pengaturan berikut:
Parameter
Nilai
Rule Type
Target Tracking Scaling Rule
Metric Type
(ECS) Average CPU Utilization
Target Value
60%
Aturan pelacakan target secara otomatis menyesuaikan jumlah instans antara jumlah minimum dan maksimum instans dalam grup penskalaan berdasarkan utilisasi CPU. Karena tugas terjadwal menetapkan jumlah minimum instans menjadi 50, jumlah instans tidak akan turun di bawah 50 meskipun utilisasi CPU rendah.
Perilaku yang diharapkan setelah konfigurasi
|
Waktu |
Event |
Jumlah minimum instans |
Jumlah instans yang diharapkan |
Efek aktual |
|
08.00 setiap hari |
Tugas skala keluar terjadwal dipicu |
10 → 50 |
10 → 50 |
Langsung mulai melakukan skala keluar menjadi 50 instans |
|
08.00 – 22.00 |
Aturan pelacakan target berjalan terus-menerus |
50 |
≥50 |
Ketika utilisasi CPU melebihi 60%, lakukan skala keluar di atas dasar 50 instans. Ketika di bawah 60%, lakukan skala-masuk hingga minimum 50 instans. |
|
22.00 setiap hari |
Tugas skala-masuk terjadwal dipicu |
50 → 10 |
50 → 10 |
Kembalikan ke tingkat kapasitas normal. Instans berlebih dilepas secara bertahap. |
|
Waktu lainnya |
Aturan pelacakan target berjalan terus-menerus |
10 |
≥10 |
Lakukan penskalaan elastis dari dasar 10 instans berdasarkan utilisasi CPU |
Poin konfigurasi utama
-
Pilih "Configure Number of Instances in Scaling Group" sebagai metode penskalaan untuk tugas terjadwal. Tetapkan jumlah minimum instans dan jumlah instans yang diharapkan, bukan hanya memodifikasi jumlah instans yang diharapkan.
-
Buat tugas terjadwal secara berpasangan: Tugas skala keluar dan skala-masuk harus dibuat berpasangan untuk memastikan jumlah minimum instans kembali ke kondisi normal setelah jam sibuk dan menghindari pemborosan resource.
-
Hubungan antara jumlah minimum instans, jumlah instans yang diharapkan, dan jumlah maksimum instans:
-
Tugas terjadwal mengontrol kapasitas dasar dengan menetapkan jumlah minimum instans dan jumlah instans yang diharapkan.
-
Tugas berbasis peristiwa dan aturan pelacakan target menyesuaikan secara elastis antara jumlah minimum instans dan jumlah maksimum instans.
-
Aturan sistem internal menjamin bahwa jumlah minimum instans ≤ jumlah instans yang diharapkan ≤ jumlah maksimum instans. Prioritasnya jelas, sehingga tidak diperlukan mekanisme tambahan untuk menghindari konflik.
-
FAQ
-
Setelah tugas terjadwal berhasil melakukan skala keluar, apakah aturan pelacakan target akan melakukan skala-masuk jika utilisasi CPU rendah?
Tidak. Tugas terjadwal juga menetapkan Minimum Instances. Aturan pelacakan target tidak akan melakukan skala-masuk di bawah Minimum Instances. Inilah alasan pentingnya menetapkan Minimum Instances secara simultan.
-
Apakah layak hanya memodifikasi jumlah instans yang diharapkan dalam tugas terjadwal?
Tidak disarankan. Hanya memodifikasi Expected Instances mengandung risiko berikut:
-
Perubahan Expected Instances memiliki penundaan 30 detik hingga 1 menit sebelum berlaku. Selama periode ini, tugas berbasis peristiwa dapat menimpa nilainya.
-
Bahkan jika skala keluar berhasil, karena Minimum Instances tidak diperbarui sesuai, aturan pelacakan target dapat melakukan skala-masuk di bawah tingkat yang diinginkan.
-
-
Apakah saya perlu menetapkan jumlah maksimum instans dalam tugas terjadwal?
Umumnya tidak. Maximum Instances biasanya tetap sebagai batas atas tetap untuk mencegah penskalaan tak terbatas dalam situasi abnormal. Jika bisnis Anda memerlukan batas instans berbeda pada waktu berbeda, Anda juga dapat menyesuaikan Maximum Instances dalam tugas terjadwal.
-
Apakah konflik akan terjadi dengan tugas berbasis peristiwa yang menggunakan aturan simple alih-alih aturan pelacakan target?
Ya, konflik tetap dapat terjadi. Terlepas dari apakah tugas berbasis peristiwa terkait dengan Simple Scaling Rule, Step Scaling Rule, atau Target Tracking Scaling Rule, tugas tersebut akan menimpa Expected Instances jika dipicu selama periode penundaan tugas terjadwal. Solusi dalam topik ini berlaku untuk semua jenis tugas berbasis peristiwa.