Sdílet prostřednictvím


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 cmdletů 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:

  1. Vytváření pravidel pomocí New-AzAutoscaleScaleRuleObject
  2. Vytvoření profilu pomocí New-AzAutoscaleProfileObject
  3. Vytvoření nastavení automatického škálování pomocí New-AzAutoscaleSetting
  4. Aktualizace nastavení pomocí Update-AzAutoscaleSetting

Vytvoření pravidel

Vytvořte pravidla horizontálního navýšení a sníž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 .

Parametr Popis
MetricTriggerMetricName Nastaví metriku spuštění automatického škálování.
MetricTriggerMetricResourceUri Určuje prostředek, ke kterému MetricTriggerMetricName metrika patří. MetricTriggerMetricResourceUri může být jakýkoli prostředek, a ne jenom prostředek, který se škáluje. Škálovací sady virtuálních počítačů můžete například škálovat na základě metrik vytvořených nástrojem pro vyrovnávání zatížení, databází nebo samotnou škálovací sadou. Musí MetricTriggerMetricName existovat pro zadané MetricTriggerMetricResourceUri.
MetricTriggerTimeGrain Frekvence vzorkování metriky, kterou pravidlo monitoruje. MetricTriggerTimeGrain musí být jednou z předdefinovaných hodnot pro zadanou metriku a musí být mezi 12 hodinami a 1 minutou. Například PT1M"* znamená, MetricTriggerTimeGrain =
MetricTriggerTimeAggregation Metoda agregace v období timeGrain. Například statistika = "Průměr" a timeGrain = "PT1M" znamená, že metriky se agregují každých 1 minutu, a to tak, že vezme průměr.
MetricTriggerStatistic Metoda agregace použitá k agregaci ukázkových metrik. Například TimeAggregation = "Průměr" agreguje vzorkované metriky tak, že vezme průměr.
MetricTriggerTimeWindow Doba, po kterou modul automatického škálování hledá agregaci metriky. Tato hodnota musí být větší než zpoždění ve sběru metrik, které se liší podle zdroje. Musí to být 5 minut až 12 hodin. Například 10 minut znamená, že při každém spuštění automatického škálování se dotazuje na metriky za posledních 10 minut. Tato funkce umožňuje metrikám stabilizovat a vyhnout se reakcím na přechodné špičky.
MetricTriggerThreshold Definuje hodnotu metriky, která aktivuje událost škálování.
MetricTriggerOperator Určuje logickou srovnávací operaci, kterou se má použít při vyhodnocování hodnoty metriky.
MetricTriggerDividePerInstance Když je nastaveno na true, metriku triggeru vydělí celkovým počtem instancí. Pokud je například počet zpráv 300 a je spuštěno 5 instancí, počítaná hodnota metriky je 60 zpráv na instanci. Tato vlastnost se nevztahuje na všechny metriky.
ScaleActionDirection Zadejte škálování nahoru nebo dolů. Platné hodnoty jsou Increase a Decrease.
ScaleActionType Škálování podle konkrétního počtu instancí, škálování na určitý počet instancí nebo škálování podle procenta aktuálního počtu instancí. Platné hodnoty zahrnují ChangeCount, ExactCounta PercentChangeCount.
ScaleActionCooldown Minimální doba čekání mezi operacemi škálování. To umožňuje, aby se metriky stabilizují a vyhnuly se flappingu. Pokud je například ScaleActionCooldown 10 minut a právě došlo k operaci škálování, automatické škálování se nepokusí znovu škálovat po dobu 10 minut.

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.
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 plánovaný profil nabude účinku. Tato hodnota musí být week.
ScheduleDay Kolekce dnů, kdy je profil aktivní při specifikaci opakujícího se plánu. Možné hodnoty jsou od neděle do soboty. Další informace o opakovaných plánech najdete na stránce Přidání opakovaného profilu pomocí CLI.
ScheduleHour Kolekce hodin, během kterých je profil aktivní. Podporované hodnoty jsou 0 až 23.
ScheduleMinute Soubor časových okamžiků, kdy profil začne platit.
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ího cmdletu.


  $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é pomocí Get-AzAutoscaleSetting a poté proměnnou vypište následujícím 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řidejte naplánovaný profil pro zvláštní událost

Nastavte profily automatického škálování tak, aby se konkrétní události škálovaly 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álujte na jednu instanci o víkendu, od páteční noci do pondělního rána.

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í cmdlet odstraní skupinu prostředků a všechny její prostředky.


Remove-AzResourceGroup -Name $resourceGroupName