Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Een failovercluster kan veel rollen bevatten die tussen knooppunten kunnen schakelen en uitvoeren. Er zijn momenten waarop bepaalde rollen (dat wil gezegd virtuele machines, resourcegroepen, enzovoort) niet op hetzelfde knooppunt mogen worden uitgevoerd. Dit kan komen door resourceverbruik, geheugengebruik, enzovoort. Er zijn bijvoorbeeld twee virtuele machines die geheugen- en CPU-intensief zijn en als de twee virtuele machines op hetzelfde knooppunt worden uitgevoerd, kan een of beide virtuele machines prestatieproblemen hebben. In dit artikel wordt uitgelegd hoe u antiaffiniteitsniveaus van clusters kunt gebruiken.
Wat is Affiniteit en AntiAffiniteit?
Affiniteit is een regel die u instelt die een relatie tot stand brengt tussen twee of meer rollen (bijvoorbeeld virtuele machines, resourcegroepen, enzovoort) om ze bij elkaar te houden. AntiAffinity is hetzelfde, maar wordt gebruikt om de opgegeven rollen gescheiden te houden. Failoverclusters gebruiken AntiAffinity voor de rollen. Meer specifiek de parameter AntiAffinityClassNames die is gedefinieerd voor de rollen, zodat ze niet op hetzelfde knooppunt worden uitgevoerd.
AntiAffinityClassnames
Wanneer u de eigenschappen van een groep bekijkt, is de parameter AntiAffinityClassNames standaard leeg. In de onderstaande voorbeelden moeten Group1 en Group2 niet op hetzelfde knooppunt draaien. Als u de eigenschap wilt weergeven, is de PowerShell-opdracht en het resultaat:
Get-ClusterGroup Group1 | fl AntiAffinityClassNames
AntiAffinityClassNames : {}
Get-ClusterGroup Group2 | fl AntiAffinityClassNames
AntiAffinityClassNames : {}
Omdat AntiAffinityClassNames niet als standaard zijn gedefinieerd, kunnen deze rollen samen of uit elkaar worden uitgevoerd. Het doel is om ze gescheiden te houden. De waarde voor AntiAffinityClassNames kan zijn wat u wilt, ze moeten gewoon hetzelfde zijn. Stel dat Group1 en Group2 domeincontrollers zijn die worden uitgevoerd op virtuele machines en dat ze het beste kunnen worden uitgevoerd op verschillende knooppunten. Omdat dit domeincontrollers zijn, gebruik ik DC voor de klassenaam. Als u de waarde wilt instellen, zijn de PowerShell-opdracht en -resultaten:
$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}
Nu ze zijn geconfigureerd, probeert failoverclustering ze gescheiden te houden.
De parameter AntiAffinityClassName is een 'zacht' blok. Dit betekent dat het ze uit elkaar probeert te houden, maar als dat niet kan, mogen ze alsnog op hetzelfde knooppunt draaien. De groepen draaien bijvoorbeeld op een tweeknooppunten failovercluster. Als één knooppunt tijdelijk uitvallen voor onderhoud, zou het betekenen dat beide groepen werken op hetzelfde knooppunt. In dit geval zou het oké zijn om dit te hebben. Het is misschien niet het meest ideale, maar beide virtuele machines worden nog steeds uitgevoerd binnen acceptabele prestatiebereiken.
Ik heb meer nodig
Zoals vermeld, is AntiAffinityClassNames een zacht blok. Maar wat als er een hard blok nodig is? De virtuele machines kunnen niet worden uitgevoerd op hetzelfde knooppunt; anders treden de gevolgen voor de prestaties op en gaan sommige services mogelijk uit.
Voor deze gevallen is er nog een clustereigenschap van ClusterEnforcedAntiAffinity. Dit antiaffiniteitsniveau voorkomt koste wat het kost dat dezelfde AntiAffinityClassNames-waarden op hetzelfde knooppunt worden uitgevoerd.
Als u de eigenschap en waarde wilt weergeven, zou de PowerShell-opdracht (en het resultaat) het volgende zijn:
Get-Cluster | fl ClusterEnforcedAntiAffinity
ClusterEnforcedAntiAffinity : 0
De waarde '0' betekent dat deze is uitgeschakeld en niet moet worden afgedwongen. De waarde van '1' maakt het mogelijk en is het harde blok. Als u dit harde blok wilt inschakelen, is de opdracht (en het resultaat):
(Get-Cluster).ClusterEnforcedAntiAffinity = 1
ClusterEnforcedAntiAffinity : 1
Wanneer beide zijn ingesteld, wordt voorkomen dat de groep tegelijkertijd online komt. Als ze zich op hetzelfde knooppunt bevinden, ziet u dit in Failoverclusterbeheer.
In een PowerShell-lijst met de groepen ziet u het volgende:
Get-ClusterGroup
Name State
---- -----
Group1 Offline(Anti-Affinity Conflict)
Group2 Online
Aanvullende opmerkingen
Zorg ervoor dat u de juiste AntiAffinity-instelling gebruikt, afhankelijk van de behoeften.
Houd er rekening mee dat in een scenario met twee knooppunten en ClusterEnforcedAntiAffinity, als één knooppunt offline is, beide groepen niet worden uitgevoerd.
Het gebruik van voorkeurseigenaren voor groepen kan worden gecombineerd met AntiAffinity in een cluster met drie of meer knooppunten.
De instellingen AntiAffinityClassNames en ClusterEnforcedAntiAffinity vinden alleen plaats na het recyclen van de resources. Dat wil gezegd, u kunt ze instellen, maar als beide groepen online zijn op hetzelfde knooppunt wanneer ze zijn ingesteld, blijven ze allebei online.