Dela via


Använda förutsägelsebaserad autoskalning för att skala ut före belastningskrav i VM-skalningsuppsättningar

Förutsägelsebaserad autoskalning använder maskininlärning för att hantera och skala Skalningsuppsättningar för virtuella Azure-datorer med cykliska arbetsbelastningsmönster. Den beräknar den totala CPU-belastningen till vm-skalningsuppsättningen baserat på dina historiska cpu-användningsmönster. Den förutsäger den totala CPU-belastningen genom att observera och lära sig av historisk användning. Den här processen säkerställer att utskalning sker i tid för att möta efterfrågan.

Förutsägande autoskalning behöver minst sju dagars historik för att tillhandahålla förutsägelser. Den maximala samplingsperioden är ett rullande fönster på 15 dagar, vilket ger de bästa förutsägelseresultaten. För månatliga eller årliga arbetsbelastningsmönster använder du schemabaserade autoskalnings- eller måttbaserade autoskalningskonfigurationer.

Förutsägande autoskalning följer de skalningsgränser som du har angett för vm-skalningsuppsättningen. När systemet förutsäger att den procentuella CPU-belastningen för vm-skalningsuppsättningen kommer att korsa utskalningsgränsen läggs nya instanser till enligt dina specifikationer. Du kan också konfigurera hur långt i förväg du vill att nya instanser ska etableras, upp till 1 timme innan den förväntade arbetsbelastningstopparna inträffar.

Med Prognos kan du bara visa din förväntade CPU-prognos utan att utlösa skalningsåtgärden baserat på förutsägelsen. Du kan sedan jämföra prognosen med dina faktiska arbetsbelastningsmönster för att skapa förtroende för förutsägelsemodellerna innan du aktiverar funktionen för förutsägande autoskalning.

Erbjudanden för förutsägande autoskalning

  • Förutsägande autoskalning är för arbetsbelastningar som uppvisar cykliska CPU-användningsmönster.
  • Stöd är endast tillgängligt för VM-skalningsuppsättningar.
  • Cpu-måttet i procent med aggregeringstypen Genomsnitt är det enda mått som stöds för närvarande.
  • Autoskalning med förutsägelse stöder endast utskalning. Konfigurera standard autoskalning för att hantera skalning i åtgärder.
  • Förutsägelsebaserad autoskalning är endast tillgängligt för Azure Commercial-molnet. Azure Government-moln stöds inte för närvarande.

Aktivera endast förutsägelsebaserad autoskalning eller prognos med Azure Portal

  1. Gå till skärmen Vm-skalningsuppsättning och välj Skalning.

    Skärmbild som visar hur du väljer Skalning på den vänstra menyn i Azure Portal.

  2. Under avsnittet Anpassad autoskalning visas automatisk förutsägelseskalning.

    Skärmbild som visar hur du väljer Anpassad autoskalning och alternativet Förutsägande autoskalning i Azure Portal.

    Genom att använda listrutemarkeringen kan du:

    • Inaktivera förutsägande autoskalning. Inaktivera är standardvalet när du först landar på sidan för förutsägelse autoskalning.
    • Aktivera endast prognosläge.
    • Aktivera automatisk förutsägelseskalning.

    Kommentar

    Innan du kan aktivera autoskalningsläge för förutsägelse eller endast prognostisering måste du konfigurera standardvillkor för reaktiv autoskalning.

  3. Om du vill aktivera läget endast prognos väljer du det i listrutan. Definiera en utskalningsutlösare baserat på procentandel cpu. Välj sedan Spara. Samma process gäller för att aktivera förutsägande autoskalning. Om du vill inaktivera autoskalning av förutsägelse eller endast prognostisering väljer du Inaktivera i listrutan.

    Skärmbild som visar aktivering av läget endast prognos.

  4. Om du vill anger du en förlanseringstid så att instanserna körs helt innan de behövs. Du kan förlansera instanser mellan 5 och 60 minuter före den förutsägelsetid som krävs.

    Skärmbild som visar prelaunch-konfigurationen för förutsägande autoskalning.

  5. När du har aktiverat autoskalningsläge för förutsägelse eller endast prognos och sparat det väljer du Förutsägande diagram.

    Skärmbild som visar hur du väljer menyalternativet Förutsägande diagram.

  6. Du ser tre diagram:

    Skärmbild som visar tre diagram för förutsägande autoskalning.

    • Det översta diagrammet visar en överlagrad jämförelse av faktiska jämfört med förutsagd total CPU-procentandel. Tidsintervallet för diagrammet som visas är från de senaste sju dagarna till de kommande 24 timmarna.
    • Det mellersta diagrammet visar det maximala antalet instanser som körs under de senaste sju dagarna.
    • Det nedre diagrammet visar den aktuella genomsnittliga CPU-användningen under de senaste sju dagarna.

Aktivera med hjälp av en Azure Resource Manager-mall

  1. Hämta resurs-ID:t för vm-skalningsuppsättningen och resursgruppen för vm-skalningsuppsättningen. Exempel: /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/patest2/providers/Microsoft.Compute/virtualMachineScaleSets/patest2

  2. Uppdatera autoscale_only_parameters-filen med resurs-ID:t för vm-skalningsuppsättningen och eventuella parametrar för autoskalningsinställningar.

  3. Använd ett PowerShell-kommando för att distribuera mallen som innehåller autoskalningsinställningarna. Till exempel:

PS G:\works\kusto_onboard\test_arm_template> new-azurermresourcegroupdeployment -name binzAutoScaleDeploy -resourcegroupname cpatest2 -templatefile autoscale_only.json -templateparameterfile autoscale_only_parameters.json
PS C:\works\autoscale\predictive_autoscale\arm_template> new-azurermresourcegroupdeployment -name binzAutoScaleDeploy - resourcegroupname patest2 -templatefile autoscale_only_binz.json -templateparameterfile autoscale_only_parameters_binz.json

        DeploymentName        : binzAutoScaleDeploy
        ResourceGroupName     : patest2
        ProvisioningState     : Succeeded
        Timestamp             : 3/30/2021 10:11:02 PM
        Mode                  : Incremental
        TemplateLink
        Parameters            :

                                Name              Type                           Value
                                ================  =============================  ====================
                                targetVmssResourceld String	                        /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/patest2/providers/Microsoft.Compute/virtualMachineScaleSets/patest2
                                location	      String                         East US
                                minimumCapacity   Int                            1
                                maximumCapacity   Int                            4
                                defaultCapacity   Int                            4
                                metricThresholdToScaleOut  Int                             50
                                metricTimeWindowForScaleOut  String                          PT5M
                                metricThresholdToScaleln  Int                              30   
                                metricTimeWindowForScaleln  String                           PT5M 
                                changeCountScaleOut  Int                             1
                                changeCountScaleln  Int                             1
                                predictiveAutoscaleMode String                            Enabled
                           
Outputs                        :
                                Name              Type                           Value
                                ================  ============================== ====================
                            
                                targetVmssResourceld  String	/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/patest2/providers/Microsoft.Compute/virtualMachineScaleSets/patest2 
                                settingLocation  String	                        East US
                                predictiveAutoscaleMode  String	                    Enabled

DeloymentDebugLoglevel         :

PS C:\works\autoscale\predictive_autoscale\arm_template>

autoscale_only.json

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
	"parameters": {
		"targetVmssResourceId": {
			"type": "string"
		},
		"location": {
			"type": "string"
		},
		"minimumCapacity": {
			"type": "Int",
			"defaultValue": 2,
			"metadata": {
				"description": "The minimum capacity.  Autoscale engine will ensure the instance count is at least this value."
			}
		},
		"maximumCapacity": {
			"type": "Int",
			"defaultValue": 5,
			"metadata": {
				"description": "The maximum capacity.  Autoscale engine will ensure the instance count is not greater than this value."
			}
		},
		"defaultCapacity": {
			"type": "Int",
			"defaultValue": 3,
			"metadata": {
				"description": "The default capacity.  Autoscale engine will preventively set the instance count to be this value if it can not find any metric data."
			}
		},
		"metricThresholdToScaleOut": {
			"type": "Int",
			"defaultValue": 30,
			"metadata": {
				"description": "The metric upper threshold.  If the metric value is above this threshold then autoscale engine will initiate scale out action."
			}
		},
		"metricTimeWindowForScaleOut": {
			"type": "string",
			"defaultValue": "PT5M",
			"metadata": {
				"description": "The metric look up time window."
			}
		},
		"metricThresholdToScaleIn": {
			"type": "Int",
			"defaultValue": 20,
			"metadata": {
				"description": "The metric lower threshold.  If the metric value is below this threshold then autoscale engine will initiate scale in action."
			}
		},
		"metricTimeWindowForScaleIn": {
			"type": "string",
			"defaultValue": "PT5M",
			"metadata": {
				"description": "The metric look up time window."
			}
		},
		"changeCountScaleOut": {
			"type": "Int",
			"defaultValue": 1,
			"metadata": {
				"description": "The instance count to increase when autoscale engine is initiating scale out action."
			}
		},
		"changeCountScaleIn": {
			"type": "Int",
			"defaultValue": 1,
			"metadata": {
				"description": "The instance count to decrease the instance count when autoscale engine is initiating scale in action."
			}
		},
        "predictiveAutoscaleMode": {
            "type": "String",
            "defaultValue": "ForecastOnly",
            "metadata": {
                "description": "The predictive Autoscale mode."
            }
        }
	},
	"variables": {
	},
	"resources": [{
			"type": "Microsoft.Insights/autoscalesettings",
			"name": "cpuPredictiveAutoscale",
			"apiVersion": "2022-10-01",
			"location": "[parameters('location')]",
			"properties": {
				"profiles": [{
						"name": "DefaultAutoscaleProfile",
						"capacity": {
							"minimum": "[parameters('minimumCapacity')]",
							"maximum": "[parameters('maximumCapacity')]",
							"default": "[parameters('defaultCapacity')]"
						},
						"rules": [{
								"metricTrigger": {
									"metricName": "Percentage CPU",
									"metricNamespace": "",
									"metricResourceUri": "[parameters('targetVmssResourceId')]",
									"timeGrain": "PT1M",
									"statistic": "Average",
									"timeWindow": "[parameters('metricTimeWindowForScaleOut')]",
									"timeAggregation": "Average",
									"operator": "GreaterThan",
									"threshold": "[parameters('metricThresholdToScaleOut')]"
								},
								"scaleAction": {
									"direction": "Increase",
									"type": "ChangeCount",
									"value": "[parameters('changeCountScaleOut')]",
									"cooldown": "PT5M"
								}
							}, {
								"metricTrigger": {
									"metricName": "Percentage CPU",
									"metricNamespace": "",
									"metricResourceUri": "[parameters('targetVmssResourceId')]",
									"timeGrain": "PT1M",
									"statistic": "Average",
									"timeWindow": "[parameters('metricTimeWindowForScaleIn')]",
									"timeAggregation": "Average",
									"operator": "LessThan",
									"threshold": "[parameters('metricThresholdToScaleIn')]"
								},
								"scaleAction": {
									"direction": "Decrease",
									"type": "ChangeCount",
									"value": "[parameters('changeCountScaleOut')]",
									"cooldown": "PT5M"
								}
							}
						]
					}
				],
				"enabled": true,
				"targetResourceUri": "[parameters('targetVmssResourceId')]",
                "predictiveAutoscalePolicy": {
                    "scaleMode": "[parameters('predictiveAutoscaleMode')]"
                }
			}
		}
	],
	"outputs": {
        "targetVmssResourceId" : {
            "type" : "string",
            "value" : "[parameters('targetVmssResourceId')]"
        },
        "settingLocation" : {
            "type" : "string",
            "value" : "[parameters('location')]"
        },
        "predictiveAutoscaleMode" : {
            "type" : "string",
            "value" : "[parameters('predictiveAutoscaleMode')]"
        }
    }
}

autoscale_only_parameters.json

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
	"parameters": {
		"targetVmssResourceId": {
			"value": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/patest2/providers/Microsoft.Compute/virtualMachineScaleSets/patest2"
		},
		"location": {
			"value": "East US"
		},
		"minimumCapacity": {
			"value": 1
		},
		"maximumCapacity": {
			"value": 4
		},
		"defaultCapacity": {
		  "value": 4
		},
		"metricThresholdToScaleOut": {
		  "value": 50
		},
		"metricTimeWindowForScaleOut": {
		  "value": "PT5M"
		},
		"metricThresholdToScaleIn": {
		  "value": 30
		},
		"metricTimeWindowForScaleIn": {
		  "value": "PT5M"
		},
		"changeCountScaleOut": {
		  "value": 1
		},
		"changeCountScaleIn": {
		  "value": 1
		},
		"predictiveAutoscaleMode": {
		  "value": "Enabled"
		}
	}
}

Mer information om Azure Resource Manager-mallar finns i Översikt över Resource Manager-mallar.

Vanliga frågor och svar

Det här avsnittet besvarar vanliga frågor och svar.

Varför är CPU-procentandelen över 100 procent på förutsägelsediagram?

Det förutsägande diagrammet visar den kumulativa belastningen för alla datorer i skalningsuppsättningen. Om du har 5 virtuella datorer i en skalningsuppsättning är den maximala kumulativa belastningen för alla virtuella datorer 500 %, det vill s. 5 gånger den maximala PROCESSORbelastningen på 100 % för varje virtuell dator.

Vad händer med tiden när du aktiverar förutsägande autoskalning för en VM-skalningsuppsättning?

Autoskalning av förutsägelse använder historiken för en vm-skalningsuppsättning som körs. Om din skalningsuppsättning har körts mindre än sju dagar får du ett meddelande om att modellen tränas. Mer information finns i meddelandet om inga förutsägande data. Förutsägelserna förbättras med tiden och uppnår maximal noggrannhet 15 dagar efter att vm-skalningsuppsättningen har skapats.

Om ändringar i arbetsbelastningsmönstret sker men förblir periodiska identifierar modellen ändringen och börjar justera prognosen. Prognosen förbättras med tiden. Maximal noggrannhet uppnås 15 dagar efter att ändringen i trafikmönstret inträffar. Kom ihåg att dina standardregler för autoskalning fortfarande gäller. Om en ny oförutsägbar ökning av trafiken inträffar kommer skalningsuppsättningen för virtuella datorer fortfarande att skalas ut för att möta efterfrågan.

Vad händer om modellen inte fungerar bra för mig?

Modellering fungerar bäst med arbetsbelastningar som uppvisar periodicitet. Vi rekommenderar att du först utvärderar förutsägelserna genom att aktivera "endast prognos", vilket överlagrar skalningsuppsättningens förväntade CPU-användning med den faktiska observerade användningen. När du har jämför och utvärderat resultaten kan du sedan välja att aktivera skalning baserat på de förutsagda måtten om modellförutsägelserna är tillräckligt nära för ditt scenario.

Varför måste jag aktivera automatisk standardskalning innan jag aktiverar automatisk förutsägelseskalning?

Standard autoskalning är en nödvändig återställning om förutsägelsemodellen inte fungerar bra för ditt scenario. Standard autoskalning täcker oväntade belastningstoppar, som inte ingår i ditt vanliga cpu-belastningsmönster. Det ger också en återställning om ett fel uppstår vid hämtning av förutsägelsedata.

Vilken regel börjar gälla om både regler för förutsägelse och standard autoskalning har angetts?

Standardregler för autoskalning används om det finns en oväntad topp i CPU-belastningen, eller om ett fel inträffar när förutsägande data hämtas

Vi använder tröskelvärdet som anges i standardreglerna för autoskalning för att förstå när du vill skala ut och hur många instanser. Om du vill att vm-skalningsuppsättningen ska skalas ut när CPU-användningen överskrider 70 % och faktiska eller förutsagda data visar att CPU-användningen är eller kommer att vara över 70 %, sker en utskalning.

Fel och varningar

Det här avsnittet tar upp vanliga fel och varningar.

Aktiverade inte standard autoskalning

Du får följande felmeddelande:

Om du vill aktivera förutsägelsebaserad autoskalning skapar du en utskalningsregel baserat på måttet Procent cpu. Klicka här om du vill gå till fliken Konfigurera för att ange en autoskalningsregel.

Skärmbild som visar felmeddelandet förutsägelse autoskalning baseras på måttprocent cpu för den aktuella resursen.

Det här meddelandet innebär att du försökte aktivera förutsägande autoskalning innan du aktiverade standard autoskalning och konfigurerade det för att använda måttet Procentandel CPU med typen Genomsnittlig aggregering.

Inga förutsägelsedata

Du ser inte data i förutsägelsediagrammen under vissa förhållanden. Det här beteendet är inte ett fel, det är det avsedda beteendet.

När förutsägande autoskalning är inaktiverat får du i stället ett meddelande som börjar med "Inga data att visa..." Sedan visas instruktioner om vad du ska aktivera så att du kan se ett förutsägelsediagram.

Skärmbild som visar meddelandet Inga data att visa.

När du först skapar en VM-skalningsuppsättning och aktiverar läget endast prognos får du meddelandet "Förutsägelsedata tränas..." och en tid att återgå för att se diagrammet.

Skärmbild som visar meddelandet Förutsägelsedata tränas.

Nästa steg

Läs mer om autoskalning i följande artiklar: