Menskalakan dan menskalakan layanan runtime secara otomatis

Anda dapat menskalakan sebagian besar layanan yang berjalan di Kubernetes dari command line atau penggantian konfigurasi. Anda dapat menyetel penskalaan parameter untuk layanan runtime hybrid Apigee di File overrides.yaml.

Layanan Diterapkan Sebagai Penskalaan
Cassandra ApigeeDatastore (CRD) Lihat Menskalakan Cassandra.
Traffic Masuk/LoadBalancer Deployment Anthos Service Mesh menggunakan Horizontal Pod Autoscaling (HPA).
Pencatat Log DaemonSet DaemonSets mengelola replika pod di semua node, sehingga dapat diskalakan saat Anda menskalakan pod itu sendiri.
MART
Apigee Connect
Pengamat
ApigeeOrganization (CRD)

Untuk melakukan penskalaan melalui konfigurasi, tingkatkan nilai Properti konfigurasi replicaCountMin deployment untuk stanza mart, watcher, dan/atau connectAgent. Contoh:

mart:
 replicaCountMax: 2
 replicaCountMin: 1

watcher:
 replicaCountMax: 2
 replicaCountMin: 1

connectAgent:
 replicaCountMax: 2
 replicaCountMin: 1

Deployment ini menggunakan Autoscaler Pod Horizontal untuk penskalaan otomatis. Setel targetCPUUtilizationPercentage objek Deployment properti ke ambang batas untuk peningkatan skala; ketika nilai ini terlampaui, Kubernetes akan menambahkan pod hingga ke nilai replicaCountMax.

Untuk informasi selengkapnya tentang cara menyetel properti konfigurasi, lihat Mengelola komponen bidang runtime.

Runtime
Sinkronisasi
UDCA
ApigeeEnvironment (CRD) Untuk melakukan penskalaan melalui konfigurasi, tingkatkan nilai Properti replicaCountMin untuk udca, synchronizer, dan/atau runtime stanza di file penggantian. Contoh:
synchronizer:
 replicaCountMax: 10
 replicaCountMin: 1

runtime:
 replicaCountMax: 10
 replicaCountMin: 1

udca:
 replicaCountMax: 10
 replicaCountMin: 1

Catatan: Perubahan ini berlaku untuk SEMUA lingkungan dalam file yang diganti. Jika Anda ingin menyesuaikan penskalaan untuk setiap lingkungan, lihat Konfigurasi lanjutan di bawah.

Deployment ini menggunakan Autoscaler Pod Horizontal untuk penskalaan otomatis. Menyetel objek Deployment targetCPUUtilizationPercentage ke properti batas untuk peningkatan skala; saat nilai ini terlampaui, Kubernetes akan menambahkan pod hingga nilai replicaCountMax.

Untuk informasi selengkapnya tentang cara menyetel properti konfigurasi, lihat Mengelola komponen bidang runtime.

Konfigurasi lanjutan

Dalam beberapa skenario, Anda mungkin perlu menggunakan opsi penskalaan lanjutan. Contoh skenario mencakup:

  • Menyetel opsi penskalaan yang berbeda untuk setiap lingkungan. Misalnya, di mana env1 memiliki minReplica dari 5 dan env2 memiliki minReplica 2.
  • Menyetel opsi penskalaan yang berbeda untuk setiap komponen dalam lingkungan. Misalnya, dengan komponen udca memiliki maxReplica dari 5 dan Komponen synchronizer memiliki maxReplica dari 2.

Contoh berikut menunjukkan cara menggunakan perintah kubernetes patch untuk mengubah properti maxReplicas untuk komponen runtime:

  1. Buat variabel lingkungan untuk digunakan dengan perintah:
    export ENV=my-environment-name
    export NAMESPACE=apigee  #the namespace where apigee is deployed
    export COMPONENT=runtime #can be udca or synchronizer
    export MAX_REPLICAS=2
    export MIN_REPLICAS=1
  2. Gunakan tambalan. Perhatikan bahwa contoh ini mengasumsikan bahwa kubectl ada di PATH Anda:
    kubectl patch apigeeenvironment -n $NAMESPACE \
      $(kubectl get apigeeenvironments -n $NAMESPACE -o jsonpath='{.items[?(@.spec.name == "'$ENV'" )]..metadata.name}') \
      --patch "$(echo -e "spec:\n  components:\n    $COMPONENT:\n      autoScaler:\n        maxReplicas: $MAX_REPLICAS\n        minReplicas: $MIN_REPLICAS")" \
      --type merge
    
  3. Verifikasi perubahan yang terjadi:
    kubectl get hpa -n $NAMESPACE
    

Penskalaan berbasis metrik

Dengan penskalaan berbasis metrik, runtime dapat menggunakan metrik CPU dan aplikasi untuk menskalakan pod apigee-runtime. Horizontal Pod Autoscaler (HPA) API Kubernetes, menggunakan kolom hpaBehavior untuk mengonfigurasi perilaku peningkatan skala dan penurunan skala layanan target. Penskalaan berbasis metrik tidak tersedia untuk komponen lain dalam deployment hybrid.

Penskalaan dapat disesuaikan berdasarkan metrik berikut:

Metrik Ukur Pertimbangan
serverNioTaskWaitTime Waktu tunggu rata-rata (dalam md) pemrosesan antrean dalam instance runtime untuk permintaan proxy di lapisan http. Metrik ini mengukur dampak jumlah dan ukuran payload permintaan dan respons proxy.
serverMainTaskWaitTime Waktu tunggu rata-rata (dalam md) pemrosesan antrean di instance runtime untuk permintaan proxy guna memproses kebijakan. Metrik ini mengukur dampak kompleksitas dalam kebijakan yang dilampirkan ke alur permintaan proxy.

