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:
- Zuordnung der Hostdatei
- Epel Repository und Nginx installieren
- Installation und Konfiguration von Herzschrittmacher, Corosync und Pcsd
- Erstellen und Konfigurieren des Clusters
- Deaktivieren Sie STONITH und ignorieren Sie die Quorum-Richtlinie.
- Hinzufügen der Floating-IP und der Ressourcen
- Regeln zum Cluster hinzufügen
- Firewalldatei konfigurieren
- 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.
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 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.
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@
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
Überprüfen Sie anschließend den Clusterstatus.
pcs status cluster
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
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.
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
Überprüfen Sie nun noch einmal die Ressourcen und Sie sehen deren Status als’Gestartet‘ auf dem gleichen Server ‚web01‘.
pcs status resources
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
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.
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
Alle Knoten sind auf’Online‘.
Testen Sie die Corosync-Mitglieder.
corosync-cmapctl | grep members
Sie erhalten die IP-Adresse der Corosync-Mitglieder.
Überprüfen Sie die Corosync-Mitglieder, und Sie werden das Ergebnis wie unten gezeigt sehen.
pcs status corosync
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′.
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.
Zusätzlich:
Überprüfen Sie den Clusterstatus mit dem folgenden Befehl.
pcs status
Und Sie erhalten das Ergebnis wie unten gezeigt.
Die Einrichtung des Nginx-Webservers High Availability mit Pacemaker, Corosync und Pcsd auf dem CentOS 7-Server wurde erfolgreich abgeschlossen.