<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.ixheim.de/index.php?action=history&amp;feed=atom&amp;title=Proxmox_Cluster_Troubleshooting</id>
	<title>Proxmox Cluster Troubleshooting - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.ixheim.de/index.php?action=history&amp;feed=atom&amp;title=Proxmox_Cluster_Troubleshooting"/>
	<link rel="alternate" type="text/html" href="https://wiki.ixheim.de/index.php?title=Proxmox_Cluster_Troubleshooting&amp;action=history"/>
	<updated>2026-05-14T19:40:11Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Xinux Wiki</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>https://wiki.ixheim.de/index.php?title=Proxmox_Cluster_Troubleshooting&amp;diff=66856&amp;oldid=prev</id>
		<title>Maximilian.pottgiesser: Die Seite wurde neu angelegt: „= Proxmox Cluster-Join Troubleshooting =  == Symptome ==  Nach einem &lt;code&gt;pvecm add&lt;/code&gt; ist der neue Knoten:  * Nicht mehr über die Weboberfläche (Port 8…“</title>
		<link rel="alternate" type="text/html" href="https://wiki.ixheim.de/index.php?title=Proxmox_Cluster_Troubleshooting&amp;diff=66856&amp;oldid=prev"/>
		<updated>2026-02-13T08:12:54Z</updated>

		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „= Proxmox Cluster-Join Troubleshooting =  == Symptome ==  Nach einem &amp;lt;code&amp;gt;pvecm add&amp;lt;/code&amp;gt; ist der neue Knoten:  * Nicht mehr über die Weboberfläche (Port 8…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;= Proxmox Cluster-Join Troubleshooting =&lt;br /&gt;
&lt;br /&gt;
== Symptome ==&lt;br /&gt;
&lt;br /&gt;
Nach einem &amp;lt;code&amp;gt;pvecm add&amp;lt;/code&amp;gt; ist der neue Knoten:&lt;br /&gt;
&lt;br /&gt;
* Nicht mehr über die Weboberfläche (Port 8006) erreichbar&lt;br /&gt;
* Nicht korrekt im Cluster sichtbar&lt;br /&gt;
* Im Journal finden sich Fehler zu &amp;lt;code&amp;gt;/etc/pve/local/pve-ssl.key&amp;lt;/code&amp;gt; (private key not found / permission denied)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Ursachenanalyse ==&lt;br /&gt;
&lt;br /&gt;
=== Häufigste Ursache: Falsche /etc/hosts ===&lt;br /&gt;
&lt;br /&gt;
Wenn der Hostname vor dem Join auf &amp;lt;code&amp;gt;127.0.0.1&amp;lt;/code&amp;gt; oder &amp;lt;code&amp;gt;127.0.1.1&amp;lt;/code&amp;gt; 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.&lt;br /&gt;
&lt;br /&gt;
=== SSL-Zertifikate nicht erreichbar ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;/etc/pve/local/&amp;lt;/code&amp;gt; ist ein Symlink auf &amp;lt;code&amp;gt;/etc/pve/nodes/&amp;lt;hostname&amp;gt;/&amp;lt;/code&amp;gt;. Dieses Verzeichnis wird über '''pmxcfs''' bereitgestellt, das wiederum auf einer funktionierenden Corosync-Verbindung basiert. Wenn Corosync nach dem Join nicht richtig connected ist, ist &amp;lt;code&amp;gt;/etc/pve&amp;lt;/code&amp;gt; nicht oder nur teilweise zugänglich. Damit fehlen:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/pve/local/pve-ssl.key&amp;lt;/code&amp;gt; – der private SSL-Key&lt;br /&gt;
* &amp;lt;code&amp;gt;/etc/pve/local/pve-ssl.pem&amp;lt;/code&amp;gt; – das SSL-Zertifikat&lt;br /&gt;
&lt;br /&gt;
Ohne diese Dateien kann der &amp;lt;code&amp;gt;pveproxy&amp;lt;/code&amp;gt;-Dienst nicht starten → die Weboberfläche auf Port 8006 ist nicht erreichbar.&lt;br /&gt;
&lt;br /&gt;
=== Weitere mögliche Ursachen ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Ursache !! Prüfung&lt;br /&gt;
|-&lt;br /&gt;
| Netzwerk-Interface hat sich geändert || &amp;lt;code&amp;gt;ip addr show&amp;lt;/code&amp;gt; – stimmt die IP mit der Corosync-Config überein?&lt;br /&gt;
|-&lt;br /&gt;
| Firewall blockiert Corosync-Ports || UDP 5405–5412 zwischen allen Knoten offen? Prüfen mit &amp;lt;code&amp;gt;ss -ulnp &amp;amp;#124; grep corosync&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Hostname stimmt nicht || &amp;lt;code&amp;gt;hostname -f&amp;lt;/code&amp;gt; muss mit dem Eintrag in &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt; übereinstimmen&lt;br /&gt;
|-&lt;br /&gt;
| Alte Cluster-Konfiguration vorhanden || Vor einem Join muss der Knoten entweder eine frische Installation sein oder sauber bereinigt werden&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Reparatur ==&lt;br /&gt;
&lt;br /&gt;
=== Voraussetzung: Konsolen-Zugang ===&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
=== Schritt 1: pmxcfs im lokalen Modus starten ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl stop pve-cluster corosync&lt;br /&gt;
pmxcfs -l&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Das &amp;lt;code&amp;gt;-l&amp;lt;/code&amp;gt; startet pmxcfs im '''lokalen Modus''' – also ohne Corosync-Verbindung. Jetzt sollte &amp;lt;code&amp;gt;/etc/pve&amp;lt;/code&amp;gt; wieder zugänglich sein.&lt;br /&gt;
&lt;br /&gt;
=== Schritt 2: /etc/hosts prüfen und korrigieren ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
cat /etc/hosts&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Die Datei muss so aussehen (Beispiel):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
127.0.0.1       localhost&lt;br /&gt;
192.168.1.50    pve-node3.domain.lan pve-node3&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Kritisch:''' Der Hostname darf '''nicht''' auf &amp;lt;code&amp;gt;127.0.0.1&amp;lt;/code&amp;gt; oder &amp;lt;code&amp;gt;127.0.1.1&amp;lt;/code&amp;gt; zeigen. Er muss auf die tatsächliche Management-IP zeigen.&lt;br /&gt;
&lt;br /&gt;
=== Schritt 3: SSL-Zertifikate prüfen ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ls -la /etc/pve/local/&lt;br /&gt;
ls -la /etc/pve/nodes/$(hostname)/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Falls die Dateien &amp;lt;code&amp;gt;pve-ssl.key&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;pve-ssl.pem&amp;lt;/code&amp;gt; fehlen oder leer sind, müssen sie neu generiert werden:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pvecm updatecerts --force&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Danach prüfen ob die Dateien vorhanden sind:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ls -la /etc/pve/local/pve-ssl.key&lt;br /&gt;
ls -la /etc/pve/local/pve-ssl.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Schritt 4: Kaputten Knoten aus dem Cluster entfernen ===&lt;br /&gt;
&lt;br /&gt;
Wenn der Knoten halb im Cluster hängt, ist es oft am saubersten, ihn komplett zu entfernen und neu zu joinen.&lt;br /&gt;
&lt;br /&gt;
'''Auf dem bestehenden Cluster-Knoten''' den kaputten Knoten entfernen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pvecm delnode &amp;lt;knotenname&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Auf dem kaputten Knoten''' den Cluster-Zustand zurücksetzen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl stop pve-cluster corosync&lt;br /&gt;
pmxcfs -l&lt;br /&gt;
rm -f /etc/pve/corosync.conf&lt;br /&gt;
rm -rf /etc/corosync/*&lt;br /&gt;
killall pmxcfs&lt;br /&gt;
systemctl start pve-cluster&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Schritt 5: SSL-Zertifikate neu generieren ===&lt;br /&gt;
&lt;br /&gt;
Nach dem Zurücksetzen des Cluster-Zustands die Zertifikate erneuern:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pvecm updatecerts --force&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dienste neu starten:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
systemctl restart pveproxy&lt;br /&gt;
systemctl restart pvedaemon&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Prüfen ob die Weboberfläche wieder lauscht:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ss -tlnp | grep 8006&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Optional – Zertifikat-Details prüfen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
openssl x509 -in /etc/pve/local/pve-ssl.pem -noout -subject -dates&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Schritt 6: Sauber neu joinen ===&lt;br /&gt;
&lt;br /&gt;
Erst sicherstellen, dass der Knoten standalone wieder voll funktioniert (Weboberfläche erreichbar auf Port 8006). Dann den Join erneut durchführen:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pvecm add &amp;lt;IP-des-bestehenden-Cluster-Knotens&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Schritt 7: Ergebnis prüfen ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# Cluster-Status&lt;br /&gt;
pvecm status&lt;br /&gt;
&lt;br /&gt;
# Alle Knoten sichtbar?&lt;br /&gt;
pvecm nodes&lt;br /&gt;
&lt;br /&gt;
# Quorum vorhanden?&lt;br /&gt;
corosync-quorumtool&lt;br /&gt;
&lt;br /&gt;
# Corosync-Ring gesund?&lt;br /&gt;
corosync-cfgtool -s&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Checkliste: Vor jedem Cluster-Join ==&lt;br /&gt;
&lt;br /&gt;
Diese Punkte '''vor''' dem Ausführen von &amp;lt;code&amp;gt;pvecm add&amp;lt;/code&amp;gt; prüfen, um Probleme zu vermeiden:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! ✓ !! Prüfpunkt !! Kommando&lt;br /&gt;
|-&lt;br /&gt;
| ☐ || Hostname zeigt in &amp;lt;code&amp;gt;/etc/hosts&amp;lt;/code&amp;gt; auf Management-IP, '''nicht''' auf 127.0.x.x || &amp;lt;code&amp;gt;cat /etc/hosts&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ☐ || FQDN stimmt mit Hostname überein || &amp;lt;code&amp;gt;hostname -f&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ☐ || Alle Knoten können sich gegenseitig per IP erreichen || &amp;lt;code&amp;gt;ping &amp;lt;IP-des-anderen-Knotens&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ☐ || UDP 5405–5412 ist zwischen den Knoten offen || &amp;lt;code&amp;gt;ss -ulnp &amp;amp;#124; grep corosync&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ☐ || SSH-Zugang vom neuen Knoten zum bestehenden Cluster funktioniert || &amp;lt;code&amp;gt;ssh root@&amp;lt;Cluster-IP&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ☐ || Keine alte Cluster-Konfiguration vorhanden || &amp;lt;code&amp;gt;ls /etc/corosync/&amp;lt;/code&amp;gt; sollte leer sein&lt;br /&gt;
|-&lt;br /&gt;
| ☐ || Knoten hat eine frische Proxmox-Installation oder wurde sauber bereinigt || –&lt;br /&gt;
|-&lt;br /&gt;
| ☐ || Zeitserver konfiguriert und synchron || &amp;lt;code&amp;gt;timedatectl status&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| ☐ || Kein anderes Cluster-Dateisystem gemountet || &amp;lt;code&amp;gt;mount &amp;amp;#124; grep pve&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Zusammenfassung der relevanten Ports und Dienste ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Dienst !! Port !! Protokoll !! Beschreibung&lt;br /&gt;
|-&lt;br /&gt;
| '''Corosync''' || 5405–5412 || UDP || Cluster-Kommunikation (Totem-Ring, Quorum)&lt;br /&gt;
|-&lt;br /&gt;
| '''pveproxy''' || 8006 || TCP (HTTPS) || Proxmox Weboberfläche&lt;br /&gt;
|-&lt;br /&gt;
| '''SSH''' || 22 || TCP || Wird für den Cluster-Join und die Verwaltung benötigt&lt;br /&gt;
|-&lt;br /&gt;
| '''pvedaemon''' || 85 || TCP || Proxmox API-Daemon (intern)&lt;br /&gt;
|-&lt;br /&gt;
| '''Spice''' || 3128 || TCP || VM-Konsole via Spice-Proxy&lt;br /&gt;
|-&lt;br /&gt;
| '''VNC''' || 5900–5999 || TCP || VM-Konsole via VNC&lt;br /&gt;
|-&lt;br /&gt;
| '''Migration''' || 60000–60050 || TCP || Live-Migration von VMs zwischen Knoten&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''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.&lt;/div&gt;</summary>
		<author><name>Maximilian.pottgiesser</name></author>
	</entry>
</feed>