Reguły DRS wyglądają w interfejsie banalnie — dwa radio buttony i lista maszyn. Semantyka ukryta za tymi przyciskami decyduje, czy awaria hosta oznacza rutynowy failover, czy noc ręcznych vMotionów, a różnica między should i must to miejsce, w którym większość projektów po cichu się psuje.
Placement to nie load balancing
DRS ocenia reguły w dwóch odrębnych momentach: przy initial placement (power-on, restart po failoverze) oraz w okresowym przebiegu równoważenia obciążenia. Reguła łatwa do spełnienia przy placemencie może stać się niespełnialna później — gdy host wchodzi w maintenance mode albo klaster się kurczy. Reguły projektuje się pod klaster zdegradowany, nie zdrowy.
„Should" psuje się głośno, „must" — po cichu
Regułę anti-affinity utworzoną jako preferencyjną (should) DRS może naruszyć, gdy nie istnieje zgodny cel — naruszenie ląduje jako zdarzenie, na które da się założyć alarm, a maszyna działa dalej. Reguła obowiązkowa (must) różni się rodzajem, nie stopniem: jest egzekwowana na poziomie zgodności vCenter, więc wiąże także ręczny vMotion i restarty HA — i obowiązuje nawet przy wyłączonym DRS. Must nie zawodzi; zamiast tego sprawia, że zawodzą inne operacje.
Trzy sposoby, w jakie to gryzie
- Zakleszczenie maintenance mode. N maszyn pod obowiązkową regułą anti-affinity, rozłożonych na N hostach: w chwili, gdy jeden host próbuje wejść w maintenance mode, nie istnieje zgodny cel ewakuacji — a zadanie wisi na podejrzanym procencie, dopóki ktoś nie znajdzie reguły.
- Restarty HA a reguły preferencyjne. To, czy HA respektuje anti-affinity VM–VM podczas failoveru, zależy od wersji i konfiguracji (zob.
das.respectVmVmAntiAffinityRulesi jego domyślną wartość na Twoim buildzie) — weryfikuj na klastrze, który faktycznie utrzymujesz, nie w dokumentacji najnowszego wydania. Założenie bazowe: po failoverze spodziewaj się naruszeń i pozwól, by kolejny przebieg DRS je posprzątał. - Rozrost reguł. Reguły żyją dłużej niż ich autorzy. Interfejs pokazuje je po jednym klastrze; audyt to jeden pipeline:
Get-Cluster PROD | Get-DrsRule |
Select-Object Name, Enabled, Mandatory, Type |
Sort-Object -Property Mandatory -Descending
Tworzenie nowej reguły — preferencyjnej, chyba że compliance mówi inaczej:
New-DrsRule -Cluster PROD -Name 'sql-separate' `
-KeepTogether:$false -VM (Get-VM sql01, sql02)
Zasada kciuka: domyślnie should plus alarm na zdarzenia naruszeń; must rezerwuj dla przypadków, w których zewnętrzne ograniczenie — licencje, compliance, fizyczna topologia — faktycznie zabrania współrezydencji, i każdy taki przypadek dokumentuj obok nazwy reguły.
Lab krok po kroku
W tym miejscu zostanie osadzone nagranie: zakleszczenie maintenance mode i audyt PowerCLI.