Suite penjadwalan lalu lintas Service Mesh (ASM) mendukung kebijakan peluncuran layanan progresif. Saat meluncurkan layanan baru, Anda dapat mengonfigurasi kebijakan ini untuk secara bertahap meningkatkan lalu lintas yang diterima oleh layanan tersebut, memastikan kelancaran proses peluncuran. Topik ini menjelaskan cara menggunakan LoadRampingPolicy dari suite manajemen lalu lintas untuk melaksanakan peluncuran layanan progresif.
Informasi Latar Belakang
LoadRampingPolicy mendefinisikan kebijakan peluncuran layanan progresif dengan memungkinkan peningkatan bertahap permintaan yang diterima oleh layanan. Kebijakan ini bekerja menggunakan komponen berikut:
Pengambil sampel permintaan: Menolak persentase tertentu dari permintaan pada tahap awal peluncuran layanan.
Pengukur beban: Memantau beban layanan dalam rentang ambang batas tertentu. Ketika beban stabil, pengambil sampel permintaan secara bertahap mengurangi persentase permintaan yang ditolak hingga hampir semua permintaan diterima.
Dengan LoadRampingPolicy, Anda dapat mencegah kesalahan layanan akibat lonjakan lalu lintas saat meluncurkan layanan baru di kluster. Kebijakan ini juga memeriksa beban layanan secara real-time untuk memastikan peningkatan bertahap lalu lintas yang diterima, sehingga memfasilitasi peluncuran layanan yang lancar.
Prasyarat
Kluster Container Service for Kubernetes (ACK) telah ditambahkan ke instance ASM, dengan versi V1.21.X.XX atau lebih baru. Untuk informasi lebih lanjut, lihat Tambahkan kluster ke instance ASM.
Injeksi proxy sidecar otomatis diaktifkan untuk namespace default di kluster ACK. Untuk informasi lebih lanjut, lihat Kelola namespace global.
Anda telah terhubung ke kluster ACK menggunakan kubectl. Untuk informasi lebih lanjut, lihat Dapatkan file kubeconfig kluster dan gunakan kubectl untuk terhubung ke kluster.
Suite penjadwalan lalu lintas ASM diaktifkan. Untuk informasi lebih lanjut, lihat Aktifkan suite penjadwalan lalu lintas ASM.
Aplikasi HTTPBin telah diterapkan dan dapat diakses melalui gateway. Untuk informasi lebih lanjut, lihat Terapkan aplikasi HTTPBin.
Langkah 1: Buat LoadRampingPolicy
Gunakan kubectl untuk terhubung ke instance ASM. Untuk informasi lebih lanjut, lihat Gunakan kubectl pada bidang kontrol untuk mengakses sumber daya Istio.
Buat file LoadRampingPolicy.yaml dengan konten berikut:
apiVersion: istio.alibabacloud.com/v1 kind: LoadRampingPolicy metadata: name: load-ramping namespace: istio-system spec: drivers: average_latency_drivers: - selectors: - service: httpbin.default.svc.cluster.local criteria: forward: threshold: 100 reset: threshold: 200 start: true load_ramp: sampler: selectors: - service: httpbin.default.svc.cluster.local steps: - duration: 0s target_accept_percentage: 1 - duration: 300s target_accept_percentage: 100.0Tabel berikut menjelaskan beberapa bidang. Untuk informasi lebih lanjut tentang bidang terkait, lihat Deskripsi bidang LoadRampingPolicy.
Bidang
Deskripsi
langkah-langkah
Definisi fase peluncuran. Dalam contoh ini, dua fase peluncuran didefinisikan. Definisi ini mengharuskan persentase permintaan yang diterima oleh pengambil sampel permintaan dalam 300 detik mendekati 100%.
pemilih
Layanan tempat kebijakan peluncuran progresif diterapkan. Dalam contoh ini, httpbin.default.svc.cluster.local digunakan. Ini menunjukkan bahwa peluncuran progresif dilakukan pada layanan httpbin.default.svc.cluster.local.
kriteria
Menentukan tolok ukur pengukuran beban layanan. Dalam contoh ini, bidang kriteria mendefinisikan konten berikut: (1) Ketika latensi rata-rata layanan kurang dari 100 ms, peluncuran layanan berlanjut. (2) Ketika latensi rata-rata layanan lebih dari 200 ms, peluncuran layanan diatur ulang dan pengambil sampel permintaan menolak permintaan pada persentase penolakan maksimum.
Jalankan perintah berikut untuk mengonfigurasi kebijakan peluncuran layanan progresif:
kubectl apply -f LoadRampingPolicy.yaml
Langkah 2: Verifikasi apakah LoadRampingPolicy berlaku
Dalam contoh ini, alat uji stres Fortio digunakan. Untuk informasi lebih lanjut, lihat bagian Instalasi Fortio di situs web GitHub.
Jalankan perintah berikut untuk melakukan uji stres pada aplikasi HTTPBin:
fortio load -c 10 -qps 0 -t 300s -allow-initial-errors -a http://${IP address of the ASM ingress gateway}/status/200CatatanGanti
${IP address of the ASM ingress gateway}dalam perintah sebelumnya dengan alamat IP gateway masuk ASM Anda. Untuk informasi lebih lanjut tentang cara mendapatkan alamat IP gateway masuk ASM, lihat sublangkah 1 dari Langkah 3 dalam topik Gunakan sumber daya Istio untuk merutekan lalu lintas ke versi layanan yang berbeda.Output yang diharapkan:
... # target 50% 0.0613214 # target 75% 0.0685102 # target 90% 0.0756739 # target 99% 0.0870132 # target 99.9% 0.115361 Sockets used: 31529 (for perfect keepalive, would be 10) Uniform: false, Jitter: false Code 200 : 26718 (45.9 %) Code 403 : 31510 (54.1 %) Response Header Sizes : count 58228 avg 111.04245 +/- 120.6 min 0 max 243 sum 6465780 Response Body/Total Sizes : count 58228 avg 185.18012 +/- 52.32 min 137 max 243 sum 10782668 All done 58228 calls (plus 10 warmup) 51.524 ms avg, 194.1 qpsOutput menunjukkan bahwa latensi rata-rata permintaan adalah 51 ms, yang berada dalam rentang yang diizinkan. Kode status 403 dikembalikan untuk sekitar setengah dari permintaan. Selama 300 detik pengujian, persentase permintaan yang diterima oleh layanan meningkat dari 1% menjadi 100%.
Jalankan perintah berikut untuk melakukan uji stres pada aplikasi HTTPBin lagi:
fortio load -c 10 -qps 0 -t 300s -allow-initial-errors -a http://${IP address of the ASM ingress gateway}/status/200Output yang diharapkan:
... # target 50% 0.0337055 # target 75% 0.0368905 # target 90% 0.0396488 # target 99% 0.0791 # target 99.9% 0.123187 Sockets used: 455 (for perfect keepalive, would be 10) Uniform: false, Jitter: false Code 200 : 82959 (99.5 %) Code 403 : 445 (0.5 %) Response Header Sizes : count 83404 avg 240.71018 +/- 17.63 min 0 max 243 sum 20076192 Response Body/Total Sizes : count 83404 avg 241.44115 +/- 7.649 min 137 max 243 sum 20137158 All done 83404 calls (plus 10 warmup) 35.970 ms avg, 278.0 qpsOutput menunjukkan bahwa hanya 0,5% permintaan yang ditolak, dan persentase permintaan yang diterima mencapai 99,5%. Ini menunjukkan bahwa peluncuran layanan progresif telah selesai.
Hapus LoadRampingPolicy.
Gunakan kubectl untuk terhubung ke instance ASM. Untuk informasi lebih lanjut, lihat Gunakan kubectl pada bidang kontrol untuk mengakses sumber daya Istio.
Jalankan perintah berikut untuk menghapus LoadRampingPolicy setelah layanan diluncurkan:
kubectl delete loadrampingpolicy load-ramping -n istio-systemPentingDalam contoh ini,
LoadRampingPolicymensimulasikan peluncuran progresif layanan selama 300 detik. Karena Anda mengatur bagiancriteria.reset.threshold, setelah memverifikasi hasil kebijakan peluncuran layanan progresif, Anda harus secara manual menghapus LoadRampingPolicy untuk mencegah peluncuran progresif dipicu lagi karena fluktuasi latensi layanan, memastikan layanan berfungsi sesuai harapan.
Referensi
Anda dapat memverifikasi apakah LoadRampingPolicy berlaku pada Grafana. Pastikan instance Prometheus untuk Grafana telah dikonfigurasi dengan suite penjadwalan lalu lintas ASM.
Impor konten berikut ke Grafana untuk membuat dasbor untuk LoadRampingPolicy.
Dasbor adalah sebagai berikut.
