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 -y

Sobald 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 nginx

Sobald 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.html

Erstellen 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.html

Speichern 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 -y

Sobald 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.conf

Entfernen 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.conf

Entfernen 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.sh

Fü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.sh

Starten 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 keepalived

Sie können auch den Status des Keepalived-Dienstes mit dem folgenden Befehl überprüfen:

systemctl status keepalived

Sie 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 show

Sie 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' --permanent

Laden 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:

Nginx-Seite auf Knoten 1

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 nginx

Melden Sie sich als Nächstes bei Node2 an und überprüfen Sie die virtuelle IP mit dem folgenden Befehl:

ip add show

Sie 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:

Nginx auf Knoten 2

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.

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.