Proxmox Virtual Environment - Zwei Node Cluster bauen

Als letztes Thema zu meiner Proxmox Virtual Environment Serie habe ich noch den Punkt Clustering auf meiner Liste.

Dafür werde ich ein ganz einfaches Cluster bauen. Jedes System nutzt dabei seine eigenen Festplattenspeicher, ich werde also kein NFS Share oder eine Storage anbinden.

Ziel ist es, dass ich virtuelle Maschinen und LXC Container auf jedem Clusterknoten laufen lassen und verschieben kann und die Verwaltung über eine zentrale Oberfläche möglich ist.

Grundvoraussetzungen

Als erstes benötigt man natürlich zwei (oder mehr) Installationen von Proxmox VE.

Beide Systeme sollten gleich eingerichtet sein. Zusätzlich sollte überall die gleiche Version von Proxmox VE laufen.

Deshalb am besten zuerst auf allen Systemen ein Update durchführen.

apt-get update
apt-get dist-upgrade

reboot

Die Systemzeit sollte auch überall gleich sein, am einfachsten erreicht ihr das mit NTP.

Ich werden die folgenden zwei Systeme in ein Cluster joinen:

  • pve1 (192.168.1.251)
  • pve2 (192.168.1.252)

Zusätzlich ist es wichtig, das die DNS Namensauflösung richtig funktioniert. Wenn ihr keinen DNS Server habt, könnt ihr dies auch über die /etc/hosts machen.

/etc/hosts Konfiguration auf pve1:

192.168.1.251 pve1.lan pve1 pvelocalhost
192.168.1.252 pve2.lan pve2

/etc/hosts Konfiguration auf pve2:

192.168.1.252 pve2.lan pve2 pvelocalhost
192.168.1.251 pve1.lan pve1

Cluster aufbauen

Proxmox VE kommt mit dem Cluster Manager, welchen wir nutzen werden um unser Cluster zu bauen.

Bei einem Proxmox VE Cluster gibt es grundsätzlich keinen "Master Node". Man kann also immer auf jedem Node arbeiten und auch die Web-Oberfläche steht immer auf jedem Node zur Verfügung.

Ich erkläre für mich mal den Node pve1 (192.168.1.251) zum gedachten Master, auf diesem Node erstellen wir unser Cluster. Danach joinen wir den zweiten Knoten in unser neues Cluster.

Cluster erstellen

Auf dem ersten Node (pve1) erstelle ich nun das Cluster

pvecm create CLUSTERNAME

Mit dem Befehl pvecm status kann man überprüfen, ob das Cluster erfolgreich erstellt wurde. Proxmox Virtual Environment - Cluster erstellen

Zweiten Node in das Cluster holen

Jetzt wechsel ich auf den Node pve2 um ihn in das Cluster zu holen.

Auf dem Node, welchen ihr in das Cluster holen wollt, dürfen noch keine VMs oder LXC Container erstellt sein.

pvecm add 192.168.1.251

Dabei werde ich nach dem SSH root Passwort des ersten Nodes gefragt.

Mit dem Befehl pvecm status überprüfe ich das Ganze wieder. Proxmox Virtual Environment - Node in Cluster joinen

Mit dem Befehl pvecm nodes kann man sich auch nochmal alle Nodes des Clusters anzeigen lassen. Proxmox Virtual Environment - Zeige Nodes des Clusters

Wenn ihr noch weitere Nodes in das Cluster packen wollt, funktioniert dies immer gleich.

Natürlich können Nodes immer dem Cluster hinzugefügt oder entfernt werden.

Proxmox VE Web-Oberfläche

Damit ist das Cluster auch schon gebaut. Ab jetzt seht ihr alle Nodes in einer Web-Oberfläche. Auf welchem Node ihr die Web-Oberfläche benutzt ist übrigends egal.

Proxmox Virtual Environment - Alle Nodes in einer Web-Oberfläche

Über die Oberfläche kann man jetzt auch anfangen, VMs und LXC Container auf dem neuen Clusterknoten zu erstellen. Proxmox Virtual Environment - VM im Cluster erstellen

VMs zwischen den Clusterknoten verschieben

Wenn man einen Rechtsklick auf eine virtuelle Maschine macht, kann man über den Punkt "Migrate" die VM auf einen anderen Clusterknoten verschieben. Das ist natürlich immer dann praktisch, wenn man Updates macht und möchte das ein System trotzdem online bleiben soll, oder wenn einem der Speicherplatz oder das RAM ausgeht.

Wenn eine CD in die VM eingebunden ist, muss diese vorher entfernt werden.

Proxmox Virtual Environment - VM verschieben

Den Status der Migration kann man in der Oberfläche verfolgen. Dies kann je nach Größe der VM einige Zeit dauern.

Ist der Vorgang abgeschlossen, kann die VM auf dem Ziel-Knoten einfach gestartet werden. Proxmox Virtual Environment - VM verschieben Prozess

Proxmox Cluster File System (pmxcfs)

Für den Ordner /etc/pve wird das Proxmox Cluster File System (pmxcfs) genutzt. Dieses sorgt dafür, das /etc/pve auf allen Clusterknoten immer gleich aussieht.

Unter /etc/pve/nodes/ wird für jeden Knoten ein Order erstellt. In diesem ist dann auf jedem System die Konfiguration von allen Knoten des Clusters enthalten. Proxmox Virtual Environment - Cluster Konfigurationsdateien

Ich nutze dieses System zum Beispiel dafür, das die VMs und LXC Container automatisch ihren Hostnamen ermitteln können.

Dafür läuft in den VMs und LXC Container ein kleines Ansible Playbook. Ansible fragt dann mit der MAC-Adresse der VM einen Web-Services auf den Proxmox VE Nodes ab. Über die MAC-Adresse kann der passende Hostname aus den Konfigurationsdateien ermittelt werden. Wird eine VM über die Proxmox VE Web-Oberfläche umbenannt, ändert sich automatisch auch der Hostname in der VM.

Welche Node das Ansible Skript abfragt, ist dank pmxcfs egal.