Wie man Nginx High Availability mit Pacemaker und Corosync auf CentOS 7 einrichtet

In diesem Tutorial werden wir Sie Schritt für Schritt anleiten, wie Sie einen High Availability Cluster Nginx Web Server mit Pacemaker, Corosync und Pcsd erstellen. Wir erstellen den Active-Passive Cluster oder Failover-Cluster Nginx Webserver mit Pacemaker auf einem CentOS 7 System.

Pacemaker ist eine Open Source Cluster Manager Software, die eine maximale Hochverfügbarkeit Ihrer Dienste erreicht. Es handelt sich um einen fortschrittlichen und skalierbaren HA-Cluster-Manager, der von ClusterLabs vertrieben wird.

Corosync Cluster Engine ist ein Open-Source-Projekt, das aus dem OpenAIS-Projekt unter der neuen BSD-Lizenz abgeleitet wurde. Es handelt sich um ein Gruppenkommunikationssystem mit zusätzlichen Funktionen zur Implementierung von Hochverfügbarkeit in Anwendungen.

Es gibt einige Anwendungen für die Schnittstellen des Herzschrittmachers. Pcsd ist eine der Befehlszeilenschnittstellen und GUIs von Pacemaker zur Verwaltung des Pacemaker. Wir können einen neuen Knoten zum Cluster mit dem Befehl pcsd erstellen, konfigurieren oder hinzufügen.

Voraussetzungen

  • 2 oder mehr CentOS 7 Server
    • web01 10.0.15.10.10
    • web02 10.0.15.11.11
    • web03 10.0.15.12.12
  • Schwimmende IP-Adresse 10.0.15.15.15
  • Root-Privilegien

Was wir tun werden:

  1. Zuordnung der Hostdatei
  2. Epel Repository und Nginx installieren
  3. Installation und Konfiguration von Herzschrittmacher, Corosync und Pcsd
  4. Erstellen und Konfigurieren des Clusters
  5. Deaktivieren Sie STONITH und ignorieren Sie die Quorum-Richtlinie.
  6. Hinzufügen der Floating-IP und der Ressourcen
  7. Regeln zum Cluster hinzufügen
  8. Firewalldatei konfigurieren
  9. Testen Sie das Setup

Schritt 1 – Zuordnung der Hostdatei

Hinweis: Führen Sie die Schritte 1 – 3 auf allen Servern web01, web02 und web03 aus.

Der erste Schritt, den wir tun müssen, ist, die Hostdatei auf jedem Server zu bearbeiten, um den Hostnamen aller Server zuzuordnen. Wir haben ‚web01‘, ‚web02‘ und ‚web03‘ Server, melden Sie sich bei jedem Server mit dem ssh-Konto an.

ssh root@web[01,02,03]

Bearbeiten Sie die Datei ‚/etc/hosts‘ mit vim.

vim /etc/hosts

Fügen Sie dort die folgende Konfiguration ein.

10.0.15.10      web01
10.0.15.11      web02
10.0.15.12      web03

Speichern und beenden.

Testen Sie nun die Mapping-Konfiguration der Hosts.

ping -c 3 web01
ping -c 3 web02
ping -c 3 web03

Stellen Sie sicher, dass ‚web01‘, ‚web02‘ und ‚web03‘ auf korrekte IP-Adressen abgebildet sind.

Serververbindung mit Ping überprüfen

Schritt 2 – Epel Repository und Nginx installieren

In diesem Schritt werden wir das epel-Repository und dann den Nginx-Webserver installieren. EPEL oder Extra Packages for Enterprise Linux Repository wird für die Installation von Nginx-Paketen benötigt.

Installieren Sie das EPEL Repository mit dem folgenden Befehl yum.

yum -y install epel-release

Installieren Sie nun den Nginx-Webserver aus dem EPEL-Repository.

yum -y install nginx

Nachdem die Installation abgeschlossen ist, ändern Sie die Standardseite index.html auf jedem Server mit einer neuen Seite.

#Run Command on 'web01'
echo '<h1>web01 - hakase-labs</h1>' > /usr/share/nginx/html/index.html

#Run Command on ‚web02‘
echo ‚<h1>web02 – hakase-labs</h1>‘ > /usr/share/nginx/html/index.html

#Run Command on ‚web03‘
echo ‚<h1>web03 – hakase-labs</h1>‘ > /usr/share/nginx/html/index.html

epel repo und nginx installieren

EPEL Repository und Nginx Webserver sind nun auf dem System installiert.

Schritt 3 – Installation und Konfiguration von Pacemaker, Corosync und Pcsd

