Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Cluster s podporou převzetí služeb při selhání může obsahovat mnoho rolí, které se můžou přesouvat mezi uzly a spouštět. V některých případech by určité role (tj. virtuální počítače, skupiny prostředků atd.) neměly běžet na stejném uzlu. Důvodem může být spotřeba prostředků, využití paměti atd. Existují například dva virtuální počítače, které jsou náročné na paměť a procesor a pokud jsou dva virtuální počítače spuštěné na stejném uzlu, jeden nebo oba virtuální počítače můžou mít problémy s výkonem. Tento článek vysvětluje úrovně antiaffinity clusteru a jejich použití.
Co je Spřažení a Anti-Spřažení?
Spřažení je pravidlo, které nastaví vztah mezi dvěma nebo více rolemi (tj. virtuálními počítači, skupinami prostředků atd.), aby byly vzájemně propojeny. AntiAffinity funguje podobně, ale používá se k tomu, aby se zadané role udržely odděleně. Clustery s podporou převzetí služeb při selhání používají pro své role koncept AntiAffinity. Konkrétně platí, že parametr AntiAffinityClassNames definovaný pro role, takže se nespustí na stejném uzlu.
AntiAffinityClassnames
Při pohledu na vlastnosti skupiny je parametr AntiAffinityClassNames prázdný jako výchozí. V následujících příkladech by měly být Group1 a Group2 odděleny, aby neběžely na stejném uzlu. Pokud chcete zobrazit vlastnost, příkaz PowerShellu a výsledek by byly:
Get-ClusterGroup Group1 | fl AntiAffinityClassNames
AntiAffinityClassNames : {}
Get-ClusterGroup Group2 | fl AntiAffinityClassNames
AntiAffinityClassNames : {}
Vzhledem k tomu, že AntiAffinityClassNames nejsou definovány jako výchozí, můžou se tyto role spouštět společně nebo od sebe. Cílem je je zachovat oddělené. Hodnota AntiAffinityClassNames může být cokoli, co chcete, aby byly, jen musí být stejné. Řekněme, že Group1 a Group2 jsou řadiče domény běžící na virtuálních počítačích a nejlépe by fungovaly na různých uzlech. Vzhledem k tomu, že se jedná o řadiče domény, použiji DC pro název třídy. Pokud chcete nastavit hodnotu, příkaz PowerShellu a výsledky by byly:
$AntiAffinity = New-Object System.Collections.Specialized.StringCollection
$AntiAffinity.Add("DC")
(Get-ClusterGroup -Name "Group1").AntiAffinityClassNames = $AntiAffinity
(Get-ClusterGroup -Name "Group2").AntiAffinityClassNames = $AntiAffinity
$AntiAffinity = New-Object System.Collections.Specialized.StringCollection
$AntiAffinity.Add("DC")
(Get-ClusterGroup -Name "Group1").AntiAffinityClassNames = $AntiAffinity
(Get-ClusterGroup -Name "Group2").AntiAffinityClassNames = $AntiAffinity
Get-ClusterGroup "Group1" | fl AntiAffinityClassNames
AntiAffinityClassNames : {DC}
Get-ClusterGroup "Group2" | fl AntiAffinityClassNames
AntiAffinityClassNames : {DC}
Nyní, když jsou nastaveny, clusterový systém s podporou převzetí služeb při selhání se pokusí je udržet oddělené.
Parametr AntiAffinityClassName je blok "soft". To znamená, že se je pokusí zachovat od sebe, ale pokud to nejde, umožní jim to běžet na stejném uzlu. Skupiny například běží v dvouuzlovém clusteru pro převzetí služeb při selhání. Pokud je nutné odstavit jeden uzel kvůli údržbě, to by znamenalo, že obě skupiny by byly spuštěny na stejném uzlu. V tomto případě by to bylo v pořádku. Nemusí to být ideální, ale oba virtuální počítače budou stále běžet v přijatelném rozsahu výkonu.
Potřebuji víc
Jak už bylo zmíněno, AntiAffinityClassNames je měkký blok. Ale co když je potřeba pevný blok? Virtuální počítače nelze spustit na stejném uzlu; jinak dojde k dopadu na výkon a dojde k výpadku některých služeb.
V těchto případech existuje další vlastnost clusteru ClusterEnforcedAntiAffinity. Tato úroveň antiafinitnosti všemi způsoby zabrání tomu, aby jakákoli ze stejných hodnot AntiAffinityClassNames běžela na stejném uzlu.
Pokud chcete zobrazit vlastnost a hodnotu, příkaz PowerShellu (a výsledek) by byl:
Get-Cluster | fl ClusterEnforcedAntiAffinity
ClusterEnforcedAntiAffinity : 0
Hodnota 0 znamená, že je zakázaná a nevynucuje se. Hodnota "1" to umožňuje a představuje pevný blok. Chcete-li povolit tento pevný blok, příkaz (a výsledek) je:
(Get-Cluster).ClusterEnforcedAntiAffinity = 1
ClusterEnforcedAntiAffinity : 1
Pokud jsou obě tyto sady nastavené, zabrání se tomu, aby se skupina spojila do online režimu. Pokud jsou na stejném uzlu, zobrazí se to ve Správci převzetí služeb při selhání clusteru.
V powershellovém výpisu skupin by se zobrazilo toto:
Get-ClusterGroup
Name State
---- -----
Group1 Offline(Anti-Affinity Conflict)
Group2 Online
Další komentáře
Ujistěte se, že používáte správné nastavení AntiAffinity v závislosti na potřebách.
Mějte na paměti, že ve scénáři se dvěma uzly a nastavením "ClusterEnforcedAntiAffinity", pokud je jeden uzel nefunkční, nebudou se spouštět obě skupiny.
Použití upřednostňovaných vlastníků ve skupinách lze kombinovat s AntiAffinity v clusteru se třemi nebo více uzly.
Nastavení AntiAffinityClassNames a ClusterEnforcedAntiAffinity se provede pouze po recyklaci prostředků. To znamená, že je můžete nastavit, ale pokud jsou obě skupiny online na stejném uzlu při nastavení, budou oba nadále online.