Delen via


Voorspellende automatische schaalaanpassing gebruiken om uit te schalen vóór de belastingsvereisten in virtuele-machineschaalsets

Voorspellende automatische schaalaanpassing maakt gebruik van machine learning om Virtuele-machineschaalsets van Azure te beheren en te schalen met cyclische workloadpatronen. Het voorspelt de totale CPU-belasting voor uw virtuele-machineschaalset, op basis van uw historische CPU-gebruikspatronen. Het voorspelt de totale CPU-belasting door het historische gebruik te observeren en te leren. Dit proces zorgt ervoor dat uitschalen op tijd plaatsvindt om aan de vraag te voldoen.

Voorspellende automatische schaalaanpassing heeft minimaal zeven dagen geschiedenis nodig om voorspellingen te bieden. De maximale steekproefperiode is een doorlopend venster van 15 dagen, wat de beste voorspellende resultaten geeft. Voor maandelijkse of jaarlijkse workloadpatronen gebruikt u configuraties voor automatisch schalen op basis van schema's of configuraties voor automatische schaalaanpassing op basis van metrische gegevens.

Voorspellende automatische schaalaanpassing voldoet aan de schaalgrenzen die u hebt ingesteld voor uw virtuele-machineschaalset. Wanneer het systeem voorspelt dat de CPU-belasting van uw virtuele-machineschaalset uw grens voor uitschalen overschrijdt, worden nieuwe exemplaren toegevoegd volgens uw specificaties. U kunt ook configureren hoe ver van tevoren nieuwe exemplaren moeten worden ingericht, tot 1 uur voordat de voorspelde workloadpiek plaatsvindt.

Met prognose kunt u alleen uw voorspelde CPU-prognose weergeven zonder de schaalactie te activeren op basis van de voorspelling. Vervolgens kunt u de prognose vergelijken met uw werkelijke workloadpatronen om vertrouwen in de voorspellingsmodellen te bouwen voordat u de functie voor voorspellende automatische schaalaanpassing inschakelt.

Aanbiedingen voor voorspellende automatische schaalaanpassing

  • Voorspellende automatische schaalaanpassing is bedoeld voor workloads die cyclische CPU-gebruikspatronen vertonen.
  • Ondersteuning is alleen beschikbaar voor virtuele-machineschaalsets.
  • Het metrische cpu-percentage met het aggregatietype Gemiddelde is de enige metrische waarde die momenteel wordt ondersteund.
  • Voorspellende automatische schaalaanpassing ondersteunt alleen uitschalen. Configureer standaard automatisch schalen om te beheren om in acties te schalen.
  • Voorspellende automatische schaalaanpassing is alleen beschikbaar voor de commerciële Azure-cloud. Azure Government-clouds worden momenteel niet ondersteund.

Voorspellende automatische schaalaanpassing of prognose alleen inschakelen met Azure Portal

  1. Ga naar het scherm virtuele-machineschaalset en selecteer Schalen.

    Schermopname van het selecteren van Schalen in het linkermenu in Azure Portal.

  2. Onder de sectie Aangepaste automatische schaalaanpassing wordt voorspellende automatische schaalaanpassing weergegeven.

    Schermopname van het selecteren van aangepaste automatische schaalaanpassing en de optie Voorspellende automatische schaalaanpassing in Azure Portal.

    Met behulp van de vervolgkeuzelijst kunt u het volgende doen:

    • Schakel voorspellende automatische schaalaanpassing uit. Uitschakelen is de standaardselectie wanneer u voor het eerst op de pagina terechtkomt voor voorspellende automatische schaalaanpassing.
    • Schakel de modus Alleen prognose in.
    • Voorspellende automatische schaalaanpassing inschakelen.

    Notitie

    Voordat u de modus voor voorspellende automatische schaalaanpassing of alleen prognose kunt inschakelen, moet u de standaardvoorwaarden voor reactieve automatische schaalaanpassing instellen.

  3. Als u de modus Alleen prognose wilt inschakelen, selecteert u deze in de vervolgkeuzelijst. Definieer een uitschaaltrigger op basis van percentage CPU. Selecteer vervolgens Opslaan. Hetzelfde proces geldt voor het inschakelen van voorspellende automatische schaalaanpassing. Als u de modus voor voorspellende automatische schaalaanpassing of alleen prognose wilt uitschakelen, selecteert u Uitschakelen in de vervolgkeuzelijst.

    Schermopname van het inschakelen van de modus Alleen prognose.

  4. Geef desgewenst een vooraf startende tijd op, zodat de exemplaren volledig worden uitgevoerd voordat ze nodig zijn. U kunt exemplaren tussen 5 en 60 minuten vooraf starten voor de benodigde voorspellingstijd.

    Schermopname van de vooraf startende installatie van voorspellende automatische schaalaanpassing.

  5. Nadat u de modus voorspellende automatische schaalaanpassing of alleen prognose hebt ingeschakeld en deze hebt opgeslagen, selecteert u Voorspellende grafieken.

    Schermopname van het selecteren van de menuoptie Voorspellende grafieken.

  6. U ziet drie grafieken:

    Schermopname van drie grafieken voor voorspellende automatische schaalaanpassing.

    • In het bovenste diagram ziet u een overlappende vergelijking van het werkelijke versus voorspelde totale CPU-percentage. De tijdsduur van de weergegeven grafiek is van de afgelopen zeven dagen tot de komende 24 uur.
    • In de middelste grafiek ziet u het maximum aantal exemplaren dat de afgelopen zeven dagen wordt uitgevoerd.
    • In de onderste grafiek ziet u het huidige gemiddelde CPU-gebruik in de afgelopen zeven dagen.

Inschakelen met behulp van een Azure Resource Manager-sjabloon

  1. Haal de resource-id van de virtuele-machineschaalset en de resourcegroep van uw virtuele-machineschaalset op. Bijvoorbeeld: /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeee4e4e4e/resourceGroups/patest2/providers/Microsoft.Compute/virtualMachineScaleSets/patest2

  2. Werk het autoscale_only_parameters-bestand bij met de resource-id van de virtuele-machineschaalset en eventuele parameters voor het instellen van automatische schaalaanpassing.

  3. Gebruik een PowerShell-opdracht om de sjabloon te implementeren die de instellingen voor automatisch schalen bevat. Voorbeeld:

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"
		}
	}
}

Zie het overzicht van Resource Manager-sjablonen voor meer informatie over Azure Resource Manager-sjablonen.

Veelgestelde vragen

In deze sectie vindt u antwoorden op veelgestelde vragen.

Waarom is het CPU-percentage hoger dan 100 procent in voorspellende grafieken?

In het voorspellende diagram ziet u de cumulatieve belasting voor alle machines in de schaalset. Als u 5 VM's in een schaalset hebt, is de maximale cumulatieve belasting voor alle VM's 500%, dus vijf keer de maximale CPU-belasting van elke VM.

Wat gebeurt er in de loop van de tijd wanneer u voorspellende automatische schaalaanpassing inschakelt voor een virtuele-machineschaalset?

Automatische schaalaanpassing van voorspellingen maakt gebruik van de geschiedenis van een actieve virtuele-machineschaalset. Als uw schaalset minder dan zeven dagen actief is, ontvangt u een bericht dat het model wordt getraind. Zie het bericht geen voorspellende gegevens voor meer informatie. Voorspellingen verbeteren naarmate de tijd voorbij gaat en bereiken een maximale nauwkeurigheid van 15 dagen nadat de virtuele-machineschaalset is gemaakt.

Als er wijzigingen in het workloadpatroon optreden, maar periodiek blijven, herkent het model de wijziging en begint de prognose aan te passen. De prognose verbetert naarmate de tijd voorbij gaat. De maximale nauwkeurigheid wordt 15 dagen na de wijziging in het verkeerspatroon bereikt. Houd er rekening mee dat uw standaardregels voor automatische schaalaanpassing nog steeds van toepassing zijn. Als er een nieuwe niet-voorspelde toename van het verkeer optreedt, wordt uw virtuele-machineschaalset nog steeds uitgeschaald om aan de vraag te voldoen.

Wat als het model niet goed werkt voor mij?

De modellering werkt het beste met workloads die periodiek zijn. U wordt aangeraden eerst de voorspellingen te evalueren door alleen voorspellingen in te schakelen, waardoor het voorspelde CPU-gebruik van de schaalset wordt overgeslagen met het werkelijke, waargenomen gebruik. Nadat u de resultaten hebt vergeleken en geëvalueerd, kunt u ervoor kiezen om schalen in te schakelen op basis van de voorspelde metrische gegevens als de modelvoorspellingen dicht genoeg zijn voor uw scenario.

Waarom moet ik standaard automatisch schalen inschakelen voordat ik voorspellende automatische schaalaanpassing inschakelen?

Standaard automatisch schalen is een noodzakelijke terugval als het voorspellende model niet goed werkt voor uw scenario. Bij standaard automatisch schalen worden onverwachte belastingpieken behandeld, die geen deel uitmaken van uw typische CPU-belastingspatroon. Het biedt ook een terugval als er een fout optreedt bij het ophalen van de voorspellende gegevens.

Welke regel wordt van kracht als er regels voor voorspellende en standaard automatisch schalen zijn ingesteld?

Standaardregels voor automatische schaalaanpassing worden gebruikt als er een onverwachte piek is in de CPU-belasting of als er een fout optreedt bij het ophalen van voorspellende gegevens

We gebruiken de drempelwaarde die is ingesteld in de standaardregels voor automatische schaalaanpassing om te begrijpen wanneer u wilt uitschalen en op basis van het aantal exemplaren. Als u wilt dat uw virtuele-machineschaalset wordt uitgeschaald wanneer het CPU-gebruik hoger is dan 70% en werkelijke of voorspelde gegevens laat zien dat het CPU-gebruik hoger is dan of hoger is dan 70%, wordt er een uitschaal uitgevoerd.

Fouten en waarschuwingen

In deze sectie worden veelvoorkomende fouten en waarschuwingen opgelost.

Standaard automatisch schalen is niet ingeschakeld

Mogelijk wordt het volgende foutbericht weergegeven:

Als u voorspellende automatische schaalaanpassing wilt inschakelen, maakt u een uitschaalregel op basis van de metrische waarde percentage CPU. Klik hier om naar het tabblad Configureren te gaan om een regel voor automatische schaalaanpassing in te stellen.

Schermopname van het foutbericht dat voorspellende automatische schaalaanpassing is gebaseerd op het cpu-percentage metrische gegevens van de huidige resource.

Dit bericht betekent dat u hebt geprobeerd voorspellende automatische schaalaanpassing in te schakelen voordat u standaard automatisch schalen hebt ingeschakeld en deze hebt ingesteld voor het gebruik van de metrische gegevens percentage CPU met het aggregatietype Gemiddelde .

Geen voorspellende gegevens

U ziet onder bepaalde omstandigheden geen gegevens over de voorspellende grafieken. Dit gedrag is geen fout, het is het beoogde gedrag.

Wanneer voorspellende automatische schaalaanpassing is uitgeschakeld, ontvangt u in plaats daarvan een bericht dat begint met 'Geen gegevens om weer te geven...' Vervolgens ziet u instructies over wat u moet inschakelen, zodat u een voorspellende grafiek kunt zien.

Schermopname van het bericht Geen gegevens om weer te geven.

Wanneer u voor het eerst een virtuele-machineschaalset maakt en de modus Alleen voorspellen inschakelt, ontvangt u het bericht 'Voorspellende gegevens worden getraind...' en een tijd om terug te keren om de grafiek te bekijken.

Schermopname van het bericht Voorspellende gegevens wordt getraind.

Volgende stappen

Meer informatie over automatisch schalen vindt u in de volgende artikelen: