Proxmox Cluster Troubleshooting

Aus Xinux Wiki
Version vom 13. Februar 2026, 08:12 Uhr von Maximilian.pottgiesser (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „= Proxmox Cluster-Join Troubleshooting = == Symptome == Nach einem <code>pvecm add</code> ist der neue Knoten: * Nicht mehr über die Weboberfläche (Port 8…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Proxmox Cluster-Join Troubleshooting

Symptome

Nach einem pvecm add ist der neue Knoten:

  • Nicht mehr über die Weboberfläche (Port 8006) erreichbar
  • Nicht korrekt im Cluster sichtbar
  • Im Journal finden sich Fehler zu /etc/pve/local/pve-ssl.key (private key not found / permission denied)

Ursachenanalyse

Häufigste Ursache: Falsche /etc/hosts

Wenn der Hostname vor dem Join auf 127.0.0.1 oder 127.0.1.1 gemappt war statt auf die tatsächliche Management-IP, registriert sich der Knoten mit der falschen Adresse im Cluster. Das ist mit Abstand die häufigste Ursache für fehlgeschlagene Cluster-Joins.

SSL-Zertifikate nicht erreichbar

/etc/pve/local/ ist ein Symlink auf /etc/pve/nodes/<hostname>/. Dieses Verzeichnis wird über pmxcfs bereitgestellt, das wiederum auf einer funktionierenden Corosync-Verbindung basiert. Wenn Corosync nach dem Join nicht richtig connected ist, ist /etc/pve nicht oder nur teilweise zugänglich. Damit fehlen:

  • /etc/pve/local/pve-ssl.key – der private SSL-Key
  • /etc/pve/local/pve-ssl.pem – das SSL-Zertifikat

Ohne diese Dateien kann der pveproxy-Dienst nicht starten → die Weboberfläche auf Port 8006 ist nicht erreichbar.

Weitere mögliche Ursachen

Ursache Prüfung
Netzwerk-Interface hat sich geändert ip addr show – stimmt die IP mit der Corosync-Config überein?
Firewall blockiert Corosync-Ports UDP 5405–5412 zwischen allen Knoten offen? Prüfen mit ss -ulnp | grep corosync
Hostname stimmt nicht hostname -f muss mit dem Eintrag in /etc/hosts übereinstimmen
Alte Cluster-Konfiguration vorhanden Vor einem Join muss der Knoten entweder eine frische Installation sein oder sauber bereinigt werden

Reparatur

Voraussetzung: Konsolen-Zugang

Da der Host über die Weboberfläche nicht erreichbar ist, wird direkter Zugang benötigt – entweder über Tastatur/Monitor am Server, über IPMI/iDRAC/iLO, oder falls SSH noch funktioniert.

Schritt 1: pmxcfs im lokalen Modus starten

systemctl stop pve-cluster corosync
pmxcfs -l

Das -l startet pmxcfs im lokalen Modus – also ohne Corosync-Verbindung. Jetzt sollte /etc/pve wieder zugänglich sein.

Schritt 2: /etc/hosts prüfen und korrigieren

cat /etc/hosts

Die Datei muss so aussehen (Beispiel):

127.0.0.1       localhost
192.168.1.50    pve-node3.domain.lan pve-node3

Kritisch: Der Hostname darf nicht auf 127.0.0.1 oder 127.0.1.1 zeigen. Er muss auf die tatsächliche Management-IP zeigen.

Schritt 3: SSL-Zertifikate prüfen

ls -la /etc/pve/local/
ls -la /etc/pve/nodes/$(hostname)/

Falls die Dateien pve-ssl.key und pve-ssl.pem fehlen oder leer sind, müssen sie neu generiert werden:

pvecm updatecerts --force

Danach prüfen ob die Dateien vorhanden sind:

ls -la /etc/pve/local/pve-ssl.key
ls -la /etc/pve/local/pve-ssl.pem

Schritt 4: Kaputten Knoten aus dem Cluster entfernen

Wenn der Knoten halb im Cluster hängt, ist es oft am saubersten, ihn komplett zu entfernen und neu zu joinen.

Auf dem bestehenden Cluster-Knoten den kaputten Knoten entfernen:

pvecm delnode <knotenname>

Auf dem kaputten Knoten den Cluster-Zustand zurücksetzen:

systemctl stop pve-cluster corosync
pmxcfs -l
rm -f /etc/pve/corosync.conf
rm -rf /etc/corosync/*
killall pmxcfs
systemctl start pve-cluster

Schritt 5: SSL-Zertifikate neu generieren

Nach dem Zurücksetzen des Cluster-Zustands die Zertifikate erneuern:

pvecm updatecerts --force

Dienste neu starten:

systemctl restart pveproxy
systemctl restart pvedaemon

Prüfen ob die Weboberfläche wieder lauscht:

ss -tlnp | grep 8006

Optional – Zertifikat-Details prüfen:

openssl x509 -in /etc/pve/local/pve-ssl.pem -noout -subject -dates

Schritt 6: Sauber neu joinen

Erst sicherstellen, dass der Knoten standalone wieder voll funktioniert (Weboberfläche erreichbar auf Port 8006). Dann den Join erneut durchführen:

pvecm add <IP-des-bestehenden-Cluster-Knotens>

Schritt 7: Ergebnis prüfen

# Cluster-Status
pvecm status

# Alle Knoten sichtbar?
pvecm nodes

# Quorum vorhanden?
corosync-quorumtool

# Corosync-Ring gesund?
corosync-cfgtool -s

Checkliste: Vor jedem Cluster-Join

Diese Punkte vor dem Ausführen von pvecm add prüfen, um Probleme zu vermeiden:

Prüfpunkt Kommando
Hostname zeigt in /etc/hosts auf Management-IP, nicht auf 127.0.x.x cat /etc/hosts
FQDN stimmt mit Hostname überein hostname -f
Alle Knoten können sich gegenseitig per IP erreichen ping <IP-des-anderen-Knotens>
UDP 5405–5412 ist zwischen den Knoten offen ss -ulnp | grep corosync
SSH-Zugang vom neuen Knoten zum bestehenden Cluster funktioniert ssh root@<Cluster-IP>
Keine alte Cluster-Konfiguration vorhanden ls /etc/corosync/ sollte leer sein
Knoten hat eine frische Proxmox-Installation oder wurde sauber bereinigt
Zeitserver konfiguriert und synchron timedatectl status
Kein anderes Cluster-Dateisystem gemountet mount | grep pve

Zusammenfassung der relevanten Ports und Dienste

Dienst Port Protokoll Beschreibung
Corosync 5405–5412 UDP Cluster-Kommunikation (Totem-Ring, Quorum)
pveproxy 8006 TCP (HTTPS) Proxmox Weboberfläche
SSH 22 TCP Wird für den Cluster-Join und die Verwaltung benötigt
pvedaemon 85 TCP Proxmox API-Daemon (intern)
Spice 3128 TCP VM-Konsole via Spice-Proxy
VNC 5900–5999 TCP VM-Konsole via VNC
Migration 60000–60050 TCP Live-Migration von VMs zwischen Knoten

Hinweis: Alle diese Ports müssen zwischen den Cluster-Knoten erreichbar sein. Insbesondere UDP 5405–5412 (Corosync) und TCP 22 (SSH) sind für den Cluster-Join zwingend erforderlich.