Pacemaker, Corosync und Pcsd sind im Standard-System-Repository verfügbar. So können sie alle aus dem CentOS-Repository mit dem folgenden Befehl yum installiert werden.

yum -y install corosync pacemaker pcs

Nachdem die Installation abgeschlossen ist, aktivieren Sie alle Dienste so, dass sie beim Systemstart mit den folgenden systemctl-Befehlen automatisch gestartet werden.

systemctl enable pcsd
systemctl enable corosync
systemctl enable pacemaker

Starten Sie nun die Befehlszeilenschnittstelle von pcsd Pacemaker auf allen Servern.

systemctl start pcsd

Erstellen Sie anschließend ein neues Passwort für den Benutzer „hacluster“ und verwenden Sie das gleiche Passwort für alle Server. Dieser Benutzer wurde bei der Softwareinstallation automatisch angelegt.

So konfigurieren Sie ein Passwort für den Benutzer ‚hacluster‚.

passwd hacluster
Enter new password:

Hochverfügbarkeits-Software-Stapel Pacemaker, Corosync und Pcsd sind auf dem System installiert.

Installation und Konfiguration von Herzschrittmacher, Corosync und Pcsd

Schritt 4 – Erstellen und Konfigurieren des Clusters

Hinweis: Führen Sie die Schritte 4 – 7 nur mit ‚web01‘ aus.

In diesem Schritt werden wir einen neuen Cluster mit 3 centos Servern erstellen. Konfigurieren Sie dann die Floating IP-Adresse und fügen Sie neue Nginx-Ressourcen hinzu.

Um den Cluster zu erstellen, müssen wir alle Server mit dem Befehl pcs und dem hacluster-Benutzer autorisieren.

Autorisieren Sie alle Server mit dem Befehl pcs und dem hacluster-Benutzer und Passwort.

pcs cluster auth web01 web02 web03
Username: hacluster
Password: aqwe123@

Erstellen und Konfigurieren des Clusters

Jetzt ist es an der Zeit, den Cluster einzurichten. Definieren Sie den Cluster-Namen und alle Server, die Teil des Clusters sein sollen.

pcs cluster setup --name hakase_cluster web01 web02 web03

Starten Sie nun alle Clusterdienste und aktivieren Sie sie zusätzlich.

pcs cluster start --all
pcs cluster enable --all

Starten Sie den Cluster

Überprüfen Sie anschließend den Clusterstatus.

pcs status cluster

Überprüfen des Clusterstatus

Schritt 5 – Deaktivieren Sie STONITH und ignorieren Sie die Quorum-Richtlinie.

Da wir das Fechtgerät nicht benutzen, werden wir den STONITH deaktivieren. STONITH oder Shoot The Other Node In The Head ist die Zaunimplementierung auf dem Herzschrittmacher. Wenn Sie in der Produktion sind, ist es besser, STONITH zu aktivieren.

Deaktivieren Sie STONITH mit dem folgenden pcs-Befehl.

pcs property set stonith-enabled=false

Als nächstes, für die Quorum-Richtlinie, ignorieren Sie sie.

pcs property set no-quorum-policy=ignore

Überprüfen Sie die Eigentumsliste und stellen Sie sicher, dass Stonith und die Quorum-Richtlinie deaktiviert sind.

pcs property list

Deaktivieren Sie STONITH und ignorieren Sie die Quorum-Richtlinie.

Die STONITH- und Quorum-Richtlinie ist deaktiviert.

Schritt 6 – Hinzufügen der Floating-IP und der Ressourcen

Floating IP ist die IP-Adresse, die automatisch von einem Server auf einen anderen Server im selben Rechenzentrum migriert bzw. verschoben werden kann. Und wir haben bereits die Floating IP-Adresse für die Hochverfügbarkeit des Herzschrittmachers auf’10.0.15.15.15′ definiert. Nun wollen wir zwei Ressourcen hinzufügen, die Floating IP address resource mit dem Namen’virtual_ip‘ und eine neue Ressource für den Nginx-Webserver namens’webserver‘.

Fügen Sie die neue variable IP-Adresse „virtual_ip“ mit dem Befehl pcs hinzu, wie unten gezeigt.

pcs resource create virtual_ip ocf:heartbeat:IPaddr2 ip=10.0.15.15 cidr_netmask=32 op monitor interval=30s

Als nächstes fügen Sie eine neue Ressource für den Nginx’Webserver‘ hinzu.

pcs resource create webserver ocf:heartbeat:nginx configfile=/etc/nginx/nginx.conf op monitor timeout="5s" interval="5s"

