Bagikan melalui


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 skala masuk dan skala keluar
  • 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.

Siapkan 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:

  1. Membuat aturan menggunakan New-AzAutoscaleScaleRuleObject
  2. Membuat profil menggunakan New-AzAutoscaleProfileObject
  3. Membuat pengaturan skala otomatis menggunakan New-AzAutoscaleSetting
  4. Memperbarui pengaturan menggunakan Update-AzAutoscaleSetting

Membuat aturan

Buat aturan penyusutan skala dan aturan pembesaran skala lalu kaitkan dengan profil. Aturan dibuat menggunakan New-AzAutoscaleScaleRuleObject.

Skrip PowerShell berikut membuat dua aturan.

  • Perluas 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.

Pengaturan Deskripsi
MetricTriggerMetricName Mengatur metrik pemicu penskalaan 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 skala set itu sendiri. MetricTriggerMetricName harus ada untuk MetricTriggerMetricResourceUri yang ditentukan.
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 Ketika diatur ke true, metrik pemicu dibagi 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 bagi semua metrik.
ScaleActionDirection Tentukan skala masuk atau skala 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.

Buat profil skala otomatis default dan hubungkan aturan

Setelah menentukan aturan skala, buat profil. Profil menentukan batas jumlah instans default, atas, dan bawah, dan waktu aturan terkait dapat diterapkan. Gunakan cmdlet New-AzAutoscaleProfileObject untuk membuat profil autoskala 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.

Pengaturan Deskripsi
CapacityDefault Jumlah instans jika metrik tidak tersedia untuk evaluasi. 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 berdasarkan jumlah inti yang tersedia dalam langganan.
CapacityMinimum Jumlah minimum instans untuk sumber daya.
FixedDateEnd Waktu akhir untuk profil dalam format ISO 8601.
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 sepuluh aturan, yang dipisahkan dengan koma, dapat ditentukan.
RecurrenceFrequency Seberapa sering profil terjadwal berlaku. Nilai ini harus .week
ScheduleDay Kumpulan hari ketika profil diterapkan pada saat menentukan jadwal berulang. Nilai yang mungkin adalah Minggu hingga Sabtu. Untuk informasi selengkapnya tentang jadwal berulang, lihat Menambahkan profil berulang menggunakan CLI
ScheduleHour Jam-jam di mana profil berlaku. Nilai yang didukung adalah 0 hingga 23.
ScheduleMinute Serangkaian menit saat profil mulai berlaku.
ScheduleTimeZone Zona waktu untuk jam operasional profil pengguna.

Menerapkan pengaturan skala otomatis

Setelah membuat aturan dan profil, terapkan pengaturan skala otomatis menggunakan New-AzAutoscaleSetting. Untuk memperbarui 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 penjualan 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 akan tetap aktif sampai 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