GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So richten Sie hochverfügbares NGINX mit KeepAlived unter Linux ein

Wie wir wissen, ist NGINX ein hoch bewerteter Webserver, der auch als Reverse-Proxy, Load Balancer und HTTP-Cache verwendet werden kann. In diesem Artikel zeigen wir, wie Sie einen hochverfügbaren (HA) NGINX-Webserver mit Keepalived unter Linux einrichten. Keepalived arbeitet mit VRRP (Virtual Router Redundancy Protocol), das es ermöglicht, dass eine statische IP-Adresse zwischen zwei Linux-Systemen umgeschaltet wird.

Im Folgenden finden Sie meine Labordetails für NGINX HA:

  • Knoten 1 – 192.168.1.130 – nginx1.example.com – mindestens CentOS 8 / RHEL 8
  • Knoten 2 – 192.168.1.140 – nginx2.example.com – mindestens CentOS 8 / RHEL 8
  • Virtuelle IP (VIP) – 192.168.1.150
  • sudo-Benutzer pkumar
  • Firewall aktiviert
  • SELinux läuft

Lassen Sie uns zu den Installations- und Konfigurationsschritten springen,

Schritt 1) ​​NGINX-Webserver über die Befehlszeile installieren

Das NGINX-Paket ist in den standardmäßigen CentOS 8 / RHEL 8-Repositories verfügbar, führen Sie also den folgenden dnf-Befehl auf beiden Knoten aus, um den Nginx-Webserver zu installieren

$ sudo dnf install -y nginx

Für CentOS 7 / RHEL 7

Das NGINX-Paket ist in den standardmäßigen CentOS 7 / RHEL 7-Repositorys nicht verfügbar. Um es also zuerst zu installieren, müssen wir das epel-Repository aktivieren. Führen Sie den folgenden Befehl auf beiden Knoten aus

$ sudo yum install epel-release -y
$ sudo yum install -y nginx

Für Ubuntu / Debian

Für Debian-basierte Linux-Distributionen ist das nginx-Webserverpaket in den Standardpaket-Repositories verfügbar. Um nginx zu installieren, führen Sie also

aus
$ sudo apt update
$ sudo apt install -y nginx

Schritt 2) Benutzerdefinierte index.html-Datei für beide Knoten konfigurieren

Lassen Sie uns eine benutzerdefinierte index.html-Datei für beide Knoten erstellen, damit wir beim Zugriff über die virtuelle IP leicht erkennen können, welcher Server die Website bedient.

Führen Sie für Knoten 1 den folgenden echo-Befehl aus,

[[email protected] ~]$ echo "<h1>This is NGINX Web Server from Node 1</h1>" | sudo tee /usr/share/nginx/html/index.html

Führen Sie für Knoten 2

aus
[[email protected] ~]$ echo "<h1>This is NGINX Web Server from Node 2</h1>" | sudo tee /usr/share/nginx/html/index.html

Schritt 3) NGINX-Port in der Firewall zulassen und seinen Dienst starten

Falls die Firewall aktiviert ist und auf beiden Knoten ausgeführt wird, lassen Sie Port 80 zu, indem Sie die folgenden Befehle ausführen:

Für CentOS / RHEL-System

$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd –reload

Für Ubuntu / Debian-System

$ sudo ufw allow 'Nginx HTTP'

Starten und aktivieren Sie den nginx-Dienst, indem Sie auf beiden Knoten die folgenden Befehlsbefehle ausführen,

$ sudo systemctl start nginx
$ sudo systemctl enable nginx

Testen Sie den NGINX-Webserver beider Knoten, indem Sie den folgenden Curl-Befehl von außen ausführen,

$ curl http://192.168.1.130
<h1>This is NGINX Web Server from Node 1</h1>
$ curl http://192.168.1.140
<h1>This is NGINX Web Server from Node 2</h1>

Perfekt, die obige Befehlsausgabe bestätigt, dass nginx läuft und von außen mit der IP-Adresse des Systems zugänglich ist.

Schritt 4) Keepalived installieren und konfigurieren

Für CentOS / RHEL-Systeme sind das Keepalived-Paket und seine Abhängigkeiten in den Standardpaket-Repositories verfügbar, sodass die Installation unkompliziert ist. Führen Sie einfach den folgenden Befehl auf beiden Knoten aus.

$ sudo dnf install -y keepalived       // CentOS 8/ RHEL 8
$ sudo yum install -y keepalived      // CentOS 7 / RHEL 7

Für Ubuntu / Debian-System,

$ apt install -y keepalived

Sobald Keepalived installiert ist, konfigurieren Sie es, indem Sie seine Konfigurationsdatei „/etc/keepalived/keepalived.conf“ bearbeiten. Wir behalten Knoten 1 als Master-Knoten und Knoten 2 als Backup-Knoten.

Sicherungskopie der Konfigurationsdatei erstellen,

[[email protected] ~]$ sudo cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf-org

Ersetzen Sie den Inhalt von keepalived.conf durch Folgendes:

[[email protected] ~]$ echo -n | sudo tee /etc/keepalived/keepalived.conf
[[email protected] ~]$ sudo vi /etc/keepalived/keepalived.conf

Fügen Sie den folgenden Inhalt ein

global_defs {
  # Keepalived process identifier
  router_id nginx
}

# Script to check whether Nginx is running or not
vrrp_script check_nginx {
  script "/bin/check_nginx.sh"
  interval 2
  weight 50
}

# Virtual interface - The priority specifies the order in which the assigned interface to take over in a failover
vrrp_instance VI_01 {
  state MASTER
  interface enp0s3
  virtual_router_id 151
  priority 110

  # The virtual ip address shared between the two NGINX Web Server which will float
  virtual_ipaddress {
    192.168.1.150/24
  }
  track_script {
    check_nginx
  }
  authentication {
    auth_type AH
    auth_pass secret
  }
}

Erstellen Sie nun ein Skript mit folgendem Inhalt, das überprüft, ob der nginx-Dienst ausgeführt wird oder nicht. Keepalived überprüft immer die Ausgabe des Skripts check_nginx.sh, wenn es feststellt, dass der nginx-Dienst angehalten wurde oder nicht antwortet, verschiebt es die virtuelle IP-Adresse auf den Backup-Knoten.

[[email protected] ~]$ sudo vi /bin/check_nginx.sh
#!/bin/sh
if [ -z "`pidof nginx`" ]; then
  exit 1
fi

Speichern und schließen Sie die Datei und setzen Sie die erforderliche Berechtigung mit dem Befehl chmod,

[[email protected] ~]$ sudo chmod 755 /bin/check_nginx.sh

Kopieren Sie nun die Dateien keepalived.conf und check_nginx.sh von Knoten 1 nach Knoten 2 mit dem folgenden scp-Befehl.

[[email protected] ~]$ scp /etc/keepalived/keepalived.conf [email protected]:/etc/keepalived/
[[email protected] ~]$ scp /bin/check_nginx.sh [email protected]0:/bin/

Sobald die Dateien kopiert sind, melden Sie sich bei Knoten 2 an und nehmen Sie einige Änderungen in der Datei keepalived.conf vor. Ändern Sie den Status von MASTER auf BACKUP und verringern Sie die Priorität, indem Sie sie auf 100 setzen. Nachdem Sie die Änderungen vorgenommen haben, würde keepalived.conf auf Knoten 2 wie folgt aussehen:

Falls die Betriebssystem-Firewall ausgeführt wird, lassen Sie VRRP zu, indem Sie die folgenden Befehle ausführen:

Hinweis – Führen Sie diese Befehle auf beiden Knoten aus

Für CentOS / RHEL-Systeme

$ sudo firewall-cmd --add-rich-rule='rule protocol value="vrrp" accept' --permanent
$ sudo firewall-cmd --reload

Für Ubuntu / Debian-Systeme

Erlauben Sie VRRP, indem Sie Folgendes ausführen, vom Master-Knoten (Knoten 1) führen Sie

aus
$ sudo ufw allow to 224.0.0.18 comment 'VRRP Broadcast'
$ sudo ufw allow from 192.168.1.140 comment 'VRRP Router'

Vom Backup-/Slave-Knoten (Knoten 2)

$ sudo ufw allow to 224.0.0.18 comment 'VRRP Broadcast'
$ sudo ufw allow from 192.168.1.130 comment 'VRRP Router'

Starten Sie nun endlich den Keepalived-Dienst, indem Sie unter den systemctl-Befehlen von beiden Knoten ausführen,

$ sudo systemctl start keepalived
$ sudo systemctl enable keepalived

Überprüfen Sie den Keepalived-Dienst, indem Sie Folgendes ausführen:

$ sudo systemctl status keepalived

Perfekt, überprüfen Sie jetzt den VIP-Status (virtuelle IP-Adresse) auf dem Master-Knoten, in unserem Fall ist VIP 192.168.1.130

$ ip add show

Die obige Ausgabe bestätigt, dass VIP auf dem Master-Knoten auf seiner enp0s3-Schnittstelle konfiguriert ist. Lassen Sie uns also im nächsten Schritt Keepalived- und Nginx-Tests durchführen.

Schritt 5) Keepalived- und NGINX-Tests

Um den Test durchzuführen, versuchen Sie, mit der virtuellen IP (192.168.1.150) auf den Nginx-Webserver zuzugreifen. Derzeit sollte uns die Nginx-Seite von Knoten 1 angezeigt werden.

Öffnen Sie den Wen-Browser und geben Sie „http://192.168.1.150“ ein und drücken Sie die Eingabetaste,

Versuchen Sie nun, den NGINX-Dienst auf Knoten 1 zu stoppen und zu sehen, ob die virtuelle IP von Knoten 1 auf Knoten 2 umgeschaltet wird, und versuchen Sie dann, mit VIP (192.168.1.150) auf die nginx-Webseite zuzugreifen, und dieses Mal sollte uns die nginx-Seite von Knoten 2 angezeigt werden .

[[email protected] ~]$ sudo systemctl stop nginx
[[email protected] ~]$ ip add show

Melden Sie sich bei Knoten 2 an und führen Sie den Befehl ip aus, um die virtuelle IP-Adresse zu überprüfen,

[[email protected] ~]$ ip add show

Versuchen wir nun, über die virtuelle IP auf die Webseite zuzugreifen,

Großartig, oben bestätigt, dass wir den hochverfügbaren NGINX-Webserver mit Keepalived erfolgreich eingerichtet haben. Das war alles aus diesem Artikel, bitte teilen Sie uns Ihr Feedback, Ihre Kommentare und Vorschläge mit.


Linux
  1. So installieren Sie den Nginx-Webserver unter Linux

  2. So richten Sie Sudo-Berechtigungen für Benutzer in Linux ein

  3. So richten Sie eine einfache nodejs-App mit nginx und pm2 auf einem Ubuntu-Server ein

  4. So installieren Sie ModSecurity mit Nginx unter Rocky Linux 8

  5. So installieren und konfigurieren Sie MERN Stack mit Nginx unter Ubuntu 20.04

Richten Sie Load Balancing mit HAProxy, Nginx und Keepalived unter Linux ein

So führen Sie einen Alias ​​mit Sudo in Linux aus

So installieren Sie Apache Tomcat 10 auf Ubuntu 20.04 mit Nginx

So installieren Sie Apache Tomcat 10 auf Ubuntu 22.04 mit Nginx

Cron Vs Anacron:So richten Sie Anacron unter Linux ein (mit einem Beispiel)

So richten Sie Logstash unter Linux mit ElasticSearch, Redis, Nginx ein