Clustering in Proxmox VE



In früheren Artikeln haben wir darüber gesprochen, was Proxmox VE ist und wie es funktioniert. Heute werden wir darüber sprechen, wie Sie die Clustering-Funktion verwenden können, und zeigen, welche Vorteile sie bietet.

Was ist ein Cluster und warum wird er benötigt? Ein Cluster (aus dem englischen Cluster) ist eine Gruppe von Servern, die über Hochgeschwindigkeitskommunikationskanäle verbunden sind und den Benutzer als Ganzes arbeiten und repräsentieren. Es gibt verschiedene grundlegende Szenarien für die Verwendung eines Clusters:

  • Bereitstellung von Fehlertoleranz (Hochverfügbarkeit).
  • Lastausgleich ( Lastausgleich ).
  • Erhöhte Produktivität (hohe Leistung).
  • Durchführen von Distributed Computing

Jedes Szenario stellt seine eigenen Anforderungen an Clusterkomponenten. Beispielsweise ist für einen Cluster, der verteiltes Rechnen ausführt, die Hauptanforderung eine hohe Geschwindigkeit von Gleitkommaoperationen und eine geringe Latenz des Netzwerks. Solche Cluster werden häufig zu Forschungszwecken verwendet.

Da wir das Thema verteiltes Rechnen angesprochen haben, möchte ich darauf hinweisen, dass es immer noch so etwas wie ein Grid-System gibt(aus dem englischen. Gitter - Gitter, Netzwerk). Verwechseln Sie trotz der allgemeinen Ähnlichkeit nicht das Rastersystem und den Cluster. Grid ist kein Cluster im üblichen Sinne. Im Gegensatz zum Cluster sind die im Raster enthaltenen Knoten meist heterogen und zeichnen sich durch geringe Verfügbarkeit aus. Dieser Ansatz vereinfacht die Lösung verteilter Computerprobleme, ermöglicht jedoch nicht das Erstellen eines einzelnen Ganzen aus Knoten.
Ein markantes Beispiel für ein Grid-System ist die beliebte Computerplattform BOINC (Berkeley Open Infrastructure for Network Computing). Diese Plattform wurde ursprünglich für das SETI @ home-Projekt (Suche nach außerirdischer Intelligenz zu Hause) erstellt, das sich mit dem Problem der Suche nach außerirdischer Intelligenz durch Analyse von Funksignalen befasst.
Wie es funktioniert
, , , - ( SETI@home ). SETI. , .

Nachdem wir ein klares Verständnis dafür haben, was ein Cluster ist, empfehlen wir zu überlegen, wie er erstellt und bereitgestellt werden kann. Wir werden das Open Source-Virtualisierungssystem Proxmox VE verwenden .

Bevor Sie mit der Erstellung eines Clusters beginnen, ist es besonders wichtig, die Einschränkungen und Systemanforderungen von Proxmox genau zu verstehen:

  • Die maximale Anzahl von Knoten in einem Cluster beträgt 32 .
  • Alle Knoten müssen dieselbe Version von Proxmox haben (es gibt Ausnahmen, die jedoch nicht für die Produktion empfohlen werden).
  • Wenn in Zukunft die Hochverfügbarkeitsfunktionalität verwendet werden soll, muss der Cluster mindestens 3 Knoten haben .
  • Damit die Knoten miteinander kommunizieren können, müssen die Ports UDP / 5404 , UDP / 5405 für Corosync und TCP / 22 für SSH geöffnet sein .
  • Die Netzwerkverzögerung zwischen Knoten sollte 2 ms nicht überschreiten .

Clustererstellung


Wichtig! Die folgende Konfiguration ist eine Testkonfiguration. Lesen Sie unbedingt die offizielle Proxmox VE- Dokumentation .

Um den Testcluster zu starten, haben wir drei Server mit dem installierten Proxmox-Hypervisor mit derselben Konfiguration (2 Kerne, 2 GB RAM) verwendet.
Wenn Sie wissen möchten, wie Proxmox installiert wird, empfehlen wir Ihnen, unseren vorherigen Artikel zu lesen - Die Magie der Virtualisierung: Ein Einführungskurs in Proxmox VE .
Nach der Installation des Betriebssystems wird zunächst ein einzelner Server im Standalone-Modus ausgeführt .


Erstellen Sie einen Cluster, indem Sie im entsprechenden Abschnitt auf die Schaltfläche Cluster erstellen klicken .


Wir benennen den zukünftigen Cluster und wählen die aktive Netzwerkverbindung aus.


Klicken Sie auf die Schaltfläche Erstellen. Der Server generiert einen 2048-Bit-Schlüssel und schreibt ihn zusammen mit den Parametern des neuen Clusters in die Konfigurationsdateien.


Die Aufschrift TASK OK zeigt einen erfolgreichen Vorgang an. Wenn man sich nun die allgemeinen Informationen zum System ansieht, ist klar, dass der Server in den Cluster-Modus gewechselt ist. Bisher besteht der Cluster nur aus einem Knoten, obwohl er nicht über die Funktionen verfügt, für die der Cluster benötigt wird.


Beitritt zu einem Cluster


Bevor Sie eine Verbindung zum erstellten Cluster herstellen, müssen Sie Informationen abrufen, um die Verbindung herzustellen. Gehen Sie dazu zum Abschnitt Cluster und klicken Sie auf die Schaltfläche Join Information .


In dem sich öffnenden Fenster interessieren wir uns für den Inhalt des gleichnamigen Feldes. Es muss kopiert werden.


Hier werden alle notwendigen Verbindungsparameter verschlüsselt: Serveradresse für Verbindung und Fingerabdruck. Wir übergeben an den Server, der in einem Cluster enthalten sein muss. Klicken Sie auf die Schaltfläche Cluster beitreten und fügen Sie im geöffneten Fenster den kopierten Inhalt ein.


Die Felder Peer-Adresse und Fingerabdruck werden automatisch ausgefüllt. Geben Sie das Root-Passwort von Knoten Nummer 1 ein, wählen Sie die Netzwerkverbindung aus und klicken Sie auf die Schaltfläche Verbinden .


Wenn Sie einem Cluster beitreten, wird die GUI-Webseite möglicherweise nicht mehr aktualisiert. Dies ist normal, laden Sie einfach die Seite neu. Genauso fügen wir einen weiteren Knoten hinzu und erhalten als Ergebnis einen vollwertigen Cluster von 3 Arbeitsknoten.


Jetzt können wir alle Clusterknoten von einer GUI aus steuern.


Hochverfügbarkeitsorganisation


Proxmox out of the box unterstützt die HA-Organisationsfunktionen sowohl für virtuelle Maschinen als auch für LXC-Container. Das Dienstprogramm ha-manager erkennt und verarbeitet Fehler und Ausfälle, indem es ein Failover von einem ausgefallenen auf einen funktionierenden Knoten durchführt. Damit der Mechanismus ordnungsgemäß funktioniert, müssen die virtuellen Maschinen und Container über einen gemeinsamen Dateispeicher verfügen.

Nachdem die Hochverfügbarkeitsfunktion aktiviert wurde, überwacht der ha-manager-Software-Stack kontinuierlich den Status der virtuellen Maschine oder des virtuellen Containers und interagiert asynchron mit anderen Knoten im Cluster.

Gemeinsamen Speicher anhängen


Beispielsweise haben wir unter 192.168.88.18 einen kleinen NFS-Dateispeicher bereitgestellt. Damit alle Knoten des Clusters es verwenden können, müssen Sie die folgenden Manipulationen durchführen.

Wir wählen im Menü der Weboberfläche Datacenter - Storage - Add - NFS .


Füllen Sie die Felder ID und Server aus . Wählen Sie in der Dropdown-Liste Exportieren das gewünschte Verzeichnis aus den verfügbaren und in der Inhaltsliste die erforderlichen Datentypen aus. Nach dem Klicken auf die Schaltfläche Hinzufügen wird der Speicher mit allen Knoten des Clusters verbunden.


