Proxmox-Portal
Proxmox VE (Proxmox Virtual Envirement) ist eine über Web-Oberfläche steuerbare und auf Debian basierte Open-Source-Virtualisierungsplattform für x86-Virtualisierungen. Basierend auf Qemu mit der KVM ist auch der Betrieb von Linux Containers (LXC) möglich.
Inhaltsverzeichnis
Mindestanforderungen
Für Testzwecke reichen folgende Anforderungen1, allerdings sollte bedacht werden, dass es zu erheblichen Einschränkungen bei der Virtualisierung kommen kann. Proxmox VE lässt sich als Gast einer Desktop-Virtualisierung installieren, solange diese Nested Virtualization erlauben.
- CPU: 64bit (Intel EMT64 oder AMD64)
- Intel VT/AMD-V-fähige CPU/Mainboard (für KVM Full Virtualization Unterstützung)
- Mindestens 1 GB RAM
- Festplatte
- eine Netzwerkkarte
Installation
- Boot-USB-Stick erstellen:
kopieren des Files auf den Stick: dd if=proxmox-ve_*.iso of=/dev/XYZ bs=1M
- Troubleshooting:
- Rechner will einfach nicht vom Stick booten?
- of=/dev/XYZ muss tatsächlich einem Device entsprechen und nicht einer Partition
- Installationsassistent startet nicht, Fehlermeldung "failure reading sector 0xXYZ from hd0"
anderen Stick probieren (Kingston DataTraveler 100 G3 16GB hat nicht funktioniert, SanDisk Extreme 64GB hat funktioniert)
- während der Installation Plattenkonfiguration und Netzwerkeinstellungen festlegen
- Netzwerkkonfiguration kann später angepasst werden
- ZFS und andere Plattenkonfigurationen können später hinzugefügt werden
- reboot
Cluster
Cluster2 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 die Corosync Cluster Engine, welche die Kommunikation zwischen den einzelnen Knoten verwaltet.
Voraussetzung für das Erstellen eines Proxmox-Clusters:
- alle Server müssen sich im selben Netzwerk 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
- 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
- ü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
Anmerkungen, Anregungen
Anmerkungen, Anregungen, Verbesserungsvorschläge hinterlasse man bitte auf der Diskussionsseite