Cluster-Setup (HA mit Corosync/Pacemaker)

Aus homelab-wiki.de
Zur Navigation springen Zur Suche springen

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