Gunakan fitur warm-up ASM saat melakukan scale out aplikasi, men-deploy versi baru, atau mengantisipasi lonjakan traffic. Fitur ini secara bertahap meningkatkan traffic permintaan ke instans baru dalam jendela waktu kustom, sehingga memastikan transisi yang lancar serta mengurangi risiko gangguan layanan, timeout permintaan, dan kehilangan data akibat lonjakan traffic mendadak. Fitur ini membantu menjaga kinerja stabil dan ketersediaan tinggi selama scaling dan pembaruan aplikasi.
Prasyarat
-
Anda telah membuat instans ASM Edisi Perusahaan atau ASM Edisi Ultimate versi 1.14.3 atau lebih baru. Untuk informasi selengkapnya, lihat Buat instans ASM.
-
Anda telah terhubung ke kluster Container Service for Kubernetes (ACK) menggunakan kubectl. Untuk informasi selengkapnya, lihat Dapatkan file kubeconfig kluster dan gunakan kubectl untuk terhubung ke kluster.
-
Anda telah membuat gerbang masuk ASM. Untuk informasi selengkapnya, lihat Buat layanan gateway masuk.
-
Anda telah men-deploy aplikasi sampel Bookinfo. Topik ini menggunakan layanan Reviews sebagai contoh. Untuk informasi selengkapnya, lihat Deploy aplikasi di kluster yang terkait dengan instans ASM.
Informasi latar belakang
Tanpa fitur warm-up, Pod baru langsung menerima bagian penuh traffic-nya tanpa peningkatan bertahap. Hal ini bisa menjadi masalah bagi layanan yang memerlukan periode warm-up agar beroperasi optimal, seperti aplikasi berbasis JVM yang perlu melakukan kompilasi Just-In-Time (JIT) atau mengisi cache besar. Beban mendadak ini dapat menyebabkan timeout permintaan, kehilangan data, dan pengalaman pengguna yang menurun. Fitur warm-up mengatasi hal ini dengan secara bertahap mengalirkan traffic ke instans baru, sehingga instans tersebut memiliki waktu untuk bersiap melayani permintaan pada kapasitas penuh.
Fitur warm-up
Fitur warm-up, juga dikenal sebagai slow start atau progressive traffic ramp-up, memungkinkan Anda mengonfigurasi periode waktu untuk suatu layanan. Saat instans layanan dimulai, client mengirimkan sebagian kecil beban permintaan ke instans tersebut dan secara bertahap meningkatkan laju permintaan selama durasi yang dikonfigurasi. Setelah periode warm-up berakhir, instans mulai menerima bagian penuh traffic-nya.
Dalam mode slow start, Pod baru dilindungi dari lonjakan permintaan mendadak, sehingga instans baru dapat melakukan warm-up selama periode peningkatan sebelum menerima bagian penuh traffic-nya.
Fitur warm-up berguna untuk aplikasi yang bergantung pada caching dan memerlukan periode warm-up agar dapat merespons permintaan dengan kinerja optimal. Di ASM, Anda hanya perlu mengonfigurasi bagian trafficPolicy/loadBalancer dari DestinationRule yang sesuai untuk layanan tersebut. Perhatikan parameter berikut:
-
loadBalancer: menentukan pengaturan load balancer. Fitur ini hanya mendukung load balancer ROUND_ROBIN dan LEAST_REQUEST.
-
warmupDurationSecs: menentukan durasi warm-up untuk layanan. Jika diatur, titik akhir layanan yang baru dibuat tetap dalam mode warm-up selama durasi ini, dimulai sejak waktu pembuatannya. Selama jendela ini, Istio secara bertahap meningkatkan traffic ke titik akhir tersebut alih-alih langsung mengirimkan bagian proporsional traffic.
Fitur warm-up mensyaratkan bahwa jumlah replika aplikasi di zona ketersediaan saat ini tidak nol. Contohnya:
-
Jika kluster bidang data hanya memiliki satu zona ketersediaan, yaitu Zona A, dan saat ini terdapat satu replika di zona tersebut, fitur warm-up akan aktif ketika replika kedua dimulai.
-
Jika kluster bidang data memiliki dua zona ketersediaan, yaitu Zona A dan Zona B, dan satu-satunya replika yang ada berada di Zona A, maka memulai replika kedua di Zona B tidak akan memicu fitur warm-up. Hal ini dapat terjadi karena beberapa penjadwal secara default mendistribusikan replika ke berbagai zona ketersediaan. Dalam skenario ini, fitur warm-up akan aktif ketika replika ketiga dimulai.
Berikut adalah contoh DestinationRule dalam format YAML:
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: mocka
spec:
host: mocka
trafficPolicy:
loadBalancer:
simple: ROUND_ROBIN
warmupDurationSecs: 100s
Langkah 1: Konfigurasi routing dan akses gateway
Sebagai demonstrasi, atur jumlah replika untuk Penyebaran reviews-v3 menjadi 0.
-
Definisikan resource ingress.
-
Buat file bernama bookinfo-gateway.yaml dengan konten berikut.
-
Jalankan perintah berikut untuk men-deploy gateway dan virtual service.
kubectl apply -f bookinfo-gateway.yaml
-
-
Buat DestinationRule untuk layanan Reviews.
-
Buat file bernama reviews.yaml dengan konten berikut.
-
Jalankan perintah berikut untuk men-deploy DestinationRule.
kubectl apply -f reviews.yaml
-
-
Aktifkan topologi mesh dan terus-menerus akses alamat gateway masuk.
Topik ini menggunakan perintah
heyuntuk mengirim permintaan uji beban selama 10 detik. Untuk informasi tentang cara mengunduh dan menginstalhey, lihat hey. Untuk informasi selengkapnya tentang cara mengaktifkan dan melihat topologi mesh, lihat Lihat topologi mesh aplikasi.hey -z 10s -q 100 -c 4 http://${INGRESS_GATEWAY_ADDRESS}/reviews/0Gambar berikut menunjukkan contoh topologi pemanggilan:

Langkah 2: Amati startup Pod
-
Masuk ke Konsol ASM.
-
Di panel navigasi kiri, pilih .
-
Pada halaman Mesh Management, temukan instans ASM yang ingin Anda konfigurasi. Klik nama instans ASM tersebut atau klik Manage di kolom Actions.
-
Di panel navigasi kiri, pilih .
-
Untuk instans ASM versi sebelum 1.17.2.35: Pada halaman Monitoring metrics, klik tab Monitoring instrument, lalu klik tab Cloud ASM Istio Service, dan pilih layanan Reviews.
-
Untuk instans ASM versi 1.17.2.35 dan seterusnya: Pada halaman Monitoring metrics, klik tab Cloud ASM Istio Work load, pilih workload
reviews-v3, dan atur Reporter menjadisource.
-
-
Kirim permintaan uji beban dan amati data pemantauan.
-
Dengan fitur warm-up dinonaktifkan, naikkan jumlah replika untuk Penyebaran
reviews-v3dari 0 menjadi 1. -
Jalankan perintah berikut untuk mengirim permintaan uji beban ke gateway masuk.
Contoh ini mengirim permintaan uji beban selama 120 detik.
hey -z 120s -q 100 -c 4 http://${INGRESS_GATEWAY_ADDRESS}/reviews/0 -
Amati data pada dasbor pemantauan Prometheus.
Diperlukan sekitar 45 detik agar Pod
reviews-v3menerima bagian permintaan yang seimbang. Waktu aktual dapat bervariasi tergantung pada lingkungan uji beban Anda.
-
-
Turunkan kembali jumlah replika untuk Penyebaran
reviews-v3menjadi 0.
Langkah 3: Aktifkan fitur warm-up
-
Perbarui file reviews.yaml dengan konten berikut.
Tambahkan field
warmupDurationSecsdan atur nilainya menjadi120s, yang menetapkan durasi warm-up menjadi 120 detik.apiVersion: networking.istio.io/v1beta1 kind: DestinationRule metadata: name: reviews spec: host: reviews trafficPolicy: loadBalancer: simple: ROUND_ROBIN warmupDurationSecs: 120s -
Jalankan perintah berikut untuk menerapkan pembaruan.
kubectl apply -f reviews.yaml
Langkah 4: Verifikasi efek warm-up
-
Setelah mengaktifkan fitur warm-up, naikkan jumlah replika untuk Penyebaran
reviews-v3dari 0 menjadi 1. -
Jalankan perintah berikut untuk mengirim permintaan uji beban ke gateway masuk.
Contoh ini mengirim permintaan uji beban selama 150 detik.
hey -z 150s -q 100 -c 4 http://${INGRESS_GATEWAY_ADDRESS}/reviews/0 -
Pada tab Cloud ASM Istio Service, amati data pada dasbor pemantauan Prometheus.
Diperlukan sekitar 120 detik agar Pod
reviews-v3menerima bagian permintaan yang seimbang. Waktu aktual dapat bervariasi tergantung pada lingkungan uji beban Anda.
Kurva mungkin tampak bertahap karena metrik dikumpulkan dalam interval tertentu. Pada kenyataannya, traffic ke Pod reviews-v3meningkat secara mulus. Jika Anda mengaktifkan pengumpulan log sidecar, Anda dapat mencari log sidecar ini di Simple Log Service (SLS) untuk melihat volume log selama 5 menit terakhir.
Seperti yang diharapkan dengan fitur warm-up, instans baru awalnya menerima sebagian kecil traffic, yang kemudian meningkat secara mulus selama durasi yang dikonfigurasi hingga mencapai bagian penuhnya.Setelah fitur warm-up diaktifkan, diperlukan sekitar 2 menit 30 detik agar traffic didistribusikan secara merata di antara versi v1, v2, dan v3. Pada tampilan Service Graph Kiali, istio-ingressgateway mendistribusikan traffic hampir merata ke versi v1, v2, dan v3 layanan Reviews, masing-masing sebesar 33,3%, 33,3%, dan 33,4%. Versi v2 dan v3 kemudian memanggil layanan ratings v1, yang menunjukkan bahwa traffic telah seimbang setelah proses warm-up selesai.
Dokumen terkait
-
Anda dapat mengonfigurasi throttling lokal atau throttling global untuk menjaga traffic dalam ambang batas yang dapat dikelola, memastikan ketersediaan layanan dan kinerja stabil. Untuk informasi selengkapnya, lihat Konfigurasi throttling lokal di pusat manajemen traffic dan Gunakan ASMGlobalRateLimiter untuk mengonfigurasi throttling global untuk traffic ingress aplikasi.
-
ASMAdaptiveConcurrency menyediakan kontrol konkurensi adaptif dengan menyesuaikan secara dinamis jumlah permintaan konkuren yang diizinkan berdasarkan data permintaan yang diambil sampelnya. Ketika jumlah permintaan konkuren melebihi kapasitas layanan, permintaan akan ditolak untuk melindungi layanan. Untuk informasi selengkapnya, lihat Gunakan ASMAdaptiveConcurrency untuk kontrol konkurensi adaptif.
-
Anda dapat mengonfigurasi kolam koneksi untuk menerapkan pemutusan sirkuit, yang melindungi sistem Anda dari kerusakan lebih lanjut jika terjadi kegagalan atau kelebihan beban. Untuk informasi selengkapnya, lihat Konfigurasi kolam koneksi untuk pemutusan sirkuit.