Automatische schaalaanpassing configureren met PowerShell
Instellingen voor automatische schaalaanpassing zorgen ervoor dat de juiste hoeveelheid resources wordt uitgevoerd om de fluctuerende belasting van uw toepassing te verwerken. U kunt automatische schaalaanpassing configureren met behulp van de Azure Portal-, Azure CLI-, PowerShell- of ARM- of Bicep-sjablonen.
In dit artikel wordt beschreven hoe u automatische schaalaanpassing configureert voor een virtuele-machineschaalset met PowerShell, met behulp van de volgende stappen:
- Een schaalset maken die u automatisch kunt schalen
- Regels maken om in- en uit te schalen
- Een profiel maken dat gebruikmaakt van uw regels
- De instellingen voor automatische schaalaanpassing toepassen
- Uw instellingen voor automatische schaalaanpassing 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
variabelen en $vmssName
in op uw omgeving.
# create a new resource group
New-AzResourceGroup -ResourceGroupName $resourceGroupName -Location "EastUS"
# Create login credentials for the VMSS
$vmPassword = ConvertTo-SecureString "ChangeThisPassword1" -AsPlainText -Force
$vmCred = New-Object System.Management.Automation.PSCredential('azureuser', $vmPassword)
New-AzVmss `
-ResourceGroupName $resourceGroupName `
-Location "EastUS" `
-VMScaleSetName $vmssName `
-Credential $vmCred `
-VirtualNetworkName "myVnet" `
-SubnetName "mySubnet" `
-PublicIpAddressName "myPublicIPAddress" `
-LoadBalancerName "myLoadBalancer" `
-OrchestrationMode "Flexible"
Instellingen voor automatische schaalaanpassing maken
Volg de onderstaande volgorde om een instelling voor automatische schaalaanpassing te maken met behulp van PowerShell:
- Regels maken met behulp van
New-AzAutoscaleScaleRuleObject
- Een profiel maken met behulp van
New-AzAutoscaleProfileObject
- De instellingen voor automatische schaalaanpassing maken met behulp van
New-AzAutoscaleSetting
- De instellingen bijwerken met behulp van
Update-AzAutoscaleSetting
Regels maken
Regels voor inschalen en uitschalen maken en deze vervolgens koppelen 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 het CPU-percentage lager 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 | Beschrijving |
---|---|
MetricTriggerMetricName |
Hiermee stelt u de metrische waarde voor de trigger voor automatisch schalen in |
MetricTriggerMetricResourceUri |
Hiermee geeft u de resource waartoe het MetricTriggerMetricName metrische gegeven behoort. MetricTriggerMetricResourceUri kan elke resource zijn en niet alleen de resource die wordt geschaald. U kunt bijvoorbeeld uw Virtual Machine Scale Sets 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 bemonsterd en worden geaggregeerd met behulp van de aggregatiemethode die is opgegeven in MetricTriggerStatistic . |
MetricTriggerTimeAggregation |
De aggregatiemethode binnen de timeGrain-periode. Statistiek = 'Average' en timeGrain = 'PT1M' betekent bijvoorbeeld dat de metrische gegevens elke 1 minuut worden geaggregeerd door het gemiddelde te nemen. |
MetricTriggerStatistic |
De aggregatiemethode die wordt gebruikt voor het aggregeren van de metrische steekproefgegevens. TimeAggregation = 'Gemiddelde' voegt bijvoorbeeld de metrische steekproefgegevens samen door het gemiddelde te nemen. |
MetricTriggerTimeWindow |
De hoeveelheid tijd die de engine voor automatisch schalen terugklikken om de metrische gegevens te aggregeren. Deze waarde moet groter zijn dan de vertraging in het verzamelen van metrische gegevens, die per resource verschilt. Dit moet tussen 5 minuten en 12 uur zijn. 10 minuten betekent bijvoorbeeld dat telkens wanneer automatische schaalaanpassing wordt uitgevoerd, er een query wordt uitgevoerd op metrische gegevens voor de afgelopen 10 minuten. Met deze functie kunnen uw metrische gegevens worden gestabiliseerd en wordt 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 op true , wordt de metrische trigger gedeeld door het totale aantal exemplaren. Als het aantal berichten bijvoorbeeld 300 is en er 5 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 met een specifiek aantal exemplaren, schaal naar een specifiek aantal exemplaren of schaal op percentage van het huidige aantal exemplaren. Geldige waarden zijn , ChangeCount ExactCount en PercentChangeCount . |
ScaleActionCooldown |
De minimale tijd die moet worden gewacht tussen schaalbewerkingen. Dit is om de metrische gegevens te stabiliseren en fladderen te voorkomen. Als ScaleActionCooldown bijvoorbeeld 10 minuten is en er zojuist een schaalbewerking is opgetreden, probeert Automatisch schalen gedurende tien minuten niet opnieuw te schalen. |
Een standaardprofiel voor automatisch schalen maken en de regels koppelen
Nadat u de schaalregels hebt gedefinieerd, maakt u een profiel. Het profiel geeft de standaard-, bovenste en lagere limieten voor het aantal exemplaren op 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.
Parameter | Beschrijving |
---|---|
CapacityDefault |
Het aantal exemplaren dat wel is als metrische gegevens niet beschikbaar zijn voor evaluatie. De standaardwaarde wordt alleen gebruikt als het huidige aantal exemplaren lager is dan het standaardaantal. |
CapacityMaximum |
Het maximum aantal exemplaren voor de resource. Het maximum aantal exemplaren wordt verder beperkt door het aantal kernen dat beschikbaar is in het abonnement. |
CapacityMinimum |
Het minimale aantal exemplaren voor de resource. |
FixedDateEnd |
De eindtijd voor het profiel in ISO 8601-indeling voor. |
FixedDateStart |
De begintijd voor het profiel in ISO 8601-indeling. |
Rule |
Een verzameling regels die de triggers en parameters voor de schaalactie bieden wanneer dit profiel actief is. Er kunnen maximaal 10 door komma's gescheiden regels worden opgegeven. |
RecurrenceFrequency |
Hoe vaak het geplande profiel van kracht wordt. Deze waarde moet zijn week . |
ScheduleDay |
Een verzameling dagen waarop het profiel van kracht wordt bij het opgeven van een terugkerend schema. Mogelijke waarden zijn zondag tot en met zaterdag. Zie Een terugkerend profiel toevoegen met behulp van CLI voor meer informatie over terugkerende planningen |
ScheduleHour |
Een verzameling uren waarop het profiel van kracht wordt. Ondersteunde waarden zijn 0 tot en met 23. |
ScheduleMinute |
Een verzameling minuten waarop het profiel van kracht wordt. |
ScheduleTimeZone |
De tijdzone voor de uren van het profiel. |
De instellingen voor automatische schaalaanpassing toepassen
Nadat u de regels en het profiel hebt bijgewerkt, past u 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 automatische schaalaanpassing
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
De instellingen voor automatische schaalaanpassing 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"
De instellingen voor automatisch schalen controleren
Als u de instellingen voor automatische schaalaanpassing wilt controleren, laadt u de instellingen in een variabele met behulp van Get-AzAutoscaleSetting
en voert u de variabele als volgt uit:
$autoscaleSetting=Get-AzAutoscaleSetting -ResourceGroupName $resourceGroupName -Name vmss-autoscalesetting1
$autoscaleSetting | Select-Object -Property *
Uw geschiedenis voor automatisch schalen ophalen met behulp van AzAutoscaleHistory
Get-AzAutoscaleHistory -ResourceId /subscriptions/<subscriptionId/resourceGroups/$resourceGroupName/providers/Microsoft.Compute/virtualMachineScaleSets/$vmssName
Geplande en terugkerende profielen
Een gepland profiel toevoegen voor een speciale gebeurtenis
Stel profielen voor automatisch schalen in om anders te schalen voor specifieke gebeurtenissen. Voor een dag waarop de vraag hoger is dan normaal, maakt u bijvoorbeeld een profiel met verhoogde maximale en minimale exemplaarlimieten.
In het volgende voorbeeld worden dezelfde regels gebruikt als het standaardprofiel dat hierboven is gedefinieerd, maar worden nieuwe exemplaarlimieten voor een specifieke datum ingesteld. 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.
Geplande profielen hebben een begin- en einddatum, maar terugkerende profielen hebben 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 wordt gestart wanneer u het vorige terugkerende profiel wilt voltooien.
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 wordt een weekendprofiel en een standaardprofiel toegevoegd 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 PowerShell Module Browser voor een volledige lijst met PowerShell-cmdlets voor automatische schaalaanpassing
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 verwijdert u de resourcegroep en alle bijbehorende resources.
Remove-AzResourceGroup -Name $resourceGroupName