Sdílet prostřednictvím


Nastavení pravidel škálování v Azure Container Apps

Azure Container Apps spravuje automatické horizontální škálování prostřednictvím sady deklarativních pravidel škálování. Při horizontálním navýšení kapacity revizí aplikace kontejneru se vytvoří nové instance revize na vyžádání. Tyto instance se označují jako repliky.

Přidání nebo úprava pravidel škálování vytvoří novou revizi vaší aplikace kontejneru. Revize je neměnný snímek vaší aplikace kontejneru. Informace o typech změn, které aktivují novou revizi, najdete v tématu Typy změn revizí.

Úlohy Container Apps řízené událostmi používají pravidla škálování k aktivaci spouštění na základě událostí.

Definice škálování

Škálování je kombinace omezení, pravidel a chování.

  • Omezení definují minimální a maximální možný počet replik na revizi při škálování vaší aplikace kontejneru.

    Limit škálování Default value Min. hodnota Max. hodnota
    Minimální počet replik na revizi 0 0 Maximální počet konfigurovatelných replik je 1 000.
    Maximální počet replik na revizi 10 0 Maximální počet konfigurovatelných replik je 1 000.
  • Pravidla jsou kritéria používaná službou Container Apps k rozhodování, kdy přidat nebo odebrat repliky.

    Pravidla škálování se implementují jako HTTP, TCP (Transmission Control Protocol) nebo vlastní.

  • Chování je kombinace pravidel a omezení k určení rozhodnutí o škálování v průběhu času.

    Chování škálování vysvětluje, jak se provádějí rozhodnutí o škálování.

Při definování pravidel škálování je důležité vzít v úvahu následující položky:

  • Pokud se vaše aplikace kontejneru škáluje na nulu, neúčtují se vám poplatky za využití.
  • Repliky, které se nezpracovávají, ale zůstávají v paměti, se můžou účtovat nižší sazbou nečinnosti. Další informace najdete v tématu Fakturace.
  • Pokud chcete zajistit, aby byla instance revize vždy spuštěná, nastavte minimální počet replik na 1 nebo vyšší.

Pravidla škálování

Škálování je řízeno třemi různými kategoriemi triggerů:

  • HTTP: Na základě počtu souběžných požadavků HTTP na vaši revizi.
  • TCP: Na základě počtu souběžných připojení TCP k revizi.
  • Vlastní: Na základě procesoru, paměti nebo podporovaných zdrojů dat řízených událostmi, například:
    • Azure Service Bus
    • Azure Event Hubs
    • Apache Kafka
    • Redis

Pokud definujete více než jedno pravidlo škálování, začne se aplikace kontejneru škálovat, jakmile splníte první podmínku všech pravidel.

HTTP

S pravidlem škálování HTTP máte kontrolu nad prahovou hodnotou souběžných požadavků HTTP, které určují, jak se vaše aplikace kontejneru revizí škáluje. Každých 15 sekund se počet souběžných požadavků vypočítá jako počet požadavků v posledních 15 sekundách vydělený číslem 15. Úlohy Container Apps nepodporují pravidla škálování HTTP.

V následujícím příkladu se revize škáluje až na pět replik a může se škálovat na nulu. Vlastnost škálování je nastavená na 100 souběžných požadavků za sekundu.

Příklad

Oddíl http definuje pravidlo škálování HTTP.

Vlastnost Škálování Popis Default value Min. hodnota Max. hodnota
concurrentRequests Pokud počet požadavků HTTP tuto hodnotu překročí, přidá se další replika. Repliky se do fondu přidávají až do maxReplicas výše. 10 0 Není k dispozici
{
  ...
  "resources": {
    ...
    "properties": {
      ...
      "template": {
        ...
        "scale": {
          "minReplicas": 0,
          "maxReplicas": 5,
          "rules": [{
            "name": "http-rule",
            "http": {
              "metadata": {
                "concurrentRequests": "100"
              }
            }
          }]
        }
      }
    }
  }
}

Poznámka:

properties.configuration.activeRevisionsMode Při použití pravidel škálování událostí mimo HTTP nastavte vlastnost aplikace kontejneru na singlehodnotu .

