Ú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ání nebo snížení počtu uzlů na vyžádání na sekundární typ uzlu. Toto automatizované a elastické chování snižuje režii správy a potenciální obchodní dopad monitorováním a optimalizací počtu uzlů obsluhovaných úloh. Nakonfigurujete pravidla pro úlohu a necháte automatické škálování zpracovat zbytek. Když jsou tyto definované prahové hodnoty splněné, pravidla automatického škálování provádějí akci, která upraví kapacitu typu uzlu. Automatické škálování je možné kdykoli povolit, zakázat nebo nakonfigurovat. Tento článek obsahuje příklad nasazení, 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:
- Verze prostředku spravovaného clusteru Service Fabric by měla být verze 2022-01-01 nebo novější.
- Skladová položka clusteru musí být Standard.
- V clusteru je možné nakonfigurovat pouze typ sekundárního uzlu.
- Po povolení automatického škálování pro typ uzlu nakonfigurujte
vmInstanceCount
vlastnost při-1
opětovném nasazení prostředku. - Podporují se jenom 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č bude nakonfigurovaný pro vnořenou virtualizaci, metrika dostupné paměti nebude k dispozici, protože ovladač dynamické paměti v rámci virtuálního počítače bude v zastaveném stavu.
Běžným scénářem, kdy je automatické škálování užitečné, je, když se zatížení konkrétní služby v průběhu času liší. 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ů. Podívejme se na příklad toho, jak by tato pravidla škálování mohla vypadat, a později je použijeme v článku:
- Pokud všechny instance brány v průměru využívají více než 70 %, můžete službu brány škálovat přidáním dvou dalších instancí. Udělejte to každých 30 minut, ale nikdy nemáte celkem více než dvacet instancí.
- Pokud všechny instance brány v průměru využívají méně než 40 % jader, škálujte službu odebráním jedné instance. Udělejte to každých 30 minut, ale nikdy nemáte celkem méně než tři instance.
Příklad nasazení automatického škálování
Tento příklad vám ukáže:
- 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. Prostředek VMSS se v šabloně automaticky vyřeší.
Následující postup vás provede podrobným 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 tento ukázkový SKU Service Fabric spravovaný cluster Service Fabric. Spusťte tento příkaz pro nasazení prostředku 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ěla nastavit vmInstanceCount
vlastnost na -1
typy sekundárních uzlů, které mají povolená pravidla automatického škálování. 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í neumožňují automatické škálování. Automatické škálování je možné kdykoli povolit nebo zakázat podle typu uzlu, 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 automatické škálování zakázat, nastavte hodnotu na false
Odstranění pravidel automatického škálování
Pokud chcete odstranit 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í nekonfiguruje žádné zásady pro automatické škálování . Zásady automatického škálování musí být nakonfigurované pro všechny akce škálování, ke kterým dojde u podkladových prostředků.
Následující příklad nastaví zásadu, nodeType2Name
aby byla alespoň 3 uzly, ale umožňuje vertikální navýšení kapacity až 20 uzlů. Vertikální navýšení kapacity se aktivuje, když průměrné využití procesoru je 70 % za posledních 30 minut s 1minutovou členitostí. Jakmile průměrné využití procesoru za posledních 30 minut s přesností na 1 minutu zvýší kapacitu, aktivuje se vertikální snížení kapacity.
"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"
}
}
]
}
]
}
}
]
Tuto šablonu ARM si můžete stáhnout, abyste povolili automatické škálování , které obsahuje výše uvedený příklad.
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řejít 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ř. .sfmc01-NT2
V navigačním stromu se zobrazí něco podobného:
Na pravé straně můžete zobrazit úplnou definici tohoto nastavení automatického škálování.
V tomto příkladu je automatické škálování nakonfigurované pomocí pravidla horizontálního navýšení kapacity na základě procesoru a horizontálního navýšení kapacity.
Řešení problému
Pár věcí k uvážení:
Kontrola událostí automatického škálování aktivovaných u sekundárních typů spravovaných clusterů
- Přejděte do protokolu aktivit clusteru.
- Kontrola protokolu aktivit pro dokončenou operaci vertikálního navýšení nebo snížení kapacity automatického škálování
Kolik virtuálních počítačů je nakonfigurovaných pro typ uzlu a dochází k zatížení na všech virtuálních počítačích nebo jen u některých?
Jsou prahové hodnoty horizontálního navýšení a snížení kapacity dostatečně odlišné?
Předpokládejme, že nastavíte pravidlo pro horizontální navýšení kapacity, pokud je průměrné využití procesoru větší než 50 % více než pět minut, a pokud je průměrný procesor menší než 50 %. Toto nastavení by způsobilo problém s "flappingem", když se využití procesoru blíží prahové hodnotě, přičemž 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í pokusí zabránit "flappingu", což se může projevit jako neškálování. Proto se ujistěte, že prahové hodnoty horizontálního navýšení kapacity a horizontálního navýšení kapacity jsou dostatečně odlišné, aby mezi škálováním umožňovaly určité místo.
Můžete škálovat nebo zmenšit typ uzlu? Upravte počet uzlů na úrovni typu uzlu a ujistěte se, že se úspěšně dokončil. Škálování typu uzlu ve spravovaném clusteru
Zkontrolujte prostředky Microsoft.ServiceFabric/managedclusters/nodetypes a Microsoft.Insights v Azure Resource Exploreru.
Azure Resource Explorer je nepostradatelný nástroj pro řešení potíží, který ukazuje stav prostředků Azure Resource Manageru. Klikněte na své předplatné a podívejte se na skupinu prostředků, kterou řešíte. V rámci
ServiceFabric/managedclusters/clustername
poskytovatele prostředků vyhledejteNodeTypes
typy uzlů, které jste vytvořili, a zkontrolujte vlastnosti, které chcete ověřitprovisioningState
Succeeded
. Pak přejděte do poskytovateleclustername
prostředků Microsoft.Insights a zkontrolujte, jestli 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 stále problémy s automatickým škálováním, můžete zkusit následující zdroje informací: Založit žádost o podporu. Připravte se na sdílení šablony a zobrazení dat o výkonu.