Mengonfigurasi skala otomatis dengan PowerShell
Skala otomatis memastikan bahwa Anda memiliki jumlah sumber daya yang tepat yang berjalan untuk menangani beban aplikasi Anda yang berfluktuasi. Anda dapat mengonfigurasi skala otomatis menggunakan templat portal Azure, Azure CLI, PowerShell, atau ARM atau Bicep.
Artikel ini memperlihatkan kepada Anda cara mengonfigurasi skala otomatis untuk Virtual Machine Scale Set dengan PowerShell. Konfigurasi menggunakan langkah-langkah berikut:
- Membuat set skala yang dapat Anda skalakan secara otomatis
- Membuat aturan untuk menskalakan masuk dan meluaskan skala
- Membuat profil yang menggunakan aturan Anda
- Menerapkan pengaturan skala otomatis
- Memperbarui pengaturan skala otomatis Anda dengan pemberitahuan
Prasyarat
Untuk mengonfigurasi skala otomatis menggunakan PowerShell, Anda memerlukan akun Azure dengan langganan aktif. Anda dapat membuat akun secara gratis.
Menyiapkan lingkungan Anda
#Set the subscription Id, VMSS name, and resource group name
$subscriptionId = (Get-AzContext).Subscription.Id
$resourceGroupName="rg-powershell-autoscale"
$vmssName="vmss-001"
Membuat Set Skala Komputer Virtual
Buat set skala menggunakan cmdlet berikut. Atur $resourceGroupName
variabel dan $vmssName
agar sesuai dengan lingkungan Anda.
# 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"
Membuat pengaturan skala otomatis
Untuk membuat pengaturan skala otomatis menggunakan PowerShell, ikuti urutan di bawah ini:
- Membuat aturan menggunakan
New-AzAutoscaleScaleRuleObject
- Membuat profil menggunakan
New-AzAutoscaleProfileObject
- Membuat pengaturan skala otomatis menggunakan
New-AzAutoscaleSetting
- Memperbarui pengaturan menggunakan
Update-AzAutoscaleSetting
Membuat aturan
Buat aturan skala masuk dan peluasan skala kemudian kaitkan dengan profil.
Aturan dibuat menggunakan New-AzAutoscaleScaleRuleObject
.
Skrip PowerShell berikut membuat dua aturan.
- Peluasan skala ketika Persentase CPU melebihi 70%
- Menskalakan ketika Persentase CPU kurang dari 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))
Tabel di bawah ini menjelaskan parameter yang digunakan dalam New-AzAutoscaleScaleRuleObject
cmdlet.
Parameter | Deskripsi |
---|---|
MetricTriggerMetricName |
Mengatur metrik pemicu skala otomatis |
MetricTriggerMetricResourceUri |
Menentukan sumber daya tempat MetricTriggerMetricName metrik berada. MetricTriggerMetricResourceUri dapat menjadi sumber daya apa pun dan bukan hanya sumber daya yang sedang diskalakan. Misalnya, Anda dapat menskalakan Virtual Machine Scale Set berdasarkan metrik yang dibuat oleh load balancer, database, atau set skala itu sendiri. MetricTriggerMetricName harus ada untuk yang ditentukan MetricTriggerMetricResourceUri . |
MetricTriggerTimeGrain |
Frekuensi pengambilan sampel metrik yang dipantau aturan. MetricTriggerTimeGrain harus menjadi salah satu nilai yang telah ditentukan sebelumnya untuk metrik yang ditentukan dan harus antara 12 jam dan 1 menit. Misalnya, MetricTriggerTimeGrain = PT1M"* berarti bahwa metrik diambil sampelnya setiap 1 menit dan diagregasi menggunakan metode agregasi yang ditentukan dalam .MetricTriggerStatistic |
MetricTriggerTimeAggregation |
Metode agregasi dalam periode timeGrain. Misalnya, statistik = "Rata-rata" dan timeGrain = "PT1M" berarti bahwa metrik dikumpulkan setiap 1 menit dengan mengambil rata-rata. |
MetricTriggerStatistic |
Metode agregasi yang digunakan untuk mengagregasi metrik sampel. Misalnya, TimeAggregation = "Average" menggabungkan metrik sampel dengan mengambil rata-rata. |
MetricTriggerTimeWindow |
Jumlah waktu mesin skala otomatis melihat kembali untuk mengagregasi metrik. Nilai ini harus lebih besar dari penundaan pengumpulan metrik, yang bervariasi menurut sumber daya. Harus antara 5 menit dan 12 jam. Misalnya, 10 menit berarti bahwa setiap kali penskalaan otomatis berjalan, ia meminta metrik selama 10 menit terakhir. Fitur ini memungkinkan metrik Anda untuk menstabilkan dan menghindari bereaksi terhadap lonjakan sementara. |
MetricTriggerThreshold |
Menentukan nilai metrik yang memicu peristiwa skala. |
MetricTriggerOperator |
Menentukan operasi komparatif logis yang akan digunakan saat mengevaluasi nilai metrik. |
MetricTriggerDividePerInstance |
Saat diatur untuk true membagi metrik pemicu dengan jumlah total instans. Misalnya, Jika jumlah pesan adalah 300 dan ada 5 instans yang berjalan, nilai metrik yang dihitung adalah 60 pesan per instans. Properti ini tidak berlaku untuk semua metrik. |
ScaleActionDirection |
Tentukan penskalan masuk atau keluar. Nilai yang valid adalah Increase dan Decrease . |
ScaleActionType |
Skalakan menurut jumlah instans tertentu, skalakan ke jumlah instans tertentu, atau skalakan berdasarkan persentase jumlah instans saat ini. Nilai yang valid meliputi ChangeCount , ExactCount , dan PercentChangeCount . |
ScaleActionCooldown |
Jumlah waktu minimum untuk menunggu di antara operasi skala. Hal ini untuk memungkinkan metrik menstabilkan dan menghindari flapping. Misalnya, jika ScaleActionCooldown 10 menit dan operasi skala baru saja terjadi, Skala otomatis tidak akan mencoba menskalakan lagi selama 10 menit. |
Membuat profil skala otomatis default dan mengaitkan aturan
Setelah menentukan aturan skala, buat profil. Profil menentukan batas jumlah instans default, atas, dan bawah, dan waktu aturan terkait dapat diterapkan. New-AzAutoscaleProfileObject
Gunakan cmdlet untuk membuat profil skala otomatis baru. Karena ini adalah profil default, profil tersebut tidak memiliki parameter jadwal apa pun. Profil default aktif kadang-kadang tidak ada profil lain yang aktif
$defaultProfile=New-AzAutoscaleProfileObject `
-Name "default" `
-CapacityDefault 1 `
-CapacityMaximum 10 `
-CapacityMinimum 1 `
-Rule $rule1, $rule2
Tabel di bawah ini menjelaskan parameter yang digunakan dalam New-AzAutoscaleProfileObject
cmdlet.
Parameter | Deskripsi |
---|---|
CapacityDefault |
Jumlah instans yang jika metrik tidak tersedia untuk dievaluasi. Default hanya digunakan jika jumlah instans saat ini lebih rendah dari default. |
CapacityMaximum |
Jumlah maksimum instans untuk sumber daya. Jumlah maksimum instans dibatasi lebih lanjut oleh jumlah inti yang tersedia dalam langganan. |
CapacityMinimum |
Jumlah minimum instans untuk sumber daya. |
FixedDateEnd |
Waktu akhir untuk profil dalam format ISO 8601 untuk. |
FixedDateStart |
Waktu mulai untuk profil dalam format ISO 8601. |
Rule |
Kumpulan aturan yang menyediakan pemicu dan parameter untuk tindakan penskalaan saat profil ini aktif. Maksimal 10, aturan yang dipisahkan koma dapat ditentukan. |
RecurrenceFrequency |
Seberapa sering profil terjadwal berlaku. Nilai ini harus .week |
ScheduleDay |
Kumpulan hari yang diterapkan profil saat menentukan jadwal berulang. Nilai yang mungkin adalah Minggu hingga Sabtu. Untuk informasi selengkapnya tentang jadwal berulang, lihat Menambahkan profil berulang menggunakan CLI |
ScheduleHour |
Kumpulan jam yang diterapkan profil. Nilai yang didukung adalah 0 hingga 23. |
ScheduleMinute |
Kumpulan menit di mana profil berlaku. |
ScheduleTimeZone |
Zona waktu untuk jam profil. |
Menerapkan pengaturan skala otomatis
Setelah membuat aturan dan profil, terapkan pengaturan skala otomatis menggunakan New-AzAutoscaleSetting
. Untuk memperbarui penggunaan pengaturan skala otomatis yang ada 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"
Menambahkan pemberitahuan ke pengaturan skala otomatis Anda
Tambahkan pemberitahuan ke pengaturan penjualan Anda untuk memicu webhook atau mengirim pemberitahuan email saat peristiwa skala terjadi.
Untuk informasi selengkapnya tentang pemberitahuan webhook, lihat New-AzAutoscaleWebhookNotificationObject
Atur webhook menggunakan cmdlet berikut;
$webhook1=New-AzAutoscaleWebhookNotificationObject -Property @{} -ServiceUri "http://contoso.com/webhook1"
Konfigurasikan pemberitahuan menggunakan webhook dan siapkan pemberitahuan email menggunakan New-AzAutoscaleNotificationObject
cmdlet:
$notification1=New-AzAutoscaleNotificationObject `
-EmailCustomEmail "jason@contoso.com" `
-EmailSendToSubscriptionAdministrator $true `
-EmailSendToSubscriptionCoAdministrator $true `
-Webhook $webhook1
Memperbarui pengaturan skala otomatis Anda untuk menerapkan pemberitahuan
Update-AzAutoscaleSetting `
-Name vmss-autoscalesetting1 `
-ResourceGroupName $resourceGroupName `
-Profile $defaultProfile `
-Notification $notification1 `
-TargetResourceUri "/subscriptions/$subscriptionId/resourceGroups/$resourceGroupName/providers/Microsoft.Compute/virtualMachineScaleSets/$vmssName"
Meninjau pengaturan skala otomatis Anda
Untuk meninjau pengaturan skala otomatis Anda, muat pengaturan ke dalam variabel menggunakan Get-AzAutoscaleSetting
lalu keluarkan variabel sebagai berikut:
$autoscaleSetting=Get-AzAutoscaleSetting -ResourceGroupName $resourceGroupName -Name vmss-autoscalesetting1
$autoscaleSetting | Select-Object -Property *
Mendapatkan riwayat skala otomatis Anda menggunakan AzAutoscaleHistory
Get-AzAutoscaleHistory -ResourceId /subscriptions/<subscriptionId/resourceGroups/$resourceGroupName/providers/Microsoft.Compute/virtualMachineScaleSets/$vmssName
Profil terjadwal dan berulang
Menambahkan profil terjadwal untuk acara khusus
Siapkan profil skala otomatis untuk menskalakan secara berbeda untuk peristiwa tertentu. Misalnya, untuk hari ketika permintaan akan lebih tinggi dari biasanya, buat profil dengan peningkatan batas instans maksimum dan minimum.
Contoh berikut menggunakan aturan yang sama dengan profil default yang ditentukan di atas, tetapi menetapkan batas instans baru untuk tanggal tertentu. Anda juga dapat mengonfigurasi aturan yang berbeda untuk digunakan dengan profil baru.
$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"
Menambahkan profil terjadwal berulang
Profil berulang memungkinkan Anda menjadwalkan profil penskalaan yang berulang setiap minggu. Misalnya, skalakan ke satu instans pada akhir pekan dari Jumat malam hingga Senin pagi.
Meskipun profil terjadwal memiliki tanggal mulai dan berakhir, profil berulang tidak memiliki waktu akhir. Profil tetap aktif hingga waktu mulai profil berikutnya. Oleh karena itu, saat membuat profil berulang, Anda harus membuat profil default berulang yang dimulai saat Anda ingin profil berulang sebelumnya selesai.
Misalnya, untuk mengonfigurasi profil akhir pekan yang dimulai pada Jumat malam dan berakhir pada Senin pagi, buat profil yang dimulai pada Jumat malam, lalu buat profil berulang dengan pengaturan default Anda yang dimulai pada Senin pagi.
Skrip berikut membuat profil akhir pekan dan profil default tambahan untuk mengakhiri profil akhir pekan.
$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"
Untuk informasi selengkapnya tentang profil terjadwal, lihat Skala otomatis dengan beberapa profil
Perintah skala otomatis lainnya
Untuk daftar lengkap cmdlet PowerShell untuk skala otomatis, lihat Browser Modul PowerShell
Membersihkan sumber daya
Untuk membersihkan sumber daya yang Anda buat dalam tutorial ini, hapus grup sumber daya yang Anda buat. Cmdlet berikut menghapus grup sumber daya dan semua sumber dayanya.
Remove-AzResourceGroup -Name $resourceGroupName