Konfigurace automatického škálování pomocí PowerShellu
Automatické škálování zajišťuje, že máte spuštěno správné množství prostředků pro zpracování proměnlivého zatížení vaší aplikace. Automatické škálování můžete nakonfigurovat pomocí webu Azure Portal, Azure CLI, PowerShellu nebo šablon ARM nebo Bicep.
V tomto článku se dozvíte, jak nakonfigurovat automatické škálování pro škálovací sadu virtuálních počítačů pomocí PowerShellu. Konfigurace používají následující kroky:
- Vytvoření škálovací sady, kterou můžete automaticky škálovat
- Vytváření pravidel pro horizontální navýšení kapacity a horizontální navýšení kapacity
- Vytvoření profilu, který používá vaše pravidla
- Použití nastavení automatického škálování
- Aktualizace nastavení automatického škálování pomocí oznámení
Požadavky
Pokud chcete nakonfigurovat automatické škálování pomocí PowerShellu, potřebujete účet Azure s aktivním předplatným. Účet si můžete vytvořit zdarma.
Nastavení prostředí
#Set the subscription Id, VMSS name, and resource group name
$subscriptionId = (Get-AzContext).Subscription.Id
$resourceGroupName="rg-powershell-autoscale"
$vmssName="vmss-001"
Vytvoření škálovací sady virtuálních počítačů
Pomocí následujících rutin vytvořte škálovací sadu. $resourceGroupName
Nastavte proměnné $vmssName
tak, aby nastavily vaše prostředí.
# create a new resource group
New-AzResourceGroup -ResourceGroupName $resourceGroupName -Location "EastUS"
# Create login credentials for the VMSS
$Cred = Get-Credential
$vmCred = New-Object System.Management.Automation.PSCredential($Cred.UserName, $Cred.Password)
New-AzVmss `
-ResourceGroupName $resourceGroupName `
-Location "EastUS" `
-VMScaleSetName $vmssName `
-Credential $vmCred `
-VirtualNetworkName "myVnet" `
-SubnetName "mySubnet" `
-PublicIpAddressName "myPublicIPAddress" `
-LoadBalancerName "myLoadBalancer" `
-OrchestrationMode "Flexible"
Vytvoření nastavení automatického škálování
Pokud chcete vytvořit nastavení automatického škálování pomocí PowerShellu, postupujte podle následujícího postupu:
- Vytváření pravidel pomocí
New-AzAutoscaleScaleRuleObject
- Vytvoření profilu pomocí
New-AzAutoscaleProfileObject
- Vytvoření nastavení automatického škálování pomocí
New-AzAutoscaleSetting
- Aktualizace nastavení pomocí
Update-AzAutoscaleSetting
Vytvoření pravidel
Vytvořte pravidla horizontálního navýšení kapacity a pak je přidružte k profilu.
Pravidla jsou vytvořena pomocí .New-AzAutoscaleScaleRuleObject
Následující skript PowerShellu vytvoří dvě pravidla.
- Horizontální navýšení kapacity, když procento procesoru překročí 70 %
- Škálování v případech, kdy je procento procesoru menší než 30 %
$rule1=New-AzAutoscaleScaleRuleObject `
-MetricTriggerMetricName "Percentage CPU" `
-MetricTriggerMetricResourceUri "/subscriptions/$subscriptionId/resourceGroups/$resourceGroupName/providers/Microsoft.Compute/virtualMachineScaleSets/$vmssName" `
-MetricTriggerTimeGrain ([System.TimeSpan]::New(0,1,0)) `
-MetricTriggerStatistic "Average" `
-MetricTriggerTimeWindow ([System.TimeSpan]::New(0,5,0)) `
-MetricTriggerTimeAggregation "Average" `
-MetricTriggerOperator "GreaterThan" `
-MetricTriggerThreshold 70 `
-MetricTriggerDividePerInstance $false `
-ScaleActionDirection "Increase" `
-ScaleActionType "ChangeCount" `
-ScaleActionValue 1 `
-ScaleActionCooldown ([System.TimeSpan]::New(0,5,0))
$rule2=New-AzAutoscaleScaleRuleObject `
-MetricTriggerMetricName "Percentage CPU" `
-MetricTriggerMetricResourceUri "/subscriptions/$subscriptionId/resourceGroups/$resourceGroupName/providers/Microsoft.Compute/virtualMachineScaleSets/$vmssName" `
-MetricTriggerTimeGrain ([System.TimeSpan]::New(0,1,0)) `
-MetricTriggerStatistic "Average" `
-MetricTriggerTimeWindow ([System.TimeSpan]::New(0,5,0)) `
-MetricTriggerTimeAggregation "Average" `
-MetricTriggerOperator "LessThan" `
-MetricTriggerThreshold 30 `
-MetricTriggerDividePerInstance $false `
-ScaleActionDirection "Decrease" `
-ScaleActionType "ChangeCount" `
-ScaleActionValue 1 `
-ScaleActionCooldown ([System.TimeSpan]::New(0,5,0))
Následující tabulka popisuje parametry použité v rutině New-AzAutoscaleScaleRuleObject
.
Vytvoření výchozího profilu automatického škálování a přidružení pravidel
Po definování pravidel škálování vytvořte profil. Profil určuje výchozí, horní a nižší limity počtu instancí a časy, kdy je možné použít přidružená pravidla. Pomocí rutiny New-AzAutoscaleProfileObject
vytvořte nový profil automatického škálování. Vzhledem k tomu, že se jedná o výchozí profil, nemá žádné parametry plánu. Výchozí profil je aktivní v době, kdy nejsou aktivní žádné jiné profily.
$defaultProfile=New-AzAutoscaleProfileObject `
-Name "default" `
-CapacityDefault 1 `
-CapacityMaximum 10 `
-CapacityMinimum 1 `
-Rule $rule1, $rule2
Následující tabulka popisuje parametry použité v rutině New-AzAutoscaleProfileObject
.
Parametr | Popis |
---|---|
CapacityDefault |
Početinstancích Výchozí hodnota se používá pouze v případě, že je aktuální počet instancí nižší než výchozí. |
CapacityMaximum |
Maximální počet instancí prostředku. Maximální počet instancí je dále omezen počtem jader dostupných v předplatném. |
CapacityMinimum |
Minimální počet instancí prostředku. |
FixedDateEnd |
Koncový čas profilu ve formátu ISO 8601 pro. |
FixedDateStart |
Počáteční čas profilu ve formátu ISO 8601. |
Rule |
Kolekce pravidel, která poskytují triggery a parametry akce škálování, když je tento profil aktivní. Je možné zadat maximálně 10 pravidel oddělených čárkami. |
RecurrenceFrequency |
Jak často se naplánovaný profil projeví. Tato hodnota musí být week . |
ScheduleDay |
Kolekce dnů, na které má profil vliv při zadávání plánu opakování. Možné hodnoty jsou neděle až sobota. Další informace o opakovaných plánech najdete v tématu Přidání opakovaného profilu pomocí rozhraní příkazového řádku. |
ScheduleHour |
Kolekce hodin, na které se profil projeví. Podporované hodnoty jsou 0 až 23. |
ScheduleMinute |
Kolekce minut, ve kterých se profil projeví. |
ScheduleTimeZone |
Časové pásmo pro hodiny profilu. |
Použití nastavení automatického škálování
Po dokončení pravidel a profilu použijte nastavení automatického škálování pomocí New-AzAutoscaleSetting
. Aktualizace stávajícího nastavení automatického škálování pomocí Update-AzAutoscaleSetting
New-AzAutoscaleSetting `
-Name vmss-autoscalesetting1 `
-ResourceGroupName $resourceGroupName `
-Location eastus `
-Profile $defaultProfile `
-Enabled `
-PropertiesName "vmss-autoscalesetting1" `
-TargetResourceUri "/subscriptions/$subscriptionId/resourceGroups/$resourceGroupName/providers/Microsoft.Compute/virtualMachineScaleSets/$vmssName"
Přidání oznámení do nastavení automatického škálování
Přidejte do nastavení prodeje oznámení, která aktivují webhook nebo odesílají e-mailová oznámení, když dojde k události škálování.
Další informace o oznámeních webhooku najdete v tématu New-AzAutoscaleWebhookNotificationObject
Nastavte webhook pomocí následující rutiny;
$webhook1=New-AzAutoscaleWebhookNotificationObject -Property @{} -ServiceUri "http://contoso.com/webhook1"
Nakonfigurujte oznámení pomocí webhooku a nastavte e-mailové oznámení pomocí rutiny New-AzAutoscaleNotificationObject
:
$notification1=New-AzAutoscaleNotificationObject `
-EmailCustomEmail "jason@contoso.com" `
-EmailSendToSubscriptionAdministrator $true `
-EmailSendToSubscriptionCoAdministrator $true `
-Webhook $webhook1
Aktualizujte nastavení automatického škálování, aby se oznámení použilo.
Update-AzAutoscaleSetting `
-Name vmss-autoscalesetting1 `
-ResourceGroupName $resourceGroupName `
-Profile $defaultProfile `
-Notification $notification1 `
-TargetResourceUri "/subscriptions/$subscriptionId/resourceGroups/$resourceGroupName/providers/Microsoft.Compute/virtualMachineScaleSets/$vmssName"
Kontrola nastavení automatického škálování
Pokud chcete zkontrolovat nastavení automatického škálování, načtěte nastavení do proměnné následujícím Get-AzAutoscaleSetting
způsobem:
$autoscaleSetting=Get-AzAutoscaleSetting -ResourceGroupName $resourceGroupName -Name vmss-autoscalesetting1
$autoscaleSetting | Select-Object -Property *
Získání historie automatického škálování pomocí AzAutoscaleHistory
Get-AzAutoscaleHistory -ResourceId /subscriptions/<subscriptionId/resourceGroups/$resourceGroupName/providers/Microsoft.Compute/virtualMachineScaleSets/$vmssName
Naplánované a opakované profily
Přidání naplánovaného profilu pro zvláštní událost
Nastavte profily automatického škálování tak, aby se pro konkrétní události škálovat jinak. Například pro den, kdy bude poptávka vyšší než obvykle, vytvořte profil se zvýšenými maximálními a minimálními limity instancí.
Následující příklad používá stejná pravidla jako výchozí profil definovaný výše, ale nastaví limity nových instancí pro konkrétní datum. Můžete také nakonfigurovat různá pravidla, která se mají používat s novým profilem.
$highDemandDay=New-AzAutoscaleProfileObject `
-Name "High-demand-day" `
-CapacityDefault 7 `
-CapacityMaximum 30 `
-CapacityMinimum 5 `
-FixedDateEnd ([System.DateTime]::Parse("2023-12-31T14:00:00Z")) `
-FixedDateStart ([System.DateTime]::Parse("2023-12-31T13:00:00Z")) `
-FixedDateTimeZone "UTC" `
-Rule $rule1, $rule2
Update-AzAutoscaleSetting `
-Name vmss-autoscalesetting1 `
-ResourceGroupName $resourceGroupName `
-Profile $defaultProfile, $highDemandDay `
-Notification $notification1 `
-TargetResourceUri "/subscriptions/$subscriptionId/resourceGroups/$resourceGroupName/providers/Microsoft.Compute/virtualMachineScaleSets/$vmssName"
Přidání opakovaného naplánovaného profilu
Opakované profily umožňují naplánovat profil škálování, který se opakuje každý týden. Například škálování na jednu instanci o víkendu od páteční noci do pondělí ráno.
I když mají naplánované profily počáteční a koncové datum, opakované profily nemají koncový čas. Profil zůstane aktivní až do času spuštění dalšího profilu. Proto při vytváření opakovaného profilu musíte vytvořit opakovaný výchozí profil, který začíná, když chcete dokončit předchozí opakovaný profil.
Pokud chcete například nakonfigurovat víkendový profil, který začíná v pátek a končí v pondělí ráno, vytvořte profil, který začíná v pátek v noci, a pak vytvořte opakovaný profil s výchozím nastavením, které začíná pondělí ráno.
Následující skript vytvoří profil o víkendu a další výchozí profil pro ukončení víkendového profilu.
$fridayProfile=New-AzAutoscaleProfileObject `
-Name "Weekend" `
-CapacityDefault 1 `
-CapacityMaximum 1 `
-CapacityMinimum 1 `
-RecurrenceFrequency week `
-ScheduleDay "Friday" `
-ScheduleHour 22 `
-ScheduleMinute 00 `
-ScheduleTimeZone "Pacific Standard Time" `
-Rule $rule1, $rule2
$defaultRecurringProfile=New-AzAutoscaleProfileObject `
-Name "default recurring profile" `
-CapacityDefault 2 `
-CapacityMaximum 10 `
-CapacityMinimum 2 `
-RecurrenceFrequency week `
-ScheduleDay "Monday" `
-ScheduleHour 00 `
-ScheduleMinute 00 `
-ScheduleTimeZone "Pacific Standard Time" `
-Rule $rule1, $rule2
New-AzAutoscaleSetting `
-Location eastus `
-Name vmss-autoscalesetting1 `
-ResourceGroupName $resourceGroupName `
-Profile $defaultRecurringProfile, $fridayProfile `
-Notification $notification1 `
-TargetResourceUri "/subscriptions/$subscriptionId/resourceGroups/$resourceGroupName/providers/Microsoft.Compute/virtualMachineScaleSets/$vmssName"
Další informace o naplánovaných profilech najdete v tématu Automatické škálování s více profily.
Další příkazy automatického škálování
Úplný seznam rutin PowerShellu pro automatické škálování najdete v prohlížeči modulů PowerShellu .
Vyčištění prostředků
Pokud chcete vyčistit prostředky, které jste vytvořili v tomto kurzu, odstraňte skupinu prostředků, kterou jste vytvořili. Následující rutina odstraní skupinu prostředků a všechny její prostředky.
Remove-AzResourceGroup -Name $resourceGroupName