Virtualisierung & Private Cloud

Cluster, HA und Wartung

Nach dem nächtlichen Switch-Tausch sind drei Knoten neu gestartet, ihre VMs liefen anderswo wieder an — und kein Protokoll nennt einen Hardwarefehler. Sind die Knoten abgestürzt, oder haben sie sich selbst zurückgesetzt, weil das Netz 30 Sekunden zu langsam umschaltete?

Lehrtext · 11 Abschnitte · zuletzt geprüft: 2026-09-12

Ein VM-Neustart ist noch keine Dienstverfügbarkeit

Hochverfügbarkeit im Cluster löst genau ein Problem: Eine VM, deren Host ausgefallen ist, läuft danach auf einem anderen Host wieder. Das ist wertvoll und eng begrenzt. Der Cluster startet eine Maschine neu, nicht eine Anwendung. Zwischen beidem liegen Dateisystemprüfung, Dienststart, Abhängigkeiten zu Datenbank und Verzeichnisdienst, Sitzungsverlust und der Umstand, dass Clients die alte Adresse noch im Zwischenspeicher halten.

HochverfügbarkeitDer Dienst kehrt nach einem Ausfall innerhalb einer vereinbarten Zeit zurück. Ein Unterbruch ist Teil der Zusage.

FehlertoleranzDer Dienst läuft über den Ausfall hinweg ohne Unterbruch weiter. Das verlangt eine zweite, synchron mitlaufende Instanz und kostet entsprechend.

Wer beides verwechselt, verspricht der Fachabteilung Fehlertoleranz und liefert einen Neustart. Die Zusage, die ein HA-Cluster tatsächlich einlösen kann, lautet: ungeplanter Neustart der VM auf einem anderen Host, ohne Konsistenzgarantie für die Anwendung. Alles darüber hinaus — sauberes Herunterfahren, transaktionale Konsistenz, Client-Failover — ist ein eigener Vertrag der Anwendung.

LernzielDu kannst benennen, welche Zusage ein HA-Cluster einlöst, welche drei Entscheidungen er dafür getrennt trifft, und woran ein selbst ausgelöstes Fencing erkennbar wird.

Der Cluster trifft drei Entscheidungen, nicht eine

Im Alltag verschmilzt der Satz „der Cluster hat die VM neu gestartet“ zu einem einzigen Vorgang. Tatsächlich sind es drei aufeinander aufbauende Entscheidungen, die unabhängig voneinander scheitern können. Sie auseinanderzuhalten ist der Unterschied zwischen einer Diagnose und einem Ratespiel.

Darf ich überhaupt entscheiden? — QuorumIst der Host tot oder nur unerreichbar? — AusfallerkennungDarf ich die VM anderswo starten? — Fencing

Die erste Frage ist eine Mehrheitsfrage und hat mit dem Workload nichts zu tun. Die zweite ist eine Messfrage und braucht mehr als einen Beobachtungspfad. Die dritte ist eine Sicherheitsfrage: Ohne Beweis, dass die alte Instanz nicht mehr schreibt, ist ein Neustart anderswo gefährlicher als der Ausfall selbst.

Eine vierte Frage stellt der Cluster nie: ob der Dienst danach funktioniert. Die beantwortet nur ein Test gegen die Anwendung.

Quorum ist die Erlaubnis zu entscheiden, nicht die Fähigkeit zu tragen

Quorum ist die Mindestzahl an Stimmen, die eine Clusterpartition braucht, um Zustandsänderungen vornehmen zu dürfen. Proxmox VE vergibt laut Dokumentation je Knoten standardmäßig eine Stimme und wechselt bei Quorumverlust in den Nur-Lese-Modus. pvecm status zeigt die Rechnung offen an:

Expected votes
Summe aller konfigurierten Stimmen, im Beispiel der Dokumentation 4
Total votes
Stimmen der aktuell sichtbaren Partition
Quorum
Schwelle, ab der die Partition entscheiden darf, im Beispiel 3
Quorate
Ja oder Nein — das Ergebnis dieser Rechnung

