Implementierungsbeispiel eines Nginx+Tomcat-Load-Balancing-Clusters

Implementierungsbeispiel eines Nginx+Tomcat-Load-Balancing-Clusters

Einführung

Generell 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übersicht

Nginx 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

Bildbeschreibung hier einfügen

2. Umgebungsbereitstellung

Die Fallumgebung ist wie folgt

Gastgeber Betriebssystem IP-Adresse Hauptsoftware
Nginx-Server CentOS 7.4 x86_64 192.168.8.140 nginx-1.12.2.tar.gz
Tomcat-Server 1 CentOS 7.4 x86_64 192.168.8.133 ①apache-tomcat-9.0.16.tar.gz / ②jdk-8u201-linux-x64.rpm
Tomcat-Server 2 CentOS 7.4 x86_64 192.168.8.134 ①apache-tomcat-9.0.16.tar.gz / ②jdk-8u201-linux-x64.rpm

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-Hostinstallation

Installieren 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

Bildbeschreibung hier einfügen

4. Tomcat-Installation und -Konfiguration

1. Installieren Sie Tomcat

Die Konfigurationsmethoden von Tomcat-Server 1 und Tomcat-Server 2 sind grundsätzlich dieselben.

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-Serverkonfiguration

Statische 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. Verifizierungsergebnisse

Testen der Wirkung statischer Seiten mit Firefox

Bildbeschreibung hier einfügen

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.

http://192.168.8.140/index.jsp

Bildbeschreibung hier einfügen

Bildbeschreibung hier einfügen

Zusammenfassen

Sie 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:
  • Detaillierte Erläuterung der Installation und Konfiguration des Nginx+Tomcat-Load-Balancing-Clusters
  • Tutorial zum Aufbau eines Hochleistungs-Load-Balancing-Clusters mit Nginx+Tomcat
  • So erstellen Sie mit Nginx+Tomcat einen Hochleistungs-Load-Balancing-Cluster
  • nginx+tomcat implementiert Lastenausgleich und verwendet Redis-Sitzungsfreigabe
  • Nginx und Tomcat realisieren dynamische und statische Trennung und Lastausgleich
  • Detaillierte Erläuterung der Konfigurationspraxis für den Lastenausgleich des Nginx+Tomcat+Https-Servers
  • Implementierung des Nginx+Tomcat-Lastausgleichs und der dynamischen und statischen Clustertrennung

<<:  33 der besten kostenlosen englischen Schriftarten geteilt

>>:  Detaillierte Erklärung des Unterschieds und der Anwendung von CSS3-Filtern: Schlagschattenfilter und Box-Shadow

Artikel empfehlen

React implementiert den Beispielcode der Radiokomponente

Ziel dieses Artikels ist es, die Grundfunktionen ...

So aktivieren Sie den Fernzugriff in Docker

Docker-Daemon-Socket Der Docker-Daemon kann über ...

Untersuchung und Korrektur des seltsamen Verhaltens von parseInt() in js

Hintergrund: Ich frage mich, ob Ihnen aufgefallen...

Gängige Reparaturmethoden für die Trennung der MySQL Master-Slave-Replikation

Inhaltsverzeichnis 01 Problembeschreibung 02 Lösu...

Einfache und schnelle Einführung in die React-Routing-Entwicklung

Installieren Geben Sie zur Installation den folge...

So verwenden Sie Nginx als Proxy-Cache

Der Zweck der Cache-Verwendung besteht darin, den...

Die Aktualisierung der Seite zur Formularübermittlung springt nicht

1. Quellcode entwerfen Code kopieren Der Code laut...

Eine kurze Analyse von Event Bubbling und Event Capture in js

Inhaltsverzeichnis 01-Ereignisse brodeln 1.1- Ein...

So erstellen Sie einen pptpd-Dienst in Alibaba Cloud Ubuntu 16.04

1. Um ein PPTP-VPN aufzubauen, müssen Sie Port 17...