Vyrovnávání dílčích metrik
Co je dílčíclustering
K podkluzu dochází v případě, že služby s různými omezeními umístění mají společnou metriku a obě sestavy pro ni načítají. Pokud se zatížení hlášené službami výrazně liší, celkové zatížení uzlů bude mít velkou směrodatnou odchylku a bude vypadat, jako by byl cluster nevyrovnaný, i když má nejlepší možnou rovnováhu.
Vliv subclusteringu na vyrovnávání zatížení
Pokud se zatížení hlášené službami na různých uzlech výrazně liší, může to vypadat, že existuje velká nerovnováha, ve které není žádná. Pokud je nepravdivá nerovnováha způsobená podkluzem větší než skutečná nerovnováha, může zmást algoritmus vyrovnávání Resource Manageru a vytvořit v clusteru neoptimální rovnováhu.
Řekněme například, že máme čtyři služby a všichni hlásí zatížení metriky 1:
- Služba A – má omezení umístění NodeType==Frontend, hlásí zatížení 10
- Služba B – má omezení umístění NodeType==Frontend, hlásí zatížení 10
- Service C – má omezení umístění NodeType==Back-end, hlásí zatížení 100
- Service D – má omezení umístění NodeType==Back-end, hlásí zatížení 100.
- A máme čtyři uzly. Dva z nich mají Typ uzlu nastavený na "Front-end" a ostatní dva jsou "Back-end".
A máme následující umístění:
Cluster může vypadat nevyváženě, máme velké zatížení uzlů 3 a 4, ale toto umístění vytvoří nejlepší možnou rovnováhu v této situaci.
Resource Manager dokáže rozpoznat dílčí situace a téměř ve všech případech může vytvořit optimální rovnováhu pro danou situaci.
V některých výjimečných situacích, kdy Resource Manager nedokáže optimálně vyvážit dílčí metriku, bude stále zjišťovat podkluz a vygeneruje zprávu o stavu, která vám poradí, abyste problém vyřešili.
Typy podclusteringu a způsob jejich zpracování
Podkluzové situace je možné rozdělit do tří různých kategorií. Kategorie konkrétní podkluzové situace určuje, jak se bude zpracovávat Resource Managerem.
První kategorie – ploché podkluzování se skupinami oddělených uzlů
Tato kategorie má nejjednodušší formu podkluzu, kde je možné uzly rozdělit do různých skupin a každá služba se dá umístit pouze do uzlů v jedné z těchto skupin. Každý uzel patří do jedné skupiny a pouze do jedné skupiny. Výše popsaná situace patří do této kategorie jako většina dílčích situací.
V situacích v této kategorii může Resource Manager dosáhnout optimální rovnováhy a není potřeba provádět žádné další zásahy.
Druhá kategorie – podkluz s hierarchickými skupinami uzlů
K této situaci dochází v případě, že skupina uzlů povolená pro jednu službu je podmnožinou skupiny uzlů povolených pro jinou službu. Nejběžnějším příkladem této situace je situace, kdy má některá služba definované omezení umístění a jiná služba nemá žádné omezení umístění a může být umístěna na jakémkoli uzlu.
Příklad:
- Služba A: bez omezení umístění
- Služba B: omezení umístění NodeType==Frontend
- Service C: placement constraint "NodeType==Backend"
Tato konfigurace vytvoří vztah podmnožina nadmnožina mezi skupinami uzlů pro různé služby.
V této situaci existuje šance, že se vytvoří neoptimální zůstatek.
Resource Manager tuto situaci rozpozná a vytvoří zprávu o stavu s doporučením rozdělit službu A do dvou služeb – Service A1, které je možné umístit na front-endové uzly a službu A2, které je možné umístit na back-endové uzly. Tím se vrátíme k první situaci kategorie, která může být optimálně vyvážena.
Třetí kategorie – podkluz s částečným překrýváním mezi sadami uzlů
K této situaci dochází, když dojde k částečnému překrývání mezi sadami uzlů, na které mohou být některé služby umístěny.
Pokud například máme vlastnost uzlu s názvem NodeColor a máme tři uzly:
- Uzel 1: NodeColor=Red
- Uzel 2: NodeColor=Blue
- Uzel 3: NodeColor=Green
A máme dvě služby:
- Služba A: s omezením umístění "Color==Red || Color==Modrá"
- Služba B: s omezením umístění "Color==Modrá || Color==Zelená"
Z tohoto důvodu lze službu A umístit na uzly 1 a 2 a Service B lze umístit na uzly 2 a 3.
V této situaci existuje šance, že se vytvoří neoptimální zůstatek.
Resource Manager tuto situaci rozpozná a vytvoří zprávu o stavu s doporučením rozdělit některé služby.
V této situaci nemůže Resource Manager navrhnout, jak rozdělit služby, protože je možné provést více rozdělení a neexistuje způsob, jak odhadnout, jakým způsobem by bylo optimální rozdělit služby.
Konfigurace podkluzu
Chování Resource Manageru o subclusteringu lze upravit úpravou následujících parametrů konfigurace:
- SubclusteringEnabled – parametr určuje, jestli Bude Resource Manager při vyrovnávání zatížení brát v úvahu dílčíclustering. Pokud je tento parametr vypnutý, Resource Manager ignoruje subclustering a pokusí se dosáhnout optimální rovnováhy na globální úrovni. Výchozí hodnota tohoto parametru je false.
- SubclusteringReportingPolicy – určuje, jak Bude Resource Manager generovat sestavy stavu pro hierarchické a částečné překrývající se podkluzy. Hodnota nula znamená, že jsou vypnuté sestavy stavu týkající se dílčíhoclusteringu, "1" znamená, že se pro neoptimální situace vygenerují zprávy o stavu upozornění a hodnota 2 vytvoří sestavy stavu OK. Výchozí hodnota pro tento parametr je 1.
ClusterManifest.xml:
<Section Name="PlacementAndLoadBalancing">
<Parameter Name="SubclusteringEnabled" Value="true" />
<Parameter Name="SubclusteringReportingPolicy" Value="1" />
</Section>
prostřednictvím ClusterConfig.json pro samostatná nasazení nebo Template.json pro clustery hostované v Azure:
"fabricSettings": [
{
"name": "PlacementAndLoadBalancing",
"parameters": [
{
"name": "SubclusteringEnabled",
"value": "true"
},
{
"name": "SubclusteringReportingPolicy",
"value": "1"
},
]
}
]
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í.
- Informace o tom, jak můžou být vaše služby omezené na umístění pouze na určitých uzlech, najdete v tématu Vlastnosti uzlu a omezení umístění.