Použití prediktivního automatického škálování k horizontálnímu navýšení kapacity před požadavky na zatížení ve škálovacích sadách virtuálních počítačů

Prediktivní automatické škálování pomocí strojového učení pomáhá spravovat a škálovat škálovací sady virtuálních počítačů Azure pomocí cyklických vzorů úloh. Na základě historických vzorů využití procesoru předpovídá celkové zatížení procesoru do škálovací sady virtuálních počítačů. Předpovídá celkové zatížení procesoru tím, že sleduje historické využití a učí se z něj. Tento proces zajišťuje, aby horizontální navýšení kapacity probíhalo včas, aby splňovalo poptávku.

Prediktivní automatické škálování potřebuje k poskytování předpovědí minimálně sedm dnů historie. Nejpřesnější výsledky pocházejí z 15 dnů historických dat.

Prediktivní automatické škálování dodržuje hranice škálování, které jste nastavili pro škálovací sadu virtuálních počítačů. Když systém předpovídá, že procento zatížení procesoru škálovací sady virtuálních počítačů překročí hranice horizontálního navýšení kapacity, přidají se nové instance podle vašich specifikací. Můžete také nakonfigurovat, jak daleko dopředu chcete nové instance zřídit, a to až 1 hodinu, než nastane špička předpovězené úlohy.

Prognóza vám umožní zobrazit predikovanou prognózu procesoru, aniž byste aktivovali akci škálování na základě předpovědi. Před povolením funkce prediktivního automatického škálování pak můžete prognózu porovnat se skutečnými vzory úloh a vytvořit tak důvěru v prediktivní modely předpovědí.

Prediktivní nabídky automatického škálování

  • Prediktivní automatické škálování je určené pro úlohy, které vykazují vzorce využití cyklického procesoru.
  • Podpora je dostupná jenom pro škálovací sady virtuálních počítačů.
  • Metrika Procento procesoru s typem agregace Průměr je jediná metrika, která se aktuálně podporuje.
  • Prediktivní automatické škálování podporuje pouze horizontální navýšení kapacity. Nakonfigurujte standardní automatické škálování pro správu škálování v akcích.
  • Prediktivní automatické škálování je dostupné jenom pro komerční cloud Azure. Cloudy Azure Government se v současné době nepodporují.

Povolení prediktivního automatického škálování nebo prognózy pouze pomocí webu Azure Portal

  1. Přejděte na obrazovku Škálovací sada virtuálních počítačů a vyberte Škálovat.

    Snímek obrazovky znázorňující výběr možnosti Škálování v nabídce vlevo na webu Azure Portal

  2. V části Vlastní automatické škálování se zobrazí prediktivní automatické škálování.

    Snímek obrazovky znázorňující výběr vlastního automatického škálování a možnosti Prediktivní automatické škálování na webu Azure Portal

    Pomocí rozevíracího seznamu můžete:

    • Zakažte prediktivní automatické škálování. Zakázat je výchozí výběr, když poprvé přejdete na stránku pro prediktivní automatické škálování.
    • Povolte režim pouze prognózy.
    • Povolení prediktivního automatického škálování

    Poznámka:

    Před povolením prediktivního automatického škálování nebo režimu pouze prognózy je nutné nastavit standardní podmínky automatického škálování reaktivních.

  3. Pokud chcete povolit režim pouze prognózy, vyberte ho v rozevíracím seznamu. Definujte trigger horizontálního navýšení kapacity na základě procentuálního využití procesoru. Pak vyberte Uložit. Stejný postup platí pro povolení prediktivního automatického škálování. Pokud chcete zakázat režim pouze prediktivního automatického škálování nebo prognózy, v rozevíracím seznamu vyberte Zakázat .

    Snímek obrazovky znázorňující povolení režimu pouze prognózy

  4. V případě potřeby zadejte dobu před spuštěním, aby instance byly plně spuštěné, než budou potřeba. Před potřebným časem předpovědi můžete předem spustit instance mezi 5 a 60 minutami.

    Snímek obrazovky znázorňující předběžné spuštění prediktivního automatického škálování

  5. Jakmile povolíte režim prediktivního automatického škálování nebo pouze prognózy a uložíte ho, vyberte Prediktivní grafy.

    Snímek obrazovky znázorňující výběr možnosti nabídky Prediktivní grafy

  6. Zobrazí se tři grafy:

    Snímek obrazovky znázorňující tři grafy pro prediktivní automatické škálování

    • Horní graf zobrazuje překryvné porovnání skutečných hodnot a předpovídaného celkového procenta procesoru. Časové rozpětí zobrazeného grafu je od posledních 7 dnů do následujících 24 hodin.
    • Prostřední graf zobrazuje maximální počet instancí spuštěných za posledních 7 dnů.
    • Dolní graf zobrazuje aktuální průměrné využití procesoru za posledních 7 dnů.

Povolení pomocí šablony Azure Resource Manageru

  1. Načtěte ID prostředku škálovací sady virtuálních počítačů a skupinu prostředků škálovací sady virtuálních počítačů. Příklad: /subscriptions/e954e48d-abcd-abcd-3e0353cb45ae/resourceGroups/patest2/providers/Microsoft.Compute/virtualMachineScaleSets/patest2

  2. Aktualizujte soubor autoscale_only_parameters pomocí ID prostředku škálovací sady virtuálních počítačů a všech parametrů nastavení automatického škálování.

  3. K nasazení šablony, která obsahuje nastavení automatického škálování, použijte příkaz PowerShellu. Příklad:

PS G:\works\kusto_onboard\test_arm_template> new-azurermresourcegroupdeployment -name binzAutoScaleDeploy -resourcegroupname cpatest2 -templatefile autoscale_only.json -templateparameterfile autoscale_only_parameters.json

Snímek obrazovky znázorňující výstup příkazu PowerShellu z předchozího příkazu při spuštění šablon Azure Resource Manageru pro nasazení prediktivního automatického škálování

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/e954e48d-b252-b252-b252-3e0353cb45ae/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"
		}
	}
}

Další informace o šablonách Azure Resource Manageru najdete v přehledu šablon Resource Manageru.

Nejčastější dotazy

Tato část odpovídá na nejčastější dotazy.

Proč je u prediktivních grafů procent procesoru více než 100 procent?

Prediktivní graf zobrazuje kumulativní zatížení pro všechny počítače ve škálovací sadě. Pokud máte ve škálovací sadě 5 virtuálních počítačů, maximální kumulativní zatížení všech virtuálních počítačů bude 500 %, tj. pětkrát maximální zatížení procesoru každého virtuálního počítače.

Co se stane v průběhu času, když pro škálovací sadu virtuálních počítačů zapnete prediktivní automatické škálování?

Automatické škálování předpovědi používá historii spuštěné škálovací sady virtuálních počítačů. Pokud vaše škálovací sada běží méně než sedm dní, zobrazí se zpráva, že se model trénuje. Další informace najdete v žádné zprávě o prediktivních datech. Predikce se zlepšují s tím, jak čas dojdou, a dosáhnete maximální přesnosti 15 dnů po vytvoření škálovací sady virtuálních počítačů.

Pokud dojde ke změnám vzoru úlohy, ale zůstane pravidelné, model změnu rozpozná a začne upravovat prognózu. Prognóza se zlepšuje při běhu času. Maximální přesnost se dosáhne 15 dnů po změně vzoru provozu. Mějte na paměti, že vaše standardní pravidla automatického škálování stále platí. Pokud dojde k novému neočekávanému nárůstu provozu, škálovací sada virtuálních počítačů se stále škáluje na více instancí, aby splňovala poptávku.

Co když model nefunguje dobře pro mě?

Modelování funguje nejlépe s úlohami, které vykazují periodičnost. Doporučujeme nejprve vyhodnotit predikce povolením "pouze prognózy", která překryjí předpokládané využití procesoru škálovací sady skutečným pozorovaným využitím. Po porovnání a vyhodnocení výsledků se pak můžete rozhodnout povolit škálování na základě předpovídané metriky, pokud jsou předpovědi modelu pro váš scénář dostatečně blízko.

Proč musím povolit standardní automatické škálování, než povolím prediktivní automatické škálování?

Standardní automatické škálování je nezbytné pro případ, že prediktivní model pro váš scénář nefunguje dobře. Standardní automatické škálování pokrývá neočekávané špičky zatížení, které nejsou součástí vašeho typického vzoru zatížení procesoru. Poskytuje také náhradní řešení, pokud dojde k chybě při načítání prediktivních dat.

Které pravidlo se projeví, pokud jsou nastavena prediktivní i standardní pravidla automatického škálování?

Pravidla standardního automatického škálování se používají, pokud dochází k neočekávanému nárůstu zatížení procesoru nebo k chybě při načítání prediktivních dat.

Prahovou hodnotu nastavenou ve standardních pravidlech automatického škálování používáme k pochopení, kdy chcete horizontálně navětšovat kapacitu a kolik instancí. Pokud chcete škálovací sadu virtuálních počítačů škálovat na více instancí, když využití procesoru překročí 70 % a skutečná nebo predikovaná data ukazují, že využití procesoru je nebo bude větší než 70 %, dojde k horizontálnímu navýšení kapacity.

Chyby a upozornění

Tato část se zabývá běžnými chybami a upozorněními.

Nepovolilo se standardní automatické škálování

Zobrazí se tato chybová zpráva:

Pokud chcete povolit prediktivní automatické škálování, vytvořte pravidlo horizontálního navýšení kapacity na základě metriky Procento procesoru. Kliknutím sem přejdete na kartu Konfigurovat a nastavíte pravidlo automatického škálování.

Snímek obrazovky znázorňující prediktivní automatické škálování chybové zprávy vychází z procentuálního využití procesoru metriky aktuálního prostředku.

Tato zpráva znamená, že jste se pokusili povolit prediktivní automatické škálování před povolením standardního automatického škálování a nastavit ji tak, aby používala metriku procent procesoru s typem průměrné agregace.

Žádná prediktivní data

Za určitých podmínek neuvidíte data v prediktivních grafech. Toto chování není chybou, jedná se o zamýšlené chování.

Pokud je prediktivní automatické škálování zakázané, zobrazí se místo toho zpráva, že se nezobrazují žádná data. Pak uvidíte pokyny k povolení, abyste viděli prediktivní graf.

Snímek obrazovky znázorňující zprávu Žádná data, která se mají zobrazit

Při prvním vytvoření škálovací sady virtuálních počítačů a povolení režimu pouze prognózy se zobrazí zpráva "Prediktivní data se trénují..." a čas na návrat k zobrazení grafu.

Snímek obrazovky znázorňující zprávu o natrénování prediktivních dat

Další kroky

Další informace o automatickém škálování najdete v následujících článcích: