全部产品
Search
文档中心

Alibaba Cloud Service Mesh:Gunakan fitur pemanasan

更新时间:Jul 02, 2025

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

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.

Catatan

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: 100s

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

  1. Tentukan gateway masuk.

    1. Buat file bernama bookinfo-gateway.yaml yang berisi konten berikut:

      Kembangkan untuk melihat file bookinfo-gateway.yaml

      apiVersion: networking.istio.io/v1alpha3
      kind: Gateway
      metadata:
        name: bookinfo-gateway
      spec:
        selector:
          istio: ingressgateway
        servers:
        - port:
            number: 80
            name: http
            protocol: HTTP
          hosts:
          - "*"
      ---
      apiVersion: networking.istio.io/v1beta1
      kind: VirtualService
      metadata:
        name: bookinfo
      spec:
        gateways:
          - bookinfo-gateway
        hosts:
          - '*'
        http:
          - match:
            - uri:
                exact: /productpage
            - uri:
                prefix: /static
            - uri:
                exact: /login
            - uri:
                exact: /logout
            - uri:
                prefix: /api/v1/products
            route:
              - destination:
                  host: productpage
                  port:
                    number: 9080
          - match:
            - uri:
                prefix: /reviews
            route:
              - destination:
                  host: reviews
                  port:
                    number: 9080
      
    2. Jalankan perintah berikut untuk menerapkan bookinfo-gateway:

      kubectl apply -f bookinfo-gateway.yaml
  2. Buat layanan bernama reviews.

    1. Buat file bernama reviews.yaml yang berisi konten berikut:

      Kembangkan untuk melihat file reviews.yaml

      apiVersion: networking.istio.io/v1beta1
      kind: DestinationRule
      metadata:
        name: reviews
      spec:
        host: reviews
        trafficPolicy:
          loadBalancer:
            simple: ROUND_ROBIN                        
    2. Jalankan perintah berikut untuk menerapkan layanan reviews:

      kubectl apply -f reviews.yaml
  3. 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/0

    Gambar berikut menunjukkan topologi panggilan.image

Langkah 2: Lihat jumlah permintaan yang dikirim ke pod baru

  1. Masuk ke Konsol ASM.

  2. Di panel navigasi sisi kiri, pilih Service Mesh > Mesh Management.

  3. Pada halaman Mesh Management, temukan instance ASM yang ingin Anda konfigurasikan. Klik nama instance ASM atau klik Manage di kolom Actions.

  4. Di panel navigasi sisi kiri, pilih Observability Management Center > Monitoring indicators.

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

  5. Kirim permintaan untuk uji stres dan amati data pemantauan.

    1. Pastikan fitur pemanasan dinonaktifkan. Skalakan jumlah pod replika untuk Deployment reviews-v3 di cluster ACK dari nol menjadi satu.

    2. 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/0
    3. Amati 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.image

  6. Skalakan jumlah pod replika untuk Deployment reviews-v3 di cluster ACK menjadi nol.

Langkah 3: Aktifkan fitur pemanasan

  1. Perbarui file reviews.yaml untuk berisi konten berikut:

    Tambahkan bidang warmupDurationSecs dan atur nilainya menjadi 120s.

    apiVersion: networking.istio.io/v1beta1
    kind: DestinationRule
    metadata:
      name: reviews
    spec:
      host: reviews
      trafficPolicy:
        loadBalancer:
          simple: ROUND_ROBIN
          warmupDurationSecs: 120s
  2. Jalankan perintah berikut untuk memperbarui layanan reviews:

    kubectl apply -f reviews.yaml

Langkah 4: Lihat efek fitur pemanasan

  1. Skalakan jumlah pod replika untuk Deployment reviews-v3 di cluster ACK dari nol menjadi satu.

  2. 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/0
  3. Pada 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. imageKurva 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. imageKetika 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.image

Referensi