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

Služba Azure Container Apps spravuje automatické horizontální škálování prostřednictvím sady pravidel deklarativního škálování. Při horizontálním navýšení velikosti kontejnerové aplikace se na vyžádání vytvoří nové instance aplikace typu kontejner. Tyto instance se označuje jako repliky.

Pravidla škálování jsou definována resources.properties.template.scale v části konfigurace. Existují dvě vlastnosti škálování, které platí pro všechna pravidla v aplikaci kontejneru.

Vlastnost Scale Description Výchozí hodnota Min. hodnota Max. hodnota
minReplicas Minimální počet spuštěných replik pro vaši aplikaci kontejneru 0 1 25
maxReplicas Maximální počet spuštěných replik pro vaši aplikaci kontejneru Není k dispozici 1 25
  • Pokud se vaše aplikace kontejneru škáluje na nulu, neúčtuje se vám.
  • Jednotlivá pravidla škálování jsou definována v rules poli .
  • Pokud chcete zajistit, aby instance vaší aplikace vždy běžela, nastavte minReplicas na hodnotu 1 nebo vyšší.
  • Repliky se nezpracování, ale ty, které zůstanou v paměti, se účtují v kategorii Poplatky za nečinnost.
  • Změny pravidel škálování jsou změnou rozsahu revize.
  • Při použití pravidel škálování událostí jiných než HTTP se doporučuje activeRevisionMode single nastavit na .

Důležité

Množství repliky je cílové množství, nikoli záruka. I když nastavíte maxReplicas na , neexistuje žádná záruka bezpečnosti 1 vlákna.

Triggery škálování

Container Apps podporuje velký počet triggerů škálování. Další informace o podporovaných aktivačních událostech škálování najdete v tématu KEDA Scalers.

Dokumentace ke KEDA ukazuje příklady kódu v YAML, zatímco šablona ARM Container Apps je ve formátu JSON. Při transformaci příkladů z KEDA podle vašich potřeb nezapomeňte přepnout názvy vlastností z kaskády na camel casing.

HTTP

Pomocí pravidla škálování HTTP máte kontrolu nad prahovou hodnotou, která určuje, kdy se má horizontální navýšení kapacity.

Vlastnost Scale Description Výchozí hodnota Min. hodnota Max. hodnota
concurrentRequests Jakmile počet požadavků tuto hodnotu překročí, přičtou se další repliky až do maxReplicas výše. 50 1 Není k dispozici
{
  ...
  "resources": {
    ...
    "properties": {
      ...
      "template": {
        ...
        "scale": {
          "minReplicas": 0,
          "maxReplicas": 5,
          "rules": [{
            "name": "http-rule",
            "http": {
              "metadata": {
                  "concurrentRequests": "100"
              }
            }
          }]
        }
      }
    }
  }
}

V tomto příkladu aplikace kontejneru škáluje až na pět replik a může škálovat na nulu instancí. Prahová hodnota škálování je nastavená na 100 souběžných požadavků za sekundu.

Řízené událostmi

Container Apps se může škálovat na základě široké škály typů událostí. Všechny události podporované službou KEDAjsou podporované v Container Apps.

Každý typ události má v části definice KEDA různé metadata vlastnosti. Pomocí těchto vlastností můžete definovat pravidlo škálování v Container Apps.

Následující příklad ukazuje, jak vytvořit pravidlo škálování na základě triggeru Service Bus Azure.

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

V tomto příkladu se aplikace kontejneru škáluje podle následujícího chování:

  • Protože počet zpráv ve frontě překračuje 20, vytvoří se nové repliky.
  • Připojovací řetězec pro frontu se poskytuje jako parametr konfiguračního souboru a odkazuje se na ně prostřednictvím secretRef vlastnosti .

Procesor

Škálování procesoru umožňuje vaší aplikaci horizontální navýšení nebo navýšení kapacity v závislosti na tom, kolik procesoru se používá. Škálování procesoru neumožňuje škálování aplikace kontejneru na 0. Další informace o tomto triggeru najdete v tématu Aktivační událost škálování procesoru KEDA.

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

{
  ...
  "resources": {
    ...
    "properties": {
      ...
      "template": {
        ...
        "scale": {
          "minReplicas": "0",
          "maxReplicas": "10",
          "rules": [{
            "name": "cpuScalingRule",
            "custom": {
              "type": "cpu",
              "metadata": {
                "type": "Utilization",
                "value": "50"
              }
            }
          }]
        }
      }
    }
  }
}
  • V tomto příkladu se aplikace kontejneru škáluje, když využití procesoru překročí 50 %.
  • Minimálně jedna replika zůstává v paměti pro aplikace, které se škálují na základě využití procesoru.

Memory (Paměť)

Škálování paměti umožňuje vaší aplikaci horizontální navýšení nebo navýšení kapacity v závislosti na tom, jak velkou část paměti se používá. Škálování paměti neumožňuje škálování aplikace kontejneru na 0. Další informace o tomto škálování najdete v tématu KeDA Memory scaler.

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

{
  ...
  "resources": {
    ...
    "properties": {
      ...
      "template": {
        ...
        "scale": {
          "minReplicas": "0",
          "maxReplicas": "10",
          "rules": [{
            "name": "memoryScalingRule",
            "custom": {
              "type": "memory",
              "metadata": {
                "type": "Utilization",
                "value": "50"
              }
            }
          }]
        }
      }
    }
  }
}
  • V tomto příkladu se aplikace kontejneru škáluje, když využití paměti překročí 50 %.
  • Minimálně jedna replika zůstává v paměti pro aplikace, které se škálují na základě využití paměti.

Požadavky

  • Vertikální škálování se nepodporuje.
  • Množství repliky je cílové množství, nikoli záruka.
    • I když nastavíte maxReplicas na , neexistuje žádná záruka bezpečnosti 1 vlákna.

Další kroky