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:
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 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 Ä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
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:
|
<<: Upload-Komponentenfunktion basierend auf React-Dropzone entwickeln (Beispieldemonstration)
>>: Detaillierte Schritte zur Remotebereitstellung einer MySQL-Datenbank unter Linux
Das Backend verwendet das Framework thinkphp3.2.3...
Wir, die bescheidenen Programmierer, müssen immer...
Inhaltsverzeichnis Überblick Definition Instanzme...
In diesem Artikel wird der spezifische Code von V...
Inhaltsverzeichnis Vorwort Endlosschleife in For-...
Tomcat ist ein Open-Source-Webserver. Das auf Tom...
In diesem Artikel haben wir den Startvorgang von ...
Vorwort Kürzlich habe ich einer Tabelle in der Da...
Vorwort Dieser Artikel stellt hauptsächlich den r...
Inhaltsverzeichnis MySQL-Mehrversionen-Parallelit...
Bei der täglichen Wartung werden Threads häufig b...
Vorne geschrieben Ich weiß nicht, wer als Erster ...
Wie unten dargestellt: Gestern: UNIX_TIMESTAMP(CA...
Es handelt sich hauptsächlich um ein CSS-Stilsteue...
Vorwort Der Befehl „Explain“ ist die primäre Mögl...