Daraus folgt die Empfehlung von drei Knoten aufwärts: Bei zwei Knoten verliert nach einem Ausfall auch der überlebende Knoten die Mehrheit. Für diesen Fall sieht Proxmox VE ein QDevice vor — einen externen Stimmgeber auf einem unabhängigen Server. Er gibt seine Stimme laut Dokumentation immer nur einer Partition und verhindert damit, dass beide Seiten sich für die Mehrheit halten. Anders als corosync selbst verbindet sich das QDevice über TCP/IP und unterliegt nicht denselben Latenzanforderungen.

Microsoft löst dieselbe Frage im Failover Cluster über einen Zeugen: Datenträger-, Dateifreigabe- oder Cloud-Zeuge. Die Microsoft-Dokumentation empfiehlt, ab Windows Server 2012 R2 immer einen Zeugen zu konfigurieren; neuere Versionen verwalten dessen Stimme über Dynamic Quorum selbst.

Der häufigste DenkfehlerQuorum sagt, ob der Cluster entscheiden darf. Es sagt nichts darüber, ob die verbliebenen Hosts die zugesagte Last tragen können. Ein Cluster kann vollständig entscheidungsfähig sein und trotzdem nicht genug Kapazität haben, um alle VMs neu zu starten — das ist eine getrennte Rechnung.

Tot oder nur unerreichbar — zwei Messwege statt einem

Reißt die Verbindung im Verwaltungsnetz zu einem Host ab, hat der Cluster eine einzige Beobachtung und drei mögliche Ursachen. Ein einzelner Messweg kann sie nicht trennen. vSphere HA nutzt deshalb einen zweiten: Datastore-Heartbeating.

Ausgefallen
Kein Netz-Heartbeat und kein Datastore-Heartbeat — der Host gilt als tot, seine VMs werden anderswo gestartet
Partitioniert
Kein Netz-Heartbeat zum Primärhost, aber der Datastore-Heartbeat läuft — der Host lebt in einer abgetrennten Gruppe
Isoliert
Kein Netz-Heartbeat, Datastore-Heartbeat läuft, und der Host erreicht seine Isolationsadressen nicht

Die Dokumentation ist an dieser Stelle wörtlich: Hört ein untergeordneter Host auf, über den Datastore zu heartbeaten, gilt er als ausgefallen und seine VMs werden woanders neu gestartet. Läuft der Datastore-Heartbeat dagegen weiter, weiß der Primärhost, dass er nicht neu starten darf.

vCenter Server wählt dafür standardmäßig zwei Heartbeat-Datastores je Host aus, höchstens fünf; die Zahl steuert die erweiterte Option das.heartbeatdsperhost. Im Wurzelverzeichnis jedes solchen Datastores legt vSphere HA ein Verzeichnis .vSphere-HA an.

IsolationsadresseDie Adresse, die ein Host anpingt, um zu prüfen, ob er selbst vom Netz getrennt ist. Voreingestellt ist das Standardgateway der Verwaltungsschnittstelle; über das.isolationaddress lassen sich weitere Adressen ergänzen.

Ein Host erklärt sich laut Dokumentation erst dann für isoliert, wenn beides zutrifft: Er erreicht die Agenten der anderen Hosts nicht und er kann seine Isolationsadressen nicht anpingen. Wer als Isolationsadresse das Standardgateway belässt, macht genau dieses Gateway zum Schiedsrichter über den Zustand seiner VMs.

Kurzcheck

Der Primärhost verliert den Netz-Heartbeat zu Host 7. Der Datastore-Heartbeat von Host 7 läuft weiter. Was darf der Primärhost tun?

  • Die VMs von Host 7 auf anderen Hosts neu starten, weil der Verwaltungspfad tot ist
  • Host 7 als partitioniert oder isoliert behandeln und gerade nicht neu starten
  • Warten, bis auch der Datastore-Heartbeat endet, und erst dann entscheiden

Treffer. Richtig. Der weiterlaufende Datastore-Heartbeat unterscheidet den lebenden, aber unerreichbaren Host vom toten. Was mit den VMs geschieht, entscheidet dann die auf Host 7 konfigurierte Isolationsreaktion — nicht der Primärhost.

Die Isolationsreaktion ist eine Entscheidung über Datenverlust

Stellt ein Host fest, dass er isoliert ist, wendet sein HA-Agent die konfigurierte Isolationsreaktion auf die laufenden VMs an. Die Wahl ist keine Geschmacksfrage, sondern eine Abwägung zwischen zwei Schäden.

Deaktiviert
Die VMs laufen weiter. Kein Datenverlust auf der isolierten Seite, aber der Dienst bleibt unerreichbar, solange die Isolation dauert
Ausschalten und neu starten
Hartes Abschalten ohne Beteiligung des Gasts. Schnell, und genau deshalb mit dem Risiko unvollständig geschriebener Daten
Herunterfahren und neu starten
Geordnetes Herunterfahren über die Gastwerkzeuge. Schonender, braucht aber Zeit und eine funktionierende Gastintegration

Dazu kommt eine Sonderregel, die leicht übersehen wird: Für eine VM, deren Neustartpriorität auf deaktiviert steht, findet laut Dokumentation gar keine Isolationsreaktion statt. Wer Prioritäten nur als Reihenfolge liest, übersieht, dass derselbe Wert zugleich ein Schalter für die Isolationsreaktion ist.

Welche Reaktion angemessen ist, hängt am Speicherpfad. Verliert der isolierte Host mit dem Netz auch seinen Storage, ändert Weiterlaufen nichts mehr zum Guten. Bleibt der Storage erreichbar — der typische Fall bei getrennten Netzen für Verwaltung und Storage —, ist Weiterlaufen oft die schonendere Wahl, weil der Cluster die VMs ohnehin nicht neu startet, solange der Datastore-Heartbeat läuft.

Fencing beweist, dass die alte Instanz nicht mehr schreibt

Fencing ist die Voraussetzung dafür, dass ein Dienst überhaupt woanders anlaufen darf. Die Proxmox-Dokumentation begründet das an einem konkreten Szenario: Fällt jedes Netz außer dem Storagenetz aus, ist die VM aus dem Produktivnetz nicht mehr erreichbar — sie läuft aber weiter und schreibt weiter auf den gemeinsamen Storage. Startet man sie nun auf einem anderen Knoten, schreiben zwei Instanzen auf dieselben Daten.

Wörtlich in der DokumentationSolche Bedingungen können alle VM-Daten zerstören und die gesamte VM unbrauchbar machen. Fencing ist deshalb keine zusätzliche Härtung, sondern die Bedingung für Recovery überhaupt.

Klassisch löst man das über externe Geräte, die dem Knoten Strom oder Netz abschneiden. Proxmox VE geht einen Weg ohne Zusatzhardware: Selbst-Fencing über einen Watchdog-Timer. Verfügbar ist wahlweise ein Hardware-Watchdog oder der Software-Watchdog softdog des Linux-Kernels.

Der Mechanismus ist streng: Stellt ein Knoten fest, dass er nicht mehr im Quorum ist, wartet der lokale Resource Manager auf ein neues Quorum. Solange keines zustande kommt, kann der Knoten den Watchdog nicht zurücksetzen. Hat er aktive Dienste, löst das nach Ablauf des Watchdogs einen Neustart aus — laut Dokumentation nach 60 Sekunden. Der Knoten setzt sich also selbst zurück, obwohl seine VMs gesund sind.

Eine Feinheit hebt die Dokumentation eigens hervor: Hat ein Knoten einen aktiven Cluster Resource Manager, aber einen untätigen lokalen Resource Manager, führt Quorumverlust nicht zum Selbst-Reset. Grund ist, dass das Cluster-Dateisystem bei Quorumverlust ohnehin nur noch lesbar ist. Ist 15 Minuten lang kein Dienst konfiguriert, schließt der Cluster Resource Manager den Watchdog vollständig.

Finger wegDie Dokumentation warnt ausdrücklich davor, pve-ha-crm, pve-ha-lrm oder watchdog-mux zu beenden. Diese Prozesse verwalten den Watchdog — sie zu töten kann einen sofortigen Neustart oder Reset des Knotens auslösen.

Der Watchdog macht das Netzdesign zur HA-Frage

Hier entsteht der Befund, der in der Praxis am häufigsten überrascht. Wenn ein Knoten sich nach 60 Sekunden ohne stabiles Quorum selbst zurücksetzt, dann ist jede Umschaltzeit im Clusternetz, die länger als 60 Sekunden dauert, eine Ausfallursache. Die Proxmox-Dokumentation rechnet das für LACP vor:

  • Standardmäßig werden LACPDUs nur alle 30 Sekunden gesendet.
  • Drei ausbleibende LACPDUs in Folge gelten als Ausfall — daraus folgt eine Umschaltzeit von 90 Sekunden.
  • Knoten mit HA-Ressourcen fencen sich aber bereits nach rund 60 Sekunden.
  • Die Empfehlung lautet deshalb, bond-lacp-rate fast auf Knoten und Switch zu setzen — das drückt die Umschaltzeit auf 3 Sekunden.

Ein vollkommen normal konfigurierter LACP-Bond reicht also aus, um bei einem Leitungsfehler Knoten zu verlieren, die selbst völlig gesund sind. Der Fehler steckt nicht im Cluster, sondern in einer Voreinstellung des Netzes.

balance-rr, balance-xor, balance-tlb, balance-alb
Können asymmetrische Erreichbarkeit erzeugen und damit unerwartetes Fencing auslösen
802.3ad (LACP)
Kann sich von Asymmetrie erholen, ist mit der Standardrate aber zu langsam — bond-lacp-rate fast setzen
active-backup
Erzeugt keine Asymmetrie, schaltet aber unter Umständen nicht auf die Ersatzleitung um
Der schlimmste Fall steht in der DokumentationBei asymmetrischer Erreichbarkeit können sich auch Knoten fencen, deren Bond völlig fehlerfrei arbeitet — im schlimmsten Fall fenct sich der gesamte Cluster selbst.

Der Preis der empfohlenen Wahl gehört dazu: bond-lacp-rate fast verlangt eine passende Einstellung auf der Switchseite und erzeugt mehr Kontrollverkehr. Wer nur eine Seite umstellt, bittet die Gegenseite lediglich um schnellere LACPDUs und sollte das Ergebnis messen, statt es anzunehmen.

Neustartversuche sind gedeckelt — und der Zähler ist tückisch

Ein HA-Dienst wird nicht endlos neu gestartet. Zwei Grenzen steuern das Verhalten je Ressource, beide stehen laut Dokumentation standardmäßig auf 1:

max_restartWie oft der Dienst auf dem aktuellen Knoten neu gestartet wird, bevor ein anderer Knoten in Frage kommt.

max_relocateWie oft der Dienst auf einen anderen Knoten verschoben wird. Ein Verschieben findet erst statt, nachdem max_restart auf dem aktuellen Knoten überschritten wurde.

Die Falle steckt im Zurücksetzen: Der Verschiebezähler fällt laut Dokumentation erst dann auf null, wenn der Dienst mindestens einmal erfolgreich gestartet wurde. Wird ein Dienst wieder und wieder gestartet, ohne dass die Ursache behoben ist, wiederholt sich also nur die Neustartregel — der Cluster arbeitet sich nicht schrittweise durch die Knoten.

Endet die Kette erfolglos, landet der Dienst im Zustand error und ist damit stillgelegt. Das ist bewusst so: Ein Dienst, der auf jedem Knoten scheitert, hat ein Problem, das kein weiterer Neustart löst. Aus error führt nur ein Eingriff von Hand heraus.

Für die Diagnose lohnt der Blick auf die Zustandsfolge. Ein Dienst auf einem ausgefallenen Knoten geht zuerst nach fence und wartet dort, bis der Knoten nachweislich abgeschaltet ist. Erst danach folgt recovery, wo der Manager anhand der online und quorierten Knoten einen neuen Zielknoten sucht. Wer eine VM in fence hängen sieht, hat kein Platzierungsproblem, sondern ein Fencing-Problem.

