Bagikan melalui


Mengatur aturan penskalaan di Azure Container Apps

Azure Container Apps mengelola penskalaan horizontal otomatis melalui set aturan penskalaan deklaratif. Saat revisi aplikasi kontainer diskalakan, instans baru revisi dibuat sesuai permintaan. Instans ini dikenal sebagai replika.

Menambahkan atau mengedit aturan penskalaan membuat revisi baru aplikasi kontainer Anda. Revisi adalah rekam jepret yang tidak dapat diubah dari aplikasi kontainer Anda. Untuk mempelajari jenis perubahan mana yang memicu revisi baru, lihat jenis perubahan revisi.

Pekerjaan Container Apps berbasis peristiwa menggunakan aturan penskalaan untuk memicu eksekusi berdasarkan peristiwa.

Definisi skala

Penskalaan adalah kombinasi batas, aturan, dan perilaku.

  • Batas menentukan jumlah replika minimum dan maksimum yang mungkin per revisi saat aplikasi kontainer Anda diskalakan.

    Batas skala Nilai default Nilai min Nilai maks
    Jumlah minimum replika per revisi 0 0 Replika maksimum yang dapat dikonfigurasi adalah 1.000.
    Jumlah maksimum replika per revisi 10 1 Replika maksimum yang dapat dikonfigurasi adalah 1.000.
  • Aturan adalah kriteria yang digunakan oleh Container Apps untuk memutuskan kapan harus menambahkan atau menghapus replika.

    Aturan skala diimplementasikan sebagai HTTP, TCP (Protokol Kontrol Transmisi), atau kustom.

  • Perilaku adalah kombinasi aturan dan batasan untuk menentukan keputusan skala dari waktu ke waktu.

    Perilaku skala menjelaskan bagaimana keputusan skala dibuat.

Saat Anda menentukan aturan penskalakan, penting untuk mempertimbangkan item berikut:

  • Anda tidak ditagih biaya penggunaan jika aplikasi kontainer Anda diskalakan ke nol.
  • Replika yang tidak diproses, tetapi tetap dalam memori mungkin ditagih dengan tingkat "menganggur" yang lebih rendah. Untuk mengetahui informasi lebih lanjut, lihat Penagihan.
  • Jika Anda ingin memastikan bahwa instans revisi Anda selalu berjalan, atur jumlah minimum replika ke 1 atau lebih tinggi.

Aturan skala

Penskalaan didorong oleh tiga kategori pemicu yang berbeda:

  • HTTP: Berdasarkan jumlah permintaan HTTP bersamaan ke revisi Anda.
  • TCP: Berdasarkan jumlah koneksi TCP bersamaan ke revisi Anda.
  • Kustom: Berdasarkan CPU, memori, atau sumber data berbasis peristiwa yang didukung seperti:
    • Azure Service Bus
    • Azure Event Hubs
    • Apache Kafka
    • Redis

Jika Anda menentukan lebih dari satu aturan skala, aplikasi kontainer mulai menskalakan setelah kondisi pertama aturan apa pun terpenuhi.

HTTP

Dengan aturan penskalaan HTTP, Anda memiliki kontrol atas ambang permintaan HTTP bersamaan yang menentukan bagaimana revisi aplikasi kontainer Anda diskalakan. Setiap 15 detik, jumlah permintaan bersamaan dihitung sebagai jumlah permintaan dalam 15 detik terakhir dibagi 15. Pekerjaan Container Apps tidak mendukung aturan penskalakan HTTP.

Dalam contoh berikut, revisi menskalakan hingga lima replika dan dapat menskalakan ke nol. Properti penskalaan diatur ke 100 permintaan bersamaan per detik.

Contoh

Bagian menentukan http aturan skala HTTP.

Properti skala Deskripsi Nilai default Nilai min Nilai maks
concurrentRequests Ketika jumlah permintaan HTTP melebihi nilai ini, maka replika lain ditambahkan. Replika terus menambahkan ke kumpulan hingga jumlahnya maxReplicas . 10 1 n/a
{
  ...
  "resources": {
    ...
    "properties": {
      ...
      "template": {
        ...
        "scale": {
          "minReplicas": 0,
          "maxReplicas": 5,
          "rules": [{
            "name": "http-rule",
            "http": {
              "metadata": {
                "concurrentRequests": "100"
              }
            }
          }]
        }
      }
    }
  }
}

Catatan

Atur properties.configuration.activeRevisionsMode properti aplikasi kontainer ke single, saat menggunakan aturan skala peristiwa non-HTTP.

Tentukan aturan skala HTTP menggunakan --scale-rule-http-concurrency parameter dalam create perintah atau update .

Parameter CLI Deskripsi Nilai default Nilai min Nilai maks
--scale-rule-http-concurrency Ketika jumlah permintaan HTTP bersamaan melebihi nilai ini, maka replika lain ditambahkan. Replika terus menambahkan ke kumpulan hingga jumlahnya max-replicas . 10 1 n/a
az containerapp create \
  --name <CONTAINER_APP_NAME> \
  --resource-group <RESOURCE_GROUP> \
  --environment <ENVIRONMENT_NAME> \
  --image <CONTAINER_IMAGE_LOCATION>
  --min-replicas 0 \
  --max-replicas 5 \
  --scale-rule-name azure-http-rule \
  --scale-rule-type http \
  --scale-rule-http-concurrency 100
  1. Buka aplikasi kontainer Anda di portal Azure

  2. Pilih Skala.

  3. Pilih Edit dan sebarkan.

  4. Pilih tab Skala .

  5. Pilih rentang replika minimum dan maksimum.

    Cuplikan layar slider rentang skala Azure Container Apps.

  6. Pilih Tambahkan.

  7. Dalam kotak Nama aturan, masukkan nama aturan.

  8. Dari menu dropdown Jenis , pilih Penskalakan HTTP.

  9. Dalam kotak Permintaan bersamaan , masukkan jumlah permintaan bersamaan yang Anda inginkan untuk aplikasi kontainer Anda.

TCP

Dengan aturan penskalaan TCP, Anda memiliki kontrol atas ambang koneksi TCP bersamaan yang menentukan bagaimana aplikasi Anda diskalakan. Setiap 15 detik, jumlah koneksi bersamaan dihitung sebagai jumlah koneksi dalam 15 detik terakhir dibagi 15. Pekerjaan Container Apps tidak mendukung aturan penskalaan TCP.

Dalam contoh berikut, revisi aplikasi kontainer menskalakan hingga lima replika dan dapat menskalakan ke nol. Ambang penskalaan diatur ke 100 koneksi bersamaan per detik.

Contoh

Bagian menentukan tcp aturan skala TCP.

Properti skala Deskripsi Nilai default Nilai min Nilai maks
concurrentConnections Ketika jumlah koneksi TCP bersamaan melebihi nilai ini, maka replika lain ditambahkan. Replika terus ditambahkan hingga jumlah saat maxReplicas jumlah koneksi bersamaan meningkat. 10 1 n/a
{
  ...
  "resources": {
    ...
    "properties": {
      ...
      "template": {
        ...
        "scale": {
          "minReplicas": 0,
          "maxReplicas": 5,
          "rules": [{
            "name": "tcp-rule",
            "tcp": {
              "metadata": {
                "concurrentConnections": "100"
              }
            }
          }]
        }
      }
    }
  }
}

Tentukan aturan skala TCP menggunakan --scale-rule-tcp-concurrency parameter dalam create perintah atau update .

Parameter CLI Deskripsi Nilai default Nilai min Nilai maks
--scale-rule-tcp-concurrency Ketika jumlah koneksi TCP bersamaan melebihi nilai ini, maka replika lain ditambahkan. Replika terus ditambahkan hingga jumlah saat max-replicas jumlah koneksi bersamaan meningkat. 10 1 n/a
az containerapp create \
  --name <CONTAINER_APP_NAME> \
  --resource-group <RESOURCE_GROUP> \
  --environment <ENVIRONMENT_NAME> \
  --image <CONTAINER_IMAGE_LOCATION>
  --min-replicas 0 \
  --max-replicas 5 \
  --transport tcp \
  --ingress <external/internal> \
  --target-port <CONTAINER_TARGET_PORT> \
  --scale-rule-name azure-tcp-rule \
  --scale-rule-type tcp \
  --scale-rule-tcp-concurrency 100

Tidak didukung dalam portal Azure. Gunakan Azure CLI atau Azure Resource Manager untuk mengonfigurasi aturan skala TCP.

Adat

Anda dapat membuat aturan penskalakan Container Apps kustom berdasarkan scaler KEDA berbasis ScaledObject dengan default berikut:

Default Detik
Interval polling 30
Periode pendinginan 300

Untuk pekerjaan Container Apps berbasis peristiwa, Anda dapat membuat aturan penskalaan kustom berdasarkan penskala KEDA berbasis ScaledJob.

Contoh berikut menunjukkan cara membuat aturan skala kustom.

Contoh

Contoh ini menunjukkan cara mengonversi penskala Azure Bus Layanan ke aturan skala Container Apps, tetapi Anda menggunakan proses yang sama untuk spesifikasi penskala KEDA berbasis ScaledObject lainnya.

Untuk autentikasi, parameter autentikasi penskala KEDA mengambil rahasia Container Apps atau identitas terkelola.

Prosedur berikut menunjukkan kepada Anda cara mengonversi penskala KEDA ke aturan skala Aplikasi Kontainer. Cuplikan ini adalah kutipan templat ARM untuk menunjukkan kepada Anda di mana setiap bagian cocok dalam konteks templat keseluruhan.

{
  ...
  "resources": {
    ...
    "properties": {
      ...
      "configuration": {
        ...
        "secrets": [
          {
            "name": "<NAME>",
            "value": "<VALUE>"
          }
        ]
      },
      "template": {
        ...
        "scale": {
          "minReplicas": 0,
          "maxReplicas": 5,
          "rules": [
            {
              "name": "<RULE_NAME>",
              "custom": {
                "metadata": {
                  ...
                },
                "auth": [
                  {
                    "secretRef": "<NAME>",
                    "triggerParameter": "<PARAMETER>"
                  }
                ]
              }
            }
          ]
        }
      }
    }
  }
}

Lihat kutipan ini untuk konteks tentang bagaimana contoh di bawah ini cocok dalam templat ARM.

Pertama, Anda menentukan jenis dan metadata aturan skala.

  1. Dari spesifikasi penskala KEDA, temukan nilainya type .

    triggers:
    - type: azure-servicebus
      metadata:
        queueName: my-queue
        namespace: service-bus-namespace
        messageCount: "5"
    
  2. Di templat ARM, masukkan nilai scaler type ke custom.type dalam properti aturan skala.

    ...
    "rules": [
      {
        "name": "azure-servicebus-queue-rule",
        "custom": {
          "type": "azure-servicebus",
          "metadata": {
            "queueName": "my-queue",
            "namespace": "service-bus-namespace",
            "messageCount": "5"
          }
        }
      }
    ]
    ...
    
  3. Dari spesifikasi penskala KEDA, temukan nilainya metadata .

    triggers:
    - type: azure-servicebus
      metadata:
        queueName: my-queue
        namespace: service-bus-namespace
        messageCount: "5"
    
  4. Di templat ARM, tambahkan semua nilai metadata ke bagian custom.metadata aturan skala.

    ...
    "rules": [
      {
        "name": "azure-servicebus-queue-rule",
        "custom": {
          "type": "azure-servicebus",
          "metadata": {
            "queueName": "my-queue",
            "namespace": "service-bus-namespace",
            "messageCount": "5"
          }
        }
      }
    ]
    ...
    

Autentikasi

Aturan skala Container Apps mendukung autentikasi berbasis rahasia. Aturan skala untuk sumber daya Azure, termasuk Azure Queue Storage, Azure Bus Layanan, dan Azure Event Hubs, juga mendukung identitas terkelola. Jika memungkinkan, gunakan autentikasi identitas terkelola untuk menghindari penyimpanan rahasia dalam aplikasi.

Menggunakan rahasia

Untuk menggunakan rahasia untuk autentikasi, Anda perlu membuat rahasia dalam array aplikasi secrets kontainer. Nilai rahasia digunakan dalam auth array aturan skala.

Penskala KEDA dapat menggunakan rahasia dalam TriggerAuthentication yang direferensikan oleh authenticationRef properti . Anda dapat memetakan objek TriggerAuthentication ke aturan skala Container Apps.

  1. Temukan objek yang dirujuk TriggerAuthentication oleh spesifikasi KEDA ScaledObject .

  2. TriggerAuthentication Di objek, temukan masing-masing secretTargetRef dan rahasia terkait.

    apiVersion: v1
    kind: Secret
    metadata:
      name: my-secrets
      namespace: my-project
    type: Opaque
    data:
      connection-string-secret: <SERVICE_BUS_CONNECTION_STRING>
    ---
    apiVersion: keda.sh/v1alpha1
    kind: TriggerAuthentication
    metadata:
      name: azure-servicebus-auth
    spec:
      secretTargetRef:
      - parameter: connection
        name: my-secrets
        key: connection-string-secret
    ---
    apiVersion: keda.sh/v1alpha1
    kind: ScaledObject
    metadata:
      name: azure-servicebus-queue-rule
      namespace: default
    spec:
      scaleTargetRef:
        name: my-scale-target
      triggers:
      - type: azure-servicebus
        metadata:
          queueName: my-queue
          namespace: service-bus-namespace
          messageCount: "5"
        authenticationRef:
            name: azure-servicebus-auth
    
  3. Di templat ARM, untuk setiap rahasia:

    1. Tambahkan rahasia ke array aplikasi secrets kontainer yang berisi nama dan nilai rahasia.

    2. Tambahkan entri ke auth array aturan skala.

      1. Atur nilai triggerParameter properti ke nilai secretTargetRefparameter properti .

      2. Atur nilai secretRef properti ke nama secretTargetRefkey properti .

    {
      ...
      "resources": {
        ...
        "properties": {
          ...
          "configuration": {
            ...
            "secrets": [
              {
                "name": "connection-string-secret",
                "value": "<SERVICE_BUS_CONNECTION_STRING>"
              }
            ]
          },
          "template": {
            ...
            "scale": {
              "minReplicas": 0,
              "maxReplicas": 5,
              "rules": [
                {
                  "name": "azure-servicebus-queue-rule",
                  "custom": {
                    "type": "azure-servicebus",
                    "metadata": {
                      "queueName": "my-queue",
                      "namespace": "service-bus-namespace",
                      "messageCount": "5"
                    },
                    "auth": [
                      {
                        "secretRef": "connection-string-secret",
                        "triggerParameter": "connection"
                      }
                    ]
                  }
                }
              ]
            }
          }
        }
      }
    }
    

    Beberapa scaler mendukung metadata dengan akhiran FromEnv untuk mereferensikan nilai dalam variabel lingkungan. Container Apps melihat kontainer pertama yang tercantum dalam templat ARM untuk variabel lingkungan.

    Lihat bagian pertimbangan untuk informasi terkait keamanan lainnya.

Menggunakan identitas terkelola

Aturan skala Container Apps dapat menggunakan identitas terkelola untuk mengautentikasi dengan layanan Azure. Templat ARM berikut meneruskan identitas terkelola berbasis sistem untuk mengautentikasi penskala Azure Queue.

"scale": {
  "minReplicas": 0,
  "maxReplicas": 4,
  "rules": [
    {
      "name": "azure-queue",
      "custom": {
        "type": "azure-queue",
        "metadata": {
          "accountName": "apptest123",
          "queueName": "queue1",
          "queueLength": "1"
        },
        "identity": "system"
      }
    }
  ]
}

Untuk mempelajari selengkapnya tentang menggunakan identitas terkelola dengan aturan skala, lihat Identitas terkelola.

  1. Dari spesifikasi penskala KEDA, temukan nilainya type .

    triggers:
    - type: azure-servicebus
      metadata:
        queueName: my-queue
        namespace: service-bus-namespace
        messageCount: "5"
    
  2. Dalam perintah CLI, atur --scale-rule-type parameter ke nilai spesifikasi type .

    az containerapp create \
      --name <CONTAINER_APP_NAME> \
      --resource-group <RESOURCE_GROUP> \
      --environment <ENVIRONMENT_NAME> \
      --image <CONTAINER_IMAGE_LOCATION>
      --min-replicas 0 \
      --max-replicas 5 \
      --secrets "connection-string-secret=<SERVICE_BUS_CONNECTION_STRING>" \
      --scale-rule-name azure-servicebus-queue-rule \
      --scale-rule-type azure-servicebus \
      --scale-rule-metadata "queueName=my-queue" \
                            "namespace=service-bus-namespace" \
                            "messageCount=5" \
      --scale-rule-auth "connection=connection-string-secret"
    
  3. Dari spesifikasi penskala KEDA, temukan nilainya metadata .

    triggers:
    - type: azure-servicebus
      metadata:
        queueName: my-queue
        namespace: service-bus-namespace
        messageCount: "5"
    
  4. Dalam perintah CLI, atur --scale-rule-metadata parameter ke nilai metadata.

    Anda perlu mengubah nilai dari format YAML menjadi pasangan kunci/nilai untuk digunakan pada baris perintah. Pisahkan setiap pasangan kunci/nilai dengan spasi.

    az containerapp create \
      --name <CONTAINER_APP_NAME> \
      --resource-group <RESOURCE_GROUP> \
      --environment <ENVIRONMENT_NAME> \
      --image <CONTAINER_IMAGE_LOCATION>
      --min-replicas 0 \
      --max-replicas 5 \
      --secrets "connection-string-secret=<SERVICE_BUS_CONNECTION_STRING>" \
      --scale-rule-name azure-servicebus-queue-rule \
      --scale-rule-type azure-servicebus \
      --scale-rule-metadata "queueName=my-queue" \
                            "namespace=service-bus-namespace" \
                            "messageCount=5" \
      --scale-rule-auth "connection=connection-string-secret"
    

Autentikasi

Aturan skala Container Apps mendukung autentikasi berbasis rahasia. Aturan skala untuk sumber daya Azure, termasuk Azure Queue Storage, Azure Bus Layanan, dan Azure Event Hubs, juga mendukung identitas terkelola. Jika memungkinkan, gunakan autentikasi identitas terkelola untuk menghindari penyimpanan rahasia dalam aplikasi.

Menggunakan rahasia

Untuk mengonfigurasi autentikasi berbasis rahasia untuk aturan skala Container Apps, Anda mengonfigurasi rahasia di aplikasi kontainer dan mereferensikannya dalam aturan skala.

Penskala KEDA mendukung rahasia dalam TriggerAuthentication yang authenticationRef digunakan properti untuk referensi. Anda dapat memetakan TriggerAuthentication objek ke aturan skala Container Apps.

  1. Temukan objek yang dirujuk TriggerAuthentication oleh spesifikasi KEDA ScaledObject . Identifikasi setiap secretTargetRef TriggerAuthentication objek.

    apiVersion: v1
    kind: Secret
    metadata:
      name: my-secrets
      namespace: my-project
    type: Opaque
    data:
      connection-string-secret: <SERVICE_BUS_CONNECTION_STRING>
    ---
    apiVersion: keda.sh/v1alpha1
    kind: TriggerAuthentication
    metadata:
      name: azure-servicebus-auth
    spec:
      secretTargetRef:
      - parameter: connection
        name: my-secrets
        key: connection-string-secret
    ---
    apiVersion: keda.sh/v1alpha1
    kind: ScaledObject
    metadata:
      name: azure-servicebus-queue-rule
      namespace: default
    spec:
      scaleTargetRef:
        name: my-scale-target
      triggers:
      - type: azure-servicebus
        metadata:
          queueName: my-queue
          namespace: service-bus-namespace
          messageCount: "5"
        authenticationRef:
            name: azure-servicebus-auth
    
  2. Di aplikasi kontainer Anda, buat rahasia yang cocok dengan secretTargetRef properti.

  3. Dalam perintah CLI, atur parameter untuk setiap secretTargetRef entri.

    1. Buat entri rahasia dengan --secrets parameter . Jika ada beberapa rahasia, pisahkan dengan spasi.

    2. Buat entri autentikasi dengan --scale-rule-auth parameter . Jika ada beberapa entri, pisahkan dengan spasi.

    az containerapp create \
      --name <CONTAINER_APP_NAME> \
      --resource-group <RESOURCE_GROUP> \
      --environment <ENVIRONMENT_NAME> \
      --image <CONTAINER_IMAGE_LOCATION>
      --min-replicas 0 \
      --max-replicas 5 \
      --secrets "connection-string-secret=<SERVICE_BUS_CONNECTION_STRING>" \
      --scale-rule-name azure-servicebus-queue-rule \
      --scale-rule-type azure-servicebus \
      --scale-rule-metadata "queueName=my-queue" \
                            "namespace=service-bus-namespace" \
                            "messageCount=5" \
      --scale-rule-auth "connection=connection-string-secret"
    

Menggunakan identitas terkelola

Aturan skala Container Apps dapat menggunakan identitas terkelola untuk mengautentikasi dengan layanan Azure. Perintah berikut membuat aplikasi kontainer dengan identitas terkelola yang ditetapkan pengguna dan menggunakannya untuk mengautentikasi penskala Azure Queue.

az containerapp create \
  --resource-group <RESOURCE_GROUP> \
  --name <APP_NAME> \
  --environment <ENVIRONMENT_ID> \
  --user-assigned <USER_ASSIGNED_IDENTITY_ID> \
  --scale-rule-name azure-queue \
  --scale-rule-type azure-queue \
  --scale-rule-metadata "accountName=<AZURE_STORAGE_ACCOUNT_NAME>" "queueName=queue1" "queueLength=1" \
  --scale-rule-identity <USER_ASSIGNED_IDENTITY_ID>

Ganti tempat penampung dengan nilai Anda.

  1. Buka aplikasi kontainer Anda di portal Azure.

  2. Pilih Skala.

  3. Pilih Edit dan sebarkan.

  4. Pilih tab Skala dan replika .

  5. Pilih rentang replika minimum dan maksimum.

    Cuplikan layar slider rentang skala Azure Container Apps.

  6. Pilih Tambahkan.

  7. Dalam kotak Nama aturan, masukkan nama aturan.

  8. Dari menu dropdown Jenis , pilih Kustom.

  9. Dari spesifikasi penskala KEDA, temukan nilainya type .

    triggers:
    - type: azure-servicebus
      metadata:
        queueName: my-queue
        namespace: service-bus-namespace
        messageCount: "5"
    
  10. Dalam kotak Jenis aturan kustom, masukkan nilai scaler type .

  11. Dari spesifikasi penskala KEDA, temukan nilainya metadata .

    triggers:
    - type: azure-servicebus
      metadata:
        queueName: my-queue
        namespace: service-bus-namespace
        messageCount: "5"
    
  12. Di portal, temukan bagian Metadata dan pilih Tambahkan. Masukkan nama dan nilai untuk setiap item di bagian metadata spesifikasi KEDA ScaledObject .

Autentikasi

Aturan skala Container Apps mendukung autentikasi berbasis rahasia. Aturan skala untuk sumber daya Azure, termasuk Azure Queue Storage, Azure Bus Layanan, dan Azure Event Hubs, juga mendukung identitas terkelola. Jika memungkinkan, gunakan autentikasi identitas terkelola untuk menghindari penyimpanan rahasia dalam aplikasi.

Menggunakan rahasia

  1. Di aplikasi kontainer Anda, buat rahasia yang ingin Anda referensikan.

  2. Temukan objek yang dirujuk TriggerAuthentication oleh spesifikasi KEDA ScaledObject . Identifikasi setiap secretTargetRef TriggerAuthentication objek.

    apiVersion: v1
    kind: Secret
    metadata:
      name: my-secrets
      namespace: my-project
    type: Opaque
    data:
      connection-string-secret: <SERVICE_BUS_CONNECTION_STRING>
    ---
    apiVersion: keda.sh/v1alpha1
    kind: TriggerAuthentication
    metadata:
      name: azure-servicebus-auth
    spec:
      secretTargetRef:
      - parameter: connection
        name: my-secrets
        key: connection-string-secret
    ---
    apiVersion: keda.sh/v1alpha1
    kind: ScaledObject
    metadata:
      name: azure-servicebus-queue-rule
      namespace: default
    spec:
      scaleTargetRef:
        name: my-scale-target
      triggers:
      - type: azure-servicebus
        metadata:
          queueName: my-queue
          namespace: service-bus-namespace
          messageCount: "5"
        authenticationRef:
            name: azure-servicebus-auth
    
  3. Di bagian Autentikasi , pilih Tambahkan untuk membuat entri untuk setiap parameter KEDA secretTargetRef .

Menggunakan identitas terkelola

Autentikasi identitas terkelola tidak didukung di portal Azure. Gunakan Azure CLI atau Azure Resource Manager untuk mengautentikasi menggunakan identitas terkelola.

Aturan skala default

Jika Anda tidak membuat aturan skala, aturan skala default diterapkan ke aplikasi kontainer Anda.

Pemicu Replika Min Replika Maks
HTTP 0 10

Penting

Pastikan Anda membuat aturan skala atau diatur minReplicas ke 1 atau lebih jika Anda tidak mengaktifkan ingress. Jika ingress dinonaktifkan dan Anda tidak menentukan minReplicas atau aturan skala kustom, maka aplikasi kontainer Anda akan menskalakan ke nol dan tidak memiliki cara untuk memulai pencadangan.

