Förstå inställningar för autoskalning

Autoskalningsinställningar hjälper dig att se till att du har rätt mängd resurser som körs för att hantera den fluktuerande belastningen i ditt program. Du kan konfigurera autoskalningsinställningar som ska utlösas baserat på mått som indikerar belastning eller prestanda, eller som utlöses vid ett schemalagt datum och en schemalagd tidpunkt.

I den här artikeln beskrivs inställningarna för autoskalning.

Schema för autoskalningsinställning

I följande exempel visas en autoskalningsinställning med följande attribut:

  • En enda standardprofil.
  • Två måttregler i den här profilen: en för utskalning och en för inskalning.
    • Utskalningsregeln utlöses när den virtuella datorskalningsuppsättningens genomsnittliga cpu-mått i procent är större än 85 % under de senaste 10 minuterna.
    • Inskalningsregeln utlöses när den virtuella datorskalningsuppsättningens genomsnitt är mindre än 60 % under den senaste minuten.

Kommentar

En inställning kan ha flera profiler. Mer information finns i avsnittet profiler . En profil kan också ha flera utskalningsregler och inskalningsregler definierade. Information om hur de utvärderas finns i utvärderingsavsnittet.

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "resources": [
        {
            "type": "Microsoft.Insights/autoscaleSettings",
            "apiVersion": "2015-04-01",
            "name": "VMSS1-Autoscale-607",
            "location": "eastus",
            "properties": {

                "name": "VMSS1-Autoscale-607",
                "enabled": true,
                "targetResourceUri": "/subscriptions/abc123456-987-f6e5-d43c-9a8d8e7f6541/resourceGroups/rg-vmss1/providers/Microsoft.Compute/virtualMachineScaleSets/VMSS1",
    "profiles": [
      {
        "name": "Auto created default scale condition",
        "capacity": {
          "minimum": "1",
          "maximum": "4",
          "default": "1"
        },
        "rules": [
          {
            "metricTrigger": {
              "metricName": "Percentage CPU",
              "metricResourceUri": "/subscriptions/abc123456-987-f6e5-d43c-9a8d8e7f6541/resourceGroups/rg-vmss1/providers/Microsoft.Compute/virtualMachineScaleSets/VMSS1",
              "timeGrain": "PT1M",
              "statistic": "Average",
              "timeWindow": "PT10M",
              "timeAggregation": "Average",
              "operator": "GreaterThan",
              "threshold": 85
            },
            "scaleAction": {
              "direction": "Increase",
              "type": "ChangeCount",
              "value": "1",
              "cooldown": "PT5M"
            }
          },
          {
            "metricTrigger": {
              "metricName": "Percentage CPU",
              "metricResourceUri": "/subscriptions/abc123456-987-f6e5-d43c-9a8d8e7f6541/resourceGroups/rg-vmss1/providers/Microsoft.Compute/virtualMachineScaleSets/VMSS1",
              "timeGrain": "PT1M",
              "statistic": "Average",
              "timeWindow": "PT10M",
              "timeAggregation": "Average",
              "operator": "LessThan",
              "threshold": 60
            },
            "scaleAction": {
              "direction": "Decrease",
              "type": "ChangeCount",
              "value": "1",
              "cooldown": "PT5M"
            }
          }
        ]
      }
    ]
  }
}

I följande tabell beskrivs elementen i den föregående autoskalningsinställningens JSON.

Avsnitt Elementnamn Portalnamn beskrivning
Inställning ID Autoskalningsinställningens resurs-ID. Autoskalningsinställningar är en Azure Resource Manager-resurs.
Inställning name Namnet på inställningen autoskalning.
Inställning plats Platsen för autoskalningsinställningen. Den här platsen kan skilja sig från platsen för resursen som skalas.
egenskaper targetResourceUri Resurs-ID för resursen som skalas. Du kan bara ha en autoskalningsinställning per resurs.
egenskaper Profiler Skalningsvillkor En autoskalningsinställning består av en eller flera profiler. Varje gång autoskalningsmotorn körs körs en profil. Konfigurera upp till 20 profiler per autoskalningsinställning.
Profiler name Namnet på profilen. Du kan välja valfritt namn som hjälper dig att identifiera profilen.
Profiler capacity.maximum Instansgränser – högsta Maximal kapacitet tillåts. Det säkerställer att autoskalning inte skalar resursen över det här talet när profilen körs.
Profiler capacity.minimum Instansgränser – minimum Minsta tillåtna kapacitet. Det säkerställer att autoskalning inte skalar din resurs under det här talet när den kör profilen
Profiler capacity.default Instansgränser – standard Om det uppstår problem med att läsa resursmåttet och den aktuella kapaciteten ligger under standardvärdet skalas autoskalningen ut till standardvärdet. Den här åtgärden säkerställer resursens tillgänglighet. Om den aktuella kapaciteten redan är högre än standardkapaciteten skalas inte autoskalning in.
Profiler regler Regler Autoskalning skalas automatiskt mellan maximal och lägsta kapacitet med hjälp av reglerna i profilen. Definiera upp till 10 enskilda regler i en profil. Vanligtvis definieras regler i par, en för att avgöra när du ska skala ut och den andra för att avgöra när du ska skala in.
Regel metricTrigger Skalningsregel Definierar måttvillkoret för regeln.
metricTrigger metricName Måttnamn Namnet på måttet.
metricTrigger metricResourceUri Resurs-ID för resursen som genererar måttet. I de flesta fall är det samma som resursen som skalas. I vissa fall kan det vara annorlunda. Du kan till exempel skala en VM-skalningsuppsättning baserat på antalet meddelanden i en lagringskö.
metricTrigger timeGrain Tidsintervall (minuter) Varaktigheten för måttsampling. Till exempel innebär timeGrain = "PT1M" att måtten ska aggregeras var 1 minut med hjälp av aggregeringsmetoden som anges i statistikelementet.
metricTrigger Statistik Tidsintervallstatistik Aggregeringsmetoden inom tidsperiodenGrain. Till exempel innebär statistik = "Genomsnitt" och timeGrain = "PT1M" att måtten ska aggregeras var 1 minut genom att ta medelvärdet. Den här egenskapen avgör hur måttet samplas.
metricTrigger timeWindow Varaktighet Hur lång tid det tar att se tillbaka på mått. Till exempel innebär timeWindow = "PT10M" att varje gång autoskalning körs frågar den mått under de senaste 10 minuterna. Tidsfönstret gör att dina mått kan normaliseras och undviker att reagera på tillfälliga toppar.
metricTrigger timeAggregation Tidsmängd Aggregeringsmetoden som används för att aggregera de samplade måtten. Till exempel bör timeAggregation = "Average" aggregera de samplade måtten genom att ta medelvärdet. I föregående fall tar du de tio 1-minutersproverna och medelvärdet av dem.
Regel scaleAction Åtgärd Den åtgärd som ska vidtas när metricTrigger för regeln utlöses.
scaleAction riktning Åtgärd "Öka" för att skala ut eller "Minska" för att skala in.
scaleAction värde Antal instanser Hur mycket du vill öka eller minska resursens kapacitet.
scaleAction cooldown Väntetid (minuter) Hur lång tid det går att vänta efter en skalningsåtgärd innan du skalar igen. Nedkylningsperioden träder i kraft efter en inskalning eller en utskalningshändelse. Om till exempel cooldown = "PT10M" försöker autoskalning inte skalas igen på ytterligare 10 minuter. Nedkylningen är att tillåta att måtten stabiliseras efter att instanserna har lagts till eller tagits bort.

Autoskalningsprofiler

Definiera upp till 20 olika profiler per autoskalningsinställning.
Det finns tre typer av autoskalningsprofiler:

  • Standardprofil: Använd standardprofilen om du inte behöver skala resursen baserat på ett visst datum och en viss tid eller dag i veckan. Standardprofilen körs när det inte finns några andra tillämpliga profiler för aktuellt datum och tid. Du kan bara ha en standardprofil.

  • Profil med fast datum: Profilen för fast datum är relevant för ett enda datum och en enda tid. Använd profilen för fast datum för att ange skalningsregler för en viss händelse. Profilen körs bara en gång, på händelsens datum och tid. För alla andra tider använder autoskalning standardprofilen.

        ...
        "profiles": [
            {
                "name": " regularProfile",
                "capacity": {
                    ...
                },
                "rules": [
                    ...
                ]
            },
            {
                "name": "eventProfile",
                "capacity": {
                ...
                },
                "rules": [
                    ...
                ],
                "fixedDate": {
                    "timeZone": "Pacific Standard Time",
                    "start": "2017-12-26T00:00:00",
                    "end": "2017-12-26T23:59:00"
                }
            }
        ]
    
  • Upprepningsprofil: En upprepningsprofil används för en dag eller en uppsättning dagar i veckan. Schemat för en återkommande profil innehåller inte något slutdatum. Datum och tidsslut för en återkommande profil anges vid starttiden för följande profil. När portalen används för att konfigurera återkommande profiler uppdateras standardprofilen automatiskt så att den startar vid den sluttid som du anger för den återkommande profilen. Mer information om hur du konfigurerar flera profiler finns i Autoskalning med flera profiler

    Det partiella schemaexemplet här visar en återkommande profil. Den börjar klockan 06:00 och slutar klockan 19:00 på lördagar och söndagar. Standardprofilen har ändrats så att den börjar kl. 19.00 på lördagar och söndagar.

        {
            "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
            "contentVersion": "1.0.0.0",
            "resources": [
                {
                    "type": "Microsoft.Insights/    autoscaleSettings",
                    "apiVersion": "2015-04-01",
                    "name": "VMSS1-Autoscale-607",
                    "location": "eastus",
                    "properties": {
    
                        "name": "VMSS1-Autoscale-607",
                        "enabled": true,
                        "targetResourceUri": "/subscriptions/    abc123456-987-f6e5-d43c-9a8d8e7f6541/    resourceGroups/rg-vmss1/providers/    Microsoft.Compute/    virtualMachineScaleSets/VMSS1",
                        "profiles": [
                            {
                                "name": "Weekend profile",
                                "capacity": {
                                    ...
                                },
                                "rules": [
                                    ...
                                ],
                                "recurrence": {
                                    "frequency": "Week",
                                    "schedule": {
                                        "timeZone": "E. Europe     Standard Time",
                                        "days": [
                                            "Saturday",
                                            "Sunday"
                                        ],
                                        "hours": [
                                            6
                                        ],
                                        "minutes": [
                                            0
                                        ]
                                    }
                                }
                            },
                            {
                                "name": "{\"name\":\"Auto created default scale condition\",\"for\":\"Weekend profile\"}",
                                "capacity": {
                                   ...
                                },
                                "recurrence": {
                                    "frequency": "Week",
                                    "schedule": {
                                        "timeZone": "E. Europe     Standard Time",
                                        "days": [
                                            "Saturday",
                                            "Sunday"
                                        ],
                                        "hours": [
                                            19
                                        ],
                                        "minutes": [
                                            0
                                        ]
                                    }
                                },
                                "rules": [   
                                  ...
                                ]
                            }
                        ],
                        "notifications": [],
                        "targetResourceLocation": "eastus"
                    }
    
                }
            ]
                }
    
    

Utvärdering av autoskalning

Autoskalningsinställningar kan ha flera profiler. Varje profil kan ha flera regler. Varje gång autoskalningsjobbet körs börjar det med att välja lämplig profil för den tiden. Autoskalning utvärderar sedan lägsta och högsta värden, eventuella måttregler i profilen och avgör om en skalningsåtgärd krävs. Autoskalningsjobbet körs var 30:e till 60:e sekund, beroende på resurstyp. När en skalningsåtgärd inträffar väntar autoskalningsjobbet på nedkylningsperioden innan det skalar igen. Nedkylningsperioden gäller för både utskalnings- och inskalningsåtgärder.

Vilken profil kommer autoskalning att använda?

Varje gång autoskalningstjänsten körs utvärderas profilerna i följande ordning:

  1. Profiler med fast datum
  2. Återkommande profiler
  3. Standardprofil

Den första lämpliga profilen som hittas används.

Hur utvärderar autoskalning flera regler?

När autoskalningen avgör vilken profil som ska köras utvärderas utskalningsreglerna i profilen, dvs. var riktning = "Öka". Om en eller flera utskalningsregler utlöses beräknar autoskalning den nya kapaciteten som bestäms av scaleAction som angetts för var och en av reglerna. Om fler än en utskalningsregel utlöses skalar autoskalning till den högsta angivna kapaciteten för att säkerställa tjänstens tillgänglighet.

Anta till exempel att det finns två regler: Regel 1 anger en utskalning med tre instanser och regel 2 anger en utskalning med fem. Om båda reglerna utlöses skalas autoskalning ut av fem instanser. Om en regel anger utskalning med tre instanser och en annan regel anger utskalning med 15 %, används det högre av de två instansantalen.

Om inga utskalningsregler utlöses utvärderar autoskalning inskalningsreglerna, dvs. regler med riktning = "Minska". Autoskalning skalas bara in om alla inskalningsregler utlöses.

Autoskalning beräknar den nya kapaciteten som bestäms av scaleAction för var och en av dessa regler. För att säkerställa tjänstens tillgänglighet skalar autoskalning in med så lite som möjligt för att uppnå den angivna maximala kapaciteten. Anta till exempel två inskalningsregler, en som minskar kapaciteten med 50 % och en som minskar kapaciteten med tre instanser. Om den första regeln resulterar i fem instanser och den andra regeln resulterar i sju skalar autoskalning in till sju instanser.

Varje gång autoskalning beräknar resultatet av en inskalningsåtgärd utvärderas om åtgärden skulle utlösa en utskalningsåtgärd. Scenariot där en skalningsåtgärd utlöser den motsatta skalningsåtgärden kallas flaxning. Autoskalning kan skjuta upp en inskalningsåtgärd för att undvika flaxning eller skala med ett tal som är mindre än vad som angavs i regeln. Mer information om flaxning finns i Flapping i autoskalning.

Nästa steg

Läs mer om autoskalning: