Autoskala en hanterad onlineslutpunkt (förhandsversion)

Autoskalning kör automatiskt rätt mängd resurser för att hantera belastningen på ditt program. Hanterade slutpunkter har stöd för automatisk skalning via integrering Azure Monitor autoskalningsfunktionen.

Azure Monitor autoskalning stöder en omfattande uppsättning regler. Du kan konfigurera måttbaserad skalning (till exempel processoranvändning >70 %), schemabaserad skalning (till exempel skalningsregler för tider med hög belastning) eller en kombination. Mer information finns i Översikt över autoskalning i Microsoft Azure.

Diagram för automatisk skalning av tillägg/borttagning av instans efter behov

Idag kan du hantera autoskalning med hjälp av antingen Azure CLI, REST, ARM eller den webbläsarbaserade Azure Portal. Andra Azure ML SDK:er, till exempel Python SDK, kommer att lägga till stöd över tid.

Viktigt

Den här funktionen är för närvarande i allmänt tillgänglig förhandsversion. Den här förhandsversionen tillhandahålls utan serviceavtal och rekommenderas inte för produktionsarbetsbelastningar. Vissa funktioner kanske inte stöds eller kan vara begränsade. Mer information finns i Kompletterande villkor för användning av Microsoft Azure-förhandsversioner.

Förutsättningar

Definiera en autoskalningsprofil

Om du vill aktivera autoskalning för en slutpunkt definierar du först en autoskalningsprofil. Den här profilen definierar skalningsuppsättningens förvalda, lägsta och högsta kapacitet. I följande exempel anges standard- och minimikapaciteten som två VM-instanser och den maximala kapaciteten som fem:

Följande kodfragment anger namnen på slutpunkten och distributionen:

# set your existing endpoint name
ENDPOINT_NAME=your-endpoint-name
DEPLOYMENT_NAME=blue

Hämta sedan Azure Resource Manager-ID:t för distributionen och slutpunkten:

# ARM id of the deployment
DEPLOYMENT_RESOURCE_ID=$(az ml online-deployment show -e $ENDPOINT_NAME -n $DEPLOYMENT_NAME -o tsv --query "id")
# ARM id of the deployment. todo: change to --query "id"
ENDPOINT_RESOURCE_ID=$(az ml online-endpoint show -n $ENDPOINT_NAME -o tsv --query "properties.\"azureml.onlineendpointid\"")
# set a unique name for autoscale settings for this deployment. The below will append a random number to make the name unique.
AUTOSCALE_SETTINGS_NAME=autoscale-`echo $RANDOM`

Följande kodfragment skapar autoskalningsprofilen:

az monitor autoscale create \
  --name $AUTOSCALE_SETTINGS_NAME \
  --resource $DEPLOYMENT_RESOURCE_ID \
  --min-count 2 --max-count 5 --count 2

Anteckning

Mer information finns på referenssidan för autoskalning

Skapa en regel för att skala ut med hjälp av mått

En vanlig utskalningsregel är en regel som ökar antalet virtuella datorinstanser när den genomsnittliga CPU-belastningen är hög. I följande exempel allokeras ytterligare två noder (upp till det högsta) om CPU-genomsnittet är en belastning på mer än 70 % i fem minuter::

az monitor autoscale rule create \
  --autoscale-name $AUTOSCALE_SETTINGS_NAME \
  --condition "CpuUtilizationPercentage > 70 avg 5m" \
  --scale out 2

Regeln är en del av my-scale-settings profilen ( matchar för autoscale-name name profilen). Värdet för dess argument säger att regeln ska utlösas när "Den genomsnittliga CPU-förbrukningen bland de virtuella datorinstanserna överskrider condition 70 % i fem minuter". När villkoret uppfylls allokeras ytterligare två VM-instanser.

Anteckning

Mer information om CLI-syntaxen finns i az monitor autoscale .

Skapa en regel för att skala in med hjälp av mått

När belastningen är lätt kan en skalning i regeln minska antalet virtuella datorinstanser. I följande exempel släpps en enskild nod, ned till minst 2, om CPU-belastningen är mindre än 30 % i 5 minuter:

az monitor autoscale rule create \
  --autoscale-name $AUTOSCALE_SETTINGS_NAME \
  --condition "CpuUtilizationPercentage < 25 avg 5m" \
  --scale in 1

Skapa en skalningsregel baserat på slutpunktsmått

De tidigare reglerna som tillämpades på distributionen. Lägg nu till en regel som gäller för slutpunkten. I det här exemplet, om svarstiden för begäran är större än i genomsnitt 70 millisekunder i 5 minuter, allokerar du en annan nod.

az monitor autoscale rule create \
 --autoscale-name $AUTOSCALE_SETTINGS_NAME \
 --condition "RequestLatency > 70 avg 5m" \
 --scale out 1 \
 --resource $ENDPOINT_RESOURCE_ID

Skapa skalningsregler baserat på ett schema

Du kan också skapa regler som endast gäller för vissa dagar eller vid vissa tidpunkter. I det här exemplet är antalet noder inställt på 2 på helgerna.

az monitor autoscale profile create \
  --name weekend-profile \
  --autoscale-name $AUTOSCALE_SETTINGS_NAME \
  --min-count 2 --count 2 --max-count 2 \
  --recurrence week sat sun --timezone "Pacific Standard Time"

Ta bort resurser

Om du inte ska använda dina distributioner tar du bort dem:

az ml online-endpoint delete --name $ENDPOINT_NAME --yes --no-wait

Nästa steg

Mer information om autoskalning med Azure Monitor finns i följande artiklar: