Bagikan melalui


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 dan NT2 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.

  1. Membuat grup sumber daya di suatu wilayah

    Login-AzAccount
    Select-AzSubscription -SubscriptionId $subscriptionid
    New-AzResourceGroup -Name $myresourcegroup -Location $location
    
  2. 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
    
  3. 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 -1pada 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.

  1. Buka Explorer sumber daya Azure

  2. 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:

    Tampilan pohon contoh Azure Resource Explorer

  3. 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%.

    Detail skala otomatis jenis node contoh Azure Resource Explorer

Pemecahan Masalah

Beberapa hal yang perlu dipertimbangkan:

  • Meninjau peristiwa skala otomatis yang dipicu menurut tipe node sekunder kluster yang dikelola

    1. Masuk ke log Aktivitas kluster
    2. 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 bawah NodeTypes untuk tipe node yang Anda buat dan periksa properti untuk memvalidasi provisioningStateadalah Succeeded. Lalu, masuk ke penyedia sumber daya Microsoft.Insights di bawah clustername 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.

Langkah berikutnya