Beim Erstellen von virtuellen Maschinen und Containern auf einem der Knoten geben wir unseren Speicher als Speicher an.

Passen Sie HA an


Erstellen Sie beispielsweise einen Container mit Ubuntu 18.04 und konfigurieren Sie die Hochverfügbarkeit dafür. Wechseln Sie nach dem Erstellen und Starten des Containers zum Abschnitt Datacenter - HA - Add . Geben Sie im daraufhin angezeigten Feld die ID der virtuellen Maschine / des virtuellen Containers und die maximale Anzahl von Versuchen an, neu zu starten und zwischen Knoten zu wechseln.
Wenn dieser Betrag überschritten wird, markiert der Hypervisor die VM als fehlgeschlagen und versetzt sie in den Fehlerstatus. Danach werden keine Aktionen mehr mit ihr ausgeführt.

Nach dem Klicken auf die Schaltfläche Hinzufügen benachrichtigt das Dienstprogramm ha-manager alle Clusterknoten, dass die VM mit der angegebenen ID jetzt überwacht wird. Wenn sie ausfällt, muss sie auf einem anderen Knoten neu gestartet werden.


Machen Sie einen Absturz


Um zu sehen, wie der Schaltmechanismus funktioniert, zahlen wir die Stromversorgung von Knoten 1 ungewöhnlich aus. Wir schauen von einem anderen Knoten aus, was mit dem Cluster passiert. Wir sehen, dass das System einen Fehler aufgezeichnet hat.

Der Betrieb des HA-Mechanismus bedeutet nicht den fortgesetzten Betrieb der VM. Sobald der Knoten "gefallen" ist, wird der VM-Betrieb vorübergehend gestoppt, bis der automatische Neustart auf einem anderen Knoten erfolgt.
Und hier beginnt „Magie“ - der Cluster hat den Knoten automatisch neu zugewiesen, um unsere VM auszuführen, und innerhalb von 120 Sekunden wurde die Arbeit automatisch wiederhergestellt.


Wir löschen Node2 auf Ernährung. Mal sehen, ob der Cluster standhalten kann und die VM automatisch in den Arbeitszustand zurückkehrt.


Wie wir sehen, hatten wir leider ein Problem mit der Tatsache, dass der einzige überlebende Knoten kein Quorum mehr hat, wodurch HA automatisch deaktiviert wird. Wir geben den Befehl, die Quorum-Installation in der Konsole zu erzwingen.

pvecm expected 1


Nach 2 Minuten funktionierte der HA-Mechanismus ordnungsgemäß und fand Knoten2 nicht. Starten Sie unsere VM auf Knoten3.


Sobald wir Knoten1 und Knoten2 wieder eingeschaltet haben, wurde der Cluster vollständig wiederhergestellt. Beachten Sie, dass die VM nicht zurück zu Knoten1 migriert wird, dies kann jedoch manuell erfolgen.

Zusammenfassen


Wir haben Ihnen erklärt, wie der Clustering-Mechanismus in Proxmox funktioniert, und gezeigt, wie HA für virtuelle Maschinen und Container konfiguriert ist. Die ordnungsgemäße Verwendung von Clustering und HA verbessert die Zuverlässigkeit der Infrastruktur erheblich und bietet auch eine Notfallwiederherstellung.

Bevor Sie einen Cluster erstellen, müssen Sie sofort planen, für welche Zwecke er verwendet wird und wie viel er in Zukunft skaliert werden muss. Sie müssen auch die Netzwerkinfrastruktur mit minimalen Verzögerungen auf Verfügbarkeit überprüfen, damit der zukünftige Cluster fehlerfrei funktioniert.

Sagen Sie uns - verwenden Sie Clustering-Funktionen in Proxmox? Wir sehen uns in den Kommentaren.

Frühere Artikel zum Proxmox VE-Hypervisor:


All Articles