EinführungGenerell kann eine Tomcat-Site nicht allein in einer Produktionsumgebung verwendet werden, da die Möglichkeit eines Einzelpunktfehlers besteht und die Site nicht in der Lage ist, zu viele komplexe und unterschiedliche Kundenanforderungen zu verarbeiten. Daher ist eine zuverlässigere Lösung erforderlich, um die Website-Architektur zu verbessern. 1. FallübersichtNginx ist eine sehr gute HTTP-Serversoftware. Sie kann bis zu 50.000 gleichzeitige Verbindungen unterstützen, verfügt über leistungsstarke Funktionen zur Verarbeitung statischer Ressourcen, läuft sehr stabil und verbraucht sehr wenig Systemressourcen wie Speicher und CPU. Derzeit verwenden viele große Websites Nginx-Server als Reverse-Proxys und Load Balancer für Back-End-Website-Programme, um die gleichzeitige Ladeleistung der gesamten Site zu verbessern. Das Beispiel verwendet Nginx als Load Balancer und Tomcat als Anwendungsserver, um einen Lastcluster einzurichten. Das Architekturdiagramm sieht wie folgt aus 2. UmgebungsbereitstellungDie Fallumgebung ist wie folgt
Deaktivieren Sie die Firewall und den automatischen Start [root@ng133 ~]#systemctl stop firewalld.service #Firewall und automatische Startfunktion ausschalten [root@ng133 ~]#systemctl status firewalld.service [root@ng133 ~]#setenforce 0 #Sicherheitsverbesserungssystem deaktivieren [root@ng133 ~]#setenforce: SELinux ist deaktiviert 3. Nginx-HostinstallationInstallieren Sie den Nginx-Dienst. Hier ist ein Bereitstellungsskript mit einem Klick #!/bin/bash iptables -F yum -y installiere epel-release und yum alles bereinigen und yum makecache yum -y installiere pcre-devel zlib-devel gcc gcc-c++ make wget Benutzeradd -M -s /sbin/nologin nginx wget http://nginx.org/download/nginx-1.12.2.tar.gz -P /opt tar zxvf /opt/nginx-1.12.2.tar.gz -C /opt cd /opt/nginx-1.12.2 ./konfigurieren \ --prefix=/usr/local/nginx \ --Benutzer=nginx \ --group=nginx \ --mit-http_stub_status_module cd /opt/nginx-1.12.2 make -j 4 und make install ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ Katze > /usr/lib/systemd/system/nginx.service <<EOF [Einheit] Beschreibung=nginx Nach=Netzwerk.Ziel [Service] Typ=Forking PID-Datei = /usr/local/nginx/logs/nginx.pid ExecStart=/usr/local/nginx/sbin/nginx ExecrReload=/bin/kill -s HUP $MAINPID ExecrStop=/bin/kill -s QUIT $MAINPID PrivateTmp=true [Installieren] WantedBy=Mehrbenutzer.Ziel Ende der Laufzeit chmod 754 /usr/lib/systemd/system/nginx.service systemctl daemon-reload und systemctl starte nginx.service und systemctl aktiviere nginx.service Echo " " pgrep "nginx" &> /dev/null wenn [ $? -eq 0 ];dann echo -e "\033[32mnginx-Dienst läuft normal, Sie können curl verwenden, um\033[0m" anzuzeigen. anders echo -e "\033[31mnginx-Dienst läuft abnormal, bitte überprüfen\033[0m" fi Zeigen Sie die Ergebnisse an, nachdem die Installation abgeschlossen ist [root@ng140 /opt/nginx-1.12.2]#curl -I http://192.168.8.140 HTTP/1.1 200 OK Server: nginx/1.12.2 Datum: Fr., 15. Okt. 2021 01:46:17 GMT Inhaltstyp: text/html Inhaltslänge: 612 Letzte Änderung: Fr, 15. Okt. 2021 01:45:34 GMT Verbindung: Keep-Alive ETag: "6168dd3e-264" Akzeptierte Bereiche: Bytes 4. Tomcat-Installation und -Konfiguration1. Installieren Sie Tomcat
Installieren Sie JDK und konfigurieren Sie die Umgebung [root@tm1133 ~]#cd /opt/ #Laden Sie das Installationspaket in das Verzeichnis /opt hoch [root@tm1133 /opt]#ls apache-tomcat-9.0.16.tar.gz jdk-8u201-linux-x64.rpm [root@tm1133 /opt]#rpm -ivh jdk-8u201-linux-x64.rpm #Installieren [root@tomcat /opt]#vim /etc/profile.d/java.sh #/etc/profile.d/Umgebungsvariablen-Skriptverzeichnis export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64 export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar export PATH=$JAVA_HOME/bin:$PATH [root@tm1133 /opt]#source /etc/profile.d/java.sh #Importieren Sie das Skript in die Umgebungsvariable, damit es wirksam wird [root@tm1133 /opt]#java -version #Überprüfen Sie die Version Java-Version „1.8.0_201“ Java(TM) SE-Laufzeitumgebung (Build 1.8.0_201-b09) Java HotSpot(TM) 64-Bit Server VM (Build 25.201-b09, gemischter Modus) Auspacken [root@tm1133 /opt]#tar zxvf apache-tomcat-9.0.16.tar.gz #Entpacken [root@tm1133 /opt]#mv apache-tomcat-9.0.16 /usr/local/tomcat #Paketspeicherort übertragen und umbenennen Tomcat-Verwaltung starten und optimieren (Softlinks erstellen und Startbefehl optimieren) [root@tm1133 /opt]#ln -s /usr/local/tomcat/bin/startup.sh /usr/local/bin/ [root@tm1133 /opt]#ln -s /usr/local/tomcat/bin/shutdown.sh /usr/local/bin/ [root@tm1133 /opt]#startup.sh #OpenUsing CATALINA_BASE: /usr/local/tomcat Verwenden von CATALINA_HOME: /usr/local/tomcat Verwenden von CATALINA_TMPDIR: /usr/local/tomcat/temp Verwenden von JRE_HOME: /usr/java/jdk1.8.0_201-amd64 CLASSPATH verwenden: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar Tomcat wurde gestartet. [root@tm1133 /opt]#netstat -antp |grep 8080 #Überprüfen Sie, ob TCP6 erfolgreich aktiviert wurde 0 0 :::8080 :::* LISTEN 2520/java 2. Tomcat Server 1 Konfiguration[root@tm1133 ~]#mkdir /usr/local/tomcat/webapps/gl #Erstellen Sie ein Testverzeichnis [root@tm1133 ~]#vim /usr/local/tomcat/webapps/gl/index.jsp <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> #Dynamische Seitenkonfiguration <html> <Kopf> <title>JSP-Test1-Seite</title> </Kopf> <Text> <% out.println("Dynamische Seite 1, http://www.test1.com");%> </body> </html> #Bearbeiten Sie die Hauptkonfigurationsdatei von Tomcat und fügen Sie die virtuelle Hostkonfiguration hinzu. Hier müssen Sie zuerst den ursprünglichen Hostnamen und andere Konfigurationen löschen [root@tm2134 /opt]#vim /usr/local/tomcat/conf/server.xml ------------------------------------------------------------------------------------------------- <Hostname="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" #Finden Sie dies und löschen Sie es zuerst, sonst tritt am Ende ein Fehler auf------------------------------------------------------------------------------------------------ #Fügen Sie am Ende der Zeile 162 folgende Konfiguration ein und achten Sie dabei auf die Endung </Host> <Hostname="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <Context docBase="/usr/local/tomcat/webapps/gl" Pfad="" reloadable="true" /> </Host> ------------------------------------------------------------------------------------------------- [root@tm2134 /opt]#shutdown.sh [root@tm2134 /opt]#startup.sh #Starten Sie den Dienst neu 3. Tomcat Server 2 Konfiguration[root@tm2134 /opt]#mkdir /usr/local/tomcat/webapps/gl #Erstellen Sie ein Testverzeichnis [root@tm2134 /opt]#vim /usr/local/tomcat/webapps/gl/index.jsp #Konfiguration dynamischer Seiten <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <html> <Kopf> <title>JSP-Test2-Seite</title> </Kopf> <Text> <% out.println("Dynamische Seite 2, http://www.test2.com");%> </body> </html> #Bearbeiten Sie die Hauptkonfigurationsdatei von Tomcat und fügen Sie die virtuelle Hostkonfiguration hinzu. Hier müssen Sie zuerst den ursprünglichen Hostnamen und andere Konfigurationen löschen [root@tm2134 /opt]#vim /usr/local/tomcat/conf/server.xml ------------------------------------------------------------------------------------------------- <Hostname="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" #Finden Sie dies und löschen Sie es zuerst, sonst tritt am Ende ein Fehler auf------------------------------------------------------------------------------------------------ #Fügen Sie am Ende der Zeile 162 folgende Konfiguration ein und achten Sie dabei auf die Endung </Host> <Hostname="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <Context docBase="/usr/local/tomcat/webapps/gl" Pfad="" reloadable="true" /> </Host> ------------------------------------------------------------------------------------------------- [root@tm2134 /opt]#shutdown.sh [root@tm2134 /opt]#startup.sh #Starten Sie den Dienst neu 5. Nginx-ServerkonfigurationStatische Seitenkonfiguration [root@ng140 ~]#echo '<html><body><h1>das ist statisch</h1></body></html>' > /usr/local/nginx/html/index.html [root@ng140 ~]#cat /usr/local/nginx/html/index.html <html><body><h1>das ist statisch</h1></body></html> [root@ng140 /usr/local/nginx/html]#mkdir /usr/local/nginx/html/picture #Bilder hochladen [root@ng140 /usr/local/nginx/html]#cd picture/ [root@ng140 /usr/local/nginx/html/bild]#rz -E rz wartet auf Empfang. [root@ng140 /usr/local/nginx/html/bild]#ls ha.jpg #Fügen Sie die folgenden Konfigurationsparameter unter Zeile 57 der Hauptkonfigurationsdatei hinzu, damit die Seite Bilder laden kann [root@ng140 /usr/local/nginx/html/picture]#vim /usr/local/nginx/conf/nginx.conf Standort ~ .*\.(gif|jpg|jpeg|png|bmp|swf|css)$ { root /usr/local/nginx/html/picture; läuft in 10 Tagen ab; } [root@ng140 /usr/local/nginx/html/bild]#nginx -t [root@ng140 /usr/local/nginx/html/picture]#systemctl nginx.service neu starten Konfigurieren Sie die Hauptkonfigurationsdatei von nginx [root@ng140 ~]#vim /usr/local/nginx/conf/nginx.conf ...... #Konfigurieren Sie die Serverliste für den Lastenausgleich. Der Gewichtsparameter gibt das Gewicht an. Je höher das Gewicht, desto größer die Wahrscheinlichkeit einer Zuweisung. #gzip on; #Fügen Sie den folgenden Inhalt unter Zeile 33 hinzu upstream tomcat_server { Server 192.168.8.133:8080 Gewicht=1; Server 192.168.8.134:8080 Gewicht=1; } #Fügen Sie unter Zeile 45 die folgenden Konfigurationsparameter hinzu #access_log logs/host.access.log main; 46 Standort ~ .*\.jsp$ { 47 Proxy-Passwort http://Tomcat-Server; 48 Proxy_Set_Header Host $Host; 49 proxy_set_header X-Real-IP $remote_addr; 50 proxy_set_header X-Weitergeleitet-Für $proxy_add_x_forwarded_for; 51 } Parameteranalyse hinzufügen Standort ~ .*\.jsp$ { #Weisen Sie in der Anforderung zum Springen zu Tomcat die von Nginx empfangene Client-IP-Adresse der Quell-IP zu, ermitteln Sie die tatsächliche IP des Clients und weisen Sie den Proxy-Pass http://tomcat_server zu und springen Sie damit; Proxy_Set_Header HOST $Host; #Legen Sie den Hostnamen (Domänenname oder IP, Port) der vom Backend-Webserver empfangenen Anforderung fest. Der Standardhostwert ist der Hostname, der durch die direkte Verbindung proxy_pass proxy_set_header X-Real-IP $remote_addr festgelegt wurde. #Kopieren Sie $remote_addr nach X-Real-IP (angepasst), um die Quell-IP hin und her zu erhalten proxy_set_header X-Weitergeleitet-Für $proxy_add_x_forwarded_for; #Wenn nginx als Proxyserver verwendet wird, zeichnet die IP-Liste die vom Proxy weitergegebenen IPs und seine IP auf. Überprüfen Sie die Syntax der Hauptkonfigurationsdatei und starten Sie den Dienst neu [root@ng140 ~]#nginx -t nginx: die Syntax der Konfigurationsdatei /usr/local/nginx/conf/nginx.conf ist in Ordnung nginx: Test der Konfigurationsdatei /usr/local/nginx/conf/nginx.conf ist erfolgreich [root@ng140 ~]#systemctl nginx.service neu starten 6. VerifizierungsergebnisseTesten der Wirkung statischer Seiten mit Firefox Testen Sie, ob das Load Balancing funktioniert. Aktualisieren Sie die Webseite und Sie sehen, dass zwischen den dynamischen Seiten 1 und 2 hin- und hergeschaltet wird.
ZusammenfassenSie können zwei oder mehr Tomcat-Server im Upstream von Nginx platzieren, um einen Lastausgleichscluster zu bilden. Anschließend können Sie die Cluster-Site über eine Webproxy-Methode wie proxy_pass am Standort festlegen und anschließend das Gewicht des Tomcat-Servers separat über den Gewichtswert festlegen. In einer Produktionsumgebung können die Hardwarekonfigurationen von Tomcat-Servern variieren. Sie können die Gewichtungswerte der entsprechenden Server ändern, um die Verteilung von Zugriffsanforderungen auf Server mit höherer oder niedrigerer Konfiguration zu steuern. Dies ist das Ende dieses Artikels über das Implementierungsbeispiel des Nginx+Tomcat-Lastausgleichsclusters. Weitere relevante Inhalte zum Nginx+Tomcat-Lastausgleichscluster finden Sie in früheren Artikeln auf 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:
|
<<: 33 der besten kostenlosen englischen Schriftarten geteilt
Erstellen Sie eine neue server.js Garn init -y Ga...
So implementieren Sie Textsymbole über CSS /*Symb...
Ziel dieses Artikels ist es, die Grundfunktionen ...
Docker-Daemon-Socket Der Docker-Daemon kann über ...
Hintergrund: Ich frage mich, ob Ihnen aufgefallen...
Zunächst stellt sich häufig die Frage: Welche Bez...
Inhaltsverzeichnis 01 Problembeschreibung 02 Lösu...
Installieren Geben Sie zur Installation den folge...
Der Zweck der Cache-Verwendung besteht darin, den...
Vorwort Das Transaktionsdatenwörterbuch und das a...
1. Quellcode entwerfen Code kopieren Der Code laut...
Inhaltsverzeichnis 01-Ereignisse brodeln 1.1- Ein...
Ich habe vor, eine Reihe von Haftnotizwänden zu r...
Einführung Inkrementelles Backup bedeutet, dass n...
1. Um ein PPTP-VPN aufzubauen, müssen Sie Port 17...