Proxmox HA-Cluster: SplitâBrain verhindern & Quorum richtig konfigurieren
Hook - Warum ein HA-Cluster ohne Quorum wie ein wankender Turm ist Stellen Sie sich vor, Sie bauen ein Haus aus Holz und vergessen, die Balken zu verankern. Jeder Windstoß - ein ausgefallener Node - lässt das Dach knarren, und plötzlich diskutieren die Balken darüber, wer das Dach jetzt halten soll. Genau das passiert in einem ProxmoxâHAâCluster, wenn das Quorum nicht ordentlich konfiguriert ist: SplitâBrain, Datenverlust und nächtliche Schlaflosigkeit. In diesem Artikel zeige ich Ihnen, wie man das Fundament stabilisiert, das Quorum richtig einstellt und SplitâBrain praktisch aus dem Spiel nimmt - mit echten Befehlen, Konfigurationsbeispielen und meiner persönlichen Note nach jedem Abschnitt. Was ist ein Proxmox HA-Cluster und warum ist Quorum das Herzstück? Ein HAâCluster (High Availability) besteht aus mindestens drei physikalischen Nodes, die über Corosync (bzw. das integrierte ClusterâTransportâSystem) miteinander kommunizieren. Das Quorum definiert, ab wann ein Konsens erreicht ist - das ist die Mindestzahl an Stimmen, die nötig ist, damit der Cluster Entscheidungen treffen darf (z. B. VMâMigration, Neustart, Ressourcenfreigabe). Beispiel 1 - MinimalâCluster mit drei Nodes # Auf jedem Node das ProxmoxâPaket installieren (DebianâBasis) sudo apt-get update && sudo apt-get install -y proxmox-ve # Auf dem ersten Node ein Cluster initialisieren sudo pvecm create my-ha-cluster # Auf den beiden anderen Nodes dem Cluster beitreten sudo pvecm add Nachdem die drei Nodes im Cluster sind, kann man den aktuellen QuorumâStatus prüfen: pvecm status Die Ausgabe zeigt u. a. Quorum: 2 (bei drei Nodes = 2 Stimmen). Wenn ein Node ausfällt, bleibt das Quorum erhalten, weil 2 / 3 noch > 50 % sind. Persönliche Einschätzung In der Praxis setze ich selten mehr als drei Nodes, weil der administrative Overhead sonst exponentiell wächst. Drei Nodes geben bereits das notwendige 2âofâ3âQuorum, das ich in produktiven Umgebungen als „Goldstandard“ betrachte. Wer mehr Skalierung braucht, sollte aber von Anfang an ein ungerades × NodeâLayout planen. SplitâBrain: Das Monster im Cluster SplitâBrain entsteht, wenn zwei (oder mehr) Teilgruppen des Clusters unabhängig voneinander denken, sie hätten das Quorum. Das Ergebnis? Doppelter Start derselben VM, inkonsistente Daten und ein wahnsinniges Debuggingâmarathon. Beispiel 2 - Simulierter NetzwerkâPartition # Auf Node 1 das Netzwerk für 30 Sekunden blockieren (simuliert ein Outage) sudo iptables -A INPUT -s -j DROP sudo iptables -A INPUT -s -j DROP sleep 30 sudo iptables -F Während dieser Zeit sehen Node 1 und Node 2 jeweils nur die anderen beiden Nodes. Wenn die Partition zufällig zu 2âvsâ1 führt, kann Node 2 (mit 2 Stimmen) das Quorum behalten, während Node 1 glaubt, er habe das Quorum (1 Stimme, weil es seine eigene Stimme mitzählt). In manchen Fehlkonfigurationen akzeptiert Proxmox das falsche Quorum und startet VMs auf beiden Partitionen - klassisches SplitâBrain. Persönliche Einschätzung Ich habe in meinem Homelab bereits zwei Fälle erlebt, bei denen ein defekter Switch das gleiche Szenario ausgelöst hat. Das größte Learning: NetzwerkâRedundanz ist kein Niceâtoâhave, sondern ein Muss. Ohne redundante Switches und physische Pfade kann jedes einzelne Gerät das gesamte Cluster zum Stillstand bringen. Quorum richtig konfigurieren - Schritt für Schritt 1. CorosyncâKonfiguration anpassen Die Datei /etc/pve/corosync.conf steuert, wie Stimmen gezählt werden. Hier ein MinimalâBeispiel für ein 3âNodeâCluster mit autoâjoin und voteâweightâEinstellungen: totem { version: 2 cluster_name: my-ha-cluster token: 3000 token_retransmits_before_loss_const: 10 join: 60 interface { ringnumber: 0 bindnetaddr: 10.0.0.0 mcastaddr: 239.255.1.1 mcastport: 5405 } } quorum { provider: corosync_votequorum two_node: 0 # 0 = klassisches Quorum, 1 = TwoâNodeâModus wait_for_all: 0 expected_votes: 3 last_man_standing: 0 } nodelist { node { nodeid: 1 quorum_votes: 1 name: node1 address: 10.0.0.1 } node { nodeid: 2 quorum_votes: 1 name: node2 address: 10.0.0.2 } node { nodeid: 3 quorum_votes: 1 name: node3 address: 10.0.0.3 } } Wichtig: expected_votes muss die tatsächliche Anzahl der Nodes widerspiegeln. Wenn Sie später einen Node hinzufügen, passen Sie den Wert an und starten Sie Corosync neu: systemctl restart corosync 2. STONITH (ShootâTheâOtherâNodeâInâTheâHead) aktivieren Fencing ist die sicherste Methode, um SplitâBrain zu verhindern: Wenn ein Node seine Verbindung verliert, wird er automatisch ausgeschaltet, sodass er nicht mehr konkurrieren kann. # Beispiel: IPMIâbasiertes Fencing über iLO (Dell) oder iDRAC (HP) # Installiere das Fence-Agent-Paket apt-get install -y fence-agents # Erstelle eine neue FencingâResource in Proxmox pveum roleadd FencingAdmin -privs "SDN.Modify,Datacenter.Audit" # Konfiguration in /etc/pve/fence.cfg (einfaches Beispiel) node: node1 fence_type: ipmi ipaddr: 192.168.1.100 login: admin passwd: secret port: 623 Danach testen Sie das Fencing: # Simulierter PowerâOff von node2 fence_ipmilan -a 192.168.1.101 -l admin -p secret -o off Wenn das Fencing funktioniert, wird das Quorum sofort neu berechnet und SplitâBrain kann nicht auftreten. Persönliche Einschätzung Ich habe die Erfahrung gemacht, dass kein Cluster ohne funktionierendes Fencing überlebt. Selbst bei einem 3âNodeâSetup reicht es nicht, sich auf das reine CorosyncâQuorum zu verlassen - ein kurzzeitig ausgefallener NetzwerkâPort würde sonst sofort zu SplitâBrain führen. 3. QuorumâMonitoring automatisieren Ein kurzer CronâJob, der den QuorumâStatus prüft und bei Problemen Alarm schlägt, spart Stunden DebuggingâZeit. #!/bin/bash # /usr/local/bin/check_quorum.sh status=$(pvecm status | grep -i quorum | awk '{print $2}') if [[ "$status" -ne 2 ]]; then echo "[WARN] Quorum-Problem! aktuelle Stimmen: $status" | mail -s "Proxmox Quorum Alert" a****@example.com fi Mit chmod +x und crontab -e hinzufügen: */5 * * * * /usr/local/bin/check_quorum.sh Jetzt erhalten Sie alle 5 Minuten ein StatusâMail, falls das Quorum unter das gewünschte Niveau fällt. Fünf praktische Tipps, um SplitâBrain zu vermeiden - OddâNumberâNodeâLayout - immer eine ungerade Anzahl von Nodes einsetzen (3, 5, 7). Das garantiert, dass ein eindeutiges Quorum existiert. - Redundante NetzwerkâLinks - mindestens zwei physische Switches, idealerweise mit LACP (LinkâAggregation). So verhindern Sie, dass ein einzelner Kabeldefekt das gesamte Cluster zerschlägt. - STONITH zwingend aktivieren - ohne Fencing gibt es keine Garantie, dass ein gesperrter Node nicht wieder aktiv wird. - QuorumâMeldungen zentral sammeln - nutzen Sie Prometheus + Alertmanager (oder Zabbix) und visualisieren Sie den pvecm status âWert. - Regelmäßige Tests - führen Sie halbjährlich ein geplantes NetzwerkâFailoverâTest aus, um zu prüfen, ob das Quorum korrekt nachzieht. Persönliche Einschätzung Die meisten splitâbrainâIncidents, die ich in den letzten fünf Jahren beobachtete, waren das Ergebnis von einer vernachlässigten Maßnahme: entweder ein vergessenes STONITHâDevice oder ein SwitchâAusfall ohne BackupâLink. Ein konsequenter CheckâlistâAnsatz reduziert das Risiko auf ein Minimum. Häufige Fehler beim Aufbau eines Proxmox HAâClusters | Fehler | Warum er passiert | Konsequenz | |---|---|---| expected_votes zu niedrig gesetzt | Man vergaß, den Wert nach Hinzufügen eines Nodes zu ändern | Quorum fällt sofort, Cluster bleibt offline | | Kein FencingâDevice definiert | Annahme, dass Corosync ausreicht | SplitâBrain bei NetzwerkâPartition | | Nur ein physischer Switch | Kosteneinsparung überbewertet | SingleâPointâOfâFailure → totaler ClusterâAusfall | Nutzung von two_node: 1 in einem 3âNodeâSetup | Misinterpretation der Dokumentation | QuorumâLogik bricht zusammen | | Keine MonitoringâAlerts | Blindes Vertrauen auf pvecm status im Terminal | LateâStageâFailure, lange Downtime | Fazit - Ihr nächster, konkreter Schritt Der sicherste Weg, ein ProxmoxâHAâCluster zu betreiben, ist, Quorum und Fencing als untrennbare Einheit zu behandeln. Wenn Sie gerade erst ansetzen, gehen Sie wie folgt vor: - Cluster initialisieren ( pvecm create ) und exakt die gewünschte Anzahl an Nodes anlegen. - CorosyncâConfig anpassen - expected_votes = Anzahl der Nodes,two_node = 0. - FencingâDevice einrichten (IPMI, iLO, iDRAC) und testen. - MonitoringâJob ( check_quorum.sh ) implementieren. - NetzwerkâRedundanz prüfen - mindestens zwei Switches, LACPâBundle. Durch das Befolgen dieser fünf Punkte stellen Sie sicher, dass Ihr Cluster nie wieder in ein SplitâBrainâSzenario gerät und dass das Quorum stets stabil bleibt. Jetzt liegt es an Ihnen: Öffnen Sie die Shell, überprüfen Sie pvecm status und starten Sie das erste HAâTestâVMâMigrieren. Sobald das funktioniert, haben Sie einen echten, ausfallsicheren ProxmoxâCluster in Betrieb. Top comments (0)
Comments
No comments yet. Start the discussion.