Sdílet prostřednictvím


Úvod do automatického škálování ve spravovaných clusterech Service Fabric

Automatické škálování poskytuje velkou elasticitu a umožňuje přidávání nebo snižování počtu uzlů na vyžádání na sekundárním typu uzlu. Toto automatizované a elastické chování snižuje režijní náklady na správu a potenciální dopad na firmu díky monitorování a optimalizaci počtu uzlů obsluhujících vaše úlohy. Nakonfigurujete pravidla pro vaši úlohu a necháte automatické škálování, aby se o zbytek postará. Při splnění těchto definovaných prahových hodnot pravidla automatického škálování přijmou opatření k úpravě kapacity vašeho typu uzlu. Automatické škálování je možné kdykoli povolit, zakázat nebo nakonfigurovat. Tento článek obsahuje příklad nasazení, postup povolení nebo zakázání automatického škálování a konfiguraci ukázkových zásad automatického škálování.

Požadavky a podporované metriky:

  • Hodnota ApiVersion prostředku spravovaného clusteru Service Fabric by měla být 2022-01-01 nebo novější.
  • Skladová položka clusteru musí být Standard.
  • V clusteru se dá nakonfigurovat jenom na sekundárním typu uzlu.
  • Po povolení automatického škálování pro typ uzlu nakonfigurujte vmInstanceCount vlastnost na -1 při opětovném nasazení prostředku.
  • Podporují se pouze publikované metriky služby Azure Monitor .

Poznámka

Pokud používáte image operačního systému Windows s povolenou rolí Hyper-V, tj. Virtuální počítač se nakonfiguruje pro vnořenou virtualizaci, metrika Dostupná paměť nebude k dispozici, protože ovladač dynamické paměti ve virtuálním počítači bude v zastaveném stavu.

Běžným scénářem, kdy je automatické škálování užitečné, je situace, kdy se zatížení konkrétní služby v průběhu času mění. Například služba, jako je brána, se může škálovat na základě množství prostředků potřebných ke zpracování příchozích požadavků. Pojďme se podívat na příklad toho, jak by tato pravidla škálování mohla vypadat a použijeme je později v tomto článku:

  • Pokud všechny instance brány využívají v průměru více než 70 %, škálujte službu brány přidáním dalších dvou instancí. Tento postup proveďte každých 30 minut, ale nikdy nepoužívejte více než dvacet instancí celkem.
  • Pokud všechny instance brány využívají v průměru méně než 40 % jader, vertikálně navyšte kapacitu služby odebráním jedné instance. Proveďte to každých 30 minut, ale nikdy nemáte méně než tři instance celkem.

Příklad nasazení automatického škálování

Tento příklad vás provede:

  • Vytvoření spravovaného clusteru Service Fabric úrovně Standard se dvěma typy NT1 uzlů a NT2 ve výchozím nastavení
  • Přidání pravidel automatického škálování do sekundárního typu uzlu . NT2

Poznámka

Automatické škálování typu uzlu se provádí na základě metrik hostitele procesoru VMSS spravovaného clusteru. V šabloně se automaticky vyřeší prostředek škálovací sady virtuálních počítačů.

Následující postup vás krok za krokem provede nastavením clusteru s nakonfigurovaným automatickým škálováním.

  1. Vytvoření skupiny prostředků v oblasti

    Login-AzAccount
    Select-AzSubscription -SubscriptionId $subscriptionid
    New-AzResourceGroup -Name $myresourcegroup -Location $location
    
  2. Vytvoření prostředku clusteru

    Stáhněte si tuto ukázkovou skladovou položku Standard v ukázce spravovaného clusteru Service Fabric Spuštěním tohoto příkazu nasaďte prostředek clusteru:

    $parameters = @{ 
    clusterName = $clusterName
    adminPassword = $VmAdminPassword
    clientCertificateThumbprint = $clientCertificateThumbprint
    } 
    New-AzResourceGroupDeployment -Name "deploy_cluster" -ResourceGroupName $resourceGroupName -TemplateFile .\azuredeploy.json -TemplateParameterObject $parameters -Verbose
    
  3. Konfigurace a povolení pravidel automatického škálování na sekundárním typu uzlu

    Stáhněte si ukázkovou šablonu automatického škálování spravovaného clusteru , kterou použijete ke konfiguraci automatického škálování pomocí následujících příkazů:

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

Poznámka

Po dokončení tohoto nasazení by budoucí nasazení prostředků clusteru mělo u sekundárních typů uzlů s povolenými pravidly automatického škálování nastavit vmInstanceCount vlastnost na -1 . Tím se zajistí, že nasazení clusteru nebudou v konfliktu s automatickým škálováním.

Povolení nebo zakázání automatického škálování na sekundárním typu uzlu

Typy uzlů nasazené spravovaným clusterem Service Fabric ve výchozím nastavení automatické škálování neumožňují. Automatické škálování je možné kdykoli povolit nebo zakázat pro jednotlivé typy uzlů, které jsou nakonfigurované a dostupné.

