
In früheren Artikeln haben wir begonnen zu erklären, was Proxmox VE ist und wie es funktioniert. Heute werden wir darauf eingehen, wie man die Clusterfunktion nutzen kann und welche Vorteile dies mit sich bringt.
Was ist ein Cluster und wozu dient er? Ein Cluster ist eine Gruppe von Servern, die durch Hochgeschwindigkeitsverbindungen miteinander verbunden sind und als eine Einheit für den Benutzer fungiert. Es gibt mehrere grundlegende Anwendungsfälle für Cluster:
- Gewährleistung der Ausfallsicherheit (Hochverfügbarkeit).
- Lastenausgleich (Lastverteilung).
- Steigerung der Leistung (Hohe Leistung).
- Durchführung verteilter Berechnungen (Verteilte Verarbeitung).
Jeder Anwendungsfall hat spezifische Anforderungen an die Komponenten des Clusters. Zum Beispiel erfordert ein Cluster, der verteilte Berechnungen durchführt, eine hohe Geschwindigkeit bei Gleitkommaberechnungen und eine niedrige Netzwerklatenz. Solche Cluster werden häufig für wissenschaftliche Forschungszwecke eingesetzt.
Da wir das Thema verteilte Berechnungen angesprochen haben, möchten wir noch auf ein weiteres Konzept hinweisen: Grid-System (von engl. grid – Gitter, Netzwerk). Trotz der allgemeinen Ähnlichkeiten sollte man Gitter-Systeme und Cluster nicht verwechseln. Ein Gitter ist kein Cluster im gewohnten Sinne. Im Gegensatz zu einem Cluster sind die in ein Gitter integrierten Knoten meist heterogen und weisen eine geringere Verfügbarkeit auf. Dieser Ansatz erleichtert die Lösung von Aufgaben in verteilten Berechnungen, erlaubt jedoch nicht, aus den Knoten eine Einheit zu bilden.
Ein prägnantes Beispiel für ein Gitter-System ist die beliebte Rechenplattform (Berkeley Open Infrastructure for Network Computing). Diese Plattform wurde ursprünglich für das Projekt (Search for Extra-Terrestrial Intelligence at Home) entwickelt, das sich mit der Suche nach außerirdischer Intelligenz durch die Analyse von Radiosignalen beschäftigt.
Wie es funktioniertEine riesige Menge an Daten, die von Radioteleskopen gesammelt wurden, wird in viele kleine Stücke zerlegt und an die Knoten des Gitter-Systems gesendet (in dem Projekt SETI@home erfüllen die Computer von Freiwilligen die Rolle dieser Knoten). Die Daten werden an den Knoten verarbeitet und nach Abschluss der Verarbeitung an den zentralen Server des SETI-Projekts zurückgesendet. So löst das Projekt eine äußerst komplexe globale Aufgabe, ohne über die erforderlichen Rechenressourcen zu verfügen.
Jetzt, wo wir ein klares Verständnis davon haben, was ein Cluster ist, möchten wir betrachten, wie man ihn erstellen und nutzen kann. Wir werden ein Open-Source-Virtualisierungssystem verwenden. .
Besonders wichtig ist es, vor dem Erstellen eines Clusters die Einschränkungen und Systemanforderungen von Proxmox klar zu verstehen, nämlich:
- die maximale Anzahl von Knoten im Cluster — 32;
- alle Knoten müssen die gleiche Proxmox-Version haben (es gibt Ausnahmen, aber diese werden für die Produktion nicht empfohlen);
- wenn in Zukunft die Hochverfügbarkeitsfunktion genutzt werden soll, müssen im Cluster mindestens 3 Knoten vorhanden sein;
- um die Interaktion zwischen den Knoten zu ermöglichen, müssen die Ports UDP/5404, UDP/5405 für Corosync und TCP/22 für SSH geöffnet sein;
- die Verzögerung im Netzwerk zwischen den Knoten darf nicht mehr als 2 ms betragen..
Erstellung eines Clusters
Wichtig! Die folgende Konfiguration ist Testzwecken vorbehalten. Vergessen Sie nicht, sich mit Proxmox VE abzugleichen.
Um einen Testcluster zu starten, haben wir drei Server mit installierter Proxmox-Hypervisor-Software in identischer Konfiguration (2 Kerne, 2 GB RAM) genommen.
Wenn Sie erfahren möchten, wie man Proxmox installiert, empfehlen wir Ihnen, unseren vorherigen Artikel zu lesen — .
Nach der Installation des Betriebssystems funktioniert der Einzelserver im Standalone-Modus.

Lassen Sie uns einen Cluster erstellen, indem wir die Schaltfläche Cluster erstellen im entsprechenden Abschnitt drücken.

Wir geben dem zukünftigen Cluster einen Namen und wählen die aktive Netzwerkverbindung aus.

Wir drücken die Schaltfläche Erstellen. Der Server generiert einen 2048-Bit-Schlüssel und speichert diesen zusammen mit den Parametern des neuen Clusters in den Konfigurationsdateien.

Die Nachricht TASK OK zeigt den erfolgreichen Abschluss des Vorgangs an. Nun sieht man in den allgemeinen Systeminformationen, dass der Server in den Cluster-Modus gewechselt ist. Der Cluster besteht derzeit nur aus einem Node, was bedeutet, dass er noch nicht über die Funktionen verfügt, die einen Cluster notwendig machen.

Beitritt zum Cluster
Bevor wir uns mit dem erstellten Cluster verbinden, müssen wir Informationen für die Verbindung erhalten. Dazu gehen wir in den Abschnitt Cluster und klicken wir auf die Schaltfläche Beitrittsinformationen.

Im sich öffnenden Fenster interessiert uns der Inhalt des gleichnamigen Feldes. Diesen müssen wir kopieren.

Hier sind alle notwendigen Verbindungsparameter codiert: die Adresse des Servers für die Verbindung und der digitale Fingerabdruck. Wir wechseln zu dem Server, der in den Cluster aufgenommen werden soll. Drücken Sie die Schaltfläche Cluster beitreten und fügen Sie den kopierten Inhalt in das sich öffnende Fenster ein.

Felder Peer-Adresse und Fingerprint werden automatisch ausgefüllt. Geben Sie das root-Passwort für Knoten Nummer 1 ein, wählen Sie die Netzwerkverbindung aus und klicken Sie auf die Schaltfläche Beitreten.

Während des Beitritts zum Cluster kann die GUI-Webseite aufhören zu aktualisieren. Das ist normal, einfach die Seite neu laden. Fügen Sie auf die gleiche Weise einen weiteren Knoten hinzu, um schließlich einen vollständigen Cluster mit 3 aktiven Knoten zu erhalten.

Jetzt können wir alle Knoten des Clusters von einer einzigen GUI aus steuern.

Einrichtung von Hochverfügbarkeit
Proxmox unterstützt „out of the box“ die Funktionalität zur Einrichtung von HA sowohl für virtuelle Maschinen als auch für LXC-Container. Das Tool ha-manager erkennt und verarbeitet Fehler und Ausfälle, indem es einen Failover von dem ausgefallenen Knoten auf den funktionierenden durchführt. Damit der Mechanismus korrekt funktioniert, müssen die virtuellen Maschinen und Container über einen gemeinsamen Speicher verfügen.
Nach der Aktivierung der Hochverfügbarkeitsfunktion beginnt der Software-Stack ha-manager kontinuierlich den Status der virtuellen Maschine oder des Containers zu überwachen und asynchron mit anderen Knoten des Clusters zu interagieren.
Fügen Sie den gemeinsamen Speicher hinzu
Zum Beispiel haben wir einen kleinen NFS-Speicher unter der Adresse 192.168.88.18 eingerichtet. Damit alle Knoten im Cluster darauf zugreifen können, sind folgende Schritte erforderlich.
Wählen Sie im Webinterface Rechenzentrum — Speicher — Hinzufügen — NFS.

Füllen Sie die Felder aus ID und Server. Im Dropdown-Menü Export wählen Sie das benötigte Verzeichnis aus den verfügbaren und in der Liste Inhalt — die erforderlichen Datentypen. Nach dem Klick auf die Schaltfläche Add wird der Speicher an alle Knoten im Cluster angeschlossen.

Bei der Erstellung von virtuellen Maschinen und Containern auf einem der Knoten geben wir unseren storage als Speicher an.
HA konfigurieren
Zum Beispiel erstellen wir einen Container mit Ubuntu 18.04 und richten High Availability für ihn ein. Nach der Erstellung und dem Start des Containers gehen wir zu Rechenzentrum — HA — Hinzufügen. Im sich öffnenden Feld geben wir die ID der virtuellen Maschine/des Containers und die maximale Anzahl an Versuchen für Neustarts und Migrationen zwischen den Knoten an.
Wenn diese Anzahl überschritten wird, markiert der Hypervisor die VM als fehlerhaft und versetzt sie in den Zustand Fehler, wonach er keine weiteren Aktionen mit ihr ausführt.

Nach dem Klicken auf die Schaltfläche Add das Dienstprogramm ha-manager benachrichtigt alle Knoten im Cluster, dass die VM mit der angegebenen ID nun gesteuert wird und im Falle eines Ausfalls auf einem anderen Knoten neu gestartet werden muss.

Wir simulieren einen Fehler
Um zu beobachten, wie der Failover-Mechanismus funktioniert, schalten wir node1 unerwartet vom Strom ab. Wir schauen von einem anderen Knoten aus, was mit dem Cluster passiert. Wir sehen, dass das System den Ausfall registriert hat.

Die Funktion des HA-Mechanismus bedeutet nicht, dass die VM ununterbrochen verfügbar ist. Sobald der Knoten „ausfällt“, wird die Arbeit der VM vorübergehend gestoppt, bis sie automatisch auf einem anderen Knoten neu gestartet wird.
Und hier beginnt die „Magie“ – der Cluster hat automatisch einen Knoten zur Ausführung unserer VM neu zugewiesen und innerhalb von 120 Sekunden wurde der Betrieb automatisch wiederhergestellt.

Wir schalten node2 vom Strom ab. Mal sehen, ob der Cluster standhält und ob die VM automatisch in den Betriebszustand zurückkehrt.

Leider sehen wir, dass wir ein Problem haben, da auf dem einzigen verbleibenden, aktiven Knoten kein Quorum mehr vorhanden ist, was die HA-Funktionalität automatisch deaktiviert. Wir geben im Terminal einen Befehl zur erzwungenen Quorum-Wiederherstellung ein.
pvecm erwartete 1 
Nach 2 Minuten hat der HA-Mechanismus korrekt gearbeitet und, da node2 nicht gefunden wurde, unsere VM auf node3 gestartet.

Nachdem wir node1 und node2 wieder aktiviert haben, wurde der Betrieb des Clusters vollständig wiederhergestellt. Bitte beachten Sie, dass die VM von node1 nicht automatisch migriert, dies aber manuell durchgeführt werden kann.
Zusammenfassung
Wir haben Ihnen erklärt, wie der Cluster-Mechanismus in Proxmox funktioniert und gezeigt, wie HA für virtuelle Maschinen und Container konfiguriert wird. Die richtige Verwendung von Clustering und HA erhöht die Zuverlässigkeit der Infrastruktur erheblich und sorgt für eine reibungslose Wiederherstellung nach Ausfällen.
Bevor Sie einen Cluster erstellen, sollten Sie sofort planen, wofür er verwendet werden soll und wie sehr er in Zukunft skalierbar sein muss. Außerdem sollten Sie die Netzwerkstruktur auf ihre Bereitschaft zur Minimierung von Latenzen prüfen, damit der zukünftige Cluster ohne Ausfälle funktioniert.
Lassen Sie uns wissen – nutzen Sie die Clustering-Funktionen in Proxmox? Wir freuen uns auf Ihre Kommentare.
Frühere Artikel zum Thema Hypervisor Proxmox VE:
Quelle: habr.com