Perilaku skala

Perilaku penskalakan memiliki default berikut:

Parameter Nilai
Interval polling 30 detik
Periode pendinginan 300 detik
Menskalakan jendela stabilisasi 0 detik
Menskalakan jendela stabilisasi 300 detik
Langkah peningkatan skala 1, 4, 100% dari saat ini
Turunkan skala langkah 100% dari saat ini
Algoritma penskalakan desiredReplicas = ceil(currentMetricValue / targetMetricValue)
  • Interval polling adalah seberapa sering sumber peristiwa dikueri oleh KEDA. Nilai ini tidak berlaku untuk aturan skala HTTP dan TCP.
  • Periode cool down adalah berapa lama setelah peristiwa terakhir diamati sebelum aplikasi menurunkan skala ke jumlah replika minimumnya.
  • Jendela stabilisasi peningkatan adalah berapa lama untuk menunggu sebelum melakukan keputusan peningkatan skala setelah kondisi peningkatan terpenuhi.
  • Jendela stabilisasi penurunan skala adalah berapa lama untuk menunggu sebelum melakukan keputusan penurunan skala setelah kondisi penurunan skala terpenuhi.
  • Langkah peningkatan skala adalah tingkat instans baru ditambahkan. Dimulai dengan 1, 4, 8, 16, 32, ... hingga jumlah replika maksimum yang dikonfigurasi.
  • Langkah penurunan skala adalah tingkat di mana replika dihapus. Secara default 100% replika yang perlu dimatikan dihapus.
  • Algoritma penskalaan adalah rumus yang digunakan untuk menghitung jumlah replika yang diinginkan saat ini.

Contoh

Untuk aturan skala berikut:

"minReplicas": 0,
"maxReplicas": 20,
"rules": [
  {
    "name": "azure-servicebus-queue-rule",
    "custom": {
      "type": "azure-servicebus",
      "metadata": {
        "queueName": "my-queue",
        "namespace": "service-bus-namespace",
        "messageCount": "5"
      }
    }
  }
]

Saat aplikasi Anda diskalakan, KEDA dimulai dengan antrean kosong dan melakukan langkah-langkah berikut:

  1. Periksa my-queue setiap 30 detik.
  2. Jika panjang antrean sama dengan 0, kembali ke (1).
  3. Jika panjang antrean adalah > 0, skalakan aplikasi ke 1.
  4. Jika panjang antrean adalah 50, hitung desiredReplicas = ceil(50/5) = 10.
  5. Menskalakan aplikasi ke min(maxReplicaCount, desiredReplicas, max(4, 2*currentReplicaCount))
  6. Kembali ke (1).

Jika aplikasi diskalakan ke jumlah replika maksimum 20, penskalaan melewati langkah-langkah sebelumnya yang sama. Penurunan skala hanya terjadi jika kondisi terpenuhi selama 300 detik (jendela stabilisasi penurunan skala). Setelah panjang antrean adalah 0, KEDA menunggu selama 300 detik (periode pendinginan) sebelum menskalakan aplikasi ke 0.

Pertimbangan

  • Dalam mode "beberapa revisi", menambahkan pemicu skala baru membuat revisi baru aplikasi Anda tetapi revisi lama Anda tetap tersedia dengan aturan skala lama. Gunakan halaman Manajemen revisi untuk mengelola alokasi lalu lintas.

  • Tidak ada biaya penggunaan yang dikeluarkan ketika aplikasi menskalakan ke nol. Untuk informasi harga selengkapnya, lihat Penagihan di Azure Container Apps.

  • Anda perlu mengaktifkan perlindungan data untuk semua aplikasi .NET di Azure Container Apps. Lihat Menyebarkan dan menskalakan aplikasi ASP.NET Core di Azure Container Apps untuk detailnya.

Pembatasan yang diketahui

  • Penskalakan vertikal tidak didukung.

  • Jumlah replika adalah jumlah target, bukan jaminan.

  • Jika Anda menggunakan aktor Dapr untuk mengelola status, Anda harus ingat bahwa penskalakan ke nol tidak didukung. Dapr menggunakan aktor virtual untuk mengelola panggilan asinkron, yang berarti representasi dalam memori mereka tidak terkait dengan identitas atau masa pakainya.

Langkah berikutnya