Pokud chcete tuto funkci povolit, nakonfigurujte enabled vlastnost pod typem Microsoft.Insights/autoscaleSettings v šabloně ARM, jak je znázorněno níže:

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

Pokud chcete zakázat automatické škálování, nastavte hodnotu na false

Odstranění pravidel automatického škálování

Pokud chcete odstranit jakékoli nastavení zásad automatického škálování pro typ uzlu, můžete spustit následující příkaz PowerShellu.

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

Nastavení zásad pro automatické škálování

Spravovaný cluster Service Fabric ve výchozím nastavení nenakonfiguruje žádné zásady automatického škálování . Zásady automatického škálování musí být nakonfigurované pro všechny akce škálování, které se provádějí u podkladových prostředků.

Následující příklad nastaví zásadu nodeType2Name tak, aby byla alespoň 3 uzly, ale umožňovala vertikální navýšení kapacity na 20 uzlů. Vertikální navýšení kapacity se aktivuje, když průměrné využití procesoru za posledních 30 minut dosáhne 70 % s intervaly po 1 minutě. Vertikální snížení kapacity se aktivuje, jakmile průměrné využití procesoru za posledních 30 minut podá 40 % s 1minutovou členitostí.

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

Pokud chcete povolit automatické škálování , které obsahuje výše uvedený příklad, můžete si stáhnout tuto šablonu ARM.

Zobrazení nakonfigurovaných definic automatického škálování prostředku spravovaného clusteru

Nakonfigurovaná nastavení automatického škálování můžete zobrazit pomocí Azure Resource Exploreru.

  1. Přejděte do Azure Resource Exploreru.

  2. Přejděte na subscriptions ->SubscriptionName ->resource group ->microsoft.insights -autoscalesettings> -> Název zásady automatického škálování: například . sfmc01-NT2

    V navigačním stromu uvidíte něco podobného:

    Ukázkové stromové zobrazení Azure Resource Exploreru

  3. Na pravé straně můžete zobrazit úplnou definici tohoto nastavení automatického škálování.

    V tomto příkladu se automatické škálování konfiguruje s pravidlem škálování na základě využití a snížení kapacity na základě procesoru.

    Ukázkové podrobnosti o automatickém škálování typu uzlu v Azure Resource Exploreru

Řešení potíží

Tady je pár věcí, které je potřeba zvážit:

  • Kontrola událostí automatického škálování, které se aktivují u sekundárních typů sekundárních uzlů spravovaných clusterů

    1. Přejděte do protokolu aktivit clusteru.
    2. Kontrola dokončené operace automatického škálování vertikálního navýšení/snížení kapacity v protokolu aktivit
  • Kolik virtuálních počítačů je nakonfigurovaných pro daný typ uzlu a jestli k zatížení dochází na všech z nich, nebo jen na některých?

  • Liší se vaše prahová hodnota horizontálního snížení a snížení kapacity dostatečně?

    Předpokládejme, že jste nastavili pravidlo pro horizontální navýšení kapacity, když je průměrný procesor větší než 50 % během pěti minut, a pro horizontální snížení kapacity, když průměrný procesor klesne pod 50 %. Toto nastavení by způsobilo problém s "flappingem", když se využití procesoru blíží prahové hodnotě a akce škálování se neustále zvětšují a zmenšují velikost sady. Kvůli tomuto nastavení se služba automatického škálování snaží zabránit "flappingu", které se může projevit jako neškálování. Proto se ujistěte, že prahové hodnoty horizontálního navýšení a snížení kapacity jsou dostatečně odlišné, aby mezi škálováním byly nějaké místo.

  • Můžete škálovat nebo snížit kapacitu typu uzlu? Upravte počet uzlů na úrovni typu uzlu a ujistěte se, že se úspěšně dokončí. Škálování typu uzlu ve spravovaném clusteru

  • V Azure Resource Exploreru zkontrolujte prostředky Microsoft.ServiceFabric/managedclusters/nodetypes a Microsoft.Insights.

    Azure Resource Explorer je nepostradatelný nástroj pro řešení potíží, který ukazuje stav prostředků Azure Resource Manager. Klikněte na své předplatné a podívejte se na skupinu prostředků, u které řešíte potíže. V části ServiceFabric/managedclusters/clustername poskytovatel prostředků vyhledejte NodeTypes typy uzlů, které jste vytvořili, a zkontrolujte, jestli provisioningState jsou Succeededvlastnosti . Pak přejděte k poskytovateli prostředků Microsoft.Insights v části clustername a zkontrolujte, že pravidla automatického škálování vypadají správně.

  • Jsou hodnoty metrik vygenerované podle očekávání? Get-AzMetric Použití modulu PowerShellu k získání hodnot metrik prostředku a kontrole

Pokud máte po provedení těchto kroků stále problémy s automatickým škálováním, můžete zkusit následující zdroje informací: Zahodte žádost o podporu. Připravte se na sdílení šablony a zobrazení údajů o výkonu.

Další kroky