VorwortVerwenden Sie nginx zum Lastenausgleich. Als Frontend oder mittlere Schicht der Architektur ist es bei zunehmendem Datenverkehr erforderlich, eine Hochverfügbarkeitsarchitektur zum Lastenausgleich aufzubauen. Verwenden Sie Keepalived, um Einzelpunktrisiken zu lösen. Wenn nginx ausfällt, kann es schnell auf den Backup-Server umschalten. Lösungen für mögliche Probleme bei der VMware-Netzwerkkonfiguration
InstallierenKnotenbereitstellung
Web-Konfigurationweb1 startet den Python-HTTP-Server vim index.html <html> <Text> <h1>Web-SVR 1</h1> </body> </html> nohup python -m SimpleHTTPServer 8080 > running.log 2>&1 & web2 startet einen Python-HTTP-Server vim index.html <html> <Text> <h1>Web-SVR 2</h1> </body> </html> nohup python -m SimpleHTTPServer 8080 > running.log 2>&1 & Firewall deaktivieren Firewall-Befehl --state systemctl stoppe firewalld.service systemctl deaktivieren Sie Firewalld.service Jetzt ist der Browserzugriff normal und die Seite zeigt Web Svr 1 und 2 Installieren Sie Nginx auf Centos1 und 2Konfigurieren Sie zunächst die Alibaba Cloud-Quelle mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo Installieren von Abhängigkeitspaketen yum -y installiere gcc yum install -y pcre pcre-devel yum install -y zlib zlib-devel yum install -y openssl openssl-devel Laden Sie nginx herunter und entpacken Sie es wget http://nginx.org/download/nginx-1.8.0.tar.gz tar -zxvf nginx-1.8.0.tar.gz Installieren Sie nginx cd nginx-1.8.0 ./Konfigurieren --user=niemand --group=niemand --prefix=/usr/local/nginx --mit-http_stub_status_module --mit-http_gzip_static_module --mit-http_realip_module --mit-http_sub_module --mit-http_ssl_module machen installieren cd /usr/local/nginx/sbin/ # Überprüfen Sie die Konfigurationsdatei ./nginx -t # Starten Sie nginx ./nginx Öffnen Sie den Nginx-Zugriff Firewall-Befehl --zone=public --add-port=80/tcp --permanent systemctl restart firewalld.service Derzeit können Sie die Homepage von nginx sehen, indem Sie 130 und 131 besuchen. Erstellen Sie eine Nginx-StartdateiSie müssen die Nginx-Startdatei im Ordner init.d erstellen. Auf diese Weise wird Nginx jedes Mal automatisch gestartet, wenn der Server den Init-Prozess neu startet. cd /etc/init.d/ vim nginx #!/bin/sh # # nginx - dieses Skript startet und stoppt den nginx-Daemon # # chkconfig: -85 15 # Beschreibung: Nginx ist ein HTTP(S)-Server, HTTP(S) Reverse \ # Proxy und IMAP/POP3-Proxyserver # Prozessname: nginx # Konfiguration: /etc/nginx/nginx.conf # PID-Datei: /var/run/nginx.pid # Benutzer: nginx # Quellfunktionsbibliothek. . /etc/rc.d/init.d/Funktionen # Quellnetzwerkkonfiguration. . /etc/sysconfig/netzwerk # Überprüfen Sie, ob das Netzwerk aktiv ist. [ "$NETWORKING" = "nein" ] && exit 0 nginx="/usr/local/nginx/sbin/nginx" prog=$(Basisname $nginx) NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf" lockfile=/var/run/nginx.lock Start() { [ -x $nginx ] || beenden 5 [ -f $NGINX_CONF_FILE ] || beenden 6 echo -n $"$prog wird gestartet: " Daemon $nginx -c $NGINX_CONF_FILE retval=$? Echo [ $retval -eq 0 ] && touch $lockfile Rückgabewert $retval } stoppen() { echo -n $"$prog wird gestoppt: " killproc $prog -QUIT retval=$? Echo [ $retval -eq 0 ] && rm -f $lockfile Rückgabewert $retval } neu starten() { Konfigurationstest || return $? stoppen Start } neu laden() { Konfigurationstest || return $? echo -n $"Lade $prog neu: " killproc $nginx -HUP RETVAL=$? Echo } force_reload() { Neustart } konfigurationtest() { $nginx -t -c $NGINX_CONF_FILE } rh_status() { Status $prog } rh_status_q() { rh_status >/dev/null 2>&1 } Fall "$1" in Start) rh_status_q und beenden 0 1 Dollar ;; stoppen) rh_status_q || beenden 0 1 Dollar ;; Neustart|Konfigurationstest) 1 Dollar ;; neu laden rh_status_q || Ausgang 7 1 Dollar ;; erzwungenes Neuladen erzwingen_neuladen ;; Status) rh_status ;; condrestart|versuchen Sie einen Neustart) rh_status_q || beenden 0 ;; *) echo $"Verwendung: $0 {Start|Stopp|Status|Neustart|Condrestart|Neustartversuch|Neuladen|Neuladen erzwingen|Configtest}" Ausfahrt 2 esac Überprüfen Sie die Konfigurationsdatei und geben Sie die folgenden Befehle nacheinander ein chkconfig --add nginx chkconfig --level 345 nginx ein Fügen Sie dieser Datei Ausführungsberechtigungen hinzu chmod +x nginx ls Funktionen Netconsole Netzwerk Nginx README Starten Sie den Nginx-Dienst Dienst Nginx starten Dienst-Nginx-Status Dienst Nginx neu laden Nginx Reverse-Proxy, Lastausgleich (centos_1) Ändern Sie die Konfigurationsdatei nginx.conf und entfernen Sie den kommentierten Code cd /usr/local/nginx/conf/ mv nginx.conf nginx.conf.bak egrep -v '^#' nginx.conf.bak egrep -v '^#|^[ ]*#' nginx.conf.bak egrep -v '^#|^[ ]*#|^$' nginx.conf.bak egrep -v '^#|^[ ]*#|^$' nginx.conf.bak >> nginx.conf Katze nginx.conf Die Ausgabe lautet wie folgt Arbeiterprozesse 1; Ereignisse { Arbeiterverbindungen 1024; } http { mime.types einschließen; Standardtyp Anwendung/Oktett-Stream; sendfile an; KeepAlive-Timeout 65; Server { hören Sie 80; Servername localhost; Standort / { Stamm-HTML; Index Index.html Index.htm; } Fehlerseite 500 502 503 504 /50x.html; Standort = /50x.html { Stamm-HTML; } } } Nginx-Konfiguration neu laden # Testen Sie, ob die Konfigurationsdatei normal ist../sbin/nginx -t # Nginx-Konfiguration neu laden../sbin/nginx -s reload Konfigurieren Sie den Nginx-Reverse-Proxy und den Lastenausgleich Arbeiterprozesse 1; Ereignisse { Arbeiterverbindungen 1024; } http { mime.types einschließen; Standardtyp Anwendung/Oktett-Stream; sendfile an; KeepAlive-Timeout 65; # WebsVR-Servercluster (auch Lastausgleichspool genannt) Upstream-WebVR { Server 192.168.211.128:8001 Gewicht=1; Server 192.168.211.129:8001 Gewicht=2; } Server { hören Sie 80; # Wird verwendet, um die IP-Adresse oder den Domänennamen anzugeben. Mehrere Konfigurationen werden durch Leerzeichen getrennt. Servername 192.168.211.130; Standort / { # Senden Sie alle Anfragen zur Verarbeitung an den WebsVR-Cluster Proxy_Pass http://websvr; } Fehlerseite 500 502 503 504 /50x.html; Standort = /50x.html { Stamm-HTML; } } } Starten Sie nun nginx neu sbin/nginx -s neu laden Die WebsVR-Namen können angepasst werden, um die Bedeutung dieser Server anzugeben. Mit anderen Worten, Sie müssen nur Wenn Sie jetzt 130 besuchen, wechseln Web Svr 1 und Web Svr 2 auf der Seite. Der Server wird basierend auf dem Gewicht ausgewählt. Je größer der Gewichtswert, desto höher das Gewicht. Das heißt, wenn Sie die Seite wiederholt aktualisieren, wird Web Svr 2 im Durchschnitt zweimal und Web Svr 1 einmal angezeigt. Bisher konnte keine hohe Verfügbarkeit erreicht werden. Obwohl Webdienste auf diese Weise erstellt und einzelne Fehler auf diese Weise behandelt werden können, ist bei einem Ausfall des Nginx-Dienstes das gesamte System grundsätzlich nicht mehr zugänglich. Daher sind mehrere Nginx-Server erforderlich, um dies sicherzustellen. Mehrere Nginx arbeiten zusammen, Nginx hohe Verfügbarkeit [Dual-Machine-Master-Slave-Modus] Fügen Sie einen neuen nginx-Dienst auf dem Arbeiterprozesse 1; Ereignisse { Arbeiterverbindungen 1024; } http { mime.types einschließen; Standardtyp Anwendung/Oktett-Stream; sendfile an; KeepAlive-Timeout 65; Upstream-WebVR { Server 192.168.211.128:8001 Gewicht=1; Server 192.168.211.129:8001 Gewicht=2; } Server { hören Sie 80; Servername 192.168.211.131; Standort / { Proxy-Passwort http://websvr; } Fehlerseite 500 502 503 504 /50x.html; Standort = /50x.html { Stamm-HTML; } } } # Nginx neu laden sbin/nginx -s neu laden Jetzt kann der Besuch von http://192.168.211.130/ auch ähnliche Ergebnisse wie http://192.168.211.131/ erhalten. Die IPs dieser beiden Nginx-Server sind unterschiedlich. Wie können wir also dafür sorgen, dass die beiden Nginx-Server zusammenarbeiten? Dies erfordert die Verwendung von Keepalived. Installieren Sie die Software und installieren Sie zwei Centos gleichzeitig yum installiere keepalived pcre-devel -y Konfigurieren von Keepalived Backup auf beiden cp /etc/keepalived/keepalived.conf keepalived.conf.bak [root@localhost keepalived]# cat keepalived.conf ! Konfigurationsdatei für Keepalived global_defs { script_user root Skriptsicherheit aktivieren } vrrp_script chk_nginx { # Geben Sie das Überwachungsskript an, um festzustellen, ob der Nginx-Dienst normal ausgeführt wird. Skript „/etc/keepalived/chk_nginx.sh“ #Geben Sie die Überwachungszeit an und führen Sie Intervall 10 alle 10 Sekunden aus # Die Prioritätsänderungen werden durch das Skriptergebnis verursacht. Wenn die Erkennung fehlschlägt (das Skript gibt einen Wert ungleich Null zurück), beträgt die Priorität -5. # Gewicht -5 # # Eine Erkennung wird nur dann als echter Fehler betrachtet, wenn sie zweimal hintereinander fehlschlägt. Die Priorität wird nach Gewicht reduziert (zwischen 1-255) # Herbst 2 # Eine erfolgreiche Erkennung gilt als erfolgreich, wenn sie einmal erfolgreich ist. Ändert aber nichts an der Priorität# Anstieg 1 } vrrp_instance VI_1 { #Geben Sie die Keepalived-Rolle an, setzen Sie den Host auf MASTER und den Standby auf BACKUP Status BACKUP # Geben Sie die Schnittstelle des HA-Überwachungsnetzwerks an. CentOS7 verwendet IP-Adresse, um Schnittstelle ens33 zu erhalten # Die virtual_router_id des primären und des Backup-Routers muss identisch sein. Sie können sie auf die zweite Gruppe von IP-Adressen setzen: muss zwischen 1 und 255 liegen virtuelle_Router_ID 51 # Prioritätswert. In derselben vrrp_instance muss MASTRE höher sein als BAUCKUP. Nach der Wiederherstellung von MASTER übernimmt BACKUP automatisch die Priorität 90 # VRRP-Broadcast-Zyklus in Sekunden. Wenn der Broadcast nicht erkannt wird, wird davon ausgegangen, dass der Dienst ausgefallen ist und der primäre und Backup-Advert_int 1 # Legen Sie den Authentifizierungstyp und das Kennwort fest. Der Master und der Slave müssen die gleiche Authentifizierung haben { # Legen Sie den VRRP-Authentifizierungstyp fest. Es gibt zwei Haupttypen: PASS und AH auth_type PASS # Das verschlüsselte Passwort muss auf beiden Servern für eine normale Kommunikation identisch sein auth_pass 1111 } Titel_Skript { # Führen Sie den überwachten Dienst aus und verweisen Sie dabei auf das VRRP-Skript. Sein Name ist im Abschnitt „vrrp_script“ angegeben. Führen Sie sie regelmäßig aus, um die Priorität chk_nginx zu ändern } virtuelle_IP-Adresse { # VRRP HA virtuelle Adresse Wenn mehrere VIPs vorhanden sind, füllen Sie weiterhin 192.168.211.140 aus } } Senden Sie die Konfigurationsdatei an Knoten scp /etc/keepalived/keppalived.conf 192.168.211.131:/etc/keepalived/keepalived.conf Für Knoten Status BACKUP Priorität 90 Hauptüberwachungsskript für die Keepalived-Konfiguration chk_nginx.sh Erstellen Sie ein Skript zur Ausführung in Keepalived vi /etc/keepalived/chk_nginx.sh #!/bin/bash # Prüfen Sie, ob es einen Nginx-Prozess gibt, der der Variablen Zähler einen Wert zuweist Zähler=`ps -C nginx --no-header |wc -l` # Wenn kein Prozess vorhanden ist, ist der Wert 0 wenn [ $counter -eq 0 ];dann # Versuchen Sie, nginx zu starten echo "Keepalived Info: Versuchen Sie, nginx zu starten" >> /var/log/messages /etc/nginx/sbin/nginx Schlaf 3 wenn [ `ps -C nginx --no-header |wc -l` -eq 0 ];dann # Systemmeldungen ausgeben echo "Keepalived Info: Nginx konnte nicht gestartet werden" >> /var/log/messages # Wenn er noch nicht gestartet wurde, beenden Sie den Keepalived-Prozess. # killall keepalived # Oder stoppen Sie /etc/init.d/keepalived stop Ausfahrt 1 anders echo "Keepalived Info: Nginx-Dienst wurde wiederhergestellt" >> /var/log/messages Ausfahrt 0 fi anders # Status ist normal echo "Keepalived Info: Nginx-Erkennung ist normal" >> /var/log/messages; Ausfahrt 0 fi Als nächstes erteilen Sie Ausführungsberechtigungen und testen chmod +x chk_nginx.sh ./chk_nginx.sh Starten Sie Keepalived auf beiden Seiten neu systemctl Neustart keepalived systemctl status keepalived Zu diesem Zeitpunkt kann auch der Zugriff auf tail -f /var/log/messages # Wenn nginx Keepalived Info ausschaltet: Versuchen Sie, nginx zu starten Keepalived Info: Der Nginx-Dienst wurde wiederhergestellt # nginx öffnet Keepalived normal. Info: Die Nginx-Erkennung ist normal. Bei einer normalen Erkennung durch nginx wird 0 zurückgegeben, bei keiner Erkennung wird 1 zurückgegeben. Allerdings scheint keepalived diesen Rückgabewert nicht zu erkennen, um die Übertragung zu erreichen, sondern um zu erkennen, ob der Keepalived-Dienst vorhanden ist, um die lokale VIP freizugeben und die virtuelle IP schließlich auf einen anderen Server zu übertragen. Verweise https://www.jianshu.com/p/7e8e61d34960 Dies ist das Ende dieses Artikels über die VMware-Bereitstellung der Dual-Active-Architektur von Nginx+KeepAlived-Clustern. Weitere verwandte Inhalte zu Nginx+KeepAlived-Clustern finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
<<: Beispiele für die Verwendung einer Link-Aktualisierungsseite und einer JS-Aktualisierungsseite
>>: 30 hervorragende Beispiele für Farbabstimmung im Webdesign
Vor langer Zeit habe ich einen Blogbeitrag mit de...
Schauen wir uns zunächst ohne Umschweife die Rend...
Inhaltsverzeichnis 1. Virtueller Host 1.1 Virtuel...
Seit kurzem ist https auch auf dem Handy möglich....
1. Wie wird die aktuelle Uhrzeit in MySQL dargest...
Bevor ich anfange, möchte ich betonen, dass proce...
Als ich nachts meinen MAC einschaltete, stellte i...
In diesem Artikel werden die Installations- und K...
Frage: Ich habe in Vue ein Formular zum Hochladen...
In einem Artikel vor langer Zeit habe ich über di...
In diesem Artikel wird der spezifische Code von j...
Vorwort: Eines Tages baute ich einen MySQL-Dienst...
ModSecurity ist ein leistungsstarkes Paketfiltert...
Verwenden Sie den Befehl mysql, um eine Verbindun...
Nachdem der Container gestartet wurde Melden Sie ...