Stellen Sie sicher, dass Sie kein Fehlerergebnis erhalten haben, und überprüfen Sie dann die verfügbaren Ressourcen.

pcs status resources

Sie sehen zwei Ressourcen ‚virtual_ip‘ und einen ‚Webserver‘. Neue Ressourcen für den Floating IP- und Nginx-Webserver wurden hinzugefügt.

Hinzufügen der Floating-IP und der Ressourcen

Schritt 7 – Hinzufügen von Einschränkungsregeln zum Cluster

In diesem Schritt werden wir Hochverfügbarkeitsregeln einrichten und Ressourcenbeschränkungen mit der Kommandozeilenschnittstelle von pcs einrichten.

Legen Sie die Kollationsbeschränkung für Webserver- und virtual_ip-Ressourcen mit der Punktzahl’INFINITY‘ fest. Richten Sie auch die Webserver- und virtual_ip-Ressourcen auf allen Serverknoten gleich ein.

pcs constraint colocation add webserver virtual_ip INFINITY

Setzen Sie die Ressourcen’virtual_ip‘ und’webserver‘ immer auf denselben Node-Servern.

pcs constraint order virtual_ip then the webserver

Als nächstes stoppen Sie den Cluster und starten ihn dann erneut.

pcs cluster stop --all
pcs cluster start --all

Einschränkungsregeln zum Cluster hinzufügen

Überprüfen Sie nun noch einmal die Ressourcen und Sie sehen deren Status als’Gestartet‘ auf dem gleichen Server ‚web01‘.

pcs status resources

Überprüfen des Stückstatus

virtual_ip und Webserver-Ressourcen wurden auf dem gleichen Server/Knoten’web01′ gestartet.

Schritt 8 – Firewalldaten konfigurieren

Der HA-Cluster läuft unter der Firewall-Konfiguration firewalld – installieren Sie ihn, wenn Sie das Paket nicht haben.

yum -y install firewalld

Starten Sie die Firewall und aktivieren Sie sie so, dass sie bei jedem Systemstart automatisch mit folgenden systemctl-Befehlen läuft.

systemctl start firewalld
systemctl enable firewalld

Als nächstes fügen Sie der Firewall mit den Befehlen firewall-cmd neue Dienste hinzu – fügen Sie hochverfügbare Dienste, HTTP- und HTTPS-Dienste für Nginx hinzu.

firewall-cmd --permanent --add-service=high-availability
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https

Firewalldatei konfigurieren

Laden Sie die Firewall-Konfiguration neu und überprüfen Sie alle Dienste.

firewall-cmd --reload
firewall-cmd --list-all

Stellen Sie sicher, dass ha service mit HTTP und https auf der Liste steht.

Firewall neu laden und Firewall-Regelsatz überprüfen

Schritt 9 – Prüfung

In diesem Schritt werden wir einige Tests für den Cluster durchführen. Testen Sie den Knotenstatus („Online“ oder“Offline“), testen Sie die Corosync-Mitglieder und den Status und testen Sie dann die Hochverfügbarkeit des Nginx-Webservers durch Zugriff auf die Floating IP-Adresse.

Testen Sie den Status des Knotens mit dem folgenden Befehl.

pcs status nodes

Testen des Setups

Alle Knoten sind auf’Online‘.

Testen Sie die Corosync-Mitglieder.

corosync-cmapctl | grep members

Sie erhalten die IP-Adresse der Corosync-Mitglieder.

IP-Adressen von Corosync-Mitgliedern

Überprüfen Sie die Corosync-Mitglieder, und Sie werden das Ergebnis wie unten gezeigt sehen.

pcs status corosync

Corosync-Status

Und schließlich, überprüfen Sie den Webserver Hochverfügbarkeit. Öffnen Sie Ihren Webbrowser und geben Sie die Floating IP Adresse’10.0.15.15.15′ ein.

Sie sehen die Webseite vom Server’web01′.

Website web01

Als nächstes stoppen Sie den Cluster auf dem ‚web01‘ Server mit dem folgenden Befehl.

pcs cluster stop web01

Und überprüfen Sie die Seite noch einmal, und Sie erhalten die Seite vom’web02′-Server wie unten beschrieben.

website web02

Zusätzlich:

Überprüfen Sie den Clusterstatus mit dem folgenden Befehl.

pcs status

Und Sie erhalten das Ergebnis wie unten gezeigt.

Überprüfen des Stückstatus

Die Einrichtung des Nginx-Webservers High Availability mit Pacemaker, Corosync und Pcsd auf dem CentOS 7-Server wurde erfolgreich abgeschlossen.

Referenz

Das könnte Dich auch interessieren …