Proxmox-Cluster
Inhaltsverzeichnis
Cluster
Cluster werden in Proxmox über den Proxmox VE cluster manager (pvecm) erstellt und organisiert. Als Cluster ist hierbei eine Grupppierung von maximal etwa 32 (netzwerkabhängig) physikalischen Servern zu verstehen. Zugrunde liegt das Proxmox Cluster File System (pmxcfs), welches Konfigurationsdateien, unter anderem für die Gastsysteme, in Echtzeit über Corosync verteilt.
Voraussetzung für das Erstellen eines Proxmox-Clusters:
- alle Server müssen sich im selben Netzwerk (bzw. VLAN) befinden
das Netzwerk sollte IP Multicast nutzen (Corosync), testbar z.B. mit $omping -c 10000 -i 0.001 -F -q node1 node2 node3
- Corosync nutzt UDP Ports 5404 und 5405 zur Clusterkommunikation
Zeit- und Datumssynchronisation (in PVE by default)
- SSH über TCP Port 22
- für HA-Cluster mindestens drei Knoten (Quorum)
- es sollten sich gleiche Proxmox-Versionen auf den Knoten befinden
Erstellen eines Clusters
- über das Web-Interface:
Datacenter -> Cluster -> Create Cluster
- Der Clustername muss einzigartig sein, da damit die Multicastadresse erstellt wird, besonders wenn man mehrere Cluster in einem Netzwerk nutzt ist das wichtig!
- über CLI:
$ pvecm create CLUSTERNAME
Status des erstellten Clusters ist mit folgendem Command abzufragen: $ pvecm status
Hinzufügen eines Knotens:
- hinzuzufügender Knoten darf keine VMs oder LXC enthalten um doppelte GastIDs im Cluster zu vermeiden
- Auf dem hinzuzufügenden Knoten muss PVE installiert sein und seine finale IP und Hostname besitzen, da diese nach Clusterbeitritt nicht mehr verändert werden können.
- über das Web-Interface:
auf einem Knoten innerhalb des Clusters: Datacenter -> Cluster -> Join Information
auf dem Knoten der hinzugefügt werden soll: Datacenter -> Cluster -> Join Cluster
- Join Information übertragen und root-Passwort des Clusterknotens eintragen
- über CLI:
auf dem hinzuzufügenden Knoten: $ pvecm add IP-ADDRESS-CLUSTER
- Anweisungen folgen
Clusterstatus abfragbar mit: $ pvecm status
Knotenliste abfragbar mit: $ pvecm nodes
Entfernen eines Knotens
Wird ein Knoten aus dem Cluster entfernt, so sollte dieser eine komplette Proxmox-Neuinstallation erhalten, da er sonst den Cluster beschädigen würde.
- alle Daten incl. VMs und LXC vom zu löschenden Knoten entfernen bzw. sichern
Sollte der Knoten zu einer HA-Clustergruppe gehören, dann muss dieser auch dort entfernt werden. Siehe Knoten ist im HA-Cluster und wird entfernt für Troubleshooting
- Terminal eines Cluster-Knotens nutzen, welcher NICHT entfernt wird
zu entfernenden Knoten sicher identifizieren: $ pvecm nodes
- alle Ressourcen (VM, LXC, Templates) vom zu entfernenden Knoten entfernen
- zu entfernender Knoten wird heruntergefahren
- der zu entfernende und heruntergefahrene Knoten darf nicht mehr im Clusternetzwerk gestartet werden, da dieser den Cluster funktionsuntüchtig machen kann. Ein Wiederherstellen ist nur schwer möglich.
Knoten kann nun aus dem Cluster entfernt werden: $ pvecm delnode KNOTEN
- Damit der entfernte Knoten wieder dem Cluster bzw. Netzwerk beitreten darf muss dieser von Grund auf neu installiert werden.
Auf den übrigen Knoten im Cluster sollten die Daten des entfernten Knotens entfernt werden: $ rm -rf /etc/pve/nodes/ENTFERNTERKNOTEN
außerdem sollte der SSH-Key des Knotens entfernt werden, dazu folgendes File bearbeiten: /etc/pve/priv/authorized_keys
Auch ohne Neuinstallation ist das Entfernen eines Clusterkontens möglich, wenn auch nicht empfohlen:
- Wichtig, Knoten und Cluster dürfen sich trotzdem keine Ressourcen mehr teilen um Konflikte zu vermeiden (z.B. durch gleichen VMIDs entstehen Konflikte auf einem Shared-Storage)!
- auf zu entfernenden Knoten Corosync und pve-cluster-services anhalten:
$ systemctl stop pve-cluster
$ systemctl stop corosync
Clusterfilesystem im lokalen Modus starten: $ pmxcfs -l
- Corosync-Config-Files entfernen:
$ rm /etc/pve/corosync.conf
$ rm /etc/corosync/*
- Filesystem neustarten:
$ killall pmxcfs
$ systemctl start pve-cluster
auf bestehendem Clusterknoten kann der zu entfernende Knoten nun entfernt werden: $ pvecm delnode ENTFERNENDERKNOTEN
falls der Vorgang (aufgrund eines verlorenen Quorums) fehlschlägt: $ pvecm expected 1 und erneut versuchen
nun alle Clusterdaten auf dem entfernten Knoten entfernen: $ rm /var/lib/corosync/*
auf den Knoten im Cluster sollten die Daten des entfernten Knotens gelöscht werden: $ rm -rf /etc/pve/nodes/ENTFERNTERKNOTEN
auf den Knoten sollten die SSH-Keys entfernt werden. Dazu das authorized_key file bearbeiten: /etc/pve/priv/authorized_keys
Knoten ist im HA-Cluster und wird entfernt
Obwohl sich ein Knoten im HA-Cluster befindet, kann er problemlos entfernt werden. Das führt zu Problemen, da dieser in der HA-Clusterübersicht erhalten bleibt und beim Entfernen der Knoteneinträge aus den anderen Knoten eine Fehlermeldung das HA-Gruppenmanagement sowie das HA-Ressoucenmanagement verhindert. Um das Problem zu beseitigen, müssen die HA-Gruppen händisch angepasst werden, sowie der Status des fehlenden Knotens entfernt werden. Eine Lösung ist nicht über das Web-Interface möglich.
$ ha-manager remove vm:100 oder $ ha-manager remove ct:100 bei LXC entfernt die Ressource aus den Gruppen
- sind die Ressourcen entfernt bzw. nicht mehr den betroffenen Gruppen zugewiesen, können die Gruppen nun entfernt werden
- damit die HA-Verwaltung wieder über die GUI stattfinden kann muss der Status des fehlenden Knotens entfernt werden:
auf allen Knoten des Clusters: $ systemctl stop pve-ha-crm
auf einem Knoten: $ rm /etc/pve/ha/manager_status
auf allen Knoten des Clusters: $ systemctl start pve-ha-crm