Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az automatikus skálázás biztosítja, hogy 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álhat automatikus skálázást egy virtuálisgép-méretezési csoporthoz a PowerShell használatával. A konfigurációk a következő lépéseket használják:
- Automatikusan skálázható méretezési csoport létrehozása
- Belső és külső méretezési szabályok létrehozása
- A szabályokat használó profil létrehozása
- Az automatikus méretezési beállítások alkalmazása
- 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.
Saját környezet beállí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ális gép méretezési csoport létrehozása
Hozzon létre egy méretezési csoportot a következő parancsmagok használatával. Állítsa be a $resourceGroupName és $vmssName változókat, hogy megfeleljenek a környezetének.
# 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 méretezési beállítások létrehozása
Ha automatikus méretezé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 következő használatával:
New-AzAutoscaleProfileObject - Hozza létre az automatikus méretezési beállításokat a
New-AzAutoscaleSettingsegítségével. - A beállítások frissítése a következővel:
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ályokat a New-AzAutoscaleScaleRuleObject segítségével hozzák létre.
A következő PowerShell-szkript két szabályt hoz létre.
- Vertikális felskálázás, ha a százalékos processzorhasználat meghaladja a 70%-ot
- Skálázás, ha a százalékos processzorhasználat kisebb, 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 |
Megadja azt az erőforrást, amelyhez a MetricTriggerMetricName metrika tartozik.
MetricTriggerMetricResourceUri lehet bármilyen erőforrás, és nem csak az, amelyet skálázunk. Skálázhatja például a virtuálisgép-méretezési csoportokat a terheléselosztó, az adatbázis vagy maga a méretezési csoport által létrehozott metrikák alapján. A MetricTriggerMetricName-nak léteznie kell a megadott MetricTriggerMetricResourceUri számára. |
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ött kell lennie. Például a PT1MMetricTriggerTimeGrain = hogy a metrikák mintavételezése 1 percenként történik, és a rendszer a megadott MetricTriggerStatisticösszesítési módszerrel összesíti a metrikákat. |
MetricTriggerTimeAggregation |
Az aggregációs módszer a timeGrain időszakon belül. Például a statisztika = "Average" és timeGrain = "PT1M" azt jelenti, hogy a metrikák 1 percenként vannak összesítve az átlag figyelembevételével. |
MetricTriggerStatistic |
A mintául szolgáló 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 mintául szolgáló metrikákat. |
MetricTriggerTimeWindow |
Az az időtartam, ameddig az automatikus skálázási motor visszatekint a metrikák összesítéséhez. Ennek az értéknek nagyobbnak kell lennie, mint a metrikagyűjtés késlelteté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 a metrikák stabilizálását, és elkerüli az átmeneti csúcsokra való reagálást. |
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 a beállítás true, a triggermetrika elosztódik 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 minden metrika esetében alkalmazható. |
ScaleActionDirection |
Adja meg a horizontális fel- vagy kiskálázást. Az érvényes értékek a következők: Increase és Decrease. |
ScaleActionType |
Skálázás adott példányszám szerint, skálázás egy adott példányszámra vagy az aktuális példányszám százalékos aránya szerint. Az érvényes értékek közé tartozik az ChangeCount, ExactCountés PercentChangeCounta . |
ScaleActionCooldown |
A skálázási művelet után minimálisan eltelendő idő, mielőtt ez a szabály újabb skálázási műveletet indíthat. Az automatikus skálázás minden szabály várakozási idejét külön ellenőrzi. A várakozási idő lehetővé teszi, hogy a metrikák stabilizálódjanak, és elkerüli a gyors oda-vissza váltakozást. |
Alapértelmezett automatikus méretezé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 megadja 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 új automatikus skálázási profilt hozhat létre. 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 |
Azon példányok száma, amelyek akkor jelennek meg, 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 az ISO 8601 formátum szerint. |
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, ha 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 |
Azoknak a napoknak a gyűjteménye, amikor a profil érvénybe lép, az ismétlődő ütemezés beállításakor. A lehetséges értékek vasárnap és szombat között vannak. Az ismétlődő ütemezésekről további információt az Ismétlődő profil hozzáadása parancssori felület használatával című témakörben talál. |
ScheduleHour |
Az órák összessége, amelyeken a profil érvényes lesz. 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 méretezési beállítások alkalmazása
A szabályok és profilok finomítását követően alkalmazza az automatikus skálázási beállításokat a következővel New-AzAutoscaleSetting: . A meglévő automatikus méretezési beállítás frissítése 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 méretezési esemény esetén.
További információ a webhookértesítésekről: New-AzAutoscaleWebhookNotificationObject
Webhook beállítása 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ést 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 méretezé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 méretezési előzmények lekérése AzAutoscaleHistory
Get-AzAutoscaleHistory -ResourceId /subscriptions/<subscriptionId/resourceGroups/$resourceGroupName/providers/Microsoft.Compute/virtualMachineScaleSets/$vmssName
Ütemezett és visszatérő profilok
Adj hozzá ütemezett profilt egy különleges eseményhez.
Állítsa be az automatikus skálázási profilokat, hogy eltérően méretezzen bizonyos események esetén. Például egy olyan napig, amikor az igények a szokásosnál magasabbak lesznek, hozzon létre egy profilt, amely nagyobb maximális és minimális példánykorlátokkal rendelkezik.
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ési és befejezési 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 be szeretné fejezni az előző ismétlődő profilt.
Ha például egy péntek este kezdődő és hétfő reggel végződő hétvégi profilt szeretne konfigurálni, hozzon létre egy péntek este kezdődő profilt, majd hozzon létre ismétlődő profilt a hétfő reggel kezdődő alapértelmezett 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 lezárására.
$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 méretezé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 megtisztí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