Automatikus skálázás konfigurálása a PowerShell-lel
Az automatikus skálázási beállítások segítenek biztosítani, hogy a megfelelő mennyiségű erőforrás fusson az alkalmazás ingadozó terhelésének kezeléséhez. Az automatikus skálázást az Azure Portal, az Azure CLI, a PowerShell, az ARM vagy a Bicep sablonok használatával konfigurálhatja.
Ez a cikk bemutatja, hogyan konfigurálhatja az automatikus skálázást egy Virtuálisgép-méretezési csoporthoz a PowerShell használatával az alábbi lépések végrehajtásával:
- Automatikusan skálázható méretezési csoport létrehozása
- Szabályok létrehozása a skálázáshoz és a felskálázáshoz
- A szabályokat használó profil létrehozása
- Az automatikus skálázási beállítások alkalmazása
- Az automatikus skálázási beállítások frissítése értesítésekkel
Előfeltételek
Az automatikus skálázás PowerShell-lel való konfigurálásához aktív előfizetéssel rendelkező Azure-fiókra van szükség. Ingyenesen létrehozhat fiókot.
A környezet kialakítása
#Set the subscription Id, VMSS name, and resource group name
$subscriptionId = (Get-AzContext).Subscription.Id
$resourceGroupName="rg-powershell-autoscale"
$vmssName="vmss-001"
Virtuálisgép-méretezési csoport létrehozása
Hozzon létre egy méretezési csoportot az alábbi parancsmagok használatával. Állítsa be a és $vmssName
változókat $resourceGroupName
a környezethez.
# 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"
Automatikus skálázási beállítások létrehozása
Ha automatikus skálázási beállítást szeretne létrehozni a PowerShell használatával, kövesse az alábbi sorrendet:
- Szabályok létrehozása a következő használatával:
New-AzAutoscaleScaleRuleObject
- Profil létrehozása a használatával
New-AzAutoscaleProfileObject
- Az automatikus skálázási beállítások létrehozása a következő használatával:
New-AzAutoscaleSetting
- A beállítások frissítése a következő használatával:
Update-AzAutoscaleSetting
Szabályok létrehozása
Hozzon létre skálázási és felskálázási szabályokat, majd társítsa őket egy profilhoz.
A szabályok a használatával jönnek létre.New-AzAutoscaleScaleRuleObject
A következő PowerShell-szkript két szabályt hoz létre.
- Vertikális felskálázás, ha a processzorhasználat százalékos aránya meghaladja a 70%-ot
- Skálázás, ha a processzorhasználat százalékos aránya kevesebb, mint 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))
Az alábbi táblázat a parancsmagban New-AzAutoscaleScaleRuleObject
használt paramétereket ismerteti.
Paraméter | Leírás |
---|---|
MetricTriggerMetricName |
Az automatikus skálázási eseményindító metrikájának beállítása |
MetricTriggerMetricResourceUri |
Meghatározza azt az erőforrást, amelyhez a MetricTriggerMetricName metrika tartozik. MetricTriggerMetricResourceUri bármilyen erőforrás lehet, és nem csak a skálázás alatt álló erőforrás. Skálázhatja például a Virtual Machine Scale Sets a terheléselosztó, az adatbázis vagy maga a méretezési csoport által létrehozott metrikák alapján. A MetricTriggerMetricName megadottnak MetricTriggerMetricResourceUri léteznie kell. |
MetricTriggerTimeGrain |
A szabály által figyelt metrika mintavételezési gyakorisága. MetricTriggerTimeGrain a megadott metrika egyik előre definiált értékének kell lennie, és 12 óra és 1 perc közöttinek kell lennie. A PT1M" * például azt jelenti, MetricTriggerTimeGrain = hogy a metrikák mintavételezése 1 percenként történik, és a megadott aggregációs módszerrel összesítve történik.MetricTriggerStatistic |
MetricTriggerTimeAggregation |
Az aggregációs módszer a timeGrain időszakon belül. Például a statisztika = "Átlag" és timeGrain = "PT1M" azt jelenti, hogy a metrikák 1 percenként vannak összesítve az átlag figyelembevételével. |
MetricTriggerStatistic |
A mintavételezett metrikák összesítéséhez használt összesítési módszer. A TimeAggregation = "Average" például az átlag alapján összesíti a mintavételezett metrikákat. |
MetricTriggerTimeWindow |
Az az idő, amellyel az automatikus skálázási motor visszatekint a metrika összesítésére. Ennek az értéknek nagyobbnak kell lennie, mint a metrikagyűjtemény késése, amely erőforrásonként változik. 5 perc és 12 óra között kell lennie. A 10 perc például azt jelenti, hogy az automatikus skálázás minden futtatásakor az elmúlt 10 percben lekérdezi a metrikákat. Ez a funkció lehetővé teszi, hogy a metrikák stabilizálódjanak, és ne reagáljanak az átmeneti tüskékre. |
MetricTriggerThreshold |
Meghatározza a skálázási eseményt kiváltó metrika értékét. |
MetricTriggerOperator |
Megadja a metrikaérték kiértékelésekor használni kívánt logikai összehasonlító működést. |
MetricTriggerDividePerInstance |
Ha úgy van beállítva, hogy true elosztja az eseményindító metrikát a példányok teljes számával. Ha például az üzenetek száma 300, és 5 példány fut, a számított metrika értéke példányonként 60 üzenet. Ez a tulajdonság nem alkalmazható minden metrika esetében. |
ScaleActionDirection |
Adja meg a skálázást be- vagy kifelé. Az érvényes értékek a és Decrease a.Increase |
ScaleActionType |
Skálázás adott számú példány szerint, skálázás egy adott példányszámra, vagy skálázás az aktuális példányszám százalékában. Az érvényes értékek a következők: ChangeCount , ExactCount és PercentChangeCount . |
ScaleActionCooldown |
A méretezési műveletek közötti várakozás minimális időtartama. Ez lehetővé teszi, hogy a metrikák stabilizálódjanak, és elkerüljék a befúvatást. Ha például ScaleActionCooldown 10 perc, és egy skálázási művelet éppen most történt, az automatikus skálázás 10 percig nem kísérli meg újra a skálázást. |
Alapértelmezett automatikus skálázási profil létrehozása és a szabályok társítása
A méretezési szabályok definiálása után hozzon létre egy profilt. A profil meghatározza az alapértelmezett, a felső és az alsó példányszámkorlátot, valamint a kapcsolódó szabályok alkalmazásának idejét. New-AzAutoscaleProfileObject
A parancsmaggal hozzon létre egy új automatikus skálázási profilt. Mivel ez egy alapértelmezett profil, nem rendelkezik ütemezési paraméterekkel. Az alapértelmezett profil olyankor aktív, amikor más profilok nem aktívak
$defaultProfile=New-AzAutoscaleProfileObject `
-Name "default" `
-CapacityDefault 1 `
-CapacityMaximum 10 `
-CapacityMinimum 1 `
-Rule $rule1, $rule2
Az alábbi táblázat a parancsmagban New-AzAutoscaleProfileObject
használt paramétereket ismerteti.
Paraméter | Leírás |
---|---|
CapacityDefault |
Azoknak a példányoknak a száma, amelyek akkor vannak, ha a metrikák nem érhetők el a kiértékeléshez. Az alapértelmezett érték csak akkor használatos, ha az aktuális példányok száma alacsonyabb az alapértelmezettnél. |
CapacityMaximum |
Az erőforrás példányainak maximális száma. A példányok maximális számát tovább korlátozza az előfizetésben elérhető magok száma. |
CapacityMinimum |
Az erőforrás példányainak minimális száma. |
FixedDateEnd |
A profil záró időpontja ISO 8601 formátumban. |
FixedDateStart |
A profil kezdő időpontja ISO 8601 formátumban. |
Rule |
Olyan szabályok gyűjteménye, amelyek a skálázási művelet eseményindítóit és paramétereit biztosítják, amikor ez a profil aktív. Legfeljebb 10 vesszővel tagolt szabály adható meg. |
RecurrenceFrequency |
Milyen gyakran lép érvénybe az ütemezett profil. Ennek az értéknek kell lennie week . |
ScheduleDay |
Olyan napok gyűjteménye, amelyeken a profil érvénybe lép egy ismétlődő ütemezés megadásakor. Lehetséges értékek: vasárnaptól szombatig. Az ismétlődő ütemezésekkel kapcsolatos további információkért lásd: Ismétlődő profil hozzáadása a parancssori felület használatával |
ScheduleHour |
Órák gyűjteménye, amelyen a profil érvénybe lép. A támogatott értékek 0 és 23 között vannak. |
ScheduleMinute |
Percek gyűjteménye, amikor a profil érvénybe lép. |
ScheduleTimeZone |
A profil óráinak időzónája. |
Az automatikus skálázási beállítások alkalmazása
A szabályok és profilok finingelése után alkalmazza az automatikus skálázási beállításokat a használatával New-AzAutoscaleSetting
. A meglévő automatikus skálázási beállítás frissítéséhez használja a 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"
Értesítések hozzáadása az automatikus skálázási beállításokhoz
Adjon hozzá értesítéseket az értékesítési beállításhoz, hogy webhookot aktiváljon, vagy e-mail-értesítéseket küldjön skálázási esemény esetén.
A webhook-értesítésekről további információt a New-AzAutoscaleWebhookNotificationObject
Állítson be egy webhookot a következő parancsmaggal;
$webhook1=New-AzAutoscaleWebhookNotificationObject -Property @{} -ServiceUri "http://contoso.com/webhook1"
Konfigurálja az értesítést a webhook használatával, és állítsa be az e-mailes értesítéseket a New-AzAutoscaleNotificationObject
parancsmag használatával:
$notification1=New-AzAutoscaleNotificationObject `
-EmailCustomEmail "jason@contoso.com" `
-EmailSendToSubscriptionAdministrator $true `
-EmailSendToSubscriptionCoAdministrator $true `
-Webhook $webhook1
Az automatikus skálázási beállítások frissítése az értesítés alkalmazásához
Update-AzAutoscaleSetting `
-Name vmss-autoscalesetting1 `
-ResourceGroupName $resourceGroupName `
-Profile $defaultProfile `
-Notification $notification1 `
-TargetResourceUri "/subscriptions/$subscriptionId/resourceGroups/$resourceGroupName/providers/Microsoft.Compute/virtualMachineScaleSets/$vmssName"
Az automatikus skálázási beállítások áttekintése
Az automatikus skálázási beállítások áttekintéséhez töltse be a beállításokat egy változóba Get-AzAutoscaleSetting
, majd adja ki a változót az alábbiak szerint:
$autoscaleSetting=Get-AzAutoscaleSetting -ResourceGroupName $resourceGroupName -Name vmss-autoscalesetting1
$autoscaleSetting | Select-Object -Property *
Az automatikus skálázási előzmények lekérése a használatával AzAutoscaleHistory
Get-AzAutoscaleHistory -ResourceId /subscriptions/<subscriptionId/resourceGroups/$resourceGroupName/providers/Microsoft.Compute/virtualMachineScaleSets/$vmssName
Ütemezett és ismétlődő profilok
Ütemezett profil hozzáadása egy speciális eseményhez
Automatikus skálázási profilok beállítása adott eseményekhez eltérő skálázáshoz. Például egy olyan napig, amikor az igények a szokásosnál magasabbak lesznek, hozzon létre egy profilt, amely megnöveli a maximális és minimális példánykorlátokat.
Az alábbi példa ugyanazokat a szabályokat használja, mint a fent definiált alapértelmezett profil, de új példánykorlátokat állít be egy adott dátumra. Különböző szabályokat is konfigurálhat az új profillal való használathoz.
$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"
Ismétlődő ütemezett profil hozzáadása
Az ismétlődő profilok lehetővé teszik a hetente ismétlődő méretezési profilok ütemezését. Skálázhat például egyetlen példányra a hétvégén péntek estétől hétfő reggelig.
Bár az ütemezett profilok kezdő és záró dátummal rendelkeznek, az ismétlődő profilok nem rendelkeznek befejezési idővel. A profil a következő profil kezdési időpontjáig aktív marad. Ezért ismétlődő profil létrehozásakor létre kell hoznia egy ismétlődő alapértelmezett profilt, amely akkor kezdődik, amikor az előző ismétlődő profil befejezését szeretné.
Ha például olyan hétvégi profilt szeretne konfigurálni, amely péntek esténként kezdődik és hétfő reggel ér véget, hozzon létre egy profilt, amely péntek este kezdődik, majd hozzon létre ismétlődő profilt az alapértelmezett, hétfő reggel kezdődő beállításokkal.
A következő szkript létrehoz egy hétvégi profilt és egy további alapértelmezett profilt a hétvégi profil befejezéséhez.
$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"
Az ütemezett profilokkal kapcsolatos további információkért lásd: Automatikus skálázás több profillal
Egyéb automatikus skálázási parancsok
Az automatikus skálázáshoz használható PowerShell-parancsmagok teljes listáját a PowerShell modulböngészőben találja.
Az erőforrások eltávolítása
Az oktatóanyagban létrehozott erőforrások törléséhez törölje a létrehozott erőforráscsoportot. Az alábbi parancsmag törli az erőforráscsoportot és annak összes erőforrását.
Remove-AzResourceGroup -Name $resourceGroupName