Schaalregels instellen in Azure Container Apps
Azure Container Apps beheert automatisch horizontaal schalen via een set declaratieve regels voor schalen. Wanneer een container-app wordt geschaald, worden er op aanvraag nieuwe exemplaren van de container-app gemaakt. Deze exemplaren worden replica's genoemd.
Regels voor schalen worden gedefinieerd in resources.properties.template.scale de sectie van de configuratie. Er zijn twee schaaleigenschappen die van toepassing zijn op alle regels in uw container-app.
| Eigenschap Schalen | Description | Standaardwaarde | Minimumwaarde | Maximumwaarde |
|---|---|---|---|---|
minReplicas |
Minimaal aantal replica's dat wordt uitgevoerd voor uw container-app. | 0 | 1 | 25 |
maxReplicas |
Maximum aantal replica's dat wordt uitgevoerd voor uw container-app. | n.v.t. | 1 | 25 |
- Als uw container-app wordt geschaald naar nul, wordt u niet gefactureerd.
- Afzonderlijke schaalregels worden gedefinieerd in de
rulesmatrix. - Als u er zeker van wilt zijn dat een exemplaar van uw toepassing altijd wordt uitgevoerd, stelt u in
minReplicasop 1 of hoger. - Replica's worden niet verwerkt, maar die wel in het geheugen blijven, worden gefactureerd in de categorie 'niet-actieve kosten'.
- Wijzigingen in regels voor schalen zijn een wijziging in het revisiebereik.
- Wanneer u regels voor het schalen van gebeurtenissen die niet van HTTP zijn, gebruikt, wordt
activeRevisionModehet aanbevolen om de in te stellen opsingle.
Belangrijk
Replicahoeveelheden zijn een doelbedrag, geen garantie. Zelfs als u in maxReplicas stelt op , is er geen garantie van 1 thread-veiligheid.
Schaaltriggers
Container Apps ondersteunt een groot aantal schaaltriggers. Zie KEDA Scalers voor meer informatie over ondersteunde schaaltriggers.
De KEDA-documentatie bevat codevoorbeelden in YAML, terwijl de ARM-sjabloon voor Container Apps zich in JSON-staat. Zorg ervoor dat u bij het transformeren van voorbeelden van KEDA naar uw behoeften de eigenschapsnamen overschakelt van een case naar een camel-casing.
HTTP
Met een HTTP-regel voor schalen hebt u controle over de drempelwaarde die bepaalt wanneer moet worden uitschalen.
| Eigenschap Schalen | Description | Standaardwaarde | Minimumwaarde | Maximumwaarde |
|---|---|---|---|---|
concurrentRequests |
Zodra het aantal aanvragen deze waarde overschrijdt, worden er meer replica's toegevoegd, tot het maxReplicas aantal. |
50 | 1 | n.v.t. |
{
...
"resources": {
...
"properties": {
...
"template": {
...
"scale": {
"minReplicas": 0,
"maxReplicas": 5,
"rules": [{
"name": "http-rule",
"http": {
"metadata": {
"concurrentRequests": "100"
}
}
}]
}
}
}
}
}
In dit voorbeeld schaalt de container-app uit tot vijf replica's en kan deze omlaag worden geschaald naar nul exemplaren. De drempelwaarde voor schalen is ingesteld op 100 gelijktijdige aanvragen per seconde.
Gebeurtenisgestuurd
Container Apps kan worden geschaald op basis van een groot aantal verschillende gebeurtenistypen. Elke gebeurtenis die wordt ondersteund door KEDA,wordt ondersteund in Container Apps.
Elk gebeurtenistype heeft verschillende eigenschappen in de metadata sectie van de KEDA-definitie. Gebruik deze eigenschappen om een schaalregel te definiëren in Container Apps.
In het volgende voorbeeld ziet u hoe u een schaalregel maakt op basis van een Azure Service Bus trigger.
{
...
"resources": {
...
"properties": {
"configuration": {
"secrets": [{
"name": "servicebusconnectionstring",
"value": "<MY-CONNECTION-STRING-VALUE>"
}],
},
"template": {
...
"scale": {
"minReplicas": "0",
"maxReplicas": "10",
"rules": [
{
"name": "queue-based-autoscaling",
"custom": {
"type": "azure-servicebus",
"metadata": {
"queueName": "myServiceBusQueue",
"messageCount": "20"
},
"auth": [{
"secretRef": "servicebusconnectionstring",
"triggerParameter": "connection"
}]
}
}]
}
In dit voorbeeld wordt de container-app geschaald volgens het volgende gedrag:
- Als het aantal berichten in de wachtrij groter is dan 20, worden er nieuwe replica's gemaakt.
- De connection string naar de wachtrij wordt opgegeven als een parameter voor het configuratiebestand en er wordt naar verwezen via de
secretRefeigenschap .
CPU
Met CPU-schaalbaarheid kan uw app in- of uitschalen, afhankelijk van de gebruikte CPU. Met CPU-schaalbaarheid kan uw container-app niet worden geschaald naar 0. Zie KEDA CPU-schaaltriggervoor meer informatie over deze trigger.
In het volgende voorbeeld ziet u hoe u een regel voor CPU-schaalbaarheid maakt.
{
...
"resources": {
...
"properties": {
...
"template": {
...
"scale": {
"minReplicas": "0",
"maxReplicas": "10",
"rules": [{
"name": "cpuScalingRule",
"custom": {
"type": "cpu",
"metadata": {
"type": "Utilization",
"value": "50"
}
}
}]
}
}
}
}
}
- In dit voorbeeld wordt de container-app geschaald wanneer het CPU-gebruik hoger is dan 50%.
- Er blijft minimaal één replica in het geheugen voor apps die worden geschaald op basis van CPU-gebruik.
Geheugen
Door geheugen te schalen kan uw app in- of uitschalen, afhankelijk van hoeveel van het geheugen wordt gebruikt. Door geheugen te schalen kan uw container-app niet worden geschaald naar 0. Zie KEDA Memory Scaler voor meer informatie over deze scaler.
In het volgende voorbeeld ziet u hoe u een regel voor het schalen van geheugen maakt.
{
...
"resources": {
...
"properties": {
...
"template": {
...
"scale": {
"minReplicas": "0",
"maxReplicas": "10",
"rules": [{
"name": "memoryScalingRule",
"custom": {
"type": "memory",
"metadata": {
"type": "Utilization",
"value": "50"
}
}
}]
}
}
}
}
}
- In dit voorbeeld wordt de container-app geschaald wanneer het geheugengebruik hoger is dan 50%.
- Er blijft minimaal één replica in het geheugen voor apps die worden geschaald op basis van geheugengebruik.
Overwegingen
- Verticaal schalen wordt niet ondersteund.
- Replicahoeveelheden zijn een doelbedrag, geen garantie.
- Zelfs als u in
maxReplicasstelt op , is er geen garantie van1thread-veiligheid.
- Zelfs als u in