Hochverfügbarkeit · 7 min read · Dec 06, 2025

So richten Sie Nginx Hochverfügbarkeit mit Pacemaker und Corosync auf CentOS 7 ein

In diesem Tutorial führen wir Sie Schritt für Schritt durch die Erstellung eines Hochverfügbarkeitsclusters für den Nginx-Webserver mit Pacemaker, Corosync und Pcsd. Wir werden den aktiven-passiven Cluster oder Failover-Cluster Nginx-Webserver mit Pacemaker auf einem CentOS 7-System erstellen.

Pacemaker ist eine Open-Source-Cluster-Manager-Software, die 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 aus dem OpenAIS-Projekt unter der neuen BSD-Lizenz abgeleitet wurde. Es ist ein Gruppennachrichtensystem mit zusätzlichen Funktionen zur Implementierung von Hochverfügbarkeit innerhalb von Anwendungen.

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

Voraussetzungen

  • 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-Rechte

Was wir tun werden:

  1. Hostdatei zuordnen
  2. Epel-Repository und Nginx installieren
  3. Pacemaker, Corosync und Pcsd installieren und konfigurieren
  4. Cluster erstellen und konfigurieren
  5. STONITH deaktivieren und die Quorum-Politik ignorieren
  6. Die Floating-IP und Ressourcen hinzufügen
  7. Regeln zum Cluster hinzufügen
  8. Firewalld konfigurieren
  9. Die Einrichtung testen

Schritt 1 - Hostdatei zuordnen

Hinweis: Führen Sie die Schritte 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 die Hostnamen aller Server zuzuordnen. Wir haben die Server ‘web01’, ‘web02’ und ‘web03’, 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 Zuordnungs-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.

Überprüfen der Serververbindung mit Ping

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 wird benötigt, um Nginx-Pakete zu installieren.

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

Nachdem die Installation abgeschlossen ist, ändern Sie die Standardindex.html-Seite auf jedem Server in eine neue Seite.

#Befehl auf 'web01' ausführen  
echo '

web01 - hakase-labs

' > /usr/share/nginx/html/index.html #Befehl auf 'web02' ausführen echo '

web02 - hakase-labs

' > /usr/share/nginx/html/index.html #Befehl auf 'web03' ausführen echo '

web03 - hakase-labs

' > /usr/share/nginx/html/index.html

Epel-Repo und Nginx installieren

EPEL-Repository und Nginx-Webserver sind jetzt auf dem System installiert.

Schritt 3 - Pacemaker, Corosync und Pcsd installieren und konfigurieren

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

yum -y install corosync pacemaker pcs

Nachdem die Installation abgeschlossen ist, aktivieren Sie alle Dienste, damit sie beim Systemstart automatisch gestartet werden, indem Sie die folgenden systemctl-Befehle verwenden.

systemctl enable pcsd  
systemctl enable corosync  
systemctl enable pacemaker

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

systemctl start pcsd

Als Nächstes erstellen Sie ein neues Passwort für den Benutzer ‘hacluster’ und verwenden 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  
Neues Passwort eingeben:

Die Hochverfügbarkeitssoftware-Stack Pacemaker, Corosync und Pcsd ist auf dem System installiert.

Pacemaker, Corosync und Pcsd installieren und konfigurieren

Schritt 4 - Cluster erstellen und konfigurieren

Hinweis: Führen Sie die Schritte 4 - 7 nur auf ‘web01’ aus.

In diesem Schritt werden wir einen neuen Cluster mit 3 CentOS-Servern erstellen. Dann konfigurieren wir die Floating-IP-Adresse und fügen neue Nginx-Ressourcen hinzu.

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

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

pcs cluster auth web01 web02 web03  
Benutzername: hacluster  
Passwort: aqwe123@

Cluster erstellen und konfigurieren

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 Cluster-Dienste und aktivieren Sie sie ebenfalls.

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

Cluster starten

Überprüfen Sie als Nächstes den Clusterstatus.

pcs status cluster

Clusterstatus überprüfen

Schritt 5 - STONITH deaktivieren und Quorum-Politik ignorieren

Da wir das Fencing-Gerät nicht verwenden, werden wir STONITH deaktivieren. STONITH oder Shoot The Other Node In The Head ist die Fencing-Implementierung 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-Politik.

pcs property set no-quorum-policy=ignore

Überprüfen Sie die Eigenschaftenliste und stellen Sie sicher, dass STONITH und die Quorum-Politik deaktiviert sind.

pcs property list

STONITH deaktivieren und Quorum-Politik ignorieren

STONITH und die Quorum-Politik sind deaktiviert.

Schritt 6 - Floating-IP und Ressourcen hinzufügen

Die Floating-IP ist die IP-Adresse, die automatisch von einem Server auf einen anderen Server im selben Rechenzentrum migriert/bewegt werden kann. Und wir haben bereits die Floating-IP-Adresse für die Pacemaker-Hochverfügbarkeit auf ‘10.0.15.15’ definiert. Jetzt möchten wir zwei Ressourcen hinzufügen, die Floating-IP-Adresse mit dem Namen ‘virtual_ip’ und eine neue Ressource für den Nginx-Webserver mit dem Namen ‘webserver’.

Fügen Sie die neue Ressource 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 Fehlergebnis erhalten, und überprüfen Sie dann die verfügbaren Ressourcen.

pcs status resources

Sie werden zwei Ressourcen ‘virtual_ip’ und ‘webserver’ sehen. Neue Ressourcen für die Floating-IP und den Nginx-Webserver wurden hinzugefügt.

Schritt 7 - Einschränkungsregeln zum Cluster hinzufügen

In diesem Schritt werden wir Hochverfügbarkeitsregeln einrichten und die Ressourcenbeschränkung mit der pcs-Befehlszeilenschnittstelle einrichten.

Setzen Sie die Kollokationsbeschränkung für die Ressourcen webserver und virtual_ip mit dem Wert ‘INFINITY’. Richten Sie auch die Ressourcen webserver und virtual_ip auf allen Serverknoten gleich ein.

pcs constraint colocation add webserver virtual_ip INFINITY

Stellen Sie sicher, dass die Ressourcen ‘virtual_ip’ und ‘webserver’ immer auf denselben Knotenservern sind.

pcs constraint order virtual_ip then the webserver

Stoppen Sie als Nächstes den Cluster und starten Sie ihn dann erneut.

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

Einschränkungsregeln zum Cluster hinzufügen

Überprüfen Sie nun erneut die Ressourcen, und Sie werden ihren Status als ‘Gestart’ auf demselben Server ‘web01’ sehen.

pcs status resources

Die Ressourcen virtual_ip und webserver wurden auf demselben Server/Knoten ‘web01’ gestartet.

Schritt 8 - Firewalld konfigurieren

Der HA-Cluster wird unter der Firewall-Konfiguration firewalld ausgeführt - installieren Sie es, wenn Sie das Paket nicht haben.

yum -y install firewalld

Starten Sie firewalld und aktivieren Sie es, damit es bei jedem 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 zur firewalld mit den firewall-cmd-Befehlen hinzu - fügen Sie den Dienst für Hochverfügbarkeit, HTTP und HTTPS 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 der HA-Dienst mit HTTP und HTTPS in der Liste vorhanden ist.

Firewall neu laden und Firewall-Regelsatz überprüfen

Schritt 9 - Testen

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, indem Sie die Floating-IP-Adresse aufrufen.

Testen Sie den Knotenstatus mit dem folgenden Befehl.

pcs status nodes

Die Einrichtung testen

Alle Knoten sind ‘Online’.

Testen Sie die Corosync-Mitglieder.

corosync-cmapctl | grep members

Sie erhalten die IP-Adressen der Corosync-Mitglieder.

Corosync-Mitglieder-IP-Adressen

Ü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 die Hochverfügbarkeit des Webservers. Öffnen Sie Ihren Webbrowser und geben Sie die Floating-IP-Adresse ‘10.0.15.15’ ein.

Sie werden die Webseite vom Server ‘web01’ sehen.

Stoppen Sie als Nächstes den Cluster auf dem Server ‘web01’ mit dem folgenden Befehl.

pcs cluster stop web01

Überprüfen Sie die Seite erneut, und Sie erhalten die Seite vom Server ‘web02’ wie unten.

Zusätzlich:

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

pcs status

Und Sie erhalten das Ergebnis wie unten gezeigt.

Überprüfen des pcs-Status

Die Einrichtung der Hochverfügbarkeit des Nginx-Webservers mit Pacemaker, Corosync und Pcsd auf dem CentOS 7-Server wurde erfolgreich abgeschlossen.

Referenz

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.