In diesem Tutorial führen wir Sie Schritt für Schritt durch die Erstellung eines Hochverfügbarkeitscluster-Nginx-Webservers mit Pacemaker, Corosync und Pcsd. Wir werden den Active-Passive-Cluster- oder Failover-Cluster-Nginx-Webserver mit Pacemaker auf einem CentOS 7-System erstellen.
Herzschrittmacher ist eine Open-Source-Cluster-Manager-Software, die eine maximale Hochverfügbarkeit Ihrer Dienste erreicht. Es ist ein fortschrittlicher und skalierbarer HA-Cluster-Manager, der von ClusterLabs vertrieben wird.
Corosync Cluster Engine ist ein Open-Source-Projekt, das vom OpenAIS-Projekt unter einer neuen BSD-Lizenz abgeleitet wurde. Es ist ein Gruppenkommunikationssystem mit zusätzlichen Funktionen zur Implementierung von Hochverfügbarkeit in Anwendungen.
Es gibt einige Anwendungen für die Pacemaker-Schnittstellen. PCD ist eine der Pacemaker-Befehlszeilenschnittstelle und GUI zur Verwaltung des Pacemaker. Mit dem pcsd-Befehl pcs.
können wir einen neuen Knoten zum Cluster erstellen, konfigurieren oder hinzufügenVoraussetzungen
- 2 oder mehr CentOS 7-Server
- web01 10.0.15.10
- web02 10.0.15.11
- web03 10.0.15.12
- Floating-IP-Adresse 10.0.15.15
- Root-Berechtigungen
Was wir tun werden:
- Hostdatei zuordnen
- Epel-Repository und Nginx installieren
- Installieren und konfigurieren Sie Pacemaker, Corosync und Pcsd
- Cluster erstellen und konfigurieren
- Deaktivieren Sie STONITH und ignorieren Sie die Quorum-Richtlinie
- Floating-IP und Ressourcen hinzufügen
- Regeln zum Cluster hinzufügen
- Firewalld konfigurieren
- Testen Sie die Einrichtung
Schritt 1 - Ordnen Sie die Hostdatei zu
Hinweis : Führen Sie Schritt 1–3 auf allen Servern web01, web02 und web03 aus.
Der erste Schritt, den wir tun müssen, besteht darin, 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 [email protected][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" den richtigen IP-Adressen zugeordnet sind.
Schritt 2 – Epel-Repository und Nginx installieren
In diesem Schritt installieren wir das epel-Repository und dann den Nginx-Webserver. Das EPEL- oder Extra Packages for Enterprise Linux-Repository ist für die Installation von Nginx-Paketen erforderlich.
Installieren Sie das EPEL-Repository mit dem folgenden yum-Befehl.
yum -y install epel-release
Installieren Sie nun den Nginx-Webserver aus dem EPEL-Repository.
yum -y install nginx
Ändern Sie nach Abschluss der Installation die Standardseite index.html auf jedem Server durch eine neue 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
Das EPEL-Repository und der Nginx-Webserver sind jetzt auf dem System installiert.
Schritt 3 – Installieren und konfigurieren Sie Pacemaker, Corosync und Pcsd
Pacemaker, Corosync und Pcsd sind im Standard-Systemrepository verfügbar. Daher können sie alle mit dem folgenden yum-Befehl aus dem CentOS-Repository installiert werden.
yum -y install corosync pacemaker pcs
Aktivieren Sie nach Abschluss der Installation mithilfe der folgenden systemctl-Befehle, dass alle Dienste beim Systemstart automatisch gestartet werden.
systemctl enable pcsd
systemctl enable corosync
systemctl enable pacemaker
Starten Sie nun auf allen Servern die pcsd Pacemaker Kommandozeilenschnittstelle.
systemctl start pcsd
Erstellen Sie als Nächstes ein neues Passwort für den Benutzer „hacluster“ und verwenden Sie dasselbe Passwort für alle Server. Dieser Benutzer wurde während der Softwareinstallation automatisch erstellt.
So konfigurieren Sie ein Passwort für den 'hacluster ' Benutzer.
passwd hacluster
Enter new password:
Hochverfügbarkeits-Software-Stack Pacemaker, Corosync und Pcsd sind auf dem System installiert.
Schritt 4 – Cluster erstellen und konfigurieren
Hinweis :Führen Sie die Schritte 4 bis 7 auf 'web01' aus nur.
In diesem Schritt erstellen wir einen neuen Cluster mit 3 Centos-Servern. 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 Benutzer hacluster autorisieren.
Autorisieren Sie alle Server mit dem pcs-Befehl und hacluster-Benutzer und -Passwort.
pcs cluster auth web01 web02 web03
Username: hacluster
Password: [email protected]
Jetzt ist es an der Zeit, den Cluster einzurichten. Definieren Sie den Clusternamen und alle Server, die Teil des Clusters sein werden.
pcs cluster setup --name hakase_cluster web01 web02 web03
Starten Sie nun alle Clusterdienste und aktivieren Sie diese ebenfalls.
pcs cluster start --all
pcs cluster enable --all
Überprüfen Sie als Nächstes den Clusterstatus.
pcs status cluster
Schritt 5 – Deaktivieren Sie STONITH und ignorieren Sie die Quorum-Richtlinie
Da wir das Fechtgerät nicht verwenden, werden wir den STONITH deaktivieren. STONITH oder Shoot The Other Node In The Head ist die Fechtimplementierung auf Pacemaker. 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 ignorieren Sie die Quorum-Richtlinie.
pcs property set no-quorum-policy=ignore
Überprüfen Sie die Eigenschaftsliste und stellen Sie sicher, dass stonith und die Quorum-Richtlinie deaktiviert sind.
pcs property list
Die STONITH- und Quorum-Richtlinie ist deaktiviert.
Schritt 6 – Floating-IP und Ressourcen hinzufügen
Floating IP ist die IP-Adresse, die automatisch von einem Server zu einem anderen Server im selben Rechenzentrum migriert/verschoben werden kann. Und wir haben die Floating-IP-Adresse für Pacemaker High-Availability bereits auf „10.0.15.15“ festgelegt. Jetzt wollen wir zwei Ressourcen hinzufügen, die Floating-IP-Adressressource mit dem Namen „virtual_ip“ und eine neue Ressource für den Nginx-Webserver namens „webserver“.
Fügen Sie die neue Ressourcen-Floating-IP-Adresse „virtual_ip“ mit dem pcs-Befehl wie unten gezeigt hinzu.
pcs resource create virtual_ip ocf:heartbeat:IPaddr2 ip=10.0.15.15 cidr_netmask=32 op monitor interval=30s
Fügen Sie als Nächstes 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 Floating IP und Nginx-Webserver wurden hinzugefügt.
Schritt 7 – Hinzufügen von Einschränkungsregeln zum Cluster
In diesem Schritt richten wir Hochverfügbarkeitsregeln und Ressourcenbeschränkungen mit der pcs-Befehlszeilenschnittstelle ein.
Legen Sie die Sortierungsbeschränkung für Webserver- und virtual_ip-Ressourcen mit der Bewertung „INFINITY“ fest. Richten Sie außerdem den Webserver und die virtual_ip-Ressourcen auf allen Serverknoten gleich ein.
pcs constraint colocation add webserver virtual_ip INFINITY
Legen Sie die Ressourcen „virtual_ip“ und „webserver“ immer auf denselben Knotenservern fest.
pcs constraint order virtual_ip then the webserver
Stoppen Sie als Nächstes den Cluster und starten Sie ihn erneut.
pcs cluster stop --all
pcs cluster start --all
Überprüfen Sie jetzt noch einmal die Ressourcen und Sie sehen ihren Status als "Gestartet" auf demselben Server "web01".
pcs status resources
virtual_ip und Webserver-Ressourcen wurden auf demselben Server/Knoten „web01“ gestartet.
Schritt 8 - Konfigurieren Sie Firewalld
Der HA-Cluster läuft unter der Firewall-Konfiguration firewalld - installieren Sie es, wenn Sie das Paket nicht haben.
yum -y install firewalld
Starten Sie firewalld und aktivieren Sie es so, dass es jedes Mal beim Systemstart automatisch ausgeführt wird, indem Sie die folgenden systemctl-Befehle verwenden.
systemctl start firewalld
systemctl enable firewalld
Fügen Sie als Nächstes neue Dienste mit Firewall-cmd-Befehlen zur Firewall hinzu – fügen Sie Hochverfügbarkeitsdienste, 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 ein Dienst mit HTTP und https auf der Liste steht.
Schritt 9 – Testen
In diesem Schritt führen wir einige Tests für den Cluster durch. 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, indem Sie auf die Floating-IP-Adresse zugreifen.
Testen Sie den Knotenstatus mit dem folgenden Befehl.
pcs status nodes
Alle Knoten sind '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 sehen das Ergebnis wie unten gezeigt.
pcs status corosync
Und schließlich überprüfen Sie die Hochverfügbarkeit des Webservers. Öffnen Sie Ihren Webbrowser und geben Sie die Floating-IP-Adresse „10.0.15.15“ ein.
Sie sehen die Webseite vom 'web01'-Server.
Stoppen Sie als Nächstes den Cluster auf dem Server „web01“ mit dem folgenden Befehl.
pcs cluster stop web01
Und überprüfen Sie die Seite erneut, und Sie erhalten die Seite wie unten vom 'web02'-Server.
Zusätzlich:
Überprüfen Sie den Clusterstatus mit dem folgenden Befehl.
pcs status
Und Sie erhalten das unten gezeigte Ergebnis.
Die Einrichtung von Nginx Webserver High Availability mit Pacemaker, Corosync und Pcsd auf dem CentOS 7-Server wurde erfolgreich abgeschlossen.