Eine Verfahrensweise, die ich mir bei Wartungen an ESX Clustern zu eigen gemacht habe, ist HA zu deaktivieren. Insbesondere dann, wenn es sich um Wartungen an der Netzinfrastruktur handelt. Warum eigentlich? HA ist inzwischen ein robuster Dienst und die Netzinfrastruktur sollte ohnehin redundant ausgelegt sein. Die Erfahrung zeigte allerdings, dass trotz aller Redundanz, Arbeiten an der Netzinfrastruktur immer wieder zu unerwünschten Failover Aktionen des HA führten. Dabei versucht z.B. ein Host (vergeblich), die laufenden VMs eines anderen zu starten.
Ein Fehler von HA?
Ich hatte schon oft den Verdacht, dass es sich bei dem beobachteten Phänomen um einen Fehler in der HA Implementierung oder um Fehlkonfiguration handeln könnte. Die Ursache für das Verhalten liegt aber meistens nicht beim Cluster und somit nicht bei HA, sondern nachgeschaltet in den LAN Komponenten (physische Switches). Auf Yellow-Bricks beschreibt Duncan Epping einen solchen Fall, bei dem HA korrekt eingestellt, und das Management Network redundant ausgelegt war. Dennoch fand ein Failover statt nachdem ein physischer Switch wieder aktiviert wurde.
Spanning Tree
Das Problem ist, dass nach Reaktivierung der Switch Komponente eine Spanning Tree Protocol (STP) Rekonfgiguration stattfindet, die für 20-50 Sekunden den Datenverkehr auf dem Management Netzwerk blockiert, und damit (zu Recht) einen HA Failover initiiert.
Wie läuft das ab?
Vmkernel hat beispielsweise zwei physische NICs (pNIC) für die Kommunikation mit anderen ESX Hosts. Durch Arbeiten an einem Swich geht einer der beiden pNICs in den Status “link down”. Vmkernel kommuniziert normal über den noch verbleibenden Link, indem die MAC Adresse des vmnic zum anderen pNIC wandert. Nach Reaktivierung der physischen Switch Komponente ist der Port wieder “link up” und vmkernel schaltet erneut um. Aus der Sicht des LAN erscheint die MAC Adresse des vmnic auf einem Switch, dann auf dem anderen und schließlich wieder auf dem ursprünglichen. STP muss von einem Ringschluss ausgehen und triggert daher eine Neuberechnung der STP Tabelle. Das läuft bei STP in vier Phasen:
- blocking
- listening
- learning
- forwarding
Für die Dauer der Rekonfigurierung sind beide vmnics des vmkernel blockiert, und der Host logisch isoliert. Es kommt zum HA Failover.
Port fast
Daher ist es wichtig alle Switchports, die mit ESX Servern verbunden sind, in den STP Modus “port fast” zu stellen. Dieser verhindert eine Blockierung bei der Spanning Tree Berechnung.
VMware KB 1003804 beschreibt die notwendige Vorgehensweise.
Links
- Yellow-Bricks – Testing your infrastructure!
- VMware KB – STP may cause temporary loss of network connectivity…
- Omnisecu.com – Spanning Tree Port States
- Omnisecu.com – Bridge Protocol Data Unit