Introduktion till autoskalning i Service Fabric-hanterade kluster

Autoskalning ger stor elasticitet och möjliggör tillägg eller minskning av noder på begäran på en sekundär nodtyp. Det här automatiserade och elastiska beteendet minskar hanteringskostnaderna och potentiella affärspåverkan genom att övervaka och optimera antalet noder som underhåller din arbetsbelastning. Du konfigurerar regler för din arbetsbelastning och låter automatisk skalning hantera resten. När dessa definierade tröskelvärden uppfylls vidtar regler för autoskalning åtgärder för att justera kapaciteten för din nodtyp. Autoskalning kan aktiveras, inaktiveras eller konfigureras när som helst. Den här artikeln innehåller ett exempel på distribution, hur du aktiverar eller inaktiverar automatisk skalning och hur du konfigurerar en exempelprincip för autoskalning.

Krav och mått som stöds:

  • Den hanterade Service Fabric-klusterresursen apiVersion ska vara 2022-01-01 eller senare.
  • Kluster-SKU:n måste vara Standard.
  • Kan bara konfigureras på en sekundär nodtyp i klustret.
  • När du har aktiverat autoskalning för en nodtyp konfigurerar du vmInstanceCount egenskapen till -1 när du distribuerar om resursen.
  • Endast publicerade Azure Monitor-mått stöds.

Kommentar

Om du använder Windows OS-avbildning med Hyper-V-rollen aktiverad, dvs. den virtuella datorn kommer att konfigureras för kapslad virtualisering, det tillgängliga minnesmåttet är inte tillgängligt eftersom drivrutinen för dynamiskt minne i den virtuella datorn kommer att vara i ett stoppat tillstånd.

Ett vanligt scenario där autoskalning är användbart är när belastningen på en viss tjänst varierar över tid. Till exempel kan en tjänst som en gateway skalas baserat på mängden resurser som krävs för att hantera inkommande begäranden. Nu ska vi ta en titt på ett exempel på hur skalningsreglerna kan se ut och vi använder dem senare i artikeln:

  • Om alla instanser av min gateway använder mer än 70 % i genomsnitt skalar du ut gatewaytjänsten genom att lägga till ytterligare två instanser. Gör detta var 30:e minut, men har aldrig fler än tjugo instanser totalt.
  • Om alla instanser av min gateway använder mindre än 40 % kärnor i genomsnitt skalar du in tjänsten genom att ta bort en instans. Gör detta var 30:e minut, men har aldrig färre än tre instanser totalt.

Exempel på autoskalningsdistribution

Det här exemplet går igenom:

  • Skapa ett Standard SKU Service Fabric-hanterat kluster med två nodtyper NT1 och NT2 som standard.
  • Lägga till autoskalningsregler till den sekundära nodtypen, NT2.

Kommentar

Autoskalning av nodtypen görs baserat på det hanterade klustrets VMSS CPU-värdmått. VMSS-resursen löses automatiskt i mallen.

Följande tar dig steg för steg genom konfigurationen av ett kluster med autoskalning konfigurerat.

  1. Skapa resursgrupp i en region

    Login-AzAccount
    Select-AzSubscription -SubscriptionId $subscriptionid
    New-AzResourceGroup -Name $myresourcegroup -Location $location
    
  2. Skapa klusterresurs

    Ladda ned det här exempelexemplet för Standard SKU Service Fabric-hanterat kluster Kör det här kommandot för att distribuera klusterresursen:

    $parameters = @{ 
    clusterName = $clusterName
    adminPassword = $VmAdminPassword
    clientCertificateThumbprint = $clientCertificateThumbprint
    } 
    New-AzResourceGroupDeployment -Name "deploy_cluster" -ResourceGroupName $resourceGroupName -TemplateFile .\azuredeploy.json -TemplateParameterObject $parameters -Verbose
    
  3. Konfigurera och aktivera autoskalningsregler för en sekundär nodtyp

    Ladda ned exempelmallen för autoskalning av hanterat kluster som du ska använda för att konfigurera automatisk skalning med följande kommandon:

    $parameters = @{ 
    clusterName = $clusterName
    }
    New-AzResourceGroupDeployment -Name "deploy_autoscale" -ResourceGroupName $resourceGroupName -TemplateFile .\sfmc-deploy-autoscale.json -TemplateParameterObject $parameters -Verbose 
    

Kommentar

När distributionen är klar ska framtida klusterresursdistributioner ange vmInstanceCount egenskapen till -1 på sekundära nodtyper som har regler för autoskalning aktiverade. Detta säkerställer att klusterdistributioner inte är i konflikt med autoskalning.

Aktivera eller inaktivera automatisk skalning på en sekundär nodtyp

Nodtyper som distribueras av Service Fabric-hanterade kluster aktiverar inte automatisk skalning som standard. Autoskalning kan aktiveras eller inaktiveras när som helst, per nodtyp, som är konfigurerade och tillgängliga.

Om du vill aktivera den enabled här funktionen konfigurerar du egenskapen under typen Microsoft.Insights/autoscaleSettings i en ARM-mall enligt nedan:

    "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,
            ...

Om du vill inaktivera autoskalning anger du värdet till false

Ta bort regler för automatisk skalning

Om du vill ta bort alla inställningar för autoskalningsprinciper för en nodtyp kan du köra följande PowerShell-kommando.

Remove-AzResource -ResourceId "/subscriptions/$subscriptionId/resourceGroups/$resourceGroup/providers/microsoft.insights/autoscalesettings/$name" -Force

Ange principer för automatisk skalning

Ett Service Fabric-hanterat kluster konfigurerar inte några principer för automatisk skalning som standard. Principer för automatisk skalning måste konfigureras för att skalningsåtgärder ska kunna utföras på de underliggande resurserna.

Följande exempel anger en princip för nodeType2Name att vara minst 3 noder, men tillåter skalning av upp till 20 noder. Det utlöser uppskalning när den genomsnittliga CPU-användningen är 70 % under de senaste 30 minuterna med 1 minuts kornighet. Det utlöser nedskalning när den genomsnittliga CPU-användningen är under 40 % under de senaste 30 minuterna med 1 minuts kornighet.

    "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"
                                }
                            }
                            ]
                    }
                    ]
                }
            }
        
    ]                           

Du kan ladda ned den här ARM-mallen för att aktivera autoskalning som innehåller exemplet ovan

Visa konfigurerade autoskalningsdefinitioner för din hanterade klusterresurs

Du kan visa konfigurerade autoskalningsinställningar med hjälp av Azure Resource Explorer.

  1. Gå till Azure Resource Explorer

  2. Navigera till subscriptions ->SubscriptionName ->resource group ->microsoft.insights ->autoscalesettings –> Namn på autoskalningsprincip: t.ex. . sfmc01-NT2

    Du ser något som liknar detta i navigeringsträdet:

    Trädvy för Azure Resource Explorer-exempel

  3. Till höger kan du visa den fullständiga definitionen av den här autoskalningsinställningen.

    I det här exemplet konfigureras autoskalning med en CPU%-baserad utskalnings- och inskalningsregel.

    Autoskalningsinformation för Azure Resource Explorer-exempelnodtyp

Felsökning

Några saker som du bör tänka på:

  • Granska autoskalningshändelser som utlöses mot sekundära nodtyper för hanterade kluster

    1. Gå till klusteraktivitetsloggen
    2. Granska aktivitetsloggen för att skala upp/ned automatiskt slutförd åtgärd
  • Hur många virtuella datorer har konfigurerats för nodtypen och sker arbetsbelastningen på alla eller bara några?

  • Är tröskelvärdena för in- och utskalning tillräckligt olika?

    Anta att du anger en regel för att skala ut när den genomsnittliga processorn är större än 50 % över fem minuter och att skala in när den genomsnittliga processorn är mindre än 50 %. Den här inställningen skulle orsaka ett "flaxande" problem när CPU-användningen ligger nära tröskelvärdet, med skalningsåtgärder som ständigt ökar och minskar storleken på uppsättningen. På grund av den här inställningen försöker autoskalningstjänsten förhindra "flaxning", vilket kan visas som inte skalning. Se därför till att tröskelvärdena för utskalning och inskalning är tillräckligt olika för att tillåta utrymme mellan skalning.

  • Kan du skala in eller ut en nodtyp? Justera antalet noder på nodtypsnivå och kontrollera att det har slutförts. Skala en nodtyp i ett hanterat kluster

  • Kontrollera dina Microsoft.ServiceFabric/managedclusters/nodetypes och Microsoft.Insights-resurser i Azure Resource Explorer

    Azure Resource Explorer är ett oumbärligt felsökningsverktyg som visar tillståndet för dina Azure Resource Manager-resurser. Klicka på din prenumeration och titta på den resursgrupp som du felsöker. Under resursprovidern ServiceFabric/managedclusters/clustername letar du efter NodeTypes nodtyper som du har skapat och kontrollerar att provisioningState egenskaperna är Succeeded. Gå sedan till resursprovidern Microsoft.Insights under clustername och kontrollera att reglerna för autoskalning ser rätt ut.

  • Är dina utgivna måttvärden som förväntat? Get-AzMetric Använd PowerShell-modulen för att hämta måttvärden för en resurs och granska

När du har gått igenom de här stegen kan du prova följande resurser om du fortfarande har problem med autoskalning: Logga en supportbegäran. Var beredd på att dela mallen och en vy över dina prestandadata.

Nästa steg