Saat lalu lintas masuk, gateway cloud-native dari Microservices Engine (MSE) sangat sensitif terhadap jumlah lalu lintas bisnis. Berdasarkan kemampuan Kubernetes dan data metrik permintaan per detik (QPS) yang dikumpulkan oleh gateway cloud-native MSE, aplikasi bisnis dapat melakukan penskalaan otomatis berdasarkan nilai QPS pod bisnis. Dengan cara ini, Anda dapat menambah atau mengurangi layanan backend sesuai kebutuhan. Topik ini menjelaskan cara melakukan penskalaan otomatis untuk aplikasi bisnis di kluster Container Service for Kubernetes (ACK) berdasarkan log akses gateway.
Prasyarat
Sebuah gateway cloud-native telah dibuat. Untuk informasi lebih lanjut, lihat Buat gateway cloud-native.
Sebuah kluster ACK dikelola telah dibuat. Untuk informasi lebih lanjut, lihat Buat kluster ACK dikelola.
Prosedur
Sebarkan sumber daya berikut di kluster Alibaba Cloud ACK:
Masuk ke Konsol ACK. Di panel navigasi sebelah kiri, pilih .
Masukkan ack-alibaba-cloud-metrics-adapter di kotak pencarian, lalu klik ikon pencarian. Klik kartu aplikasi tersebut, lalu klik Deploy di pojok kanan atas halaman detail. Di panel Deploy, konfigurasikan pengaturan terkait dan klik OK.

Di panel navigasi sebelah kiri, klik Clusters.
Di halaman Clusters, temukan kluster yang ingin Anda kelola dan klik namanya. Di panel sebelah kiri, pilih .
Di halaman Deployments, klik Create Resources in YAML. Pilih Kustom dari daftar drop-down Contoh Template, masukkan kode YAML berikut di editor kode, lalu klik Create.
apiVersion: apps/v1 kind: Deployment metadata: name: httpbin-deploy labels: app: httpbin-deploy spec: replicas: 1 selector: matchLabels: app: httpbin template: metadata: labels: app: httpbin spec: containers: - image: kennethreitz/httpbin imagePullPolicy: IfNotPresent name: httpbin ports: - name: http containerPort: 80 --- apiVersion: v1 kind: Service metadata: name: httpbin-svc namespace: default labels: app: httpbin-svc spec: ports: - port: 8080 name: http protocol: TCP targetPort: 80 selector: app: httpbin type: ClusterIP
Tambahkan sumber layanan ke gateway cloud-native MSE dan tambahkan layanan.
Masuk ke Konsol MSE. Di bilah navigasi atas, pilih wilayah.
Di panel navigasi sebelah kiri, pilih Cloud-native Gateway > Gateways. Di halaman Gateway, klik ID gateway.
Di panel navigasi sebelah kiri, klik Routes. Lalu, klik tab Source.
Di halaman Sumber, klik Add Source. Di panel Tambah Sumber, atur Source Type menjadi Container Service, pilih kluster ACK tempat aplikasi diterapkan, lalu klik OK.
Di panel navigasi sebelah kiri, klik Routes. Lalu, klik tab Services.
Di halaman Layanan, klik Add Service. Di panel Tambah Layanan, pilih sumber layanan yang Anda buat di bagian Services, lalu klik OK.
Tambahkan aturan routing untuk layanan yang dibuat. Untuk informasi lebih lanjut, lihat Buat aturan routing.
Aktifkan layanan pengiriman log.
Di panel navigasi sebelah kiri, klik Parameter Settings.
Di bagian Observability Parameters, klik ikon
di sebelah Log Shipping. Di kotak dialog Pengaturan Pengiriman Log, aktifkan Aktifkan Pengiriman Log (Kirim Log Akses Gateway ke Layanan Log) dan Compatible with NGINX Ingress.
Buat HorizontalPodAutoscaler (HPA) di kluster ACK dan konfigurasikan pengaturan terkait.
Pengaturan tersebut mencakup aplikasi bisnis backend tempat penskalaan otomatis perlu dilakukan, jumlah minimum replika selama penskalaan otomatis, jumlah maksimum replika selama penskalaan otomatis, dan metrik tempat penskalaan otomatis didasarkan. Dalam contoh kode berikut, nilai parameter sls.project adalah nama proyek tempat log dikirimkan di halaman Ikhtisar gateway di Konsol MSE. Nilai parameter sls.ingress.route berada dalam format
<Namespace Layanan>-<Nama Layanan>-<Nomor Port Layanan>. Dalam contoh ini, penskalaan keluar dipicu ketika nilai QPS rata-rata pod bisnis melebihi 10.apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler metadata: name: higress-hpa spec: scaleTargetRef: apiVersion: apps/v1beta2 kind: Deployment name: httpbin-deploy minReplicas: 1 maxReplicas: 10 metrics: - type: External external: metric: name: sls_ingress_qps selector: matchLabels: sls.project: "aliyun-product-data-xxxxxxxxxxxxx-cn-hangzhou" sls.logstore: "nginx-ingress" sls.ingress.route: "default-httpbin-svc-8080" target: type: AverageValue averageValue: 10Kontrol QPS, lakukan uji stres pada aplikasi bisnis menggunakan rute gateway, lalu amati acara HPA untuk verifikasi.
Jalankan perintah berikut untuk memverifikasi hasil:
kubectl describe hpa higress-hpaContoh output:
Normal SuccessfulRescale 9m horizontal-pod-autoscaler New size: 3; reason: external metric sls_ingress_qps(&LabelSelector{MatchLabels:map[string]string{sls.ingress.route: default-httpbin-svc-8080,sls.logstore: nginx-ingress,sls.project: aliyun-product-data-xxxxxxxxxxxxxxxx-cn-hangzhou,},MatchExpressions:[]LabelSelectorRequirement{},}) above target Normal SuccessfulRescale 8m45s horizontal-pod-autoscaler New size: 4; reason: external metric sls_ingress_qps(&LabelSelector{MatchLabels:map[string]string{sls.ingress.route: default-httpbin-svc-8080,sls.logstore: nginx-ingress,sls.project: aliyun-product-data-xxxxxxxxxxxxxxxx-cn-hangzhou,},MatchExpressions:[]LabelSelectorRequirement{},}) above target Normal SuccessfulRescale 5m12s horizontal-pod-autoscaler New size: 4; reason: Normal SuccessfulRescale 3m41s horizontal-pod-autoscaler New size: 3; reason: All metrics below target Normal SuccessfulRescale 2m55s horizontal-pod-autoscaler New size: 1; reason: All metrics below target