In einer zunehmend digitalisierten Welt setzen viele Unternehmen darauf, ihre Dienste und Anwendungen in virtuellen Maschinen (VMs) skalierbar und hochverfügbar zu betreiben – aus gutem Grund: Wirtschaftlichkeit und Energieeffizienz stehen mehr denn je im Fokus. Gerade für kleinere On-Premises Umgebungen kommt neben Yaook OpenStack auch Proxmox VE als attraktive Lösung ins Spiel. Die hochintegrierte Open-Source-Virtualisierungsplattform bietet eine kosteneffiziente Möglichkeit, die Verwaltung von VMs und LXContainern, Software-defined Storage (SDS) sowie Hochverfügbarkeits-Clustering in einer einzigen, abgestimmten Lösung zu bündeln. Damit geht Proxmox VE weit über die reine Virtualisierung von Workloads hinaus.
Mit einem Proxmox VE-Testcluster kannst du nicht nur eine mobile Entwicklungsumgebung aufsetzen, sondern auch erste Erfahrungen mit der Cluster-Konfiguration und dem Hochverfügbarkeitskonzept via Corosync und Ceph sammeln.
In diesem Blogbeitrag zeigen wir dir Schritt für Schritt, wie du schnell und unkompliziert ein Proxmox-Test-Cluster mit drei Knoten aufsetzen kannst. Die Anleitung haben wir direkt auf einem Laptop erstellt, der uns als handliche, reisetaugliche Entwicklungsumgebung dient. Eine ausführliche Anleitung zur Proxmox-Installation findest du hier.
Ziel dieses Beitrags ist es, dir zu zeigen, dass Proxmox weit mehr kann als nur Ressourcen zu virtualisieren. Besonders überzeugend ist die unkomplizierte Einrichtung von Hochverfügbarkeit – ein entscheidender Vorteil für Unternehmen, die Ausfallzeiten wirksam reduzieren wollen.
Was dich im Blogpost erwartet:
1. Das Setup
Für die Erstellung eines Proxmox-Clusters verwenden wir in diesem Beispiel drei virtuelle Proxmox VE-Maschinen, die als minimales Proxmox-High-Availability-Cluster mit einem zusätzlichen integrierten Ceph-Cluster konfiguriert werden. Das Cluster besteht aus den Maschinen px1, px2 und px3, wobei jede Maschine über drei Netzwerkinterfaces (net0, net1 und net2) für die folgenden Funktionen verfügt:
- Uplink [10.10.10.10x/24] -> genereller Netzwerkverkehr, inkl. Management
- Corosync [10.10.11.1x/24] -> Hochverfügbarkeit via repliziertem Clustervolume
- Ceph [10.10.12.1x/24] -> Replikation des Storages
Zur Veranschaulichung wurde bereits eine Abbildung im Blogbeitrag zum Vergleich von Proxmox und OpenStack erstellt, die den 3-Knoten-HA-Cluster mit Broadcast Bonds und Direktverkabelung zeigt.
Für die Installation der einzelnen VMs kann man entweder vorbereitete virtuelle Templates, oder die Anleitung zur Installation basierend auf dem ISO-Image nutzen.
In der Anleitung wird das Clustering in zwei Phasen behandelt. Zunächst werden die virtualisierten Proxmox-Knoten miteinander verbunden, indem sie auf dem Hypervisor über gemeinsame virtuelle bridges zusammengeschaltet werden. Die Corosync Cluster Engine, ein Open-Source-Gruppenkommunikationssystem, ermöglicht die Kommunikation zwischen den Knoten und sorgt für eine einheitliche Konfiguration. Zudem können die Knoten über Corosync Fehler und Ausfälle detektieren .
Im zweiten Schritt wird das Ceph-Cluster eingerichtet, um einen hochverfügbaren Speicher für die Maschinen zu gewährleisten. Die Hochverfügbarkeit ist dann durch die Kombination von Ceph und Corosync möglich, da die virtuellen Maschinen (VMs) im Cluster bei einem Knotenausfall innerhalb kürzester Zeit auf andere Knoten neugestartet werden oder je nach Ressourcenbedarf verteilt werden können.
Die Netzwerke für Corosync und Ceph zeichnen sich durch eine Ringtopologie aus. Die Kommunikation läuft direkt über die nach Ring getrennte virtuelle bridges des Hypervisor, ähnlich einer flachen physikalischen Layer 2-Kommunikation nach ISO/OSI Modell. Jeder Node (px1, px2, px3) verfügt zudem über drei virtuelle Festplatten (scsi1-3) mit einer vorkonfigurierten WWN (World-Wide-Number) pro Festspeicher. In diesem Kontext wird eine spezielle Form der UUID verwendet, um die verschiedenen Speichergeräte eindeutig voneinander zu unterscheiden. Diese Identifikation ist entscheidend für die effiziente Verwaltung und den Betrieb des Speichersystems. Die virtualisierte Umgebung der einzelnen Maschinen wird in Abbildung 1 anschaulich dargestellt.
2. Step-by-Step Guideline für die Erstellung eines Proxmox-Text-Clusters mit High Availability per WebGUI
Im ersten Schritt wird erläutert, wie die virtualisierten Proxmox-Knoten mithilfe der Corosync Cluster Engine zu einem Cluster verbunden werden. Der Prozess beginnt, wie in Abbildung 2 dargestellt, mit einer frisch installierten Proxmox-Umgebung. In der sich die VMs noch unabhängig voneinander sind.
In der Vorbereitung sollte auf eine konsistente und korrekte NTP-Konfiguration geachtet werden. Dis kann entweder in /etc/chrony/chrony.conf , oder wie hier im Beispiel in /etc/systemd/timesyncd.conf gemacht werden.
[…]
[Time]
NTP=0.de.pool.ntp.org 1.de.pool.ntp.org 2.de.pool.ntp.org
[…]
Wichtig ist, dass alle Knoten sich gegenseitig über ihren Hostnamen im richtigen HA-Netzwerkring erreichen können. Daher sollten die Einträge in der Datei /etc/hosts auf allen Knoten entsprechend gesetzt werden, wie im folgenden Codebeispiel dargestellt.
127.0.0.1 localhost
10.10.11.11 px1
10.10.11.12 px2
10.10.11.13 px3
[…]
3. Erstellung von High Availability in Proxmox per WebGUI
3.1. Erstellung des Corosync-Clusters
Für die Erstellung von High Availability in Proxmox wird in der Oberfläche des Proxmox VE in der Datacenter–Übersicht zu den Cluster–Optionen gewechselt.
Im nächsten Schritt erfolgt ein Klick auf den Button Create Cluster.
Vergib jetzt einen Namen für den Cluster und wähle ein Netzwerk-Interface für die Hochverfügbarkeit auf px1 aus.
Bei erfolgreicher Erstellung öffnet sich das in Abbildung 6 ersichtliche Fenster.
Im nächsten Schritt werden die Join-Informationen benötigt, um die weiteren Nodes hinzuzufügen. Diese können über einen Klick auf den Button Join Information abgerufen und kopiert werden.
Um alle drei Nodes im Cluster zusammenzufassen, wechsle jetzt auf den zweiten Node (px2) und klicke in der Datacenter-Ansicht auf die Cluster-Option. Wähle dann Join Cluster und füge die zuvor kopierten Join-Informationen ein. Gib das Passwort des Peer-Nodes ein und prüfe, ob dieser im Netzwerk gefunden wird. Wenn alles passt, bestätige mit Join.
Wiederhole diesen Schritt jetzt mit dem dritten Node (px3). Danach sollten – wie in Abbildung 9 gezeigt – alle drei Nodes im Cluster verbunden sein. Sie können nun miteinander kommunizieren und einheitlich konfiguriert werden.
3.2. Erstellung des Ceph-Clusters per WebGUI
Im Folgenden wird die Erstellung eines Ceph-Clusters schrittweise dargestellt. Zunächst wird den drei Knoten im Proxmox-Cluster signalisiert, dass ein leeres Ceph-Cluster erstellt werden soll. Dieser Vorgang muss für jeden Knoten einzeln durchgeführt werden. Anschließend wählst du den ersten Knoten aus und öffnen die Ceph Optionen. Klicke nun auf Install Ceph.
Wähle die aktuelle Ceph-Version (squid 19.2) und das Repository No-Subscription aus.
Achtung: Möglicherweise muss die Installation in der Konsolenausgabe bestätigt werden, wie in Abbildung 12 dargestellt.
Im Folgenden wird der Cephnode konfiguriert. Wie in Abbildung 13 dargestellt, sind das Public-Network und das Cluster-Network im Beispiel identisch und wurden auf die IP des Nodes im Ceph Ring gesetzt. Dabei bleiben sowohl die Anzahl der Replica (3) als auch die Minimum Replica (2) bei den voreingestellten Standardwerten, und es wird mit Next bestätigt.
Mit einem Klick auf den Button Finish kannst du nun die Konfiguration des Ceph beenden.
3.3. Storagedevices (OSDs) zum Ceph hinzufügen
Für ein erfolgreiches Setup ist es erforderlich, die zusätzlichen Festplatten die jedem Knoten zur Verfügung stehen, im Ceph-Cluster mittels Object Storage Daemons bereit zu stellen. Wechsel dazu in der Knotenübersicht zur Ceph-OSD-Unteroption, wie in Abbildung 15 gezeigt.
Klicken Sie Create: OSD und wählen Sie die Festplatte als Disk aus. Alle weiteren Optionen können in der Standardeinstellung belassen werden.
In der Übersicht erscheint nun ein neuer OSD.
In dieser Übersicht erscheinen dann auch die weiteren OSDs der anderen Knoten nach ihrer Provisionierung.
Ist die Übersicht der Ceph-Cluster vollständig eingerichtet, sollten alle Knoten den Status up erhalten (Abbildung 19) und die Übersicht sollte den Status HEALTH_OK haben (Abbildung 20).
3.4. Erstellung des Ceph-Pools
Zum Abschluss wird der im Ceph-Cluster verfügbare Speicher als Pools bereitgestellt, sodass er effizient von Proxmox VE genutzt werden kann, um unter anderem VM-Disks und Snippets zu speichern. Die folgenden Schritte zur Erstellung des Ceph-Pools müssen nur einmal durchgeführt werden und richten den Pool dann für das gesamte Proxmox-Cluster ein. Wechsel dazu im ersten Schritt zu den Ceph-Pool-Optionen auf dem Proxmox-Knoten und klicke auf „Create“.
Vergebe einen Namen für den Pool. Der Ceph-Pool sollte nun dem gesamten Proxmox-Cluster zur Verfügung stehen.
4. Zusammenfassung
Zusammenfassend lässt sich sagen, dass dir diese Step-by-Step-Anleitung einen praktischen Einstieg in die Erstellung einer Proxmox-Testumgebung bietet. So kannst du das Tool besser kennenlernen und mit seiner Funktionsweise vertraut werden.
Beachte bitte, dass es sich hier um eine reine Testumgebung handelt, die auf virtualisierten Knoten innerhalb einer Nested Virtualisation basiert. Diese Konfiguration ist nicht ausfallsicher und daher nicht für den produktiven Einsatz geeignet. Für den tatsächlichen Geschäftsbetrieb empfehlen wir eine stabile, physische Infrastruktur in einem leistungsstarken Rechenzentrum, um eine unterbrechungsfreie und zuverlässige Lösung zu gewährleisten.
Hast du Interesse an einer Proxmox-Umgebung für dein Unternehmen? Dann sprich uns gerne an! Wir setzen diese gerne für dich auf und übernehmen das Lifecycle-Management deiner Infrastruktur.