All Products
Search
Document Center

Alibaba Cloud Service Mesh:Gunakan fitur warm-up ASM

Last Updated:Jun 21, 2026

Gunakan fitur warm-up ASM saat melakukan scale out aplikasi, men-deploy versi baru, atau mengantisipasi lonjakan traffic. Fitur ini secara bertahap meningkatkan traffic permintaan ke instans baru dalam jendela waktu kustom, sehingga memastikan transisi yang lancar serta mengurangi risiko gangguan layanan, timeout permintaan, dan kehilangan data akibat lonjakan traffic mendadak. Fitur ini membantu menjaga kinerja stabil dan ketersediaan tinggi selama scaling dan pembaruan aplikasi.

Prasyarat

Informasi latar belakang

Tanpa fitur warm-up, Pod baru langsung menerima bagian penuh traffic-nya tanpa peningkatan bertahap. Hal ini bisa menjadi masalah bagi layanan yang memerlukan periode warm-up agar beroperasi optimal, seperti aplikasi berbasis JVM yang perlu melakukan kompilasi Just-In-Time (JIT) atau mengisi cache besar. Beban mendadak ini dapat menyebabkan timeout permintaan, kehilangan data, dan pengalaman pengguna yang menurun. Fitur warm-up mengatasi hal ini dengan secara bertahap mengalirkan traffic ke instans baru, sehingga instans tersebut memiliki waktu untuk bersiap melayani permintaan pada kapasitas penuh.

Fitur warm-up

Fitur warm-up, juga dikenal sebagai slow start atau progressive traffic ramp-up, memungkinkan Anda mengonfigurasi periode waktu untuk suatu layanan. Saat instans layanan dimulai, client mengirimkan sebagian kecil beban permintaan ke instans tersebut dan secara bertahap meningkatkan laju permintaan selama durasi yang dikonfigurasi. Setelah periode warm-up berakhir, instans mulai menerima bagian penuh traffic-nya.

Dalam mode slow start, Pod baru dilindungi dari lonjakan permintaan mendadak, sehingga instans baru dapat melakukan warm-up selama periode peningkatan sebelum menerima bagian penuh traffic-nya.

Fitur warm-up berguna untuk aplikasi yang bergantung pada caching dan memerlukan periode warm-up agar dapat merespons permintaan dengan kinerja optimal. Di ASM, Anda hanya perlu mengonfigurasi bagian trafficPolicy/loadBalancer dari DestinationRule yang sesuai untuk layanan tersebut. Perhatikan parameter berikut:

  • loadBalancer: menentukan pengaturan load balancer. Fitur ini hanya mendukung load balancer ROUND_ROBIN dan LEAST_REQUEST.

  • warmupDurationSecs: menentukan durasi warm-up untuk layanan. Jika diatur, titik akhir layanan yang baru dibuat tetap dalam mode warm-up selama durasi ini, dimulai sejak waktu pembuatannya. Selama jendela ini, Istio secara bertahap meningkatkan traffic ke titik akhir tersebut alih-alih langsung mengirimkan bagian proporsional traffic.

Catatan

Fitur warm-up mensyaratkan bahwa jumlah replika aplikasi di zona ketersediaan saat ini tidak nol. Contohnya:

  • Jika kluster bidang data hanya memiliki satu zona ketersediaan, yaitu Zona A, dan saat ini terdapat satu replika di zona tersebut, fitur warm-up akan aktif ketika replika kedua dimulai.

  • Jika kluster bidang data memiliki dua zona ketersediaan, yaitu Zona A dan Zona B, dan satu-satunya replika yang ada berada di Zona A, maka memulai replika kedua di Zona B tidak akan memicu fitur warm-up. Hal ini dapat terjadi karena beberapa penjadwal secara default mendistribusikan replika ke berbagai zona ketersediaan. Dalam skenario ini, fitur warm-up akan aktif ketika replika ketiga dimulai.

Berikut adalah contoh DestinationRule dalam format YAML:

apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: mocka
spec:
  host: mocka
  trafficPolicy:
    loadBalancer:
      simple: ROUND_ROBIN
      warmupDurationSecs: 100s

Langkah 1: Konfigurasi routing dan akses gateway

Sebagai demonstrasi, atur jumlah replika untuk Penyebaran reviews-v3 menjadi 0.

  1. Definisikan resource ingress.

    1. Buat file bernama bookinfo-gateway.yaml dengan konten berikut.

      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 men-deploy gateway dan virtual service.

      kubectl apply -f bookinfo-gateway.yaml
  2. Buat DestinationRule untuk layanan Reviews.

    1. Buat file bernama reviews.yaml dengan konten berikut.

      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 men-deploy DestinationRule.

      kubectl apply -f reviews.yaml
  3. Aktifkan topologi mesh dan terus-menerus akses alamat gateway masuk.

    Topik ini menggunakan perintah hey untuk mengirim permintaan uji beban selama 10 detik. Untuk informasi tentang cara mengunduh dan menginstal hey, lihat hey. Untuk informasi selengkapnya tentang cara mengaktifkan dan melihat topologi mesh, lihat Lihat topologi mesh aplikasi.

    hey -z 10s -q 100 -c 4 http://${INGRESS_GATEWAY_ADDRESS}/reviews/0

    Gambar berikut menunjukkan contoh topologi pemanggilan:image

Langkah 2: Amati startup Pod

  1. Masuk ke Konsol ASM.

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

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

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

    • Untuk instans ASM versi sebelum 1.17.2.35: Pada halaman Monitoring metrics, klik tab Monitoring instrument, lalu klik tab Cloud ASM Istio Service, dan pilih layanan Reviews.

    • Untuk instans ASM versi 1.17.2.35 dan seterusnya: Pada halaman Monitoring metrics, klik tab Cloud ASM Istio Work load, pilih workload reviews-v3, dan atur Reporter menjadi source.

  5. Kirim permintaan uji beban dan amati data pemantauan.

    1. Dengan fitur warm-up dinonaktifkan, naikkan jumlah replika untuk Penyebaran reviews-v3 dari 0 menjadi 1.

    2. Jalankan perintah berikut untuk mengirim permintaan uji beban ke gateway masuk.

      Contoh ini mengirim permintaan uji beban selama 120 detik.

      hey -z 120s -q 100 -c 4 http://${INGRESS_GATEWAY_ADDRESS}/reviews/0
    3. Amati data pada dasbor pemantauan Prometheus.

      Diperlukan sekitar 45 detik agar Pod reviews-v3 menerima bagian permintaan yang seimbang. Waktu aktual dapat bervariasi tergantung pada lingkungan uji beban Anda.image

  6. Turunkan kembali jumlah replika untuk Penyebaran reviews-v3 menjadi 0.

Langkah 3: Aktifkan fitur warm-up

  1. Perbarui file reviews.yaml dengan konten berikut.

    Tambahkan field warmupDurationSecs dan atur nilainya menjadi 120s, yang menetapkan durasi warm-up menjadi 120 detik.

    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 menerapkan pembaruan.

    kubectl apply -f reviews.yaml

Langkah 4: Verifikasi efek warm-up

  1. Setelah mengaktifkan fitur warm-up, naikkan jumlah replika untuk Penyebaran reviews-v3 dari 0 menjadi 1.

  2. Jalankan perintah berikut untuk mengirim permintaan uji beban ke gateway masuk.

    Contoh ini mengirim permintaan uji beban selama 150 detik.

    hey -z 150s -q 100 -c 4 http://${INGRESS_GATEWAY_ADDRESS}/reviews/0
  3. Pada tab Cloud ASM Istio Service, amati data pada dasbor pemantauan Prometheus.

    Diperlukan sekitar 120 detik agar Pod reviews-v3 menerima bagian permintaan yang seimbang. Waktu aktual dapat bervariasi tergantung pada lingkungan uji beban Anda.imageKurva mungkin tampak bertahap karena metrik dikumpulkan dalam interval tertentu. Pada kenyataannya, traffic ke Pod reviews-v3 meningkat secara mulus. Jika Anda mengaktifkan pengumpulan log sidecar, Anda dapat mencari log sidecar ini di Simple Log Service (SLS) untuk melihat volume log selama 5 menit terakhir.imageSeperti yang diharapkan dengan fitur warm-up, instans baru awalnya menerima sebagian kecil traffic, yang kemudian meningkat secara mulus selama durasi yang dikonfigurasi hingga mencapai bagian penuhnya.

    Setelah fitur warm-up diaktifkan, diperlukan sekitar 2 menit 30 detik agar traffic didistribusikan secara merata di antara versi v1, v2, dan v3. Pada tampilan Service Graph Kiali, istio-ingressgateway mendistribusikan traffic hampir merata ke versi v1, v2, dan v3 layanan Reviews, masing-masing sebesar 33,3%, 33,3%, dan 33,4%. Versi v2 dan v3 kemudian memanggil layanan ratings v1, yang menunjukkan bahwa traffic telah seimbang setelah proses warm-up selesai.

Dokumen terkait