Ketika aplikasi Anda perlu diperluas, versi baru diterapkan, atau lonjakan trafik diperkirakan, gunakan fitur pemanasan dari Service Mesh (ASM) untuk secara bertahap meningkatkan trafik permintaan dalam jendela waktu kustom. Fitur ini memastikan transisi yang mulus dan mengurangi risiko gangguan layanan, timeout permintaan, serta potensi kehilangan data akibat lonjakan beban mendadak. Dengan demikian, performa stabil dan ketersediaan tinggi tetap terjamin selama penyesuaian skala dan pembaruan aplikasi.
Prasyarat
Sebuah instance ASM Edisi Enterprise atau Edisi Ultimate telah dibuat, dengan versi instance ASM 1.14.3 atau lebih baru. Untuk informasi lebih lanjut, lihat Buat instance ASM.
Cluster Container Service for Kubernetes (ACK) terhubung menggunakan kubectl. Untuk informasi lebih lanjut, lihat Dapatkan file kubeconfig cluster dan gunakan kubectl untuk terhubung ke cluster.
Sebuah gateway masuk telah dibuat. Untuk informasi lebih lanjut, lihat Buat gateway masuk.
Sebuah aplikasi contoh bernama Bookinfo telah diterapkan. Dalam contoh ini, layanan reviews digunakan. Untuk informasi lebih lanjut, lihat Terapkan aplikasi dalam instance ASM.
Informasi latar belakang
Jika fitur pemanasan dinonaktifkan, sejumlah trafik proporsional dikirim ke pod baru ketika sebuah pod ditambahkan. Namun, beberapa layanan memerlukan waktu untuk memanas sebelum dapat memproses semua permintaan yang ditugaskan. Dalam kasus ini, timeout permintaan dan kehilangan data mungkin terjadi, yang mengganggu pengalaman pengguna. Sebagai contoh, aplikasi web berbasis Java virtual machine (JVM) menggunakan fitur autoscaling horizontal pod. Setelah pod ditambahkan, pod tersebut langsung dibanjiri oleh sejumlah besar permintaan, menyebabkan respons lambat atau timeout karena sedang memanas. Prinsip kerja fitur pemanasan adalah memungkinkan pod baru menerima trafik secara bertahap.
Gunakan fitur pemanasan
Fitur pemanasan memungkinkan Anda menentukan periode waktu untuk layanan. Ketika fitur ini diaktifkan, instance baru hanya menerima sejumlah kecil permintaan saat mulai beroperasi. Jumlah permintaan meningkat secara bertahap selama periode waktu yang ditentukan. Setelah periode waktu berakhir, instance keluar dari mode pemanasan.
Mode pemanasan mencegah pod baru kelebihan beban akibat lonjakan permintaan. Pod baru memiliki waktu untuk memanas sebelum memproses permintaan berdasarkan kebijakan penyeimbangan beban yang ditentukan.
Fitur ini sangat membantu untuk aplikasi yang bergantung pada cache dan perlu memanas untuk memberikan performa optimal. Untuk mengaktifkan fitur ini pada layanan, atur bidang trafficPolicy.loadBalancer dalam file YAML DestinationRule. Perhatikan bidang-bidang berikut:
loadBalancer: Menentukan jenis kebijakan penyeimbangan beban. Nilai valid: ROUND_ROBIN dan LEAST_REQUEST.
warmupDurationSecs: Menentukan durasi pemanasan layanan. Endpoint baru dari layanan tetap dalam mode pemanasan selama periode waktu yang ditentukan setelah dibuat. Selama periode ini, Istio secara bertahap meningkatkan jumlah trafik untuk endpoint tersebut alih-alih mengirimkan jumlah trafik yang proporsional.
Fitur pemanasan memerlukan bahwa jumlah replika pod aplikasi di zona saat ini tidak boleh nol. Berikut ini menjelaskan dua skenario:
Cluster ACK pada bidang data hanya diterapkan di zona A: Jika aplikasi memiliki satu replika pod di zona A, fitur pemanasan berlaku ketika Anda memulai yang kedua.
Cluster ACK pada bidang data diterapkan di zona A dan B: Jika aplikasi hanya memiliki satu replika pod di zona A, fitur pemanasan tidak berlaku ketika Anda memulai yang kedua di zona B. Secara default, scheduler diterapkan lintas zona. Dalam hal ini, fitur pemanasan berlaku ketika Anda memulai yang ketiga.
Contoh file YAML untuk DestinationRule:
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
name: mocka
spec:
host: mocka
trafficPolicy:
loadBalancer:
simple: ROUND_ROBIN
warmupDurationSecs: 100sLangkah 1: Konfigurasikan aturan routing dan akses gateway masuk
Dalam contoh ini, jumlah pod replika untuk Deployment reviews-v3 di cluster ACK diskalakan menjadi nol terlebih dahulu.
Tentukan gateway masuk.
Buat file bernama bookinfo-gateway.yaml yang berisi konten berikut:
Jalankan perintah berikut untuk menerapkan bookinfo-gateway:
kubectl apply -f bookinfo-gateway.yaml
Buat layanan bernama reviews.
Buat file bernama reviews.yaml yang berisi konten berikut:
Jalankan perintah berikut untuk menerapkan layanan reviews:
kubectl apply -f reviews.yaml
Akses terus-menerus alamat IP gateway masuk dan lihat topologi mesh layanan Anda.
Dalam contoh ini, perintah hey digunakan untuk mengirim permintaan selama 10 detik untuk mensimulasikan skenario stres. Untuk informasi lebih lanjut tentang cara mengunduh dan menginstal hey, lihat hey. Untuk informasi lebih lanjut tentang cara mengaktifkan fitur observabilitas ASM dan melihat topologi, lihat Gunakan Mesh Topology untuk melihat topologi aplikasi.
hey -z 10s -q 100 -c 4 http://${IP address of the ingress gateway}/reviews/0Gambar berikut menunjukkan topologi panggilan.

