Cluster d'équilibrage de charge Nginx + Tomcat (séparation dynamique et statique)


1. Présentation du cluster

  • Dans des circonstances normales, un site Tomcat peut avoir un point de défaillance unique et ne peut pas faire face aux demandes complexes et diverses d'un trop grand nombre de clients. Il ne peut pas être utilisé uniquement dans un environnement de production, nous avons donc besoin d'une solution plus fiable.
  • Nginx est un très bon logiciel de serveur http, il peut prendre en charge jusqu'à 5000 connexions simultanées, possède une forte capacité de traitement des ressources statiques, un fonctionnement stable et une très faible consommation de ressources système telles que la mémoire et le processeur
  • À l'heure actuelle, de nombreux grands sites Web utilisent le serveur Nginx comme proxy inverse et équilibreur de charge du site Web principal pour améliorer la concurrence de charge de l'ensemble du site.

En utilisant Nginx comme équilibreur de charge et Tomcat comme cluster de charge du serveur d'applications, la topologie du site Web est illustrée dans la figure suivante:
marque
serveur Nginx comme frontal, serveur Tomcat comme back-end, les demandes de page Web sont transmises par le service Nginx
mais pas toutes les demandes Web Transfert, au lieu de demander des pages statiques au serveur Nginx pour traitement, les demandes de page dynamiques sont transmises au serveur Tomcat back-end pour traitement

Mais pour autant que nous le sachions, Tomcat est un serveur d'applications léger, et la quantité d'accès acceptable peut être insuffisante, nous avons donc besoin de plusieurs serveurs Tomcat, puis nous utilisons les pondérations de configuration Nginx pour sélectionner les serveurs Tomcat à traiter, l'un de l'équilibrage de charge Stratégie


Deux, Nginx

Serveur Nginx:

  1. La page d'accueil utilise une correspondance précise
  2. Les pages statiques utilisent une correspondance régulière pour se traiter
  3. La page dynamique utilise une correspondance régulière pour faire correspondre la requête à la fin de jsp et la transmet au serveur Tomcat à l'aide de proxy_pass

Avantages du traitement statique Nginx

  1. L'efficacité de Nginx dans le traitement des pages statiques est bien supérieure à celle de Tomcat
  2. Si Tomcat demande 1000 fois, Nginx demande 6000 fois
  3. Le débit de Tomcat par seconde est de 0,6 M et le débit de Nginx par seconde de 3,6 M
  4. La capacité de Nginx à gérer les ressources statiques est 6 fois supérieure à celle de Tomcat

Principe de séparation dynamique et statique Nginx:
marque

  1. Lorsque le serveur reçoit la demande du client, il existe des ressources statiques et dynamiques
  2. Les ressources statiques sont servies par Nginx
  3. Ressource dynamique Nginx transmise au backend

Les principaux paramètres du proxy inverse de configuration Nginx:

配置后端服务器池,以提供响应数据
upstream 服务器名 {
    
    }

配置将访问请求转发给后端服务器池名
proxy_pass http://服务器名

Trois étapes de configuration

1. Environnement

  • VMware 16 Pro (16.1.0)
  • L'adaptateur réseau est en mode NAT
  • La carte réseau est configurée pour obtenir une adresse IP de manière statique
  • Entrepôt source YUM local
  • Compilation et installation du code source
Hôte correspondre adresse IP Logiciel requis
Serveur Nginx CentOS 7-1 192.168.126.11 nginx-1.12.2.tar.gz
Serveur Tomcat1 CentOS 7-2 192.168.126.12 apache-tomcat-9.0.16.tar.gz 、 jdk-8u201-linux-x64.rpm
Serveur Tomcat2 CentOS 7-3 192.168.126.13 apache-tomcat-9.0.16.tar.gz 、 jdk-8u201-linux-x64.rpm

2. Déployez l'équilibreur de charge Nginx

  • Pour des aspects théoriques et pratiques détaillés de la compilation et de l'installation du code source de Nginx, veuillez consulter mon blog précédent, portail: https://blog.csdn.net/weixin_51486343/article/details/112390348
  • Après avoir téléchargé les ressources de partage de packages, ouvrez Xshell et faites glisser le package Nginx vers le répertoire / opt /
    marque
  • Voici un script de déploiement Nginx Shell en un clic
cd /opt/
vim nginx.sh

#!/bin/bash

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

yum -y install pcre-devel zlib-devel gcc gcc-c++ make

useradd -M -s /sbin/nologin nginx

cd /opt
tar zxvf nginx-1.12.2.tar.gz

cd nginx-1.12.2/
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module

make -j 2 && make install

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

killall -9 nginx
nginx

