Omezování Resource Manageru clusteru Service Fabric
I když jste správně nakonfigurovali Správce prostředků clusteru, může dojít k narušení clusteru. Může se například jednat o souběžné selhání uzlu a domény selhání – co by se stalo, když k tomu došlo během upgradu? Správce prostředků clusteru se vždy snaží opravit všechno, protože prostředky clusteru se snaží změnit uspořádání a opravit cluster. Omezení pomáhají poskytovat backstop, aby cluster mohl použít prostředky ke stabilizaci – uzly se vrátí, síťové oddíly se opraví, opraví se bity.
Pro usnadnění těchto situací zahrnuje Resource Manager clusteru Service Fabric několikomezeních Všechny tyto omezení jsou poměrně velké kladiva. Obecně by neměly být změněny bez pečlivého plánování a testování.
Pokud změníte omezení Resource Manageru clusteru, měli byste je vyladit na očekávané skutečné zatížení. Možná zjistíte, že potřebujete mít nějaké omezení, i když to znamená, že cluster v některých situacích trvá déle. Testování se vyžaduje k určení správných hodnot pro omezení. Omezení musí být dostatečně vysoká, aby cluster mohl reagovat na změny v přiměřeném množství času a dostatečně nízké, aby ve skutečnosti zabránil příliš velké spotřebě prostředků.
Ve většině případů jsme viděli, že zákazníci používají omezení, protože už byli v omezeném prostředí prostředků. Některé příklady by byly omezené šířky pásma sítě pro jednotlivé uzly nebo disky, které nemůžou paralelně vytvářet mnoho stavových replik kvůli omezením propustnosti. Bez omezení by operace mohly tyto prostředky zahltit, což by způsobilo selhání operací nebo zpomalení. V těchto situacích zákazníci použili omezení a věděli, že prodlužují dobu, po kterou by cluster dosáhl stabilního stavu. Zákazníci také pochopili, že při omezování můžou skončit s nižší celkovou spolehlivostí.
Konfigurace omezení
Service Fabric má dva mechanismy pro omezování počtu přesunů replik. Výchozí mechanismus, který existoval před Service Fabric 5.7, představuje omezování jako absolutní povolený počet přesunů. To nefunguje pro clustery všech velikostí. Zejména u velkých clusterů může být výchozí hodnota příliš malá, což výrazně zpomalí vyrovnávání i v případě, že je to nutné, a zároveň nemá žádný vliv na menší clustery. Tento předchozí mechanismus byl nahrazen omezováním založeným na procentech, které se lépe škáluje s dynamickými clustery, ve kterých se počet služeb a uzlů pravidelně mění.
Omezení jsou založená na procentech počtu replik v clusterech. Omezení založená na procentech umožňují vyjádřit pravidlo: "Nepřesouvejte více než 10 % replik v intervalu 10 minut", například.
Nastavení konfigurace pro omezení založené na procentech:
- GlobalMovementThrottleThresholdPercentage – maximální počet přesunů povolených v clusteru kdykoli, vyjádřený jako procento celkového počtu replik v clusteru. Hodnota 0 značí žádný limit. Výchozí hodnota je 0. Pokud je zadané toto nastavení i GlobalMovementThrottleThreshold, použije se konzervativnější limit.
- GlobalMovementThrottleThresholdPercentageForPlacement – maximální povolený počet přesunů během fáze umístění vyjádřený jako procento celkového počtu replik v clusteru. Hodnota 0 značí žádný limit. Výchozí hodnota je 0. Pokud je zadané toto nastavení i GlobalMovementThrottleThresholdForPlacement, použije se konzervativnější limit.
- GlobalMovementThrottleThresholdPercentageForBalancing – maximální povolený počet přesunů během fáze vyrovnávání vyjádřený jako procento celkového počtu replik v clusteru. Hodnota 0 značí žádný limit. Výchozí hodnota je 0. Pokud je zadáno toto nastavení i GlobalMovementThrottleThresholdForBalancing, použije se konzervativnější limit.
Při zadávání procenta omezení byste zadali 5 % jako 0,05. Interval, ve kterém se tato omezení řídí, je GlobalMovementThrottleCountingInterval, který je zadaný v sekundách.
<Section Name="PlacementAndLoadBalancing">
<Parameter Name="GlobalMovementThrottleThresholdPercentage" Value="0" />
<Parameter Name="GlobalMovementThrottleThresholdPercentageForPlacement" Value="0" />
<Parameter Name="GlobalMovementThrottleThresholdPercentageForBalancing" Value="0" />
<Parameter Name="GlobalMovementThrottleCountingInterval" Value="600" />
</Section>
prostřednictvím ClusterConfig.json pro samostatná nasazení nebo Template.json pro clustery hostované v Azure:
"fabricSettings": [
{
"name": "PlacementAndLoadBalancing",
"parameters": [
{
"name": "GlobalMovementThrottleThresholdPercentage",
"value": "0.0"
},
{
"name": "GlobalMovementThrottleThresholdPercentageForPlacement",
"value": "0.0"
},
{
"name": "GlobalMovementThrottleThresholdPercentageForBalancing",
"value": "0.0"
},
{
"name": "GlobalMovementThrottleCountingInterval",
"value": "600"
}
]
}
]
Omezení na základě výchozího počtu
Tyto informace jsou k dispozici v případě, že máte starší clustery nebo si tyto konfigurace stále zachováte v clusterech, které byly od té doby upgradovány. Obecně se doporučuje, aby se nahradily výše uvedenými omezeními založenými na procentech. Vzhledem k tomu, že omezení založená na procentech je ve výchozím nastavení zakázaná, zůstávají tato omezení pro cluster výchozí omezení, dokud nebudou zakázány a nahrazeny omezeními založenými na procentech.
- GlobalMovementThrottleThreshold – toto nastavení řídí celkový počet přesunů v clusteru za nějakou dobu. Doba je zadaná v sekundách jako GlobalMovementThrottleCountingInterval. Výchozí hodnota pro GlobalMovementThrottleThreshold je 1000 a výchozí hodnota pro GlobalMovementThrottleCountingInterval je 600.
- MovementPerPartitionThrottleThreshold – toto nastavení řídí celkový počet přesunů pro libovolný oddíl služby v určitém čase. Doba je zadaná v sekundách jako MovementPerPartitionThrottleCountingInterval. Výchozí hodnota pro MovementPerPartitionThrottleThreshold je 50 a výchozí hodnota pro MovementPerPartitionThrottleCountingInterval je 600.
Konfigurace těchto omezení se řídí stejným způsobem jako omezení založená na procentech.
Další kroky
- Pokud chcete zjistit, jak Resource Manager clusteru spravuje a vyrovnává zatížení v clusteru, přečtěte si článek o vyrovnávání zatížení.
- Správce prostředků clusteru má mnoho možností pro popis clusteru. Další informace o nich najdete v tomto článku popisující cluster Service Fabric.