Contoh berikut dari stanza runtime di overrides.yaml menggambarkan parameter standar (dan rentang yang diizinkan) untuk menskalakan pod apigee-runtime dalam penerapan hybrid:

hpaMetrics:
      serverMainTaskWaitTime: 400M (300M to 450M)
      serverNioTaskWaitTime: 400M (300M to 450M)
      targetCPUUtilizationPercentage: 75
    hpaBehavior:
      scaleDown:
        percent:
          periodSeconds: 60 (30 - 180)
          value: 20 (5 - 50)
        pods:
          periodSeconds: 60 (30 - 180)
          value: 2 (1 - 15)
        selectPolicy: Min
        stabilizationWindowSeconds: 120 (60 - 300)
      scaleUp:
        percent:
          periodSeconds: 60 (30 - 120)
          value: 20 (5 - 100)
        pods:
          periodSeconds: 60 (30 - 120)
          value: 4 (2 - 15)
        selectPolicy: Max
        stabilizationWindowSeconds: 30 (30 - 120)
  

Mengonfigurasi penskalaan yang lebih agresif

Meningkatkan nilai percent dan pods pada kebijakan peningkatan skala akan menghasilkan kebijakan yang lebih agresif kebijakan peningkatan skala. Demikian pula, meningkatkan nilai percent dan pods di scaleDown akan menghasilkan kebijakan penurunan skala yang agresif. Contoh:

hpaMetrics:
    serverMainTaskWaitTime: 400M
    serverNioTaskWaitTime: 400M
    targetCPUUtilizationPercentage: 75
  hpaBehavior:
    scaleDown:
      percent:
        periodSeconds: 60
        value: 20
      pods:
        periodSeconds: 60
        value: 4
      selectPolicy: Min
      stabilizationWindowSeconds: 120
    scaleUp:
      percent:
        periodSeconds: 60
        value: 30
      pods:
        periodSeconds: 60
        value: 5
      selectPolicy: Max
      stabilizationWindowSeconds: 30

Dalam contoh di atas, scaleDown.pods.value ditingkatkan menjadi 5, scaleUp.percent.value dinaikkan menjadi 30, dan scaleUp.pods.value dinaikkan menjadi 5.

Mengonfigurasi penskalaan yang kurang agresif

Nilai konfigurasi hpaBehavior juga dapat diturunkan untuk menerapkan kebijakan peningkatan skala dan penurunan skala yang tidak terlalu agresif. Contoh:

hpaMetrics:
    serverMainTaskWaitTime: 400M
    serverNioTaskWaitTime: 400M
    targetCPUUtilizationPercentage: 75
  hpaBehavior:
    scaleDown:
      percent:
        periodSeconds: 60
        value: 10
      pods:
        periodSeconds: 60
        value: 1
      selectPolicy: Min
      stabilizationWindowSeconds: 180
    scaleUp:
      percent:
        periodSeconds: 60
        value: 20
      pods:
        periodSeconds: 60
        value: 4
      selectPolicy: Max
      stabilizationWindowSeconds: 30

Dalam contoh di atas, scaleDown.percent.value diturunkan menjadi 10, scaleDown.pods.value diturunkan menjadi 1, dan scaleUp.stablizationWindowSeconds dinaikkan menjadi 180.

Untuk informasi selengkapnya tentang penskalaan berbasis metrik menggunakan kolom hpaBehavior, lihat Kebijakan penskalaan.

Menonaktifkan penskalaan berbasis metrik

Meskipun penskalaan berbasis metrik diaktifkan secara default dan tidak dapat dinonaktifkan sepenuhnya, Anda dapat mengonfigurasi ambang batas metrik pada tingkat yang tidak akan dipicu oleh penskalaan berbasis metrik. Penskalaan yang dihasilkan akan sama dengan penskalaan berbasis CPU. Misalnya, Anda dapat menggunakan konfigurasi berikut untuk mencegah pemicuan penskalaan berbasis metrik:

hpaMetrics:
      serverMainTaskWaitTime: 4000M
      serverNioTaskWaitTime: 4000M
      targetCPUUtilizationPercentage: 75
    hpaBehavior:
      scaleDown:
        percent:
          periodSeconds: 60
          value: 10
        pods:
          periodSeconds: 60
          value: 1
        selectPolicy: Min
        stabilizationWindowSeconds: 180
      scaleUp:
        percent:
          periodSeconds: 60
          value: 20
        pods:
          periodSeconds: 60
          value: 4
        selectPolicy: Max
        stabilizationWindowSeconds: 30

Pemecahan masalah

Bagian ini menjelaskan metode pemecahan masalah untuk error umum yang mungkin Anda temui saat mengonfigurasi penskalaan dan penskalaan otomatis.

HPA menunjukkan unknown untuk nilai metrik

Jika penskalaan berbasis metrik tidak berfungsi dan HPA akan menampilkan unknown untuk nilai metrik, gunakan perintah berikut untuk memeriksa output HPA:

kubectl describe hpa HPA_NAME

Saat menjalankan perintah, ganti HPA_NAME dengan nama HPA yang ingin Anda lihat.

Output akan menampilkan target CPU dan pemakaian layanan, yang menunjukkan bahwa penskalaan CPU akan berfungsi jika tidak ada penskalaan berbasis metrik. Untuk perilaku HPA yang menggunakan beberapa parameter, lihat Penskalaan pada beberapa metrik.