Pengenalan Autoscaling di kluster terkelola Service Fabric
Autoscaling memberikan elastisitas yang tinggi dan memungkinkan penambahan atau pengurangan node berdasarkan permintaan pada jenis node sekunder. Perilaku otomatis dan elastis ini mengurangi overhead manajemen dan potensi dampak bisnis dengan memantau dan mengoptimalkan jumlah node yang melayani beban kerja Anda. Anda mengonfigurasi aturan untuk beban kerja Anda dan membiarkan pengukuran otomatis menangani sisanya. Saat ambang yang ditentukan terpenuhi, aturan skala otomatis akan bertindak untuk menyesuaikan kapasitas tipe node Anda. Autoscaling dapat diaktifkan, dinonaktifkan, atau dikonfigurasi kapan saja. Artikel ini memberikan contoh penyebaran, cara mengaktifkan atau menonaktifkan autoscaling, dan cara mengonfigurasi kebijakan skala otomatis contoh.
Persyaratan dan metrik yang didukung:
- ApiVersion sumber daya kluster yang dikelola Service Fabric harus 2022-01-01 atau versi yang lebih baru.
- SKU kluster harus bersifat Standar.
- Hanya dapat dikonfigurasi pada tipe node sekunder di kluster Anda.
- Setelah mengaktifkan skala otomatis untuk tipe node, konfigurasikan properti
vmInstanceCount
ke-1
saat memindahkan sumber daya. - Hanya mendukung metrik yang diterbitkan Azure Monitor.
Catatan
Jika menggunakan gambar OS Windows dengan peran Hyper-V diaktifkan, yaitu mesin virtual akan dikonfigurasi untuk virtualisasi berlapis, Metrik Memori yang tersedia tidak akan tersedia, karena driver memori dinamis dalam mesin virtual akan berada dalam keadaan berhenti.
Skenario umum di mana penskalaan otomatis berguna adalah ketika beban pada layanan tertentu berbeda-beda dari waktu ke waktu. Misalnya, layanan seperti gateway dapat menskalakan berdasarkan jumlah sumber daya yang diperlukan untuk menangani permintaan masuk. Mari kita lihat contoh bagaimana aturan penskalaan itu dan kami akan menggunakannya nanti di artikel ini:
- Jika semua instans gateway saya menggunakan rata-rata lebih dari 70%, maka skala layanan gateway akan ditingkatkan dengan menambahkan dua instans lagi. Lakukan ini setiap 30 menit, tetapi tidak akan pernah memiliki lebih dari dua puluh instans total.
- Jika semua instans gateway saya rata-rata menggunakan kurang dari 40%, maka layanan akan diturunkan dengan menghapus satu instans. Lakukan ini setiap 30 menit, tetapi tidak akan kurang dari tiga instans secara total.
Contoh penerapan skala otomatis
Contoh ini akan memandu untuk:
- Membuat kluster terkelola Service Fabric SKU Standar dengan dua tipe node,
NT1
danNT2
secara default. - Menambahkan aturan skala otomatis ke tipe node sekunder,
NT2
.
Catatan
Skala otomatis tipe node dilakukan berdasarkan metrik host CPU VMSS kluster yang dikelola. Sumber daya VMSS diselesaikan secara otomatis dalam template.
Yang berikut ini akan menuntun Anda langkah demi langkah dalam menyiapkan kluster dengan konfigurasi skala otomatis.
Membuat grup sumber daya di suatu wilayah
Login-AzAccount Select-AzSubscription -SubscriptionId $subscriptionid New-AzResourceGroup -Name $myresourcegroup -Location $location
Membuat sumber daya kluster
Unduh sampel ini Sampel kluster terkelola Service Fabric SKU Standar Jalankan perintah ini untuk menerapkan sumber daya kluster:
$parameters = @{ clusterName = $clusterName adminPassword = $VmAdminPassword clientCertificateThumbprint = $clientCertificateThumbprint } New-AzResourceGroupDeployment -Name "deploy_cluster" -ResourceGroupName $resourceGroupName -TemplateFile .\azuredeploy.json -TemplateParameterObject $parameters -Verbose
Mengonfigurasi dan mengaktifkan aturan penskalaan otomatis pada tipe node sekunder
Unduh templat sampel skala otomatis kluster terkelola yang akan Anda gunakan untuk mengonfigurasi pengubahan ukuran otomatis dengan perintah berikut:
$parameters = @{ clusterName = $clusterName } New-AzResourceGroupDeployment -Name "deploy_autoscale" -ResourceGroupName $resourceGroupName -TemplateFile .\sfmc-deploy-autoscale.json -TemplateParameterObject $parameters -Verbose
Catatan
Setelah penyebaran ini selesai, penerapan sumber daya kluster di masa depan harus mengatur properti vmInstanceCount
ke -1
pada jenis node sekunder dengan aturan skala otomatis yang diaktifkan. Hal ini untuk memastikan penerapan kluster tidak bertabrakan dengan penskalaan otomatis.
Mengaktifkan atau menonaktifkan penskalaan otomatis pada tipe node sekunder
Tipe node yang diterapi oleh kluster terkelola Service Fabric tidak mengaktifkan penskalaan otomatis secara default. Autoscaling dapat diaktifkan atau dinonaktifkan kapan saja, per jenis node, yang dikonfigurasi dan tersedia.
Untuk mengaktifkan fitur ini, konfigurasikan properti enabled
di bawah tipe Microsoft.Insights/autoscaleSettings
dalam Templat ARM seperti yang ditunjukkan di bawah ini:
"resources": [
{
"type": "Microsoft.Insights/autoscaleSettings",
"apiVersion": "2015-04-01",
"name": "[concat(parameters('clusterName'), '-', parameters('nodeType2Name'))]",
"location": "[resourceGroup().location]",
"properties": {
"name": "[concat(parameters('clusterName'), '-', parameters('nodeType2Name'))]",
"targetResourceUri": "[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/', resourceGroup().name, '/providers/Microsoft.ServiceFabric/managedclusters/', parameters('clusterName'), '/nodetypes/', parameters('nodeType2Name'))]",
"enabled": true,
...
Untuk menonaktifkan autoscaling, atur nilainya ke false
Menghapus aturan autoscaling
Untuk menghapus pengaturan kebijakan autoscaling untuk satu tipe node, Anda dapat menjalankan perintah PowerShell berikut.
Remove-AzResource -ResourceId "/subscriptions/$subscriptionId/resourceGroups/$resourceGroup/providers/microsoft.insights/autoscalesettings/$name" -Force
Menetapkan kebijakan untuk autoscaling
Kluster terkelola Service Fabric tidak mengonfigurasi kebijakan autoscalingapa pun secara default. Kebijakan autoscaling harus dikonfigurasi agar tindakan penskalaan tepat pada sumber daya yang mendasarinya.
Contoh berikut akan menetapkan kebijakan untuk nodeType2Name
menjadi setidaknya 3 node, tetapi memungkinkan penskalaan hingga 20 node. Pengaturan ini akan memicu peningkatan ketika penggunaan CPU rata-rata adalah 70% selama 30 menit terakhir dengan granularitas 1 menit. Dan akan memicu penurunan setelah penggunaan CPU rata-rata di bawah 40% selama 30 menit terakhir dengan granularitas 1 menit.
"resources": [
{
"type": "Microsoft.Insights/autoscaleSettings",
"apiVersion": "2015-04-01",
"name": "[concat(parameters('clusterName'), '-', parameters('nodeType2Name'))]",
"location": "[resourceGroup().location]",
"properties": {
"name": "[concat(parameters('clusterName'), '-', parameters('nodeType2Name'))]",
"targetResourceUri": "[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/', resourceGroup().name, '/providers/Microsoft.ServiceFabric/managedclusters/', parameters('clusterName'), '/nodetypes/', parameters('nodeType2Name'))]",
"enabled": "[parameters('enableAutoScale')]",
"profiles": [
{
"name": "Autoscale by percentage based on CPU usage",
"capacity": {
"minimum": "3",
"maximum": "20",
"default": "3"
},
"rules": [
{
"metricTrigger": {
"metricName": "Percentage CPU",
"metricNamespace": "",
"metricResourceUri": "[concat('/subscriptions/',subscription().subscriptionId,'/resourceGroups/SFC_', reference(resourceId('Microsoft.ServiceFabric/managedClusters', parameters('clusterName')), '2022-01-01').clusterId,'/providers/Microsoft.Compute/virtualMachineScaleSets/',parameters('nodeType2Name'))]",
"timeGrain": "PT1M",
"statistic": "Average",
"timeWindow": "PT30M",
"timeAggregation": "Average",
"operator": "GreaterThan",
"threshold": 70
},
"scaleAction": {
"direction": "Increase",
"type": "ChangeCount",
"value": "5",
"cooldown": "PT5M"
}
},
{
"metricTrigger": {
"metricName": "Percentage CPU",
"metricNamespace": "",
"metricResourceUri": "[concat('/subscriptions/',subscription().subscriptionId,'/resourceGroups/SFC_', reference(resourceId('Microsoft.ServiceFabric/managedClusters', parameters('clusterName')), '2022-01-01').clusterId,'/providers/Microsoft.Compute/virtualMachineScaleSets/',parameters('nodeType2Name'))]",
"timeGrain": "PT1M",
"statistic": "Average",
"timeWindow": "PT30M",
"timeAggregation": "Average",
"operator": "LessThan",
"threshold": 40
},
"scaleAction": {
"direction": "Decrease",
"type": "ChangeCount",
"value": "1",
"cooldown": "PT5M"
}
}
]
}
]
}
}
]
Anda dapat mengunduh Template ARM ini untuk mengaktifkan skala otomatis yang berisi contoh di atas
Menampilkan definisi skala otomatis yang dikonfigurasi dari sumber daya kluster terkelola Anda
Anda dapat melihat pengaturan autoscaling yang dikonfigurasi dengan menggunakan Azure Resource Explorer.
Buka
subscriptions
->SubscriptionName
->resource group
->microsoft.insights
->autoscalesettings
-> Nama kebijakan skala otomatis: mis.sfmc01-NT2
.Anda akan melihat sesuatu yang mirip dengan ini di pohon navigasi:
Di sisi kanan, Anda dapat melihat definisi lengkap dari pengaturan skala otomatis ini.
Dalam contoh ini, skala otomatis dikonfigurasi dengan aturan penambahan dan pengurangan berbasis CPU%.
Pemecahan Masalah
Beberapa hal yang perlu dipertimbangkan:
Meninjau peristiwa skala otomatis yang dipicu menurut tipe node sekunder kluster yang dikelola
- Masuk ke log Aktivitas kluster
- Tinjau log aktivitas untuk operasi penambahan/pengurangan skala yang telah dilakukan
Berapa banyak VM yang dikonfigurasi untuk tipe node dan apakah beban kerja terbagi di semua VM atau hanya beberapa saja?
Apakah ambang batas perkecil atau perbesar skala Anda cukup berbeda?
Misalkan Anda menetapkan aturan untuk menskalakan ketika CPU rata-rata lebih besar dari 50% selama lima menit, dan untuk menskalakan ketika CPU rata-rata kurang dari 50%. Pengaturan ini akan menyebabkan masalah "flapping" ketika penggunaan CPU mendekati ambang batas, dengan tindakan skala terus meningkat dan mengurangi ukuran set. Oleh sebab pengaturan ini, layanan skala otomatis mencoba mencegah "flapping", yang dapat bermanifestasi sebagai tidak menskalakan. Oleh karena itu, pastikan ambang batas perbesar atau perkecil skala Anda cukup berbeda untuk memungkinkan beberapa ruang di antara penskalaan.
Bisakah Anda menambah atau mengurangi satu tipe node? Sesuaikan jumlah node berdasar tipe node dan pastikan berjalan dengan lancar. Cara menskalakan tipe node pada kluster terkelola
Periksa Microsoft.ServiceFabric/managedclusters/nodetypes Anda, dan Microsoft. sumber daya Insights di Azure Resource Explorer
Azure Resource Explorer adalah alat pemecahan masalah yang sangat diperlukan yang memperlihatkan status sumber daya Azure Resource Manager Anda. Klik langganan Anda dan lihat Grup Sumber Daya yang sedang Anda coba pecahkan masalahnya. Di bawah penyedia sumber daya
ServiceFabric/managedclusters/clustername
, cari di bawahNodeTypes
untuk tipe node yang Anda buat dan periksa properti untuk memvalidasiprovisioningState
adalahSucceeded
. Lalu, masuk ke penyedia sumber daya Microsoft.Insights di bawahclustername
lalu periksa apakah aturan skala otomatis sudah benar.Apakah nilai metrik yang dikeluarkan seperti yang diharapkan? Gunakan modul PowerShell
Get-AzMetric
untuk mendapatkan nilai metrik sumber daya dan perhatikan
Setelah melalui langkah-langkah ini, jika masih mengalami masalah skala otomatis, Anda dapat mencoba sumber daya berikut: Masukan permintaan dukungan. Bersiaplah untuk berbagi templat dan tampilan data performa Anda.