#acl hayd@cbs.mpg.de:read,write,delete,revert,admin Known:read,write All:read = Proxmox-Cluster = <> == Cluster == [[https://pve.proxmox.com/wiki/Cluster_Manager|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 [[https://pve.proxmox.com/wiki/Proxmox_Cluster_File_System_(pmxcfs)|Proxmox Cluster File System (pmxcfs)]], welches Konfigurationsdateien, unter anderem für die Gastsysteme, in Echtzeit über [[https://corosync.github.io/corosync/|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 * [[https://pve.proxmox.com/wiki/Time_Synchronization|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 [[https://wiki.init.mpg.de/IT4Science/ProxmoxPortal#Knoten_ist_im_HA-Cluster_und_wird_entfernt|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}}}