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
Buka aplikasi kontainer Anda di portal Azure
Pilih Skala.
Pilih Edit dan sebarkan.
Pilih tab Skala .
Pilih rentang replika minimum dan maksimum.
Pilih Tambahkan.
Dalam kotak Nama aturan, masukkan nama aturan.
Dari menu dropdown Jenis , pilih Penskalakan HTTP.
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.
Dari spesifikasi penskala KEDA, temukan nilainya
type
.triggers: - type: azure-servicebus metadata: queueName: my-queue namespace: service-bus-namespace messageCount: "5"
Di templat ARM, masukkan nilai scaler
type
kecustom.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" } } } ] ...
Dari spesifikasi penskala KEDA, temukan nilainya
metadata
.triggers: - type: azure-servicebus metadata: queueName: my-queue namespace: service-bus-namespace messageCount: "5"
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.
Temukan objek yang dirujuk
TriggerAuthentication
oleh spesifikasi KEDAScaledObject
.TriggerAuthentication
Di objek, temukan masing-masingsecretTargetRef
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
Di templat ARM, untuk setiap rahasia:
Tambahkan rahasia ke array aplikasi
secrets
kontainer yang berisi nama dan nilai rahasia.Tambahkan entri ke
auth
array aturan skala.Atur nilai
triggerParameter
properti ke nilaisecretTargetRef
parameter
properti .Atur nilai
secretRef
properti ke namasecretTargetRef
key
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.
Dari spesifikasi penskala KEDA, temukan nilainya
type
.triggers: - type: azure-servicebus metadata: queueName: my-queue namespace: service-bus-namespace messageCount: "5"
Dalam perintah CLI, atur
--scale-rule-type
parameter ke nilai spesifikasitype
.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"
Dari spesifikasi penskala KEDA, temukan nilainya
metadata
.triggers: - type: azure-servicebus metadata: queueName: my-queue namespace: service-bus-namespace messageCount: "5"
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.
Temukan objek yang dirujuk
TriggerAuthentication
oleh spesifikasi KEDAScaledObject
. Identifikasi setiapsecretTargetRef
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
Di aplikasi kontainer Anda, buat rahasia yang cocok dengan
secretTargetRef
properti.Dalam perintah CLI, atur parameter untuk setiap
secretTargetRef
entri.Buat entri rahasia dengan
--secrets
parameter . Jika ada beberapa rahasia, pisahkan dengan spasi.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.
Buka aplikasi kontainer Anda di portal Azure.
Pilih Skala.
Pilih Edit dan sebarkan.
Pilih tab Skala dan replika .
Pilih rentang replika minimum dan maksimum.
Pilih Tambahkan.
Dalam kotak Nama aturan, masukkan nama aturan.
Dari menu dropdown Jenis , pilih Kustom.
Dari spesifikasi penskala KEDA, temukan nilainya
type
.triggers: - type: azure-servicebus metadata: queueName: my-queue namespace: service-bus-namespace messageCount: "5"
Dalam kotak Jenis aturan kustom, masukkan nilai scaler
type
.Dari spesifikasi penskala KEDA, temukan nilainya
metadata
.triggers: - type: azure-servicebus metadata: queueName: my-queue namespace: service-bus-namespace messageCount: "5"
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
Di aplikasi kontainer Anda, buat rahasia yang ingin Anda referensikan.
Temukan objek yang dirujuk
TriggerAuthentication
oleh spesifikasi KEDAScaledObject
. Identifikasi setiapsecretTargetRef
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
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:
- Periksa
my-queue
setiap 30 detik. - Jika panjang antrean sama dengan 0, kembali ke (1).
- Jika panjang antrean adalah > 0, skalakan aplikasi ke 1.
- Jika panjang antrean adalah 50, hitung
desiredReplicas = ceil(50/5) = 10
. - Menskalakan aplikasi ke
min(maxReplicaCount, desiredReplicas, max(4, 2*currentReplicaCount))
- 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.