echo `[Unit]
Description=nginx
After=network.target
[Service]
Type=£orking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecrReload=/bin/kill -s HUP $MAINPID
ExecrStop=/bin/ki11 -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target` > /lib/systemd/system/nginx.service

chmod 754 /lib/systemd/system/nginx.service
systemctl start nginx.service
systemctl enable nginx.service


. nginx.sh
#等待执行完毕
  • vérification
    marque
    marque

3. Déployez 2 serveurs d'applications Tomcat

  • Pour une théorie spécifique et un fonctionnement pratique, veuillez vous référer à mon blog précédent, Portal : https://blog.csdn.net/weixin_51486343/article/details/112746276
  • Voici également un script de serveur Tomcat de déploiement en un clic
  • N'oubliez pas de faire d'abord glisser les deux packages dans le répertoire / opt
    marque
cd /opt
vim tomcat.sh

#/bin/bash

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

cd /opt
rpm -ivh jdk-8u201-linux-x64.rpm

echo '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' > /etc/profile.d/java.sh

source /etc/profile

cd /opt
tar zxvf apache-tomcat-9.0.16.tar.gz
mv apache-tomcat-9.0.16 /usr/local/tomcat

/usr/local/tomcat/bin/startup.sh


. tomcat.sh
#等待执行完毕

#验证
netstat -natp | grep 8080 
java -version
http://192.168.126.11:8080
(http://192.168.126.12:8080)

marque
marque

  • L'autre fait de même
    marque

4. Configuration de séparation dynamique et statique

  1. Serveur Tomcat1
mkdir /usr/local/tomcat/webapps/xcf1
#创建指定首页目录
#这里随后拖进来一张jpg格式的照片

vim /usr/local/tomcat/webapps/xcf1/index.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
        <html>
        <head>
        <title>JSP test2 page</title>
        </head>
        <body>
        <% out.println("这里是动态页面:123123");%>
        </body>
        </html>

marque

vim /usr/local/tomcat/conf/server.xml
#编辑tomcat主配置文件

<Host name="TomcatServer1" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
        <Context docBase="/usr/local/tomcat/webapps/xcf1" path="" reloadable="true" />
</Host>
#主机名:TomcatServer1
#工作目录:Webapps
#开启解压war包
#运行时有web应用自动部署
#首页文件在/usr/local/tomcat/webapps/xcf1目录中
默认文件:index.jsp

marque

#重启
/usr/local/tomcat/bin/shutdown.sh

/usr/local/tomcat/bin/startup.sh

marque

  1. Configuration de Tomcat Server2

Fondamentalement identique à la configuration de Tomcat Server1

mkdir /usr/local/tomcat/webapps/xcf2

marque
marque

#记得重启
/usr/local/tomcat/bin/shutdown.sh 
/usr/local/tomcat/bin/startup.sh 

marque

5. Configurer le serveur Nginx

  1. Préparer des pages statiques et des images statiques
echo '<html><body><h1>这是默认目录静态页面</h1></body></html>' > /usr/local/nginx/html/index.html

mkdir /usr/local/nginx/html/xiaoxu

marque

  1. Configurer la liste des serveurs pour l'équilibrage de charge

Le paramètre poids représente le poids, plus le poids est élevé, plus la probabilité d'être attribué est élevée

vim /usr/local/nginx/conf/nginx.conf
#编辑nginx主配置文件

    #gzip  on;

    upstream tomcat_server {
    
    
        server 192.168.126.12:8080 weight=1;
        server 192.168.126.13:8080 weight=1;
        }


    server {
    
    
        listen       80;
        server_name  www.xcf.com;

        charset utf-8;

marque

  1. Configurer Nginx pour traiter les demandes de page dynamiques et transmettre la demande de fichier .jsp au serveur Tomcat pour traitement
	location ~ .*.jsp$ {
    
    
		proxy_pass http://tomcat_server;	
		proxy_set_header HOST $host;		
		
		proxy_set_header X-Real-IP $remote_addr;    				
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  
	}

marque

  1. Configurer Nginx pour gérer les demandes d'images statiques
	location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|css)$ {
    
    
		root /usr/local/nginx/html/xiaoxu;
		expires 10d;
	}

marque

  1. Redémarrez le service nginx et testez
systemctl restart nginx.service

Testez l'effet des pages Web statiques:

Accès au navigateur: http://192.168.126.11/
marque

Visite du navigateur http://192.168.126.11/cat.jpg
marque

Testez l'effet d'équilibrage de charge, actualisez le navigateur pour visiter http://192.168.126.11/xcf/index.jsp
marque
marque

Je suppose que tu aimes

Origine blog.csdn.net/weixin_51486343/article/details/112759401
conseillé
Classement