All Products
Search
Document Center

Microservices Engine:Lakukan penskalaan otomatis untuk aplikasi backend di kluster ACK berdasarkan nilai QPS gateway

Last Updated:Jul 06, 2025

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

Prosedur

  1. Sebarkan sumber daya berikut di kluster Alibaba Cloud ACK:

    1. Masuk ke Konsol ACK. Di panel navigasi sebelah kiri, pilih Marketplace > Marketplace.

    2. 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.

      ack-alibaba-cloud-metrics-adapter.png

    3. Di panel navigasi sebelah kiri, klik Clusters.

    4. Di halaman Clusters, temukan kluster yang ingin Anda kelola dan klik namanya. Di panel sebelah kiri, pilih Workloads > Deployments.

    5. 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
  2. Tambahkan sumber layanan ke gateway cloud-native MSE dan tambahkan layanan.

    1. Masuk ke Konsol MSE. Di bilah navigasi atas, pilih wilayah.

    2. Di panel navigasi sebelah kiri, pilih Cloud-native Gateway > Gateways. Di halaman Gateway, klik ID gateway.

    3. Di panel navigasi sebelah kiri, klik Routes. Lalu, klik tab Source.

    4. 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.

    5. Di panel navigasi sebelah kiri, klik Routes. Lalu, klik tab Services.

    6. Di halaman Layanan, klik Add Service. Di panel Tambah Layanan, pilih sumber layanan yang Anda buat di bagian Services, lalu klik OK.

  3. Tambahkan aturan routing untuk layanan yang dibuat. Untuk informasi lebih lanjut, lihat Buat aturan routing.

  4. Aktifkan layanan pengiriman log.

    1. Di panel navigasi sebelah kiri, klik Parameter Settings.

    2. Di bagian Observability Parameters, klik ikon 图标2.png 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.

      日志投递开启.png

  5. 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: 10
  6. Kontrol 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-hpa

    Contoh 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