NGINX Setup · 6 min read · Nov 08, 2025
So richten Sie hochverfügbares NGINX mit KeepAlived auf CentOS 8 ein

Nginx ist ein kostenloser, Open-Source-Webserver und einer der beliebtesten weltweit. Er kann auch als Reverse-Proxy, Lastenausgleich und HTTP-Cache verwendet werden. Die hohe Verfügbarkeit ermöglicht es einer Anwendung, im Falle eines Ausfalls die Arbeit auf ein anderes System umzuleiten. Es gibt verschiedene Technologien, um ein hochverfügbares System einzurichten.
Keepalived ist ein Systemdaemon, der Dienste oder Systeme kontinuierlich überwacht und hohe Verfügbarkeit im Falle eines Ausfalls erreicht. Wenn ein Knoten ausfällt, stellt der zweite Knoten die Ressourcen bereit.
In diesem Tutorial zeige ich Ihnen, wie Sie einen hochverfügbaren Nginx-Webserver mit KeepAlived auf CentOS 8 einrichten.
Voraussetzungen
- Zwei Server, die CentOS 8 ausführen, einer für den Master-Knoten und einer für den Backup-Knoten.
- Ein Root-Passwort ist auf Ihrem Server konfiguriert.
Installieren Sie Nginx auf beiden Knoten
Zuerst müssen Sie das Nginx-Paket auf beiden Knoten installieren. Sie können es mit dem folgenden Befehl installieren:
dnf install nginx -ySobald Nginx auf beiden Knoten installiert ist, starten Sie den Nginx-Dienst und aktivieren Sie ihn, damit er beim Systemneustart gestartet wird:
systemctl start nginx
systemctl enable nginxSobald Sie fertig sind, können Sie mit dem nächsten Schritt fortfahren.
Erstellen Sie die Index.html-Datei auf beiden Knoten
Als Nächstes müssen Sie eine benutzerdefinierte index.html-Datei auf beiden Knoten erstellen, um jeden Knoten zu identifizieren.
Erstellen Sie auf dem ersten Knoten eine index.html-Datei mit dem folgenden Befehl:
echo "Dies ist mein erster NGINX-Webserver-Knoten
" | tee /usr/share/nginx/html/index.htmlErstellen Sie auf dem zweiten Knoten eine index.html-Datei mit dem folgenden Befehl:
echo "Dies ist mein zweiter NGINX-Webserver-Knoten
" | tee /usr/share/nginx/html/index.htmlSpeichern und schließen Sie die Datei, wenn Sie fertig sind.
Installieren und Konfigurieren von Keepalived
Als Nächstes müssen Sie Keepalived auf beiden Knoten installieren. Standardmäßig ist das Keepalived-Paket im Standard-Repository von CentOS 8 verfügbar. Sie können es installieren, indem Sie den folgenden Befehl ausführen:
dnf install keepalived -ySobald das Keepalived-Paket auf beiden Knoten installiert ist, müssen Sie die Standardkonfigurationsdatei von Keepalived auf beiden Knoten bearbeiten.
Bearbeiten Sie auf dem ersten Knoten die Datei keepalived.conf:
nano /etc/keepalived/keepalived.confEntfernen Sie den Standardinhalt und fügen Sie den folgenden Inhalt hinzu:
global_defs {
# Keepalived-Prozesskennung
router_id nginx
}
# Skript zur Überprüfung, ob Nginx läuft oder nicht
vrrp_script check_nginx {
script "/bin/check_nginx.sh"
interval 2
weight 50
}
# Virtuelle Schnittstelle - Die Priorität gibt die Reihenfolge an, in der die zugewiesene Schnittstelle im Failover übernommen wird
vrrp_instance VI_01 {
state MASTER
interface eth0
virtual_router_id 151
priority 110
# Die virtuelle IP-Adresse, die zwischen den beiden NGINX-Webservern geteilt wird und schwebt
virtual_ipaddress {
192.168.1.10/24
}
track_script {
check_nginx
}
authentication {
auth_type AH
auth_pass secret
}
}
Speichern und schließen Sie die Datei, wenn Sie fertig sind.
Bearbeiten Sie auf dem zweiten Knoten die Datei keepalived.conf:
nano /etc/keepalived/keepalived.confEntfernen Sie den Standardinhalt und fügen Sie den folgenden Inhalt hinzu:
global_defs {
# Keepalived-Prozesskennung
router_id nginx
}
# Skript zur Überprüfung, ob Nginx läuft oder nicht
vrrp_script check_nginx {
script "/bin/check_nginx.sh"
interval 2
weight 50
}
# Virtuelle Schnittstelle - Die Priorität gibt die Reihenfolge an, in der die zugewiesene Schnittstelle im Failover übernommen wird
vrrp_instance VI_01 {
state BACKUP
interface eth0
virtual_router_id 151
priority 100
# Die virtuelle IP-Adresse, die zwischen den beiden NGINX-Webservern geteilt wird und schwebt
virtual_ipaddress {
192.168.1.10/24
}
track_script {
check_nginx
}
authentication {
auth_type AH
auth_pass secret
}
}
Speichern und schließen Sie die Datei, dann müssen Sie ein Skript erstellen, um zu überprüfen, ob der Nginx-Dienst läuft oder nicht. Sie können es mit dem folgenden Befehl erstellen:
Hinweis: Ersetzen Sie einfach MASTER durch BACKUP und 110 durch 100 in der obigen Konfigurationsdatei.
nano /bin/check_nginx.shFügen Sie die folgenden Zeilen hinzu:
#!/bin/sh
if [ -z "`pidof nginx`" ]; then
exit 1
fi
Speichern und schließen Sie die Datei und setzen Sie die richtigen Berechtigungen mit dem folgenden Befehl:
chmod 755 /bin/check_nginx.shStarten Sie schließlich den Keepalived-Dienst und aktivieren Sie ihn, damit er beim Systemneustart gestartet wird, mit dem folgenden Befehl:
systemctl start keepalived
systemctl enable keepalivedSie können auch den Status des Keepalived-Dienstes mit dem folgenden Befehl überprüfen:
systemctl status keepalivedSie sollten die folgende Ausgabe erhalten:
? keepalived.service - LVS und VRRP Hochverfügbarkeitsmonitor
Loaded: loaded (/usr/lib/systemd/system/keepalived.service; disabled; vendor preset: disabled)
Active: active (running) since Thu 2021-04-08 04:24:22 EDT; 5s ago
Process: 3141 ExecStart=/usr/sbin/keepalived $KEEPALIVED_OPTIONS (code=exited, status=0/SUCCESS)
Main PID: 3142 (keepalived)
Tasks: 2 (limit: 12524)
Memory: 2.1M
CGroup: /system.slice/keepalived.service
??3142 /usr/sbin/keepalived -D
??3143 /usr/sbin/keepalived -D
Apr 08 04:24:22 node1 Keepalived_vrrp[3143]: (VI_01) Ändere effektive Priorität von 110 auf 160
Apr 08 04:24:25 node1 Keepalived_vrrp[3143]: (VI_01) Empfangszeitüberschreitung der Werbung
Apr 08 04:24:25 node1 Keepalived_vrrp[3143]: (VI_01) Betritt den MASTER-ZUSTAND
Apr 08 04:24:25 node1 Keepalived_vrrp[3143]: (VI_01) VIPs setzen.
Apr 08 04:24:25 node1 Keepalived_vrrp[3143]: Sende unnötiges ARP auf eth0 für 192.168.1.10
Apr 08 04:24:25 node1 Keepalived_vrrp[3143]: (VI_01) Sende/queue unnötige ARPs auf eth0 für 192.168.1.10
Apr 08 04:24:25 node1 Keepalived_vrrp[3143]: Sende unnötiges ARP auf eth0 für 192.168.1.10
Apr 08 04:24:25 node1 Keepalived_vrrp[3143]: Sende unnötiges ARP auf eth0 für 192.168.1.10
Apr 08 04:24:25 node1 Keepalived_vrrp[3143]: Sende unnötiges ARP auf eth0 für 192.168.1.10
Apr 08 04:24:25 node1 Keepalived_vrrp[3143]: Sende unnötiges ARP auf eth0 für 192.168.1.10
Sie können auch den Status der virtuellen IP-Adresse auf dem Master-Knoten mit dem folgenden Befehl überprüfen:
ip add showSie sollten die virtuelle IP-Adresse 192.168.1.10 in der folgenden Ausgabe sehen:
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:00:2d:3a:20:9b brd ff:ff:ff:ff:ff:ff
inet 45.58.32.155/24 brd 45.58.32.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet 192.168.1.10/24 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::200:2dff:fe3a:209b/64 scope link
valid_lft forever preferred_lft forever
3: eth1: mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:00:0a:3a:20:9b brd ff:ff:ff:ff:ff:ff
inet6 fe80::200:aff:fe3a:209b/64 scope link
valid_lft forever preferred_lft forever
Sobald Sie fertig sind, können Sie mit dem nächsten Schritt fortfahren.
Konfigurieren Sie die Firewall auf beiden Knoten
Als Nächstes müssen Sie Port 80 zulassen und VRRP auf beiden Knoten zulassen. Sie können dies mit dem folgenden Befehl tun:
firewall-cmd --permanent --add-service=http
firewall-cmd --add-rich-rule='rule protocol value="vrrp" accept' --permanentLaden Sie als Nächstes die Firewalld neu, um die Änderungen anzuwenden:
firewall-cmd –reloadÜberprüfen Sie Keepalived
An diesem Punkt sind Nginx und Keepalived installiert und konfiguriert. Es ist Zeit zu testen, ob die hohe Verfügbarkeit von Nginx funktioniert oder nicht.
Öffnen Sie Ihren Webbrowser und greifen Sie auf die URL http://your-virtual-ip zu. Sie sollten die folgende Seite sehen:

Stoppen Sie nun den Nginx-Dienst auf dem Master-Knoten und testen Sie, ob die virtuelle IP von Knoten 1 auf Knoten 2 umgeschaltet wird.
Stoppen Sie auf dem Master-Knoten den Nginx-Dienst mit dem folgenden Befehl:
systemctl stop nginxMelden Sie sich als Nächstes bei Node2 an und überprüfen Sie die virtuelle IP mit dem folgenden Befehl:
ip add showSie sollten Ihre virtuelle IP in der folgenden Ausgabe sehen:
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:00:2d:3a:26:37 brd ff:ff:ff:ff:ff:ff
inet 45.58.38.55/24 brd 45.58.38.255 scope global noprefixroute eth0
valid_lft forever preferred_lft forever
inet 192.168.1.10/24 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::200:2dff:fe3a:2637/64 scope link
valid_lft forever preferred_lft forever
3: eth1: mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 00:00:0a:3a:26:37 brd ff:ff:ff:ff:ff:ff
inet6 fe80::200:aff:fe3a:2637/64 scope link
valid_lft forever preferred_lft forever
Greifen Sie nun auf Ihren Nginx-Webserver über die URL http://your-virtual-ip zu. Sie sollten die Seite von Node2 sehen:

Fazit
Herzlichen Glückwunsch! Sie haben erfolgreich einen hochverfügbaren Nginx-Server mit Keepalived eingerichtet. Ich hoffe, Sie haben jetzt genügend Wissen, um einen hochverfügbaren Nginx-Server in einer Produktionsumgebung einzurichten.
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.