weglarz.it_

Reguły anti-affinity w vSphere DRS: should, must i co się psuje pomiędzy

Dominik Węglarz vmware ~5 min

Read in English →

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

  1. 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.
  2. Restarty HA a reguły preferencyjne. To, czy HA respektuje anti-affinity VM–VM podczas failoveru, zależy od wersji i konfiguracji (zob. das.respectVmVmAntiAffinityRules i 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ł.
  3. 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.

youtube-nocookie.com
Dominik Węglarz

Dominik WęglarzVMware Certified Instructor; trener EC-Council i CompTIA. Szkolenia i usługi wdrożeniowe realizowane w ramach Sensibles. Kontakt →