Automatische schaalaanpassing configureren met PowerShell
Automatische schaalaanpassing zorgt ervoor dat u de juiste hoeveelheid resources hebt die worden uitgevoerd om de fluctuerende belasting van uw toepassing af te handelen. U kunt automatische schaalaanpassing configureren met behulp van Azure Portal, Azure CLI, PowerShell of ARM- of Bicep-sjablonen.
In dit artikel leest u hoe u automatische schaalaanpassing configureert voor een virtuele-machineschaalset met PowerShell. De configuraties gebruiken de volgende stappen:
- Een schaalset maken die u automatisch kunt schalen
- Regels maken om in te schalen en uit te schalen
- Een profiel maken dat gebruikmaakt van uw regels
- De instellingen voor automatisch schalen toepassen
- Uw instellingen voor automatisch schalen bijwerken met meldingen
Vereisten
Als u automatische schaalaanpassing wilt configureren met behulp van PowerShell, hebt u een Azure-account met een actief abonnement nodig. U kunt gratis een account maken.
Uw omgeving instellen
#Set the subscription Id, VMSS name, and resource group name
$subscriptionId = (Get-AzContext).Subscription.Id
$resourceGroupName="rg-powershell-autoscale"
$vmssName="vmss-001"
Een virtuele-machineschaalset maken
Maak een schaalset met behulp van de volgende cmdlets. Stel de $resourceGroupName
en $vmssName
variabelen in op uw omgeving.
# 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"
Instellingen voor automatisch schalen maken
Volg de onderstaande volgorde om de instelling voor automatisch schalen te maken met Behulp van PowerShell:
- Regels maken met
New-AzAutoscaleScaleRuleObject
- Een profiel maken met
New-AzAutoscaleProfileObject
- De instellingen voor automatisch schalen maken met
New-AzAutoscaleSetting
- De instellingen bijwerken met
Update-AzAutoscaleSetting
Regels maken
Maak regels voor in- en uitschalen en vervolgens gekoppeld aan een profiel.
Regels worden gemaakt met behulp van de New-AzAutoscaleScaleRuleObject
.
Met het volgende PowerShell-script worden twee regels gemaakt.
- Uitschalen wanneer het cpu-percentage hoger is dan 70%
- Inschalen wanneer percentage CPU kleiner is dan 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))
In de onderstaande tabel worden de parameters beschreven die in de New-AzAutoscaleScaleRuleObject
cmdlet worden gebruikt.
Parameter | Description |
---|---|
MetricTriggerMetricName |
Hiermee stelt u de metrische waarde voor de trigger voor automatische schaalaanpassing in |
MetricTriggerMetricResourceUri |
Hiermee geeft u de resource waartoe de MetricTriggerMetricName metrische waarde behoort. MetricTriggerMetricResourceUri kan elke resource zijn en niet alleen de resource die wordt geschaald. U kunt bijvoorbeeld uw virtuele-machineschaalsets schalen op basis van metrische gegevens die zijn gemaakt door een load balancer, database of de schaalset zelf. De MetricTriggerMetricName moet bestaan voor de opgegeven MetricTriggerMetricResourceUri . |
MetricTriggerTimeGrain |
De steekproeffrequentie van de metrische gegevens die door de regel worden bewaakt. MetricTriggerTimeGrain moet een van de vooraf gedefinieerde waarden voor de opgegeven metrische waarde zijn en moet tussen 12 uur en 1 minuut zijn. PT1M betekent bijvoorbeeld MetricTriggerTimeGrain = dat de metrische gegevens elke 1 minuut worden gesampleed en samengevoegd met behulp van de aggregatiemethode die is opgegeven in MetricTriggerStatistic . |
MetricTriggerTimeAggregation |
De aggregatiemethode binnen de periode timeGrain. Statistiek = "Average" en timeGrain = "PT1M" betekent bijvoorbeeld dat de metrische gegevens om de 1 minuut worden geaggregeerd door het gemiddelde te nemen. |
MetricTriggerStatistic |
De aggregatiemethode die wordt gebruikt voor het aggregeren van de metrische steekproefgegevens. TimeAggregation = 'Average' aggregert bijvoorbeeld de metrische steekproefgegevens door het gemiddelde te nemen. |
MetricTriggerTimeWindow |
De hoeveelheid tijd die de engine voor automatisch schalen terugkijkt om de metrische waarde samen te voegen. Deze waarde moet groter zijn dan de vertraging in het verzamelen van metrische gegevens, die per resource varieert. Het moet tussen 5 minuten en 12 uur zijn. 10 minuten betekent bijvoorbeeld dat elke keer dat automatische schaalaanpassing wordt uitgevoerd, metrische gegevens worden opgevraagd voor de afgelopen 10 minuten. Met deze functie kunnen uw metrische gegevens stabiliseren en voorkomen dat er op tijdelijke pieken wordt gereageerd. |
MetricTriggerThreshold |
Definieert de waarde van de metrische waarde die een schaal gebeurtenis activeert. |
MetricTriggerOperator |
Hiermee geeft u de logische vergelijkende werking die moet worden gebruikt bij het evalueren van de metrische waarde. |
MetricTriggerDividePerInstance |
Wanneer deze optie is ingesteld om de metrische trigger te true delen door het totale aantal exemplaren. Als het aantal berichten bijvoorbeeld 300 is en er vijf exemplaren worden uitgevoerd, is de berekende metrische waarde 60 berichten per exemplaar. Deze eigenschap is niet van toepassing op alle metrische gegevens. |
ScaleActionDirection |
Geef in- of uitschalen op. Geldige waarden zijn Increase en Decrease . |
ScaleActionType |
Schaal op een bepaald aantal exemplaren, schaal naar een specifiek aantal exemplaren of schaal op percentage van het huidige aantal exemplaren. Geldige waarden zijn onder andere ChangeCount , ExactCount en PercentChangeCount . |
ScaleActionCooldown |
De minimale hoeveelheid tijd die moet worden gewacht tussen schaalbewerkingen. Dit is om de metrische gegevens te laten stabiliseren en te voorkomen dat er flappingen worden opgeslagen. Als dit bijvoorbeeld ScaleActionCooldown 10 minuten is en er zojuist een schaalbewerking is opgetreden, probeert automatisch schalen niet opnieuw te schalen gedurende 10 minuten. |
Een standaardprofiel voor automatisch schalen maken en de regels koppelen
Nadat u de schaalregels hebt gedefinieerd, maakt u een profiel. In het profiel worden de standaardlimieten, boven- en lagere exemplaren opgegeven en de tijden waarop de bijbehorende regels kunnen worden toegepast. Gebruik de New-AzAutoscaleProfileObject
cmdlet om een nieuw profiel voor automatisch schalen te maken. Omdat dit een standaardprofiel is, heeft het geen planningsparameters. Het standaardprofiel is actief op momenten dat er geen andere profielen actief zijn
$defaultProfile=New-AzAutoscaleProfileObject `
-Name "default" `
-CapacityDefault 1 `
-CapacityMaximum 10 `
-CapacityMinimum 1 `
-Rule $rule1, $rule2
In de onderstaande tabel worden de parameters beschreven die in de New-AzAutoscaleProfileObject
cmdlet worden gebruikt.
De instellingen voor automatisch schalen toepassen
Pas na het voltooien van de regels en het profiel de instellingen voor automatische schaalaanpassing toe met behulp van New-AzAutoscaleSetting
. Als u de bestaande instelling voor automatische schaalaanpassing wilt bijwerken, gebruikt u 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"
Meldingen toevoegen aan uw instellingen voor automatisch schalen
Voeg meldingen toe aan uw verkoopinstelling om een webhook te activeren of e-mailmeldingen te verzenden wanneer er een schaalevenement plaatsvindt.
Zie voor meer informatie over webhookmeldingen New-AzAutoscaleWebhookNotificationObject
Stel een webhook in met behulp van de volgende cmdlet;
$webhook1=New-AzAutoscaleWebhookNotificationObject -Property @{} -ServiceUri "http://contoso.com/webhook1"
Configureer de melding met behulp van de webhook en stel e-mailmeldingen in met behulp van de New-AzAutoscaleNotificationObject
cmdlet:
$notification1=New-AzAutoscaleNotificationObject `
-EmailCustomEmail "jason@contoso.com" `
-EmailSendToSubscriptionAdministrator $true `
-EmailSendToSubscriptionCoAdministrator $true `
-Webhook $webhook1
Uw instellingen voor automatisch schalen bijwerken om de melding toe te passen
Update-AzAutoscaleSetting `
-Name vmss-autoscalesetting1 `
-ResourceGroupName $resourceGroupName `
-Profile $defaultProfile `
-Notification $notification1 `
-TargetResourceUri "/subscriptions/$subscriptionId/resourceGroups/$resourceGroupName/providers/Microsoft.Compute/virtualMachineScaleSets/$vmssName"
Uw instellingen voor automatische schaalaanpassing controleren
Als u de instellingen voor automatische schaalaanpassing wilt controleren, laadt u de instellingen in een variabele met behulp van Get-AzAutoscaleSetting
de volgende uitvoer van de variabele:
$autoscaleSetting=Get-AzAutoscaleSetting -ResourceGroupName $resourceGroupName -Name vmss-autoscalesetting1
$autoscaleSetting | Select-Object -Property *
Uw geschiedenis van automatische schaalaanpassing ophalen met AzAutoscaleHistory
Get-AzAutoscaleHistory -ResourceId /subscriptions/<subscriptionId/resourceGroups/$resourceGroupName/providers/Microsoft.Compute/virtualMachineScaleSets/$vmssName
Geplande en terugkerende profielen
Een gepland profiel voor een speciale gebeurtenis toevoegen
Stel profielen voor automatische schaalaanpassing in om anders te schalen voor specifieke gebeurtenissen. Maak bijvoorbeeld voor een dag waarop de vraag hoger is dan normaal, een profiel met verhoogde maximum- en minimale exemplaarlimieten.
In het volgende voorbeeld worden dezelfde regels gebruikt als het hierboven gedefinieerde standaardprofiel, maar worden nieuwe exemplaarlimieten ingesteld voor een specifieke datum. U kunt ook verschillende regels configureren voor gebruik met het nieuwe profiel.
$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"
Een terugkerend gepland profiel toevoegen
Met terugkerende profielen kunt u een schaalprofiel plannen dat elke week wordt herhaald. Schaal bijvoorbeeld naar één exemplaar in het weekend van vrijdagavond tot maandagochtend.
Hoewel geplande profielen een begin- en einddatum hebben, hebben terugkerende profielen geen eindtijd. Een profiel blijft actief tot de begintijd van het volgende profiel. Wanneer u een terugkerend profiel maakt, moet u daarom een terugkerend standaardprofiel maken dat begint wanneer u wilt dat het vorige terugkerende profiel wordt voltooid.
Als u bijvoorbeeld een weekendprofiel wilt configureren dat begint op vrijdagavond en eindigt op maandagochtend, maakt u een profiel dat op vrijdagavond begint en maakt u vervolgens een terugkerend profiel met uw standaardinstellingen die op maandagochtend beginnen.
Met het volgende script maakt u een weekendprofiel en een standaardprofiel voor het toevoegen van een standaardprofiel om het weekendprofiel te beëindigen.
$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"
Zie Automatisch schalen met meerdere profielen voor meer informatie over geplande profielen
Andere opdrachten voor automatisch schalen
Zie de Browser van de PowerShell-module voor een volledige lijst met PowerShell-cmdlets voor automatisch schalen
Resources opschonen
Als u de resources die u in deze zelfstudie hebt gemaakt, wilt opschonen, verwijdert u de resourcegroep die u hebt gemaakt. Met de volgende cmdlet worden de resourcegroep en alle bijbehorende resources verwijderd.
Remove-AzResourceGroup -Name $resourceGroupName