全部产品
Search
文档中心

Alibaba Cloud Service Mesh:Pemuatan seimbang subset dinamis

更新时间:Jul 06, 2025

Anda dapat menggunakan pemuatan seimbang subset dinamis untuk mengimplementasikan manajemen granular dan pengalihan lalu lintas yang fleksibel untuk beban kerja layanan mikro. Dalam skenario di mana beberapa aplikasi dan versi dirilis, Service Mesh (ASM) secara otomatis membagi beban kerja menjadi subset dinamis berdasarkan karakteristik aplikasi. Personel O&M tidak perlu melakukan konfigurasi manual. ASM juga dapat mencocokkan header spesifik dari permintaan dengan karakteristik subset untuk mengimplementasikan pengalihan permintaan yang lebih fleksibel.

Prasyarat

Sebuah kluster Container Service for Kubernetes (ACK) ditambahkan ke instance ASM versi 1.18 atau lebih baru. Untuk informasi lebih lanjut, lihat Tambahkan kluster ke instance ASM.

Deskripsi fitur

ASM memungkinkan Anda menggunakan aturan tujuan untuk membagi beban kerja layanan menjadi subset berbeda menggunakan tag, menggunakan layanan virtual untuk mendeklarasikan aturan pengalihan, dan mengarahkan lalu lintas ke subset tertentu. Metode pengelompokan statis dan pengalihan statis ini relatif sederhana dan dapat memenuhi kebutuhan dalam sebagian besar situasi. Namun, dalam beberapa skenario, metode ini mungkin tidak cukup nyaman. Misalnya, dalam skenario di mana beban kerja dibagi menjadi subset berbeda berdasarkan versi, versi tersebut mungkin terus berkembang. Ini mengharuskan personel O&M menambahkan atau menghapus konfigurasi subset yang sesuai dalam aturan tujuan ketika versi terbaru dirilis atau versi sebelumnya dihentikan. Dalam skenario di mana banyak aplikasi dan versi sering dirilis, memperbarui konfigurasi subset menjadi beban berat bagi personel O&M.

Untuk meningkatkan pengalaman pengguna, ASM mendukung pemuatan seimbang subset dinamis sejak versi 1.18. Anda dapat menentukan dimensi, seperti versi, untuk secara dinamis membagi beban kerja dengan nilai yang sama dalam dimensi yang ditentukan ke subset dinamis yang sama. Jika subnet dinamis digunakan dalam skenario di atas, personel O&M tidak perlu mengonfigurasi subset secara manual untuk setiap versi baru. Saat Anda menerapkan beban kerja, ASM secara otomatis mengklasifikasikan beban kerja ke dalam subset dinamis berdasarkan karakteristik aplikasi. Selain itu, ASM memungkinkan Anda mengonfigurasi header spesifik dalam permintaan untuk mencocokkan karakteristik subset dan mengarahkan permintaan ke subset dinamis tertentu berdasarkan header yang dibawa dalam permintaan.

Langkah 1: Menyebarkan aplikasi

Dalam contoh ini, aplikasi hashicorp/http-echo digunakan, dan dua lingkungan, dev dan prod, diterapkan untuk mensimulasikan lingkungan pengembangan dan produksi masing-masing. Versi v1, v2, dan v3 diterapkan di lingkungan dev, dan hanya versi v2 dan v3 yang diterapkan di lingkungan prod. Setiap aplikasi helloworld mendengarkan port 5678 dan membalas dengan lingkungan dan versinya sendiri saat menerima permintaan. Layanan helloworld diterapkan untuk mengekspos port 8000. Selain itu, layanan helloworld dikaitkan dengan beban kerja yang nilainya tag app adalah helloworld. image.png

Gunakan kubectl untuk terhubung ke kluster ACK berdasarkan informasi dalam file kubeconfig. Kemudian, gunakan kode YAML berikut untuk menyebarkan versi v1, v2, dan v3 aplikasi helloworld di lingkungan dev, versi v2 dan v3 aplikasi helloworld di lingkungan prod, layanan helloworld, dan aplikasi sleep yang digunakan untuk memulai pengujian. Untuk informasi lebih lanjut tentang cara menyebarkan aplikasi, lihat Menyebarkan aplikasi di kluster ACK yang ditambahkan ke instance ASM.

Lingkungan Dev

apiVersion: apps/v1
kind: Deployment
metadata:
  name: helloworld-dev-v1
  labels:
    app: helloworld
    version: v1
    stage: dev 
spec:
  replicas: 1
  selector:
    matchLabels:
      app: helloworld 
      version: v1
      stage: dev
  template:
    metadata:
      labels:
        app: helloworld 
        version: v1
        stage: dev
    spec:
      containers:
      - name: helloworld 
        env:
        - name: PODIP
          valueFrom:
            fieldRef:
              fieldPath: status.podIP
        - name: STAGE
          valueFrom:
            fieldRef:
              fieldPath: metadata.labels['stage']
        - name: VERSION 
          valueFrom:
            fieldRef:
              fieldPath: metadata.labels['version']
        command: ["/http-echo"]
        args:
          - "-text"
          - "Selamat datang di helloworld stage: $(STAGE), versi: $(VERSION), ip: $(PODIP)"
        image: hashicorp/http-echo:0.2.3
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 5678
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: helloworld-dev-v2
  labels:
    app: helloworld
    version: v2
    stage: dev 
spec:
  replicas: 1
  selector:
    matchLabels:
      app: helloworld 
      version: v2
      stage: dev
  template:
    metadata:
      labels:
        app: helloworld 
        version: v2
        stage: dev
    spec:
      containers:
      - name: helloworld 
        env:
        - name: PODIP
          valueFrom:
            fieldRef:
              fieldPath: status.podIP
        - name: STAGE
          valueFrom:
            fieldRef:
              fieldPath: metadata.labels['stage']
        - name: VERSION 
          valueFrom:
            fieldRef:
              fieldPath: metadata.labels['version']
        command: ["/http-echo"]
        args:
          - "-text"
          - "Selamat datang di helloworld stage: $(STAGE), versi: $(VERSION), ip: $(PODIP)"
        image: hashicorp/http-echo:0.2.3
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 5678
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: helloworld-dev-v3
  labels:
    app: helloworld
    version: v3
    stage: dev 
spec:
  replicas: 1
  selector:
    matchLabels:
      app: helloworld 
      version: v3
      stage: dev
  template:
    metadata:
      labels:
        app: helloworld 
        version: v3
        stage: dev
    spec:
      containers:
      - name: helloworld 
        env:
        - name: PODIP
          valueFrom:
            fieldRef:
              fieldPath: status.podIP
        - name: STAGE
          valueFrom:
            fieldRef:
              fieldPath: metadata.labels['stage']
        - name: VERSION 
          valueFrom:
            fieldRef:
              fieldPath: metadata.labels['version']
        command: ["/http-echo"]
        args:
          - "-text"
          - "Selamat datang di helloworld stage: $(STAGE), versi: $(VERSION), ip: $(PODIP)"
        image: hashicorp/http-echo:0.2.3
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 5678

Lingkungan Prod

apiVersion: apps/v1
kind: Deployment
metadata:
  name: helloworld-prod-v2
  labels:
    app: helloworld
    version: v2
    stage: prod 
spec:
  replicas: 1
  selector:
    matchLabels:
      app: helloworld 
      version: v2
      stage: prod
  template:
    metadata:
      labels:
        app: helloworld 
        version: v2
        stage: prod
    spec:
      containers:
      - name: helloworld 
        env:
        - name: PODIP
          valueFrom:
            fieldRef:
              fieldPath: status.podIP
        - name: STAGE
          valueFrom:
            fieldRef:
              fieldPath: metadata.labels['stage']
        - name: VERSION 
          valueFrom:
            fieldRef:
              fieldPath: metadata.labels['version']
        command: ["/http-echo"]
        args:
          - "-text"
          - "Selamat datang di helloworld stage: $(STAGE), versi: $(VERSION), ip: $(PODIP)"
        image: hashicorp/http-echo:0.2.3
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 5678
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: helloworld-prod-v3
  labels:
    app: helloworld
    version: v3
    stage: prod 
spec:
  replicas: 2
  selector:
    matchLabels:
      app: helloworld 
      version: v3
      stage: prod
  template:
    metadata:
      labels:
        app: helloworld 
        version: v3
        stage: prod
    spec:
      containers:
      - name: helloworld 
        env:
        - name: PODIP
          valueFrom:
            fieldRef:
              fieldPath: status.podIP
        - name: STAGE
          valueFrom:
            fieldRef:
              fieldPath: metadata.labels['stage']
        - name: VERSION 
          valueFrom:
            fieldRef:
              fieldPath: metadata.labels['version']
        command: ["/http-echo"]
        args:
          - "-text"
          - "Selamat datang di helloworld stage: $(STAGE), versi: $(VERSION), ip: $(PODIP)"
        image: hashicorp/http-echo:0.2.3
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 5678

Layanan Helloworld

apiVersion: v1
kind: Service
metadata:
  name: helloworld
  labels:
    app: helloworld
    service: helloworld
spec:
  ports:
  - port: 8000 
    name: http
    targetPort: 5678
  selector:
    app: helloworld

Aplikasi Sleep

apiVersion: apps/v1
kind: Deployment
metadata:
  name: sleep
spec:
  replicas: 1
  selector:
    matchLabels:
      app: sleep
  template:
    metadata:
      labels:
        app: sleep
    spec:
      terminationGracePeriodSeconds: 0
      serviceAccountName: sleep
      containers:
      - name: sleep
        image: curlimages/curl
        command: ["/bin/sleep", "infinity"]
        imagePullPolicy: IfNotPresent
        volumeMounts:
        - mountPath: /etc/sleep/tls
          name: secret-volume
      volumes:
      - name: secret-volume
        secret:
          secretName: sleep-secret
          optional: true

Langkah 2: Mengakses versi tertentu di lingkungan tertentu

  1. Buat aturan tujuan dan layanan virtual.

    1. Gunakan konten berikut untuk membuat aturan tujuan untuk layanan helloworld. Untuk informasi lebih lanjut, lihat Kelola Aturan Tujuan.

      Setelah aplikasi helloworld diterapkan, permintaan yang mengakses layanan helloworld dialokasikan ke pod apa pun dari aplikasi helloworld oleh fitur load balancing Kubernetes secara default. Dalam contoh ini, dua lingkungan dan beberapa versi diterapkan untuk aplikasi helloworld: versi v1, v2, dan v3 di lingkungan dev dan versi v2 dan v3 di lingkungan prod. Untuk mengakses lingkungan dan versi tertentu, Anda harus mengonfigurasi aturan tujuan untuk layanan helloworld.

      apiVersion: networking.istio.io/v1beta1
      kind: DestinationRule
      metadata:
        name: helloworld
        namespace: default
      spec:
        host: helloworld.default.svc.cluster.local
        trafficPolicy:
          loadBalancer:
            dynamicSubset:
              subsetSelectors:
                - keys:
                    - stage
                    - version

      Aturan tujuan di atas mengelompokkan beban kerja layanan helloworld berdasarkan tag stage dan version. Dalam contoh ini, beban kerja yang diterapkan dibagi menjadi subset berikut oleh aturan ini.

      Subset

      Pod

      Alamat IP

      stage = dev

      version = v1

      helloworld-dev-v1-67b6876778-nf7pz

      192.168.0.5

      stage = dev

      version = v2

      helloworld-dev-v2-68f65bbc99-v957l

      192.168.0.1

      stage = dev

      version = v3

      helloworld-dev-v3-7f6978bc56-hqzgg

      192.168.0.252

      stage = prod

      version = v2

      helloworld-prod-v2-b5745b949-p8rc4

      192.168.0.103

      stage = prod

      version = v3

      helloworld-prod-v3-6768bf56f8-6bd6h

      192.168.0.104

      helloworld-prod-v3-6768bf56f8-6bd6h

      192.168.0.6

    2. Gunakan konten berikut untuk membuat layanan virtual untuk layanan helloworld dan buat pemetaan antara permintaan dan subnet dinamis yang ditentukan oleh nilai key. Untuk informasi lebih lanjut, lihat Kelola Layanan Virtual.

      Perluas untuk Melihat Kode YAML Layanan Virtual

      apiVersion: networking.istio.io/v1beta1
      kind: VirtualService
      metadata:
        name: helloworld
        namespace: default
      spec:
        hosts:
          - helloworld.default.svc.cluster.local
        http:
          - headerToDynamicSubsetKey:
              - defaultValue: v3
                header: x-version
                key: version
              - defaultValue: prod
                header: x-stage
                key: stage
            name: default
            route:
              - destination:
                  host: helloworld.default.svc.cluster.local
                  port:
                    number: 8000
      

      Layanan virtual di atas menentukan operasi berikut:

      • Memetakan header bernama x-version dalam permintaan ke kunci subnet bernama version. Jika permintaan tidak membawa header bernama x-version, nilai default v3 digunakan.

      • Memetakan header bernama x-stage dalam permintaan ke kunci subset bernama stage. Jika permintaan tidak membawa header bernama x-stage, nilai default prod digunakan.

  2. Gunakan kubectl untuk terhubung ke kluster ACK berdasarkan informasi dalam file kubeconfig. Kemudian, jalankan perintah berikut untuk mengaktifkan aplikasi sleep mengakses versi v1 aplikasi helloworld di lingkungan dev.

    Untuk informasi lebih lanjut tentang cara menggunakan kubectl untuk mengelola kluster, lihat Dapatkan File kubeconfig Kluster dan Gunakan kubectl untuk Terhubung ke Kluster.

    kubectl exec -it deploy/sleep -c sleep -- curl -H 'x-stage: dev' -H 'x-version: v1' helloworld:8000

    Keluaran yang Diharapkan:

    Selamat datang di helloworld stage: dev, versi: v1, ip: 192.168.0.5

    Keluaran menunjukkan bahwa permintaan diarahkan ke pod yang stage-nya adalah dev dan version-nya adalah v1 sesuai harapan.

Langkah 3: Konfigurasikan kebijakan fallback untuk subnet

Versi v1 tidak diterapkan di lingkungan prod. Jika Anda mencoba mengakses versi v1 di lingkungan prod, kesalahan dilaporkan karena subnet tidak ada.

kubectl exec -it deploy/sleep -c sleep -- curl -H 'x-stage: prod' -H 'x-version: v1' helloworld:8000
Keluaran yang diharapkan:
no healthy upstream # Kesalahan dilaporkan karena subnet tidak ada.

Untuk menghindari kegagalan akses ketika subnet tidak ada, Anda dapat mengonfigurasi kebijakan fallback untuk aturan pengelompokan dinamis. Bagian berikut menjelaskan tiga kebijakan fallback yang didukung oleh pengelompokan dinamis ASM: NO_FALLBACK, ANY_ENDPOINT, dan DEFAULT_SUBSET.

NO_FALLBACK

Ketika kebijakan fallback ini berlaku untuk aturan pengelompokan dinamis, kesalahan no healthy upstream dilaporkan untuk permintaan jika tidak ada subnet yang cocok.

  1. Gunakan aturan tujuan berikut untuk mengatur fallbackPolicy ke NO_FALLBACK untuk aturan pengelompokan yang ditentukan oleh stage dan version. Untuk informasi lebih lanjut, lihat Kelola Aturan Tujuan.

    apiVersion: networking.istio.io/v1beta1
    kind: DestinationRule
    metadata:
      name: helloworld
      namespace: default
    spec:
      host: helloworld.default.svc.cluster.local
      trafficPolicy:
        loadBalancer:
          dynamicSubset:
            subsetSelectors:
              - fallbackPolicy: NO_FALLBACK
                keys:
                  - stage
                  - version
  2. Jalankan perintah berikut untuk mengakses aplikasi helloworld yang stage-nya adalah prod dan version-nya adalah v1:

    kubectl exec -it deploy/sleep -c sleep -- curl -H 'x-stage: prod' -H 'x-version: v1' helloworld:8000

    Keluaran yang Diharapkan:

    no healthy upstream # Kesalahan dilaporkan karena subnet tidak ada.

ANY_ENDPOINT

Ketika kebijakan fallback ini berlaku untuk aturan pengelompokan dinamis, permintaan akan diarahkan ke endpoint apa pun dari layanan jika tidak ada subnet yang cocok.

  1. Gunakan aturan tujuan berikut untuk mengatur fallbackPolicy ke ANY_ENDPOINT untuk aturan pengelompokan yang ditentukan oleh stage dan version. Untuk informasi lebih lanjut, lihat Kelola Aturan Tujuan.

    apiVersion: networking.istio.io/v1beta1
    kind: DestinationRule
    metadata:
      name: helloworld
      namespace: default
    spec:
      host: helloworld.default.svc.cluster.local
      trafficPolicy:
        loadBalancer:
          dynamicSubset:
            subsetSelectors:
              - fallbackPolicy: ANY_ENDPOINT
                keys:
                  - stage
                  - version
  2. Jalankan perintah berikut untuk mengakses aplikasi helloworld yang stage-nya adalah prod dan version-nya adalah v1.

    • Akses Pertama:

      kubectl exec -it deploy/sleep -c sleep -- curl -H 'x-stage: prod' helloworld:8000

      Keluaran yang Diharapkan:

      Selamat datang di helloworld stage: prod, versi: v2, ip: 192.168.0.103 # Akses pertama diarahkan ke aplikasi helloworld versi v2 di lingkungan prod.
    • Akses Kedua:

      kubectl exec -it deploy/sleep -c sleep -- curl -H 'x-stage: prod' -H 'x-version: v1' helloworld:8000

      Keluaran yang Diharapkan:

      Selamat datang di helloworld stage: dev, versi: v2, ip: 192.168.0.1 # Akses kedua diarahkan ke aplikasi helloworld versi v2 di lingkungan dev.

      Keluaran menunjukkan bahwa permintaan diarahkan ke pod acak dari layanan helloworld.

DEFAULT_SUBSET

Ketika kebijakan fallback ini berlaku untuk aturan pengelompokan dinamis, permintaan akan diarahkan ke subnet yang cocok dengan nilai keys yang ditentukan dalam bidang defaultSubset jika tidak ada subnet yang cocok.

  1. Gunakan aturan tujuan berikut untuk mengatur fallbackPolicy ke DEFAULT_SUBSET untuk aturan pengelompokan yang ditentukan oleh stage dan version, dan konfigurasikan keys dan nilai dalam bidang defaultSubset. Untuk informasi lebih lanjut, lihat Kelola Aturan Tujuan.

    key

    value

    stage

    prod

    version

    v3

    apiVersion: networking.istio.io/v1beta1
    kind: DestinationRule
    metadata:
      name: helloworld
      namespace: default
    spec:
      host: helloworld.default.svc.cluster.local
      trafficPolicy:
        loadBalancer:
          dynamicSubset:
            defaultSubset:
              stage: prod
              version: v3
            subsetSelectors:
              - fallbackPolicy: DEFAULT_SUBSET
                keys:
                  - stage
                  - version
  2. Jalankan perintah berikut untuk mengakses subnet yang stage-nya adalah prod dan version-nya adalah v1.

    • Akses Pertama:

      kubectl exec -it deploy/sleep -c sleep -- curl -H 'x-stage: prod' -H 'x-version: v1' helloworld:8000

      Keluaran yang Diharapkan:

      Selamat datang di helloworld stage: prod, versi: v3, ip: 192.168.0.6
    • Akses Kedua:

      kubectl exec -it deploy/sleep -c sleep -- curl -H 'x-stage: prod' -H 'x-version: v1' helloworld:8000

      Keluaran yang Diharapkan:

      Selamat datang di helloworld stage: prod, versi: v3, ip: 192.168.0.104

      Keluaran Sesuai Harapan: Tidak ada subnet yang cocok. Oleh karena itu, fallback dipicu, dan permintaan diarahkan ke subnet yang stage-nya adalah prod dan version-nya adalah v3.

Langkah 4: Mengakses pod tertentu

Jika Anda ingin mengakses pod tertentu, Anda dapat membagi pod menjadi subnet independen dengan menyetel keys pengelompokan dinamis ASM ke %ip%.

  1. Gunakan aturan tujuan berikut untuk membuat aturan pengelompokan yang mengelompokkan pod berdasarkan alamat IP. Untuk informasi lebih lanjut, lihat Kelola Aturan Tujuan.

    apiVersion: networking.istio.io/v1beta1
    kind: DestinationRule
    metadata:
      name: helloworld
      namespace: default
    spec:
      host: helloworld.default.svc.cluster.local
      trafficPolicy:
        loadBalancer:
          dynamicSubset:
            defaultSubset:
              stage: prod
              version: v3
            subsetSelectors:
              - keys:
                  - '%ip%'
  2. Gunakan layanan virtual berikut untuk memetakan header x-ip dari permintaan ke subset yang ditentukan oleh %ip%, sehingga permintaan dapat mengakses pod yang alamat IP-nya ditentukan oleh x-ip. Untuk informasi lebih lanjut, lihat Kelola Layanan Virtual.

    apiVersion: networking.istio.io/v1beta1
    kind: VirtualService
    metadata:
      name: helloworld
      namespace: default
    spec:
      hosts:
        - helloworld.default.svc.cluster.local
      http:
        - headerToDynamicSubsetKey:
            - header: x-ip
              key: '%ip%'
          name: default
          route:
            - destination:
                host: helloworld.default.svc.cluster.local
                port:
                  number: 8000
    
  3. Jalankan perintah berikut untuk mengakses Pod helloworld-prod-v3-6768bf56f8-6bd6h yang alamat IP-nya adalah 192.168.0.6. Lakukan operasi akses beberapa kali.

    • Akses Pertama:

      kubectl exec -it deploy/sleep -c sleep -- curl -H 'x-ip: 192.168.0.6'  helloworld:8000

      Keluaran yang Diharapkan:

      Selamat datang di helloworld stage: prod, versi: v3, ip: 192.168.0.6
    • Akses Kedua:

      kubectl exec -it deploy/sleep -c sleep -- curl -H 'x-ip: 192.168.0.6'  helloworld:8000

      Keluaran yang Diharapkan:

      Selamat datang di helloworld stage: prod, versi: v3, ip: 192.168.0.6
    • Akses Ketiga:

      kubectl exec -it deploy/sleep -c sleep -- curl -H 'x-ip: 192.168.0.6'  helloworld:8000

      Keluaran yang Diharapkan:

      Selamat datang di helloworld stage: prod, versi: v3, ip: 192.168.0.6

      Keluaran menunjukkan bahwa permintaan diarahkan ke pod dengan alamat IP yang ditentukan 192.168.0.6, yang sesuai harapan.

Deskripsi bidang CRD

VirtualService

  • HTTPRoute

    Bidang headerToDynamicSubsetKey ditambahkan ke sumber daya HTTPRoute untuk ASM.

    Bidang

    Tipe

    Deskripsi

    headerToDynamicSubsetKey

    HeaderToMetadataSubsetKey[]

    Digunakan untuk mengonfigurasi pemetaan header permintaan ke kunci subset dinamis. Setiap elemen dalam array memetakan header ke kunci.

  • HeaderToMetadataSubsetKey

    HeaderToMetadataSubsetKey menentukan pemetaan dari header permintaan ke kunci subset dinamis dan nilai default yang digunakan jika permintaan tidak membawa header yang ditentukan.

    Bidang

    Tipe

    Deskripsi

    header

    string

    Nama header permintaan.

    key

    string

    Nama kunci subset dinamis. Bagian yang diapit oleh tanda persen (%) mendefinisikan atribut bawaan dari beban kerja.

    defaultValue

    string

    Nilai default ini digunakan jika permintaan tidak membawa header yang dipetakan ke kunci. Jika Anda tidak menentukan nilai default dan permintaan tidak membawa header yang dipetakan ke kunci, sistem menganggap bahwa header tersebut hilang dan tidak melakukan pencocokan dari sudut pandang header.

DestinationRule

Dalam ASM, bidang dynamicSubset ditambahkan ke struktur trafficPolicy.

  • TrafficPolicy

    Bidang

    Tipe

    Deskripsi

    dynamicSubset

    DynamicSubsetLB

    Digunakan untuk mengonfigurasi aturan pengelompokan dinamis.

  • DynamicSubsetLB

    Bidang

    Tipe

    Deskripsi

    defaultSubset

    map[string]string

    Digunakan untuk mengonfigurasi subset default. Ketika permintaan tidak cocok dengan subset dinamis apa pun dan kebijakan fallback adalah DEFAULT_SUBSET, subset yang dideklarasikan oleh bidang ini dipilih.

    subsetSelectors

    SubsetSelector[]

    Digunakan untuk mengonfigurasi aturan pengelompokan dinamis. Setiap elemen dalam array menunjukkan aturan pengelompokan terpisah.

    fallbackPolicy

    DynamicSubsetLB_FallbackPolicy

    Menentukan kebijakan fallback yang digunakan ketika subset dinamis tidak cocok. Jika Anda tidak menentukan bidang ini, nilai defaultnya adalah NO_FALLBACK.

  • SubsetSelector

    Bidang

    Tipe

    Deskripsi

    keys

    string[]

    Daftar dimensi pengelompokan. Nilai-nilainya dipetakan ke tag beban kerja. Misalnya, nilai version menunjukkan bahwa tag bernama version dari beban kerja digunakan sebagai dimensi pengelompokan. Selain tag, atribut bawaan dari beban kerja juga dapat digunakan sebagai dimensi. Untuk informasi lebih lanjut, lihat Atribut bawaan beban kerja.

    fallbackPolicy

    DynamicSubsetLB_FallbackPolicy

    Menentukan kebijakan fallback yang digunakan ketika tidak ada subset dinamis yang cocok. Jika bidang ini tidak ditentukan, kebijakan fallback yang ditentukan dalam DynamicSubsetLB digunakan.

  • DynamicSubsetLB_FallbackPolicy

    DynamicSubsetLB_FallbackPolicy menentukan nilai enumerasi dari kebijakan fallback untuk pemuatan seimbang subset dinamis. Tabel berikut menjelaskan nilai yang didukung.

    Nilai

    Deskripsi

    NO_FALLBACK

    Tidak ada fallback yang dilakukan.

    ANY_ENDPOINT

    Permintaan akan diarahkan ke endpoint apa pun dari layanan jika tidak ada subnet yang cocok.

    DEFAULT_SUBSET

    Permintaan akan diarahkan ke subset default jika tidak ada subnet yang cocok.

Atribut bawaan beban kerja

Atribut

Tipe

Deskripsi

%ip%

string

Alamat IP pod tempat beban kerja berjalan.

Referensi

  • Anda dapat mengaktifkan pengumpulan log control-plane dan peringatan berbasis log untuk mendeteksi dan menyelesaikan risiko potensial secara tepat waktu. Untuk informasi lebih lanjut, lihat Aktifkan Pengumpulan Log Control-Plane dan Peringatan Berbasis Log.

  • Anda dapat menginstal alat diagnostik asmctl untuk mendeteksi masalah konfigurasi potensial di ASM. Untuk informasi lebih lanjut, lihat Instal dan Gunakan asmctl.

  • Anda dapat menambahkan peringatan audit untuk perubahan pada sumber daya ASM, seperti layanan virtual dan aturan tujuan. Dengan cara ini, peringatan dikirim ke kontak peringatan secara tepat waktu ketika sumber daya penting berubah. Untuk informasi lebih lanjut, lihat Konfigurasikan Peringatan Audit untuk Operasi pada Sumber Daya ASM.

  • Anda dapat mengonfigurasi aturan manajemen lalu lintas, seperti layanan virtual dan aturan tujuan, untuk mengisolasi versi aplikasi atau aplikasi dengan karakteristik tertentu ke lingkungan runtime independen, yang dikenal sebagai jalur lalu lintas. Selain itu, Anda dapat mengonfigurasi pergeseran lalu lintas, yang mengarahkan lalu lintas ke versi baseline atau aplikasi dengan karakteristik tertentu ketika versi tujuan atau aplikasi tidak tersedia. Untuk informasi lebih lanjut, lihat Gunakan Aturan Lalu Lintas untuk Mengonfigurasi Jalur Lalu Lintas dan Pergeseran Lalu Lintas.

  • Jika Anda ingin mendapatkan latensi panggilan layanan terendah, Anda dapat menggunakan fitur pengalihan zona sadar untuk memungkinkan klien memanggil layanan tujuan yang diterapkan di zona yang sama terlebih dahulu. Untuk informasi lebih lanjut, lihat Verifikasi Fitur Pengalihan Zona Sadar pada Topologi Instance ASM.