Geplante Wartung läuft über einen anderen Pfad als ein Ausfall

Ein Ausfall wird erkannt; Wartung wird angekündigt. Dafür gibt es den Wartungsmodus. Er markiert den Knoten als für den HA-Betrieb nicht verfügbar und lässt alle verwalteten Dienste auf andere Knoten wandern. Der ursprüngliche Knoten wird dabei im Managerzustand vermerkt, sodass die Dienste nach dem Ende der Wartung automatisch zurückkehren.

Gesetzt wird der Modus über die Kommandozeile, und zwar von jedem Knoten aus — der Befehl wird als Managerkommando eingereiht:

  • ha-manager crm-command node-maintenance enable NODENAME aktiviert den Wartungsmodus.
  • ha-manager crm-command node-maintenance disable NODENAME hebt ihn wieder auf.
Zwei dokumentierte StolpersteineErstens meldet der lokale Resource Manager maintenance mode, sobald er das Kommando aufgenommen hat — nicht erst, wenn alle Dienste verschoben sind. Verlässliches Signal für den Abschluss ist die Protokollzeile watchdog closed (disabled) oder schlicht die Prüfung, ob noch HA-Dienste auf dem Knoten liegen. Zweitens wird der Wartungsmodus bei einem Neustart des Knotens nicht automatisch entfernt; er bleibt, bis ihn jemand von Hand aufhebt.

Wichtig für das Sicherheitsverständnis: Der Selbst-Fencing-Watchdog bleibt während des Verschiebens aktiv. Der Wartungsmodus schaltet die Schutzfunktion nicht ab, er ändert nur die Platzierung.

Für Arbeiten am Clusternetz selbst — corosync umkonfigurieren, Switches tauschen — reicht das nicht. Solche Eingriffe erzeugen genau den Quorumverlust, den HA als Knotenausfall deutet. Dafür existiert ein eigener Mechanismus, der die Watchdogs clusterweit freigibt. Sein Preis steht in derselben Dokumentation: Währenddessen schützt HA die Dienste nicht, Ausfälle werden nicht automatisch behoben. Das Fenster gehört deshalb so kurz wie möglich gehalten.

Herunterfahren und Neustarten sind im HA-Cluster nicht dasselbe

Der letzte und praktischste Stolperstein: Wie ein Knoten beendet wird, entscheidet über das Schicksal seiner VMs. Proxmox VE steuert das über ha: shutdown_policy in datacenter.cfg. Voreingestellt ist laut Dokumentation Conditional — aus Gründen der Abwärtskompatibilität, mit dem ausdrücklichen Hinweis, dass manche Anwender Migrate für das erwartungsgemäßere Verhalten halten.

Conditional beim Herunterfahren
Der lokale Resource Manager stoppt alle verwalteten Dienste; andere Knoten übernehmen sie anschließend — ein Kaltstart, keine Livemigration
Conditional beim Neustart
Die Dienste werden eingefroren und bleiben auf dem Knoten; nach dem Neustart laufen sie dort wieder an
Migrate
Der Knoten markiert sich als nicht verfügbar und verschiebt alle Dienste, bevor er herunterfährt
Failover
Alle Dienste werden gestoppt, aber anderswo wiederhergestellt, wenn der Knoten nicht bald zurückkehrt
Freeze
Alle Dienste werden gestoppt und eingefroren und erst wiederhergestellt, wenn der Knoten zurück ist

Der Unterschied zwischen den ersten beiden Zeilen ist die eigentliche Lehre: Derselbe Knoten, zwei Befehle, zwei völlig verschiedene Ergebnisse. Die Dokumentation nennt auch den Grund für das Stoppen beim Herunterfahren — moderne Hosts tragen so viel Arbeitsspeicher, dass eine Livemigration aller VMs unverhältnismäßig lange dauerte. Wer migrieren will, muss das vorher von Hand anstoßen.

Zwei Punkte gehören zur Vollständigkeit. Bei der Richtlinie Migrate bleibt der Watchdog während der Migration aktiv: Verliert der Knoten dabei das Quorum, wird er gefenct und die Dienste werden wiederhergestellt. Und lokal gebundene Dienste — Hardware-Passthrough, strikte Knotenregeln — lassen sich nicht verschieben; sind alle zulässigen Ziele weg, hängt das Herunterfahren, bis jemand eingreift.

Arbeitsbeispiel: Nach dem Switch-Wartungsfenster fehlen drei Knoten

Ein gesunder Cluster verliert Knoten, die niemand angefasst hat

Szenario

Ein Fünf-Knoten-Proxmox-Cluster trägt HA-Dienste. Das Netzteam tauscht nachts einen Switch-Stack. Am Morgen sind drei Knoten neu gestartet, ihre VMs liefen auf anderen Knoten wieder an, und die Protokolle zeigen keinen Hardwarefehler. Der Bond ist ein LACP-Bond mit Standardeinstellungen; corosync läuft darüber mit.

Anforderungen

  • Die VMs sind wieder online, die Ursache ist aber unbekannt — ohne sie wiederholt sich der Vorfall beim nächsten Wartungsfenster.
  • Es muss unterschieden werden, ob die Knoten abgestürzt sind oder sich selbst zurückgesetzt haben.
  • Vor dem nächsten Netzeingriff muss das Ergebnis belegbar anders ausfallen.

Schritte

  1. Zeitachse bilden: Wann wurde am Switch gearbeitet, wann meldet corosync Quorumverlust, wann folgt der Neustart der Knoten? Liegen zwischen Quorumverlust und Neustart rund 60 Sekunden, ist das die Signatur des Watchdogs, nicht die eines Absturzes.
  2. Gegenprobe im Protokoll: Ein Selbst-Reset hinterlässt keinen sauberen Herunterfahrpfad. Es fehlt die geordnete Beendigung der Dienste, die ein regulärer Neustart zeigen würde.
  3. Umschaltzeit rechnen statt schätzen: Standard-LACP sendet LACPDUs alle 30 Sekunden, drei ausbleibende gelten als Ausfall — 90 Sekunden Umschaltzeit gegen 60 Sekunden Watchdog. Die Lücke erklärt den Vorfall vollständig.
  4. Korrektur planen: bond-lacp-rate fast auf Knoten und Switch, danach eine kontrollierte Messung der tatsächlichen Umschaltzeit an einem einzelnen Knoten, nicht am ganzen Cluster.
  5. Für den nächsten Eingriff am Clusternetz zusätzlich das Freigeben der Watchdogs einplanen — mit einem so kurz wie möglich gehaltenen Fenster, weil HA in dieser Zeit nicht schützt.

Merksatz: Die Knoten waren gesund. Zerstörerisch war die Kombination aus einer Netz-Voreinstellung und einer Cluster-Zeitgrenze, die niemand gegeneinander gerechnet hatte.

Das Muster ist übertragbar: Wo eine Schutzfunktion an eine Frist gebunden ist, wird jede Umschaltzeit in den darunterliegenden Schichten zum Teil des HA-Entwurfs. Die Frage lautet nicht, ob der Bond redundant ist, sondern ob er schneller umschaltet, als der Watchdog zuschlägt.

Jetzt anwenden

Diesen Stoff gibt es als Modul mit bewerteten Entscheidungs-Checks — dieselbe Einführung, danach die Übungen.

Zum Modul →
Quellen & Aktualität5 Primärquellen · zuletzt geprüft:
  1. 01pve.proxmox.com/pve-docs/chapter-ha-manager.html
  2. 02pve.proxmox.com/pve-docs/chapter-pvecm.html
  3. 03techdocs.broadcom.com/us/en/vmware-cis/vsphere…re-heartbeating.html
  4. 04techdocs.broadcom.com/us/en/vmware-cis/vsphere…-to-host-issues.html
  5. 05learn.microsoft.com/en-us/windows-server/failo…eploy-quorum-witness