Konfigurieren und Verwalten von Hochverfügbarkeit / Clustering unter Linux

Hohe Verfügbarkeit (ER HAT) bezieht sich einfach auf die Qualität eines Systems, das über einen langen Zeitraum ohne Fehler kontinuierlich arbeitet. HA-Lösungen können mithilfe von Hardware und / oder Software implementiert werden. Eine der gängigen Lösungen für die Implementierung von HA ist das Clustering.

Beim Rechnen besteht ein Cluster aus zwei oder mehr Computern (allgemein bekannt als Knoten oder Mitglieder) die zusammenarbeiten, um eine Aufgabe auszuführen. In einem solchen Setup stellt nur ein Knoten dem Dienst die sekundären Knoten zur Verfügung, die bei einem Ausfall die Kontrolle übernehmen.

Cluster lassen sich in vier Haupttypen einteilen:

  • Lager: Bereitstellung eines konsistenten Dateisystemabbilds für alle Server in einem Cluster, sodass die Server gleichzeitig in ein einzelnes freigegebenes Dateisystem lesen und schreiben können.
  • Hohe Verfügbarkeit: Beseitigen Sie einzelne Fehlerquellen und führen Sie ein Failover von Diensten von einem Clusterknoten zu einem anderen durch, falls ein Knoten nicht mehr funktioniert.
  • Lastverteilung: Versenden von Netzwerkdienstanforderungen an mehrere Clusterknoten, um die Anforderungslast auf die Clusterknoten zu verteilen.
  • Hochleistung: Führen Sie eine parallele oder gleichzeitige Verarbeitung durch, um die Leistung von Anwendungen zu verbessern.

Eine weitere weit verbreitete Lösung zur Bereitstellung ER HAT ist die Replikation (insbesondere Datenreplikationen). Die Replikation ist der Prozess, mit dem eine oder mehrere (sekundäre) Datenbanken mit einer einzelnen primären (oder Master-) Datenbank synchronisiert werden können.

Zum Einrichten eines Clusters benötigen wir mindestens zwei Server. In diesem Handbuch werden zwei Linux-Server verwendet:

  • Knoten 1: 192.168.10.10
  • Knoten 2: 192.168.10.11


In diesem Artikel werden die Grundlagen zum Bereitstellen, Konfigurieren und Verwalten von Hochverfügbarkeit / Clustering in Ubuntu 16.04 / 18.04 und CentOS 7 demonstriert. Wir werden zeigen, wie Sie dem Cluster einen Nginx-HTTP-Dienst hinzufügen.

Konfigurieren der lokalen DNS-Einstellungen auf jedem Server

Damit die beiden Server miteinander kommunizieren können, müssen Sie die entsprechenden lokalen DNS-Einstellungen in der Konfiguration konfigurieren / etc / hosts Datei auf beiden Servern.

Öffnen und bearbeiten Sie die Datei mit Ihrem bevorzugten Befehlszeileneditor.

$ sudo vim /etc/hosts  

Fügen Sie die folgenden Einträge mit den tatsächlichen IP-Adressen Ihrer Server hinzu.

192.168.10.10  node1.example.com
192.168.10.11   node2.example.com

Speichern Sie die Änderungen und schließen Sie die Datei.

Installieren von Nginx Web Server

Installieren Sie nun den Nginx-Webserver mit den folgenden Befehlen.

$ sudo apt install nginx  [On Ubuntu]
$ sudo yum install epel-release && sudo yum install nginx [On CentOS 7]

Starten Sie nach Abschluss der Installation den Nginx-Dienst zunächst und aktivieren Sie ihn beim Start automatisch. Starten Sie dann mit dem Befehl systemctl, ob er betriebsbereit ist.
Unter Ubuntu sollte der Dienst sofort nach Abschluss der Paketvorkonfiguration automatisch gestartet werden. Sie können ihn einfach aktivieren.

$ sudo systemctl enable nginx
$ sudo systemctl start nginx
$ sudo systemctl status nginx

Nach dem Starten des Nginx-Dienstes müssen benutzerdefinierte Webseiten zum Identifizieren und Testen von Vorgängen auf beiden Servern erstellt werden. Wir werden den Inhalt der Standard-Nginx-Indexseite wie gezeigt ändern.

$ echo "This is the default page for node1.example.com" | sudo tee /usr/share/nginx/html/index.html    #VPS1
$ echo "This is the default page for node2.example.com" | sudo tee /usr/share/nginx/html/index.html     #VPS2

Installieren und Konfigurieren von Corosync und Pacemaker

Als nächstes müssen wir installieren Schrittmacher, Corosync, und Stck auf jedem Knoten wie folgt.

$ sudo apt install corosync pacemaker pcs  #Ubuntu 
$ sudo yum install corosync pacemaker pcs   #CentOS 

Stellen Sie nach Abschluss der Installation sicher, dass Stck Der Daemon wird auf beiden Servern ausgeführt.

$ sudo systemctl enable pcsd
$ sudo systemctl start pcsd
$ sudo systemctl status pcsd

Cluster erstellen

Während der Installation hat ein Systembenutzer angerufen “Hacluster” geschaffen. Wir müssen also die Authentifizierung einrichten, die für erforderlich ist Stck. Beginnen wir mit der Erstellung eines neuen Passworts für die “Hacluster” Benutzer, müssen wir das gleiche Passwort auf allen Servern verwenden:

$ sudo passwd hacluster
Erstellen Sie ein Cluster-Benutzerkennwort
Erstellen Sie ein Cluster-Benutzerkennwort

Führen Sie als Nächstes auf einem der Server (Knoten1) den folgenden Befehl aus, um die erforderliche Authentifizierung einzurichten Stck.

$ sudo pcs cluster auth node1.example.com node2.example.com -u hacluster -p password_here --force
Setup-Authentifizierung für PCS
Setup-Authentifizierung für PCS

Erstellen Sie nun einen Cluster und füllen Sie ihn mit einigen Knoten (der Clustername darf 15 Zeichen nicht überschreiten. In diesem Beispiel haben wir ihn verwendet Beispielcluster) auf dem Node1-Server.

$ sudo pcs cluster setup --name examplecluster node1.example.com node2.example.com 
Cluster auf Knoten1 erstellen
Cluster auf Knoten1 erstellen

Aktivieren Sie nun den Cluster beim Booten und starten Sie den Dienst.

$ sudo pcs cluster enable --all
$ sudo pcs cluster start --all
Aktivieren und starten Sie den Cluster
Aktivieren und starten Sie den Cluster

Überprüfen Sie nun mit dem folgenden Befehl, ob der Clusterdienst aktiv ist.

$ sudo pcs status
OR
$ sudo crm_mon -1
Überprüfen Sie den Clusterstatus
Überprüfen Sie den Clusterstatus

An der Ausgabe des obigen Befehls können Sie erkennen, dass eine Warnung zu Nein angezeigt wird STONITH Geräte noch die STONITH ist im Cluster weiterhin aktiviert. Darüber hinaus wurden keine Clusterressourcen / -dienste konfiguriert.

Clusteroptionen konfigurieren

Die erste Option ist das Deaktivieren STONITH (oder Schieße auf den anderen Knoten im Kopf), die Zaunimplementierung am Schrittmacher.

Diese Komponente schützt Ihre Daten vor Beschädigung durch gleichzeitigen Zugriff. Für die Zwecke dieses Handbuchs werden wir es deaktivieren, da wir keine Geräte konfiguriert haben.

Ausschalten STONITHFühren Sie den folgenden Befehl aus:

$ sudo pcs property set stonith-enabled=false

Als nächstes ignorieren Sie auch die Quorum Richtlinie, indem Sie den folgenden Befehl ausführen:

$ sudo pcs property set no-quorum-policy=ignore

Führen Sie nach dem Festlegen der obigen Optionen den folgenden Befehl aus, um die Eigenschaftsliste anzuzeigen und sicherzustellen, dass die oben genannten Optionen Stonith und das Beschlussfähigkeitspolitik Sind deaktiviert.

$ sudo pcs property list
Cluster-Eigenschaften anzeigen
Cluster-Eigenschaften anzeigen

Hinzufügen eines Ressourcen- / Clusterdienstes

In diesem Abschnitt erfahren Sie, wie Sie eine Clusterressource hinzufügen. Wir werden eine Floating-IP konfigurieren, bei der es sich um die IP-Adresse handelt, die sofort von einem Server auf einen anderen innerhalb desselben Netzwerks oder Rechenzentrums verschoben werden kann. Kurz gesagt, eine schwebende IP ist ein allgemeiner technischer Begriff, der für IPs verwendet wird, die nicht streng an eine einzige Schnittstelle gebunden sind.

In diesem Fall wird es zur Unterstützung des Failovers in einem Hochverfügbarkeitscluster verwendet. Beachten Sie, dass Floating-IPs nicht nur für Failover-Situationen geeignet sind, sondern auch einige andere Anwendungsfälle haben. Wir müssen den Cluster so konfigurieren, dass nur das aktive Mitglied des Clusters zu einem bestimmten Zeitpunkt die schwebende IP „besitzt“ oder darauf reagiert.

Wir werden zwei Clusterressourcen hinzufügen: die Floating-IP-Adressressource mit dem Namen „float_ip“Und eine Ressource für den Nginx-Webserver namens”http_server”.

Beginnen Sie zunächst mit dem Hinzufügen von float_ip wie folgt. In diesem Beispiel lautet unsere Floating-IP-Adresse 192.168.10.20.

$ sudo pcs resource create floating_ip ocf:heartbeat:IPaddr2 ip=192.168.10.20 cidr_netmask=24 op monitor interval=60s

wo:

  • float_ip: ist der Name des Dienstes.
  • “Ocf: heartbeat: IPaddr2”: teilt Pacemaker mit, welches Skript verwendet werden soll, in diesem Fall IPaddr2, in welchem ​​Namespace es sich befindet (Schrittmacher) und welchem ​​Standard es entspricht.
  • auf Monitorintervall = 60s”: Weist Pacemaker an, den Zustand dieses Dienstes alle Minuten zu überprüfen, indem die Überwachungsaktion des Agenten aufgerufen wird.

Fügen Sie dann die zweite Ressource mit dem Namen hinzu http_server. Hier ist der Ressourcenagent des Dienstes ocf: Herzschlag: Nginx.

$ sudo pcs resource create http_server ocf:heartbeat:nginx configfile="/etc/nginx/nginx.conf" op monitor timeout="20s" interval="60s"

Geben Sie nach dem Hinzufügen der Clusterdienste den folgenden Befehl aus, um den Status der Ressourcen zu überprüfen.

$ sudo pcs status resources
Überprüfen Sie die Clusterressourcen
Überprüfen Sie die Clusterressourcen

In der Ausgabe des Befehls wurden die beiden Ressourcen hinzugefügt: “Floating_ip” und “Http_server” wurden aufgelistet. Der Floating_ip-Dienst ist deaktiviert, da der Primärknoten in Betrieb ist.

Wenn auf Ihrem System eine Firewall aktiviert ist, müssen Sie den gesamten Datenverkehr zulassen Nginx und alle Hochverfügbarkeitsdienste über die Firewall für eine ordnungsgemäße Kommunikation zwischen Knoten:

-------------- CentOS 7 -------------- 
$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=high-availability     
$ sudo firewall-cmd --reload

-------------- Ubuntu -------------- 
$ sudo ufw allow http   
$ sudo ufw allow high-availability                      
$ sudo ufw reload 

Testen von Hochverfügbarkeit / Clustering

Der letzte und wichtige Schritt besteht darin, zu testen, ob unser Hochverfügbarkeits-Setup funktioniert. Öffnen Sie einen Webbrowser und navigieren Sie zur Adresse 192.168.10.20 Sie sollten die Standard-Nginx-Seite von der sehen node2.example.com wie im Screenshot gezeigt.

Testen Sie den Cluster vor dem Ausfall
Testen Sie den Cluster vor dem Ausfall

Führen Sie den folgenden Befehl aus, um den Fehler auf dem Computer zu stoppen, um einen Fehler zu simulieren node2.example.com.

$ sudo pcs cluster stop http_server

Laden Sie dann die Seite unter neu 192.168.10.20sollten Sie jetzt über die auf die Standard-Nginx-Webseite zugreifen node1.example.com.

Testcluster nach Fehler
Testcluster nach Fehler

Alternativ können Sie einen Fehler simulieren, indem Sie den Dienst anweisen, direkt zu stoppen, ohne den Cluster auf einem Knoten zu stoppen. Verwenden Sie dazu den folgenden Befehl auf einem der Knoten:

 
$ sudo crm_resource --resource http_server --force-stop 

Dann musst du rennen crm_mon Im interaktiven Modus (Standardeinstellung) sollten Sie innerhalb des Überwachungsintervalls von 2 Minuten sehen können, dass der Cluster dies bemerkt http_server fehlgeschlagen und verschieben Sie es auf einen anderen Knoten.

Damit Ihre Clusterdienste effizient ausgeführt werden können, müssen Sie möglicherweise einige Einschränkungen festlegen. Du kannst das … sehen Stck Manpage (man pcs) für eine Liste aller Verwendungsbefehle.

Weitere Informationen zu Corosync und Pacemaker finden Sie unter: https://clusterlabs.org/

Zusammenfassung

In diesem Handbuch haben wir die Grundlagen zum Bereitstellen, Konfigurieren und Verwalten von Hochverfügbarkeit / Clustering / Replikation in Ubuntu 16.04 / 18.04 und CentOS 7 gezeigt. Wir haben gezeigt, wie Sie einem Cluster einen Nginx-HTTP-Dienst hinzufügen. Wenn Sie Gedanken oder Fragen haben, verwenden Sie das unten stehende Feedback-Formular.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *