Cluster-Setup (HA mit Corosync/Pacemaker)
Hochverfügbarkeits-Cluster mit Corosync & Pacemaker unter Debian 12
Ziel
Einrichten eines einfachen 2-Knoten HA-Clusters mit Pacemaker, Corosync und PCS auf Debian 12.
Voraussetzungen
Hostname | IP-Adresse |
---|---|
node1 | 10.0.0.10 |
node2 | 10.0.0.11 |
- Frische Debian 12-Installation auf beiden Knoten
- Root-Zugang oder sudo
- Zeitsynchronisierung (z. B. via chrony oder ntp)
Hostnamen & /etc/hosts einstellen
Auf beiden Knoten:
echo "node1" > /etc/hostname # nur auf node1
echo "node2" > /etc/hostname # nur auf node2
Datei /etc/hosts bearbeiten:
127.0.0.1 localhost
10.0.0.10 node1
10.0.0.11 node2
Netzwerkverbindung testen
ping -c3 10.0.0.11 # von node1
ping -c3 10.0.0.10 # von node2
Installation der Pakete
Auf beiden Knoten:
sudo apt update
sudo apt install -y corosync pacemaker pcs
Benutzer für pcs konfigurieren
sudo passwd hacluster
Das Passwort auf beiden Knoten identisch setzen!
pcs-Dienst aktivieren und starten
sudo systemctl enable pcsd
sudo systemctl start pcsd
Firewall deaktivieren (zum Testen)
sudo ufw disable # oder:
sudo systemctl stop firewalld
Authentifizierung der Knoten
Auf einem der Knoten (z. B. node1):
sudo pcs host auth node1 node2 -u hacluster
Cluster einrichten
Auf node1:
sudo pcs cluster setup ha_cluster node1 node2
sudo pcs cluster start --all
sudo pcs cluster enable --all
Clusterstatus prüfen
pcs status
Beispiel: Virtual IP als Ressource
Füge eine Cluster-VIP hinzu (z. B. 10.0.0.100):
sudo pcs resource create ClusterIP ocf:heartbeat:IPaddr2 ip=10.0.0.100 cidr_netmask=24 op monitor interval=30s
STONITH deaktivieren (nur für Testumgebungen)
sudo pcs property set stonith-enabled=false
sudo pcs property set no-quorum-policy=ignore
Test des Clusters
- Prüfe mit
ip a
, ob die VIP (z. B. 10.0.0.100) aktiv ist. - Simuliere einen Ausfall durch Herunterfahren eines Knotens:
sudo shutdown now
Hinweise
- In produktiven Umgebungen sollte STONITH korrekt konfiguriert werden.
- Weitere Ressourcen wie Apache, MariaDB oder DRBD können ebenfalls integriert werden.
Fehlerdiagnose: Node UNCLEAN (offline)
Beschreibung
Wenn ein Knoten im Cluster mit dem Status:
Node node1: UNCLEAN (offline)
angezeigt wird, bedeutet dies, dass der Cluster den Node als unsauberen (unclean) Knoten markiert hat. Dies passiert, wenn der Knoten nicht ordnungsgemäß aus dem Cluster entfernt oder heruntergefahren wurde.
Ursachen
- Knoten wurde unerwartet ausgeschaltet (z. B. VM manuell gestoppt)
- Netzwerkverbindung ist unterbrochen
- Dienste wie corosync oder pacemaker sind abgestürzt oder wurden gewaltsam beendet
- Hardware-/Ressourcenprobleme (z. B. hoher RAM- oder CPU-Verbrauch)
Auswirkungen
Der Cluster betrachtet den Node als potenziell fehlerhaft. Ressourcen werden ggf. nicht korrekt verteilt, und der Cluster reagiert mit Vorsicht, um Datenverlust oder Split-Brain-Szenarien zu verhindern.
Lösungsschritte
1. Clusterdienste auf dem betroffenen Node neu starten
Auf dem betroffenen Node (z. B. node1) folgende Befehle ausführen:
sudo systemctl restart corosync
sudo systemctl restart pacemaker
oder alternativ:
sudo pcs cluster start
2. Clusterstatus prüfen
Auf einem beliebigen Clusterknoten:
pcs status
Wenn erfolgreich, sollte angezeigt werden:
Node node1: Online
3. Optional: Manuelles Cleanup (nur bei Bedarf)
Falls der Node weiterhin als unclean angezeigt wird:
sudo pcs cluster node cleanup node1
oder für alle Nodes:
sudo pcs cluster node cleanup --all
Hinweis: Cleanup entfernt Fehlerstatus und Ressourcenzuweisungen. Nur durchführen, wenn die Ursache geklärt ist.
Prävention
- Alle Nodes sollten korrekt heruntergefahren werden (nicht "hart" stoppen)
- Stabile Netzwerkverbindung zwischen den Knoten sicherstellen
- Zeitsynchronisation über NTP oder chrony einrichten
- DNS oder /etc/hosts korrekt konfigurieren, sodass alle Knoten erreichbar sind