So implementieren Sie Dual-Machine-Master und Backup mit Nginx+Keepalived

So implementieren Sie Dual-Machine-Master und Backup mit Nginx+Keepalived

Vorwort

Lassen Sie mich zunächst Keepalived vorstellen, eine Hochleistungsserver-Hochverfügbarkeits- oder Hot-Standby-Lösung. Sie wurde ursprünglich für LVS-Lastausgleichssoftware entwickelt. Keepalived wird hauptsächlich verwendet, um Einzelpunktausfälle des Servers zu verhindern. Durch die Zusammenarbeit mit Nginx kann eine hohe Verfügbarkeit des Webservers erreicht werden.

Keepalived basiert auf dem VRRP-Protokoll. VRRP ist die Abkürzung für Virtual Router Redundancy Protocol. Das VRRP-Protokoll virtualisiert zwei oder mehr Router-Geräte in einem Gerät und stellt der Außenwelt virtuelle Router-IPs (eine oder mehrere) zur Verfügung.

Der Zweck von VRRP besteht darin, das Single Point Failure-Problem des statischen Routings zu lösen. Es kann sicherstellen, dass das gesamte Netzwerk ohne Unterbrechung ausgeführt werden kann, wenn einzelne Knoten ausfallen.

Als Nächstes stellen wir die Bereitstellung und Installation der Hochverfügbarkeitslösung Nginx Keepalived vor.

Umgebungsvorbereitung

Bereiten Sie die folgenden komprimierten Dateien auf beiden Hosts vor:

  • keepalived-2.0.20.tar.gz
  • nginx-1.16.1.tar.gz

Virtuelle IP

Echte IP

Nginx-Port

Master-Slave

192.168.124.20

192.168.124.13

80

MASTER

192.168.124.20

192.168.124.14

80

SICHERUNG

Installieren Sie nginx

Einen neuen Benutzer erstellen:

Benutzer hinzufügen Tianyan

Bestimmen Sie das Installationsverzeichnis. Mein Installationsverzeichnis ist: /home/tianyan/tianyan_soft/nginx.install.

Erstellen Sie in diesem Verzeichnis zwei neue Verzeichnisse zur Installation von nginx und keepalived und dekomprimieren Sie die beiden komprimierten Pakete.

Führen Sie den Installationsbefehl aus:

./configure --prefix=/home/tianyan/tianyan_soft/nginx.install \
--sbin-path=/home/tianyan/tianyan_soft/nginx.install/sbin/nginx --conf-path=/home/tianyan/tianyan_soft/nginx.install/conf/nginx.conf \
--error-log-path=/home/tianyan/tianyan_soft/nginx.install/error.log \
--http-log-path=/home/tianyan/tianyan_soft/nginx.install/access.log \
--pid-path=/home/tianyan/tianyan_soft/nginx.install/nginx.pid \
--lock-path=/home/tianyan/tianyan_soft/nginx.install/nginx.lock \
--Benutzer=tianyan --Gruppe=tianyan \
--mit-http_stub_status_module \
--mit-http_gzip_static_module \
--mit-http_ssl_module \
--mit-http_realip_module \
--mit-Threads \
--mit-pcre \
--http-client-body-temp-path=/home/tianyan/tianyan_soft/nginx.install/client/ \
--http-proxy-temp-path=/home/tianyan/tianyan_soft/nginx.install/proxy/ \
 --http-fastcgi-temp-path=/home/tianyan/tianyan_soft/nginx.install/fcgi/ \
--http-uwsgi-temp-path=/home/tianyan/tianyan_soft/nginx.install/uwsgi \
--http-scgi-temp-path=/home/tianyan/tianyan_soft/nginx.install/scgi

Wenn ein Fehler auftritt, denken Sie daran, die zugehörigen Abhängigkeiten zu installieren:

yum installiere gcc gcc-c++
nginx: [emerg] bind() an 0.0.0.0:80 ist fehlgeschlagen (13: Berechtigung verweigert).

Hinweis: Beim Start mit Nicht-Root-Berechtigungen wird der Fehler nginx: [emerg] bind() to 0.0.0.0:80 failed (13: Permission denied) angezeigt.

Grund: Nur Root-Benutzer können Ports unter 1024 in Linux verwenden.

Lösung:

1. Beginnen Sie mit Root-Rechten

2. Ändern Sie Port 80 in der Datei /usr/local/nginx/conf/nginx.conf auf 1024 oder höher.

Installieren Sie Keepalived

./configure --prefix=/usr/local/keepalived

Nachdem der obige Befehl ausgeführt wurde, führen Sie Folgendes weiter aus:

machen && machen installieren

Nach Abschluss der Installation sieht das Verzeichnis folgendermaßen aus:

Kopieren Sie die Konfigurationsdatei in das Verzeichnis, das dem System entspricht

mkdir /etc/keepalived
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/keepalived

Bearbeiten Sie die keepalived.conf des Masterknotens

vim /etc/keepalived/keepalived.conf

Der Inhalt ist wie folgt:

! Konfigurationsdatei für Keepalived

global_defs {
  #Ein eindeutiger Name reicht aus router_id hyq_slave
  }


#ngOb vrrp_script chk_nginx ausgeführt werden soll {
    Skript "/etc/keepalived/nginx_check.sh"
    Intervall 2
    Gewicht -20
}

vrrp_instance VI_1 {
  Status BACKUP # erforderlich, kann MASTER oder BACKUP sein

  Schnittstelle ens33
  virtuelle_Router_ID 101
  Priorität 90
  Anzeige_int 1

  # Wenn die Uplink-Switches der beiden Knoten Multicast deaktivieren, verwenden Sie VRRP-Unicast-Benachrichtigung # Lokale IP
  unicast_src_ip 192.168.124.14
  unicast_peer {
    # Andere Maschinen-IP
    192.168.124.13
  }
  # Setzen Sie nopreempt, um die Ressourcenpräemption zu verhindern

  Authentifizierung
    Authentizitätstyp PASS
    Auth_Passwort 1111
  }

  # Gibt den Nginx-Integritätscheck über track_script { wieder.
    chk_nginx
  }
  virtuelle_IP-Adresse {
    192.168.124.20
  }
}

Bearbeiten Sie die keepalived.conf des Slave-Knotens

vim /etc/keepalived/keepalived.conf
! Konfigurationsdatei für Keepalived

global_defs {
  #Ein eindeutiger Name reicht aus router_id hyq_slave
  }


#ngOb vrrp_script chk_nginx ausgeführt werden soll {
    Skript "/etc/keepalived/nginx_check.sh"
    Intervall 2
    Gewicht -20
}

vrrp_instance VI_1 {
  Status BACKUP # erforderlich, kann MASTER oder BACKUP sein  


  Schnittstelle ens33
  virtuelle_Router_ID 101
  Priorität 90
  Anzeige_int 1

  # Wenn die Uplink-Switches der beiden Knoten Multicast deaktivieren, verwenden Sie VRRP-Unicast-Benachrichtigung # Lokale IP
  unicast_src_ip 192.168.124.14
  unicast_peer {
    # Andere Maschinen-IP
    192.168.124.13
  }
  # Setzen Sie nopreempt, um die Ressourcenpräemption zu verhindern

  Authentifizierung
    Authentizitätstyp PASS
    Auth_Passwort 1111
  }

  # Gibt den Nginx-Integritätscheck über track_script { wieder.
    chk_nginx
  }
  virtuelle_IP-Adresse {
    192.168.124.20
  }
}

Schreiben Sie das Skript nginx_check.sh

Erstellen Sie ein neues Skript nginx_check.sh im Verzeichnis /etc/keepalived

berühren Sie nginx_check.sh

Bearbeiten Sie den Inhalt wie folgt:

#!/bin/sh
A=`ps -C nginx --no-header |wc -l`
wenn [ $A -eq 0 ]
Dann
 /usr/sbin/nginx
 Schlaf 1
 A2=`ps -C nginx --no-header |wc -l`
 wenn [ $A2 -eq 0 ]
 Dann
  systemctl stop keepalived
 fi
fi

Bedeutung: Wenn nginx nicht mehr läuft, versuchen Sie, es zu starten. Wenn der Start jedoch fehlschlägt, beenden Sie den lokalen Keepalived-Prozess. Keepalived bindet dann die virtuelle IP an die BACKUP-Maschine. Hinweis: /usr/sbin/nginx ist der Startbefehl von nginx. Wenn Sie es in einem anderen Verzeichnis installieren, ersetzen Sie es entsprechend.

Keepalived-Protokolle

Der Standardspeicherort der Keepalived-Protokolle ist das Verzeichnis /var/log/messages. Lassen Sie es uns ändern.

Da es sich bei dem System um CentOS7 handelt, lautet der geänderte Speicherort: /lib/systemd/system/keepalived.service

Originalinhalt:

EnvironmentFile=-/usr/local/keepalived/etc/sysconfig/keepalived
ExecStart=/usr/local/keepalived/sbin/keepalived $KEEPALIVED_OPTIONS

Geändert zu:

Laden Sie den Dienst nach der Änderung neu

systemctl daemon-reload

Erstellen Sie einen Befehls-Softlink:

ln -s /usr/local/keepalived/sbin/keepalived /usr/sbin/keepalived

implementieren:

keepalived -D -f /etc/keepalived/keepalived.conf

-D Gibt das Protokoll in das Nachrichtenprotokoll aus. Das Standardprotokoll befindet sich auch im Nachrichtenprotokoll
-f ist die angegebene Konfigurationsdatei

Ändern Sie /etc/sysconfig/keepalived

Ändern Sie KEEPALIVED_OPTIONS="-D" in: KEEPALIVED_OPTIONS="-D -d -S 0"

Fügen Sie am Ende von /etc/rsyslog.conf hinzu

local0.*/var/log/keepalived.log 

Führen Sie abschließend den Befehl aus:

Dienst rsyslog neu starten

Nach dem Neustart von keepalived können Sie das Protokoll in /var/log/keepalived.log sehen.

Testen und Verifizieren von VIP

Wenn sowohl Keepalived als auch Nginx gestartet sind, testen wir es.

Besuchen Sie zunächst drei Adressen im Browser

  • http://192.168.124.20 (VIP)
  • http://192.168.124.13 (Master)
  • http://192.168.124.14(Sklave)

Ich habe die index.html von nginx geändert und festgestellt, dass der aktuelle VIP auf den Masterknoten 13 verweist:

Anschließend stoppen wir nginx manuell bei 13 und greifen erneut auf http://192.168.124.20 zu.

Dies zeigt an, dass die Installation erfolgreich war.

Die Änderungen der Netzwerkkarte können über den Befehl ip address beobachtet werden

An diesem Punkt des Experiments haben wir die Installation und Bereitstellung der Keepalived + Nginx Master-Slave-Konfiguration abgeschlossen.

Überlegung: So aktivieren Sie den Dual-Active-Modus

Was ist der Dual-Active-Modus?

Lassen Sie uns jeweils zwei Konfigurationen vorstellen.

1. Nginx+keepalived Master-Slave-Konfiguration

Diese Lösung ist die oben vorgestellte. Sie verwendet eine VIP-Adresse und zwei Maschinen am Frontend, eine als Hauptmaschine und die andere als Backup-Maschine. Allerdings arbeitet immer nur eine Maschine gleichzeitig. Die andere Backup-Maschine befindet sich immer in einem ungenutzten Zustand, wenn die Hauptmaschine nicht ausfällt. Sie wird nur zur Notfallwiederherstellung verwendet und ist normalerweise im Leerlauf.

2. Nginx+keepalived Dual-Master-Konfiguration

Diese Lösung verwendet zwei VIP-Adressen und zwei Maschinen am Frontend, die sich gegenseitig als primäre und als Backup-Maschinen dienen. Wenn eine der Maschinen ausfällt, werden die Anfragen der beiden Maschinen auf eine Maschine übertragen, wie in der folgenden Abbildung dargestellt:

[Aktuell] Fallstudie zur Verbesserung der Schreibgeschwindigkeit von Elasticsearch

Erstellen Sie mit Java einen profitablen WeChat-Gruppenchat-Roboter (PC-Protokoll)

Millionen von MySQL-Daten effizient in Redis importieren

Java Online-Fehleranalyse + Leistungsoptimierung

Dies ist das Ende dieses Artikels zur Implementierung von Dual-Machine-Master-Slave mit Nginx+Keepalived. Weitere Informationen zu Nginx Keepalived Dual-Machine-Master-Slave finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Beispiel für die Implementierung eines Master-Slave-Hot-Standby mit Docker+keepalived+nginx
  • Nginx + Keepalived realisiert Hot-Standby von Dual-Maschinen
  • Konfigurationsmethode für Keepalived Dual-Machine Hot Standby Nginx
  • Nginx implementiert den Aufbau eines Clusters mit hoher Verfügbarkeit (Keepalived+Haproxy+Nginx)
  • Keepalived implementiert Nginx-Lastausgleich und Beispielcode für hohe Verfügbarkeit
  • Detaillierte Erläuterung der hochverfügbaren Master-Slave-Konfiguration von nginx+keepalived
  • Informationen zur Verwendung von Keepalived zum Erreichen eines automatischen Neustarts von Nginx und einer hohen Verfügbarkeit von Dual Active Hot Standby

<<:  Upload-Komponentenfunktion basierend auf React-Dropzone entwickeln (Beispieldemonstration)

>>:  Detaillierte Schritte zur Remotebereitstellung einer MySQL-Datenbank unter Linux

Artikel empfehlen

So konfigurieren Sie pseudostatisches und clientadaptives Nginx

Das Backend verwendet das Framework thinkphp3.2.3...

Eine kurze Diskussion über JS-Verpackungsobjekte

Inhaltsverzeichnis Überblick Definition Instanzme...

Vue verwendet Element-UI, um die Menünavigation zu implementieren

In diesem Artikel wird der spezifische Code von V...

Eine kurze Analyse der startReactApplication-Methode von React Native

In diesem Artikel haben wir den Startvorgang von ...

Wie erreicht MySQL die Parallelität mehrerer Versionen?

Inhaltsverzeichnis MySQL-Mehrversionen-Parallelit...

Detaillierte Analyse der MySQL-Sperrblockierung

Bei der täglichen Wartung werden Threads häufig b...

So versuchen Sie, Ihrem CSS einen Sticky-Effekt hinzuzufügen

Vorne geschrieben Ich weiß nicht, wer als Erster ...

MySQL-Beispiel zum Abrufen des heutigen und gestrigen Zeitstempels 0:00

Wie unten dargestellt: Gestern: UNIX_TIMESTAMP(CA...

Detaillierte Erläuterung des Ausführungsplans, Beispiel für einen Befehl in MySQL

Vorwort Der Befehl „Explain“ ist die primäre Mögl...