Langkah 2: Lihat jumlah permintaan yang dikirim ke pod baru
Masuk ke Konsol ASM.
Di panel navigasi sisi kiri, pilih .
Pada halaman Mesh Management, temukan instance ASM yang ingin Anda konfigurasikan. Klik nama instance ASM atau klik Manage di kolom Actions.
Di panel navigasi sisi kiri, pilih .
Jika versi instance ASM lebih awal dari 1.17.2.35, klik tab Monitoring instrument pada halaman Monitoring indicators. Di tab Instrumen Pemantauan, klik tab Cloud ASM Istio Service dan pilih layanan reviews.
Jika versi instance ASM adalah 1.17.2.35 atau lebih baru, klik tab Cloud ASM Istio Work load pada halaman Monitoring indicators, pilih reviews-v3 dari daftar drop-down Workload, dan kemudian pilih source dari daftar drop-down Reporter.
Kirim permintaan untuk uji stres dan amati data pemantauan.
Pastikan fitur pemanasan dinonaktifkan. Skalakan jumlah pod replika untuk Deployment reviews-v3 di cluster ACK dari nol menjadi satu.
Jalankan perintah berikut untuk mengirim permintaan ke gateway masuk untuk uji stres.
Dalam contoh ini, uji stres berlangsung selama 120 detik.
hey -z 120s -q 100 -c 4 http://${IP address of the ingress gateway}/reviews/0Amati dasbor pada halaman Pemantauan Prometheus.
Pod reviews-v3 mulai menerima permintaan pada laju yang stabil sekitar 45 detik setelah uji stres dimulai. Jumlah waktu yang diperlukan tergantung pada lingkungan uji stres.

Skalakan jumlah pod replika untuk Deployment reviews-v3 di cluster ACK menjadi nol.
Langkah 3: Aktifkan fitur pemanasan
Perbarui file reviews.yaml untuk berisi konten berikut:
Tambahkan bidang
warmupDurationSecsdan atur nilainya menjadi120s.apiVersion: networking.istio.io/v1beta1 kind: DestinationRule metadata: name: reviews spec: host: reviews trafficPolicy: loadBalancer: simple: ROUND_ROBIN warmupDurationSecs: 120sJalankan perintah berikut untuk memperbarui layanan reviews:
kubectl apply -f reviews.yaml
Langkah 4: Lihat efek fitur pemanasan
Skalakan jumlah pod replika untuk Deployment reviews-v3 di cluster ACK dari nol menjadi satu.
Jalankan perintah berikut untuk mengirim permintaan ke gateway masuk untuk uji stres.
Dalam contoh ini, uji stres berlangsung selama 150 detik.
hey -z 150s -q 100 -c 4 http://${IP address of the ingress gateway}/reviews/0Pada tab Cloud ASM Istio Service, lihat dasbor untuk mesh layanan.
Pod reviews-v3 mulai menerima permintaan pada laju yang stabil sekitar 120 detik setelah uji stres dimulai. Jumlah waktu yang diperlukan tergantung pada lingkungan uji stres.
Kurva ini tidak mulus karena metrik dikumpulkan pada interval. Faktanya, trafik ke pod reviews-v3 meningkat secara mulus. Jika Anda telah mengaktifkan pengumpulan log untuk proxy sidecar, Anda dapat mencari log proxy sidecar di konsol Layanan Log Sederhana. Log dalam 5 menit terakhir ditampilkan.
Ketika fitur pemanasan diaktifkan, instance baru hanya menerima sejumlah kecil permintaan saat mulai beroperasi. Jumlah permintaan meningkat secara bertahap selama periode waktu yang ditentukan. Ketika periode waktu yang ditentukan berakhir, instance keluar dari mode pemanasan.Ketika fitur pemanasan diaktifkan, dibutuhkan sekitar 150 detik sebelum trafik didistribusikan secara merata ke reviews-v1, reviews-v2, dan reviews-v3.

Referensi
Anda dapat mengonfigurasi throttling lokal atau global untuk menjaga trafik dalam ambang batas yang dikonfigurasi demi memastikan ketersediaan berkelanjutan dan performa stabil layanan. Untuk informasi lebih lanjut, lihat Konfigurasikan throttling lokal di Pusat Manajemen Trafik dan Gunakan ASMGlobalRateLimiter untuk mengonfigurasi throttling global untuk trafik masuk yang diarahkan ke layanan ke dalam proxy sidecar yang disuntikkan.
Anda dapat menggunakan ASMAdaptiveConcurrency untuk menyesuaikan secara dinamis jumlah maksimum permintaan konkuren yang diizinkan untuk layanan berdasarkan data permintaan yang diambil sampel. Jika jumlah permintaan konkuren melebihi nilai maksimum yang didukung oleh layanan, permintaan berlebih ditolak untuk melindungi layanan. Untuk informasi lebih lanjut, lihat Gunakan ASMAdaptiveConcurrency untuk mengimplementasikan kontrol konkurensi adaptif.
Pemutusan sirkuit adalah mekanisme manajemen trafik yang digunakan untuk melindungi sistem Anda dari kerusakan lebih lanjut jika terjadi kegagalan sistem atau kelebihan beban. Untuk informasi lebih lanjut, lihat Konfigurasikan bidang connectionPool untuk mengimplementasikan pemutusan sirkuit.