Ange skalningsregler i Azure Container Apps

Azure Container Apps hanterar automatisk horisontell skalning via en uppsättning regler för deklarativ skalning. När en containerapp skalas ut skapas nya instanser av containerappen på begäran. Dessa instanser kallas repliker.

Skalningsregler definieras resources.properties.template.scale i avsnittet i konfigurationen. Det finns två skalningsegenskaper som gäller för alla regler i containerappen.

Skalningsegenskap Description Standardvärde Minvärde Maxvärde
minReplicas Minsta antal repliker som körs för din containerapp. 0 1 25
maxReplicas Maximalt antal repliker som körs för din containerapp. saknas 1 25
  • Om containerappen skalas till noll debiteras du inte.
  • Enskilda skalningsregler definieras i rules matrisen.
  • Om du vill se till att en instans av programmet alltid körs anger du minReplicas till 1 eller högre.
  • Repliker som inte bearbetas, men som finns kvar i minnet debiteras i kategorin "inaktiv avgift".
  • Ändringar av skalningsregler är en ändring av revisionsomfånget.
  • När du använder regler för icke-HTTP-händelseskalning rekommenderas activeRevisionMode single inställningen till.

Viktigt

Antalet repliker är ett målbelopp, inte en garanti. Även om du anger maxReplicas till finns det ingen garanti för 1 trådsäkerhet.

Skalningsutlösare

Container Apps stöder ett stort antal skalningsutlösare. Mer information om skalningsutlösare som stöds finns i KEDA Scalers.

KEDA-dokumentationen visar kodexempel i YAML, medan CONTAINER Apps ARM-mallen finns i JSON. När du transformerar exempel från KEDA efter dina behov, se till att byta egenskapsnamn från kebab case till kamelhölje.

HTTP

Med en HTTP-skalningsregel har du kontroll över tröskelvärdet som avgör när du ska skala ut.

Skalningsegenskap Description Standardvärde Minvärde Maxvärde
concurrentRequests När antalet begäranden överskrider det här värdet läggs fler repliker till, upp till maxReplicas mängden. 50 1 saknas
{
  ...
  "resources": {
    ...
    "properties": {
      ...
      "template": {
        ...
        "scale": {
          "minReplicas": 0,
          "maxReplicas": 5,
          "rules": [{
            "name": "http-rule",
            "http": {
              "metadata": {
                  "concurrentRequests": "100"
              }
            }
          }]
        }
      }
    }
  }
}

I det här exemplet skalar containerappen upp till fem repliker och kan skala ned till noll instanser. Tröskelvärdet för skalning är inställt på 100 samtidiga begäranden per sekund.

Händelsedriven

Container Apps kan skalas baserat på en mängd olika händelsetyper. Alla händelser som stöds av KEDAstöds i Container Apps.

Varje händelsetyp har olika egenskaper i metadata avsnittet i KEDA-definitionen. Använd dessa egenskaper för att definiera en skalningsregel i Container Apps.

I följande exempel visas hur du skapar en skalningsregel baserat på en Azure Service Bus utlösare.

{
  ...
  "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"
              }]
        }
    }]
}

I det här exemplet skalar containerappen enligt följande beteende:

  • När antalet meddelanden i kön överskrider 20 skapas nya repliker.
  • Anslutningssträngen till kön anges som en parameter till konfigurationsfilen och refereras via secretRef egenskapen .

Processor

Med CPU-skalning kan din app skala in eller ut beroende på hur mycket processorn används. CPU-skalning tillåter inte att containerappen skalas till 0. Mer information om den här utlösaren finns i KEDA CPU scale trigger (KEDA-skalningsutlösare för KEDA).

I följande exempel visas hur du skapar en skalningsregel för cpu.

{
  ...
  "resources": {
    ...
    "properties": {
      ...
      "template": {
        ...
        "scale": {
          "minReplicas": "0",
          "maxReplicas": "10",
          "rules": [{
            "name": "cpuScalingRule",
            "custom": {
              "type": "cpu",
              "metadata": {
                "type": "Utilization",
                "value": "50"
              }
            }
          }]
        }
      }
    }
  }
}
  • I det här exemplet skalar containerappen när CPU-användningen överskrider 50 %.
  • Som minst finns en enda replik kvar i minnet för appar som skalas baserat på CPU-användning.

Minne

Med minnesskalning kan din app skala in eller ut beroende på hur mycket av minnet som används. Minnesskalning tillåter inte att containerappen skalas till 0. Mer information om den här skalningsdatorn finns i KEDA Memory Scaler.

I följande exempel visas hur du skapar en minnesskalningsregel.

{
  ...
  "resources": {
    ...
    "properties": {
      ...
      "template": {
        ...
        "scale": {
          "minReplicas": "0",
          "maxReplicas": "10",
          "rules": [{
            "name": "memoryScalingRule",
            "custom": {
              "type": "memory",
              "metadata": {
                "type": "Utilization",
                "value": "50"
              }
            }
          }]
        }
      }
    }
  }
}
  • I det här exemplet skalar containerappen när minnesanvändningen överskrider 50 %.
  • Som minst finns en enda replik kvar i minnet för appar som skalas baserat på minnesanvändning.

Överväganden

  • Vertikal skalning stöds inte.
  • Antalet repliker är ett målbelopp, inte en garanti.
    • Även om du anger maxReplicas till finns det ingen garanti för 1 trådsäkerhet.

Nästa steg