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
Ga naar het scherm virtuele-machineschaalset en selecteer Schalen.
Onder de sectie Aangepaste automatische schaalaanpassing wordt voorspellende automatische schaalaanpassing weergegeven.
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.
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.
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.
Nadat u de modus voorspellende automatische schaalaanpassing of alleen prognose hebt ingeschakeld en deze hebt opgeslagen, selecteert u Voorspellende grafieken.
U ziet drie grafieken:
- 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
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
Werk het autoscale_only_parameters-bestand bij met de resource-id van de virtuele-machineschaalset en eventuele parameters voor het instellen van automatische schaalaanpassing.
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.
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.
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.
Volgende stappen
Meer informatie over automatisch schalen vindt u in de volgende artikelen:
- Overzicht van automatische schaalaanpassing
- Algemene metrische gegevens van Azure Monitor automatisch schalen
- Best practices voor automatische schaalaanpassing in Azure Monitor
- Acties voor automatisch schalen gebruiken om e-mail- en webhookwaarschuwingsmeldingen te verzenden
- REST API voor automatisch schalen