Definujte pravidlo škálování HTTP pomocí parametru --scale-rule-http-concurrency create v příkazech nebo update příkazech.

Parametr rozhraní příkazového řádku Popis Default value Min. hodnota Max. hodnota
--scale-rule-http-concurrency Pokud počet souběžných požadavků HTTP tuto hodnotu překročí, přidá se další replika. Repliky se do fondu přidávají až do max-replicas výše. 10 0 Není k dispozici
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. Přechod do aplikace kontejneru na webu Azure Portal

  2. Vyberte Škálovat.

  3. Vyberte Upravit a nasadit.

  4. Vyberte kartu Měřítko.

  5. Vyberte minimální a maximální rozsah replik.

    Snímek obrazovky s posuvníkem rozsahu škálování služby Azure Container Apps

  6. Vyberte Přidat.

  7. Do pole Název pravidla zadejte název pravidla.

  8. V rozevíracím seznamu Typ vyberte škálování HTTP.

  9. Do pole Souběžné požadavky zadejte požadovaný počet souběžných požadavků pro vaši aplikaci kontejneru.

TCP

U pravidla škálování protokolu TCP máte kontrolu nad prahovou hodnotou souběžných připojení TCP, která určuje, jak se vaše aplikace škáluje. Každých 15 sekund se počet souběžných připojení vypočítá jako počet připojení v posledních 15 sekundách vydělený číslem 15. Úlohy Container Apps nepodporují pravidla škálování TCP.

V následujícím příkladu se revize aplikace kontejneru škáluje až na pět replik a může škálovat na nulu. Prahová hodnota škálování je nastavená na 100 souběžných připojení za sekundu.

Příklad

Oddíl tcp definuje pravidlo škálování protokolu TCP.

Vlastnost Škálování Popis Default value Min. hodnota Max. hodnota
concurrentConnections Pokud počet souběžných připojení TCP tuto hodnotu překročí, přidá se další replika. Repliky se stále přidávají na částku maxReplicas , protože se zvyšuje počet souběžných připojení. 10 0 Není k dispozici
{
  ...
  "resources": {
    ...
    "properties": {
      ...
      "template": {
        ...
        "scale": {
          "minReplicas": 0,
          "maxReplicas": 5,
          "rules": [{
            "name": "tcp-rule",
            "tcp": {
              "metadata": {
                "concurrentConnections": "100"
              }
            }
          }]
        }
      }
    }
  }
}

Definujte pravidlo škálování protokolu TCP pomocí parametru --scale-rule-tcp-concurrency create v příkazech nebo update příkazech.

Parametr rozhraní příkazového řádku Popis Default value Min. hodnota Max. hodnota
--scale-rule-tcp-concurrency Pokud počet souběžných připojení TCP tuto hodnotu překročí, přidá se další replika. Repliky se stále přidávají na částku max-replicas , protože se zvyšuje počet souběžných připojení. 10 0 Není k dispozici
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

Vlastní

Vlastní pravidlo škálování Container Apps můžete vytvořit na základě libovolného škálovače KEDA založeného na ScaledObjectu s těmito výchozími nastaveními:

Defaults Sekundy
Interval dotazování 30
Období chladnutí 300

Pro úlohy Container Apps řízené událostmi můžete vytvořit vlastní pravidlo škálování založené na škálovacích modulech KEDA založených na škálovací službě KEDA.

Následující příklad ukazuje, jak vytvořit vlastní pravidlo škálování.

Příklad

Tento příklad ukazuje, jak převést škálovací nástroj služby Azure Service Bus na pravidlo škálování Container Apps, ale stejný postup použijete pro jakoukoli jinou specifikaci škálování KEDA založenou na Objektu ScaledObject.

Pro ověřování přebírají parametry ověřování keda scaler tajné kódy nebo spravovanou identitu Container Apps.

Následující postup ukazuje, jak převést škálovací nástroj KEDA na pravidlo škálování kontejnerové aplikace. Tento fragment kódu je výňatek šablony ARM, který vám ukáže, kde se jednotlivé oddíly vejdou do kontextu celkové šablony.

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

Informace o tom, jak následující příklady odpovídají šabloně ARM, najdete v tomto výňatku.

Nejprve definujete typ a metadata pravidla škálování.

  1. Ve specifikaci škálovače KEDA vyhledejte type hodnotu.

    triggers:
    - type: azure-servicebus
      metadata:
        queueName: my-queue
        namespace: service-bus-namespace
        messageCount: "5"
    
  2. V šabloně ARM zadejte hodnotu scaleru type do custom.type vlastnosti pravidla škálování.

    ...
    "rules": [
      {
        "name": "azure-servicebus-queue-rule",
        "custom": {
          "type": "azure-servicebus",
          "metadata": {
            "queueName": "my-queue",
            "namespace": "service-bus-namespace",
            "messageCount": "5"
          }
        }
      }
    ]
    ...
    
  3. Ve specifikaci škálování KEDA vyhledejte metadata hodnoty.

    triggers:
    - type: azure-servicebus
      metadata:
        queueName: my-queue
        namespace: service-bus-namespace
        messageCount: "5"
    
  4. V šabloně ARM přidejte do oddílu pravidla škálování všechny hodnoty custom.metadata metadat.

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

Ověřování

Pravidla škálování Container Apps podporují ověřování založené na tajných kódech. Pravidla škálování pro prostředky Azure, včetně Azure Queue Storage, Azure Service Bus a Azure Event Hubs, podporují také spravovanou identitu. Pokud je to možné, použijte ověřování spravované identity, abyste se vyhnuli ukládání tajných kódů v aplikaci.

Použití tajných kódů

Pokud chcete pro ověřování používat tajné kódy, musíte v poli kontejnerové aplikace secrets vytvořit tajný kód. Hodnota tajného kódu se používá v auth poli pravidla škálování.

Škálovací nástroje KEDA můžou používat tajné kódy v TriggerAuthentication , na které tato authenticationRef vlastnost odkazuje. Objekt TriggerAuthentication můžete mapovat na pravidlo škálování Container Apps.

  1. TriggerAuthentication Vyhledejte objekt odkazovaný specifikací KEDAScaledObject.

  2. V objektu TriggerAuthentication vyhledejte každý secretTargetRef a jeho přidružený tajný klíč.

    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. V šabloně ARM pro každý tajný kód:

    1. Přidejte tajný kód do pole aplikace secrets kontejneru obsahující název a hodnotu tajného kódu.

    2. Přidejte položku do auth pole pravidla škálování.

      1. Nastavte hodnotu triggerParameter vlastnosti na hodnotu secretTargetRefvlastnosti 's parameter .

      2. Nastavte hodnotu secretRef vlastnosti na název secretTargetRefvlastnosti 's key .

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

    Některé škálovací nástroje podporují metadata s příponou FromEnv pro odkaz na hodnotu v proměnné prostředí. Container Apps se podívá na první kontejner uvedený v šabloně ARM pro proměnnou prostředí.

    Další informace související se zabezpečením najdete v části s aspekty.

Použití spravované identity

Pravidla škálování služby Container Apps můžou používat spravovanou identitu k ověřování pomocí služeb Azure. Následující šablona ARM předává spravovanou identitu založenou na systému, aby se ověřila pro škálovač front Azure.

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

Další informace o používání spravované identity s pravidly škálování najdete v tématu Spravovaná identita.

  1. Ve specifikaci škálovače KEDA vyhledejte type hodnotu.

    triggers:
    - type: azure-servicebus
      metadata:
        queueName: my-queue
        namespace: service-bus-namespace
        messageCount: "5"
    
  2. V příkazu rozhraní příkazového řádku nastavte --scale-rule-type parametr na hodnotu specifikace 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. Ve specifikaci škálování KEDA vyhledejte metadata hodnoty.

    triggers:
    - type: azure-servicebus
      metadata:
        queueName: my-queue
        namespace: service-bus-namespace
        messageCount: "5"
    
  4. V příkazu rozhraní příkazového řádku nastavte --scale-rule-metadata parametr na hodnoty metadat.

    Pro použití na příkazovém řádku je potřeba transformovat hodnoty z formátu YAML na pár klíč/hodnota. Jednotlivé páry klíč/hodnota oddělte mezerou.

    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"
    

Ověřování

Pravidla škálování Container Apps podporují ověřování založené na tajných kódech. Pravidla škálování pro prostředky Azure, včetně Azure Queue Storage, Azure Service Bus a Azure Event Hubs, podporují také spravovanou identitu. Pokud je to možné, použijte ověřování spravované identity, abyste se vyhnuli ukládání tajných kódů v aplikaci.

Použití tajných kódů

Pokud chcete nakonfigurovat ověřování založené na tajných kódech pro pravidlo škálování Container Apps, nakonfigurujte tajné kódy v aplikaci kontejneru a odkazujte na ně v pravidle škálování.

Scaler KEDA podporuje tajné kódy v TriggerAuthentication , které authenticationRef vlastnost používá pro referenci. Objekt můžete namapovat TriggerAuthentication na pravidlo škálování Container Apps.

  1. TriggerAuthentication Vyhledejte objekt odkazovaný specifikací KEDAScaledObject. Identifikujte každý secretTargetRef objekt TriggerAuthentication .

    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. V aplikaci kontejneru vytvořte tajné kódy , které odpovídají vlastnostem secretTargetRef .

  3. V příkazu rozhraní příkazového řádku nastavte parametry pro každou secretTargetRef položku.

    1. Vytvořte položku tajného kódu s parametrem --secrets . Pokud existuje více tajných kódů, oddělte je mezerou.

    2. Vytvořte položku ověřování s parametrem --scale-rule-auth . Pokud existuje více položek, oddělte je mezerou.

    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"
    

Použití spravované identity

Pravidla škálování služby Container Apps můžou používat spravovanou identitu k ověřování pomocí služeb Azure. Následující příkaz vytvoří aplikaci kontejneru se spravovanou identitou přiřazenou uživatelem a použije ji k ověření pro službu Azure Queue Scaler.

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>

Zástupné symboly nahraďte hodnotami.

  1. Přejděte do aplikace kontejneru na webu Azure Portal.

  2. Vyberte Škálovat.

  3. Vyberte Upravit a nasadit.

  4. Vyberte kartu Škálování a repliky.

  5. Vyberte minimální a maximální rozsah replik.

    Snímek obrazovky s posuvníkem rozsahu škálování služby Azure Container Apps

  6. Vyberte Přidat.

  7. Do pole Název pravidla zadejte název pravidla.

  8. V rozevíracím seznamu Typ vyberte Vlastní.

  9. Ve specifikaci škálovače KEDA vyhledejte type hodnotu.

    triggers:
    - type: azure-servicebus
      metadata:
        queueName: my-queue
        namespace: service-bus-namespace
        messageCount: "5"
    
  10. Do pole Typ vlastního pravidla zadejte hodnotu škálovačetype.

  11. Ve specifikaci škálování KEDA vyhledejte metadata hodnoty.

    triggers:
    - type: azure-servicebus
      metadata:
        queueName: my-queue
        namespace: service-bus-namespace
        messageCount: "5"
    
  12. Na portálu vyhledejte část Metadata a vyberte Přidat. Zadejte název a hodnotu pro každou položku v části metadat specifikace KEDA ScaledObject .

Ověřování

Pravidla škálování Container Apps podporují ověřování založené na tajných kódech. Pravidla škálování pro prostředky Azure, včetně Azure Queue Storage, Azure Service Bus a Azure Event Hubs, podporují také spravovanou identitu. Pokud je to možné, použijte ověřování spravované identity, abyste se vyhnuli ukládání tajných kódů v aplikaci.

Použití tajných kódů

  1. V aplikaci kontejneru vytvořte tajné kódy , na které chcete odkazovat.

  2. TriggerAuthentication Vyhledejte objekt odkazovaný specifikací KEDAScaledObject. Identifikujte každý secretTargetRef objekt TriggerAuthentication .

    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. V části Ověřování vyberte Přidat a vytvořte položku pro každý parametr KEDAsecretTargetRef.

Použití spravované identity

Ověřování spravované identity se na webu Azure Portal nepodporuje. K ověření pomocí spravované identity použijte Azure CLI nebo Azure Resource Manager.

Výchozí pravidlo škálování

Pokud pravidlo škálování nevytvoříte, použije se ve vaší aplikaci kontejneru výchozí pravidlo škálování.

Trigger Minimální repliky Maximální počet replik
HTTP 0 10

Důležité

Pokud příchozí přenos dat nepovolíte, nezapomeňte vytvořit pravidlo škálování nebo nastavit minReplicas na 1 nebo více. Pokud je příchozí přenos dat zakázaný a nedefinujete minReplicas ani vlastní pravidlo škálování, aplikace kontejneru se škáluje na nulu a nebude mít žádný způsob, jak spustit zálohování.

Chování škálování

Chování škálování má následující výchozí hodnoty:

Parametr Hodnota
Interval dotazování 30 sekund
Období chladnutí 300 sekund
Vertikální navýšení kapacity okna stabilizace 0 sekund
Vertikální snížení kapacity okna stabilizace 300 sekund
Vertikální navýšení kapacity 1, 4, 100 % aktuálního
Vertikální snížení kapacity 100 % aktuálního
Algoritmus škálování desiredReplicas = ceil(currentMetricValue / targetMetricValue)
  • Interval dotazování určuje, jak často se zdroje událostí dotazují nástrojem KEDA. Tato hodnota se nevztahuje na pravidla škálování HTTP a TCP.
  • Doba chladnutí je doba, po které byla poslední událost pozorována před vertikálním snížením kapacity aplikace na minimální počet replik.
  • Okno stabilizace vertikálního navýšení kapacity je doba čekání před provedením rozhodnutí vertikálního navýšení kapacity po splnění podmínek vertikálního navýšení kapacity.
  • Okno stabilizace vertikálního snížení kapacity je doba čekání před provedením rozhodnutí o snížení kapacity po splnění podmínek vertikálního snížení kapacity.
  • Krok vertikálního navýšení kapacity je rychlost přidání nových instancí. Začíná 1, 4, 8, 16, 32, ... až do nakonfigurovaného maximálního počtu replik.
  • Krok vertikálního snížení kapacity je rychlost odebrání replik. Ve výchozím nastavení se odebere 100 % replik, které je potřeba vypnout.
  • Algoritmus škálování je vzorec použitý k výpočtu aktuálního požadovaného počtu replik.

Příklad

Pro následující pravidlo škálování:

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

Při horizontálním navýšení kapacity aplikace začne KEDA s prázdnou frontou a provede následující kroky:

  1. Zkontrolujte my-queue každých 30 sekund.
  2. Pokud se délka fronty rovná 0, vraťte se na (1).
  3. Pokud je > délka fronty 0, škálujte aplikaci na 1.
  4. Pokud je délka fronty 50, počítejte desiredReplicas = ceil(50/5) = 10.
  5. Škálování aplikace na min(maxReplicaCount, desiredReplicas, max(4, 2*currentReplicaCount))
  6. Vraťte se na (1).

Pokud se aplikace škálovala na maximální počet replik 20, škálování prochází stejnými předchozími kroky. Vertikální snížení kapacity se stane pouze v případě, že podmínka byla splněna po dobu 300 sekund (okno stabilizace vertikálního snížení kapacity). Jakmile je délka fronty 0, keDA před škálováním aplikace na 0 počká 300 sekund (období ochladnutí).

Důležité informace

  • V režimu více revizí vytvoří přidání nové aktivační události škálování novou revizi aplikace, ale stará revize zůstane k dispozici ve starých pravidlech škálování. Ke správě přidělení provozu použijte stránku Správa revizí.

  • Pokud se aplikace škáluje na nulu, nebudou účtovány žádné poplatky za využití. Další informace o cenách najdete v tématu Fakturace v Azure Container Apps.

  • Potřebujete povolit ochranu dat pro všechny aplikace .NET v Azure Container Apps. Podrobnosti najdete v tématu Nasazení a škálování aplikace ASP.NET Core v Azure Container Apps .

Známá omezení

  • Vertikální škálování se nepodporuje.

  • Množství repliky představují cílovou částku, nikoli záruku.

  • Pokud ke správě stavů používáte aktéry Dapr, měli byste mít na paměti, že škálování na nulu se nepodporuje. Dapr používá virtuální aktéry ke správě asynchronních volání, což znamená, že jejich reprezentace v paměti není svázaná s jejich identitou nebo životností.

Další kroky