Nginx Hochverfügbarkeit · 8 min read · Nov 29, 2025
So richten Sie Nginx-Hochverfügbarkeit mit Pacemaker, Corosync und Crmsh auf Ubuntu 16.04 ein
In diesem Tutorial zeige ich Ihnen Schritt für Schritt, wie Sie einen hochverfügbaren, clusterbasierten Nginx-Webserver mit Pacemaker, Corosync und Crmsh erstellen. Wir werden einen aktiven-passiven Cluster oder Failover-Cluster Nginx-Webserver mit Pacemaker auf Ubuntu 16.04 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 seit 2007 von ClusterLabs entwickelt wird.
Die Corosync Cluster Engine ist ein Open-Source-Projekt, das 2008 aus dem OpenAIS-Projekt hervorgegangen ist und unter der BSD-Lizenz veröffentlicht wurde. Es ist ein Gruppennachrichtensystem mit zusätzlichen Funktionen zur Implementierung von Hochverfügbarkeit innerhalb von Anwendungen.
Es gibt mehrere Anwendungen für die Pacemaker-Schnittstelle, und Crmsh ist eine davon. Es ist eine Pacemaker-Befehlszeilenschnittstelle zur Verwaltung des Pacemaker-Hochverfügbarkeitsstacks. Crmsh ist in Python geschrieben. Wir können den Pacemaker-HA-Stack mit dem Crmsh-Befehlszeilentool erstellen, konfigurieren und beheben.
Voraussetzungen
- Drei Ubuntu 16.04-Server - web01 10.0.15.11
- web02 10.0.15.12
- web03 10.0.15.13
- Eine schwebende IP-Adresse 10.0.15.15
- Root-Rechte
Was werden wir tun?
- Hosts-Datei zuordnen.
- Nginx installieren und konfigurieren.
- Pacemaker, Corosync und Crmsh installieren.
- Corosync-Schlüssel konfigurieren.
- Alle Dienste starten.
- Einen Cluster erstellen und konfigurieren.
- Testen.
Schritt 1 - Hosts-Datei zuordnen
Hinweis:
Führen Sie die Schritte 1 - 3 auf allen drei Servern ‘web01’, ‘web02’, ‘web03’ aus.
In diesem Tutorial verwende ich 3 Ubuntu 16.04-Server, und jeder von ihnen hat einen eindeutigen Hostnamen: ‘web01’, ‘web02’ und ‘web03’. Jeder Server kann sich mit den Hostnamen der anderen Server verbinden.
Um dies zu erreichen, bearbeiten Sie die Datei ‘/etc/hosts’ auf allen Servern mit vim.
vim /etc/hostsFügen Sie die Konfiguration der /etc/hosts-Datei unten ein.
10.0.15.11 web01
10.0.15.12 web02
10.0.15.13 web03
10.0.15.15 ha-web.coSpeichern Sie die Datei und beenden Sie vim.
Testen Sie als Nächstes alle Server, indem Sie die anderen Server über jeden Hostnamen anpingen.
ping -c 3 web01
ping -c 3 web02
ping -c 3 web03
Schritt 2 - Nginx installieren und konfigurieren
Jetzt beginnen wir mit der Erstellung der Hochverfügbarkeitskonfiguration des Nginx-Webservers, indem wir den Failover-Cluster mit Pacemaker erstellen. Wir müssen zuerst Nginx auf jedem der Serverknoten installieren.
Installieren Sie Nginx mit dem folgenden apt-Befehl.
apt install -y nginxWenn die Installation abgeschlossen ist, ersetzen Sie die Standardseite von Nginx durch eine eindeutige Seite auf jedem Server, indem Sie die folgenden Befehle ausführen, damit wir später identifizieren können, welcher Server eine Seite geliefert hat.
#Befehl auf 'web01' ausführen
echo 'web01 - hakase-labs
' > /var/www/html/index.html
#Befehl auf 'web02' ausführen
echo 'web02 - hakase-labs
' > /var/www/html/index.html
#Befehl auf 'web03' ausführen
echo 'web03 - hakase-labs
' > /var/www/html/index.htmlJetzt stoppen Sie den Webserver.
systemctl stop nginxDie Installation und Konfiguration von Nginx ist abgeschlossen.

Schritt 3 - Pacemaker, Corosync und Crmsh installieren
Pacemaker ist eine Open-Source-Cluster-Manager-App. Corosync ist eine Cluster-Engine für Pacemaker, und Crmsh ist ein auf Python basierendes Tool zur Verwaltung eines Pacemaker-Clusters. Alle diese Anwendungen sind im Ubuntu-Repository verfügbar.
Installieren Sie Pacemaker, Corosync und crmsh mit dem folgenden apt-Befehl.
apt install -y pacemaker corosync crmshNach der Installation laufen all diese Dienste automatisch auf dem System. Stoppen Sie sie mit den folgenden systemctl-Befehlen.
systemctl stop corosync
systemctl stop pacemakerDer Software-Stack, der die Hochverfügbarkeit für Nginx bereitstellt, wurde installiert.

Schritt 4 - Corosync konfigurieren
Hinweis:
Führen Sie Schritt 4 nur auf dem Server ‘web01’ aus.
Da wir pcsd für Ubuntu nicht verwenden, müssen wir Corosync manuell konfigurieren. Wir werden den Corosync-Schlüssel für die Cluster-Authentifizierung generieren und eine neue Corosync-Konfigurationsdatei auf dem Server ‘web01’ erstellen, dann den Schlüssel und die Konfiguration auf die anderen Server ‘web02’ und ‘web03’ kopieren.
Bevor wir den Corosync-Schlüssel generieren, müssen wir das neue Paket ‘haveged’ installieren. Es wird verwendet, um bessere Zufallszahlen für die Generierung des Corosync-Schlüssels zu erhalten.
Installieren Sie haveged aus dem Repository mit dem apt-Befehl.
apt install -y havegedJetzt generieren Sie einen neuen Corosync-Schlüssel mit dem folgenden Befehl.
corosync-keygenWenn die Schlüsselgenerierung abgeschlossen ist, können Sie den neuen Schlüssel ‘authkey’ im Verzeichnis ‘/etc/corosync/‘ sehen.
ls -lah /etc/corosync/
Gehen Sie als Nächstes in das Verzeichnis ‘/etc/corosync’ und sichern Sie die Standardkonfigurationsdatei ‘corosync.conf’.
cd /etc/corosync/
mv corosync.conf corosync.conf.bekupErstellen Sie dann eine neue Konfigurationsdatei ‘corosync.conf’ mit vim.
vim corosync.confFügen Sie die folgende Konfiguration in diese Datei ein.
# Totem-Protokollkonfiguration
totem {
version: 2
cluster_name: hakase-cluster
transport: udpu
# Schnittstellenkonfiguration für Corosync
interface {
ringnumber: 0
bindnetaddr: 10.0.15.0
broadcast: yes
mcastport: 5407
}
}
# Knotenliste - Serverliste
nodelist {
node {
ring0_addr: web01
}
node {
ring0_addr: web02
}
node {
ring0_addr: web03
}
}
# Quorum-Konfiguration
quorum {
provider: corosync_votequorum
}
# Corosync-Logkonfiguration
logging {
to_logfile: yes
logfile: /var/log/corosync/corosync.log
to_syslog: yes
timestamp: on
}
service {
name: pacemaker
ver: 0
}Speichern Sie die Datei und beenden Sie den Editor.
Kopieren Sie als Nächstes den Authentifizierungsschlüssel und die Konfigurationsdatei vom Server ‘web01’ auf die Server ‘web02’ und ‘web03’.
scp /etc/corosync/* root@web02:/etc/corosync/
scp /etc/corosync/* root@web03:/etc/corosync/
Wenn alles abgeschlossen ist, gehen Sie zu den Servern ‘web02’ und ‘web03’ und überprüfen Sie die Dateien.
ssh root@web02
cd /etc/corosync/
ls -lah
Die Corosync-Konfiguration ist abgeschlossen.
Schritt 5 - Alle Cluster-Dienste starten
Hinweis:
Führen Sie Schritt 5 auf allen Servern aus.
Starten Sie den HA-Cluster-Software-Stack, Pacemaker und Corosync, auf allen Servern. Aktivieren Sie dann, dass es beim Booten automatisch gestartet wird.
Starten Sie Corosync und fügen Sie es hinzu, um beim Booten automatisch zu starten.
systemctl start corosync
systemctl enable corosyncStarten Sie jetzt Pacemaker und aktivieren Sie es, um beim Booten zu starten.
systemctl start pacemaker
update-rc.d pacemaker defaults 20 01
systemctl enable pacemakerAlle Dienste wurden gestartet, überprüfen Sie alle Knoten und stellen Sie sicher, dass der Serverstatus auf allen ‘Online’ ist.
crm status
Oder Sie können den Status überprüfen, indem Sie die Corosync-Mitglieder mit dem folgenden corosync-cmapctl-Befehl überprüfen.
corosync-cmapctl | grep membersSie werden alle Server-IP-Adressen sehen.

Schritt 6 - Cluster erstellen und konfigurieren
HINWEIS:
Führen Sie Schritt 6 nur auf dem Server web01 aus.
In diesem Schritt konfigurieren wir den aktiven-passiven Nginx-Cluster mit dem crmsh-Befehlszeilentool. Da wir kein STONITH-Gerät verwenden, möchten wir STONITH deaktivieren und die Quorum-Richtlinie in unserem Cluster ignorieren.
Führen Sie die crm-Befehle unten aus, um ‘STONITH’ zu deaktivieren und die Quorum-Richtlinie zu ignorieren.
crm configure property stonith-enabled=false
crm configure property no-quorum-policy=ignoreÜberprüfen Sie jetzt den STONITH-Status und die Quorum-Richtlinie mit dem folgenden crm-Befehl.
crm configure showSie werden das Ergebnis wie unten sehen.

Als Nächstes müssen wir einige neue Ressourcen für den Cluster erstellen. Pacemaker unterstützt die folgenden Arten von Resource Agents (RA).
- LSB (Linux Standard Based) - Bereitgestellt von der Linux-Distribution. z.B.: ‘/etc/init.d/service’-Skript.
- OCF (Open Cluster Framework) - Eine Sammlung von Tools für das Cluster-Computing. Das Projekt ist Teil der Linux Foundation.
Für unseren Nginx-HA-Webserver müssen wir zwei OCF-Ressourcen erstellen: ‘virtual_ip’ für die schwebende IP und ‘webserver’ für den Nginx-Dienst.
Erstellen Sie eine neue ‘virtual_ip’-Ressource für die Konfiguration der schwebenden IP mit dem folgenden crm-Befehl.
sudo crm configure primitive virtual_ip \
ocf:heartbeat:IPaddr2 params ip="10.0.15.15" \
cidr_netmask="32" op monitor interval="10s" \
meta migration-threshold="10"Und für den Nginx ‘webserver’ erstellen Sie die Ressource mit dem folgenden Befehl.
sudo crm configure primitive webserver \
ocf:heartbeat:nginx configfile=/etc/nginx/nginx.conf \
op start timeout="40s" interval="0" \
op stop timeout="60s" interval="0" \
op monitor interval="10s" timeout="60s" \
meta migration-threshold="10"Wenn dies abgeschlossen ist, überprüfen Sie die neuen Ressourcen ‘virtual_ip’ und ‘webserver’ mit dem folgenden Befehl. Stellen Sie sicher, dass alle Ressourcen den Status ‘gestart’ haben.
crm resource status
Schließlich müssen wir eine Gruppe für die neue Konfiguration des Failover-IP-Dienstes hinzufügen. Wir möchten den ‘Nginx’-Dienst auf einer ‘webserver’-Ressource mit einer schwebenden IP auf einer ‘virtual_ip’-Ressource migrieren.
Wir haben bereits die schwebende IP und den Dienst erstellt, fügen Sie jetzt diese Ressourcen zu einer neuen Gruppe mit dem Namen ‘hakase_balancing’ mit dem folgenden Befehl hinzu. Sie können hier natürlich Ihren eigenen Gruppennamen wählen, stellen Sie nur sicher, dass Sie den Namen dann überall dort ersetzen, wo er verwendet wird.
sudo crm configure group hakase_balancing virtual_ip webserverEine neue Ressourcengruppe mit dem Namen ‘hakase_balancing’ wurde definiert. Sie können dies mit dem folgenden Befehl überprüfen.
crm resource showSie erhalten eine Gruppe mit dem Namen hakase_balancing mit den Mitgliedern ‘virtual_ip’ und ‘webserver’-Ressourcen.

Die Clusterkonfiguration ist abgeschlossen.
Schritt 7 - Testen
Testen Sie den Knotenstatus und den Clusterstatus.
crm status
Wir haben 3 Knoten mit dem Status ‘Online’.
Wir haben eine Ressourcengruppe mit dem Namen ‘hakase_balancing’, und sie läuft jetzt auf dem Knoten ‘web01’.
Testen Sie den Nginx-Webserver von einem Webbrowser aus. Besuchen Sie die schwebende IP-Adresse, der Name meines Testservers ist - ha-web.co. Verwenden Sie hier den Namen, den Sie für Ihren Server gewählt haben.
Alle Ressourcen befinden sich auf dem Knoten ‘web01’.
Testen des aktiven-passiven Clusters oder Failover
Stoppen Sie den Cluster auf dem Server ‘web01’, indem Sie den folgenden Befehl auf dem Knoten ‘web01’ ausführen.
crm cluster stopSie erhalten das Ergebnis ‘ INFO: Cluster-Dienste gestoppt ‘.
Melden Sie sich jetzt am Knoten ‘web02’ an und überprüfen Sie den Clusterstatus.
crm status
Jetzt erhalten Sie das Ergebnis, dass der Knoten ‘web01’ ‘Offline’ ist und die Ressourcen von virtual_ip und webserver auf den Knoten ‘web02’ umgeschaltet wurden.
Wenn Sie erneut die schwebende IP ‘ ha-web.co ‘ besuchen, erhalten Sie die Seite von web02.
Die Hochverfügbarkeit von Nginx mit Pacemaker, Corosync und Crmsh auf Ubuntu 16.04 wurde erfolgreich installiert und getestet.
Referenz
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.