Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Azure Container Apps mengelola penskalaan horizontal otomatis melalui set aturan penskalaan deklaratif. Seiring skala revisi aplikasi kontainer meningkat, instans baru dari revisi tersebut dibuat sesuai permintaan. Instans ini dikenal sebagai replika.
Untuk mendukung perilaku penskalakan ini, Azure Container Apps didukung oleh KEDA (Autoscaling berbasis Peristiwa Kubernetes). KEDA mendukung penskalaan terhadap berbagai metrik seperti permintaan HTTP, pesan antrean, beban CPU dan memori, dan sumber peristiwa seperti Azure Service Bus, Azure Event Hubs, Apache Kafka, dan Redis. Untuk informasi selengkapnya, lihat Scaler dalam dokumentasi KEDA.
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 minimum 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 sedang memproses, tetapi tetap dalam memori mungkin dikenakan tarif "siaga" 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
Tiga kategori pemicu menentukan bagaimana penskalaan terjadi:
- HTTP: Berdasarkan jumlah permintaan HTTP bersamaan terhadap revisi Anda.
- TCP: Berdasarkan jumlah koneksi TCP bersamaan ke revisi Anda.
-
Kustom: Berdasarkan metrik kustom seperti:
- CPU (Unit Pemrosesan Pusat)
- Ingatan
- Sumber data berbasis peristiwa yang didukung:
- 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. Job Container Apps tidak mendukung aturan penskalaan HTTP.
Dalam contoh berikut, revisi meningkatkan skala hingga lima replika dan dapat diturunkan menjadi nol. Properti penskalaan diatur ke 100 permintaan bersamaan per detik.
Contoh
Bagian ini menentukan aturan skala HTTP http
.
Properti skala | Deskripsi | Nilai bawaan | Nilai minimum | Nilai maks |
---|---|---|---|---|
concurrentRequests |
Ketika jumlah permintaan HTTP melebihi nilai ini, maka replika lain ditambahkan. Replika terus menambah ke kumpulan hingga mencapai jumlah 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 dari CLI | Deskripsi | Nilai default | Nilai minimum | 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 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 tcp
ini menentukan aturan skala TCP.
Properti skala | Deskripsi | Nilai bawaan | Nilai minimum | Nilai maks |
---|---|---|---|---|
concurrentConnections |
Ketika jumlah koneksi TCP bersamaan melebihi nilai ini, maka replika lain ditambahkan. Replika akan terus ditambahkan hingga jumlah maxReplicas seiring dengan meningkatnya jumlah koneksi bersamaan. |
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 bawaan | Nilai minimum | Nilai maks |
---|---|---|---|---|
--scale-rule-tcp-concurrency |
Ketika jumlah koneksi TCP bersamaan melebihi nilai ini, maka replika lain ditambahkan. Replika terus ditambahkan hingga mencapai max-replicas ketika 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 penskalaan Container Apps kustom berdasarkan Scaler KEDA yang berbasis ScaledObject dengan default berikut:
Pengaturan Default | Detik |
---|---|
Interval waktu polling | 30 |
Masa pendinginan | 300 |
Untuk jobs Container Apps yang berorientasi pada peristiwa, Anda dapat membuat aturan penskalaan khusus berdasarkan penskala KEDA berbasisScaledJob.
Contoh berikut menunjukkan cara membuat aturan skala kustom.
Contoh
Contoh ini menunjukkan cara mengonversi penskala Azure Service Bus menjadi aturan penskalaan Aplikasi Kontainer, tetapi Anda menggunakan proses yang sama untuk penskala KEDA dengan spesifikasi yang berbasis ScaledObject lainnya.
Untuk autentikasi, parameter autentikasi penskala KEDA mengambil sekret dari Container Apps atau identitas terkelola.
Prosedur di bawah ini menunjukkan kepada Anda cara mengonversi penskala KEDA ke aturan penskalaan 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
ke properticustom.type
dari aturan skala.... "rules": [ { "name": "azure-servicebus-queue-rule", "custom": { "type": "azure-servicebus", "metadata": { "queueName": "my-queue", "namespace": "service-bus-namespace", "messageCount": "5" } } } ] ...
Dari spesifikasi skala KEDA, temukan nilai
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 susunan aturan skala.
Pemilah KEDA dapat menggunakan rahasia dalam TriggerAuthentication yang dirujuk oleh properti authenticationRef
. Anda dapat memetakan objek TriggerAuthentication ke aturan skala Container Apps.
Temukan objek yang dirujuk oleh spesifikasi KEDA
TriggerAuthentication
ScaledObject
.Di dalam objek
TriggerAuthentication
, temukan setiapsecretTargetRef
dan rahasia terkaitnya.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 pada aturan skala.Atur nilai properti
triggerParameter
ke nilai propertiparameter
darisecretTargetRef
.Atur nilai properti
secretRef
ke nama propertikey
darisecretTargetRef
.
{ ... "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 penggunaan rahasia dalam TriggerAuthentication, yang digunakan sebagai referensi oleh properti authenticationRef
. 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 data rahasia yang sesuai 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 pengganti 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"
Masukkan nilai scaler dalam kotak Tipe aturan kustom.
Dari spesifikasi penskala KEDA, temukan nilai-nilai
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
TriggerAuthentication
yang dirujuk oleh spesifikasi KEDAScaledObject
. Identifikasi setiapsecretTargetRef
dari objekTriggerAuthentication
.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 Microsoft Azure. Gunakan Azure CLI atau Azure Resource Manager untuk mengautentikasi menggunakan identitas terkelola.
Aturan skala baku
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 mengatur minReplicas
ke 1 atau lebih jika ingress tidak diaktifkan. Jika ingress dinonaktifkan dan Anda tidak menentukan minReplicas
atau aturan skala kustom, maka aplikasi kontainer Anda menskalakan ke nol dan tidak memiliki cara untuk memulai kembali.
Perilaku skala
Perilaku penskalakan memiliki default berikut:
Parameter | Nilai |
---|---|
Interval pemungutan suara | 30 detik |
Masa pendinginan | 300 detik |
Menskalakan jendela stabilisasi | 0 detik |
Perkecil 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 frekuensi seberapa sering KEDA melakukan kueri pada sumber acara. Nilai ini tidak berlaku untuk aturan skala HTTP dan TCP.
- Periode cool down adalah waktu yang diperlukan setelah peristiwa terakhir diamati sebelum aplikasi menurunkan skala ke jumlah replika minimalnya.
- Jendela stabilisasi peningkatan skala adalah berapa lama untuk menunggu sebelum melakukan penentuan peningkatan skala setelah kondisi peningkatan skala terpenuhi.
- Jendela stabilisasi penurunan skala adalah waktu yang diperlukan untuk menunggu sebelum membuat keputusan penurunan skala setelah kondisi penurunan skala terpenuhi.
- Tingkat peningkatan skala adalah kecepatan di mana instans baru ditambahkan. Dimulai dengan 1, 4, 8, 16, 32, ... hingga jumlah replika maksimum yang dikonfigurasi.
- Tahap pengurangan 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"
}
}
}
]
Ketika aplikasi Anda berkembang, KEDA memulai 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 Dapr actors untuk mengelola keadaan, harap diingat bahwa penskalakan hingga nol tidak didukung. Dapr menggunakan aktor virtual untuk mengelola panggilan asinkron, yang berarti representasi dalam memori mereka tidak terkait dengan identitas atau masa pakainya.
Mengubah proksi KEDA melalui pengaturan proksi tidak didukung. Pertimbangkan untuk menggunakan Profil Beban Kerja dengan NAT Gateway atau User Defined Route (UDR) untuk mengirim lalu lintas ke perangkat jaringan, tempat lalu lintas dapat diperiksa atau diproksi dari situ.