Ú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ů aNT2
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.
Vytvoření skupiny prostředků v oblasti
Login-AzAccount Select-AzSubscription -SubscriptionId $subscriptionid New-AzResourceGroup -Name $myresourcegroup -Location $location
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
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.
Přejděte do Azure Resource Exploreru.
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:
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.
Ř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ů
- Přejděte do protokolu aktivit clusteru.
- 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ů vyhledejteNodeTypes
typy uzlů, které jste vytvořili, a zkontrolujte, jestliprovisioningState
jsouSucceeded
vlastnosti . Pak přejděte k poskytovateli prostředků Microsoft.Insights v částiclustername
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
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro