Répertoire d'articles
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:
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 traitementMais 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:
- La page d'accueil utilise une correspondance précise
- Les pages statiques utilisent une correspondance régulière pour se traiter
- 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
- L'efficacité de Nginx dans le traitement des pages statiques est bien supérieure à celle de Tomcat
- Si Tomcat demande 1000 fois, Nginx demande 6000 fois
- Le débit de Tomcat par seconde est de 0,6 M et le débit de Nginx par seconde de 3,6 M
- 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:
- Lorsque le serveur reçoit la demande du client, il existe des ressources statiques et dynamiques
- Les ressources statiques sont servies par Nginx
- 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 |
- Portail des packages logiciels : https://pan.baidu.com/s/1crfygqLQQsO-HByrF1YZ8g (code d'extraction: k3e6)
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 /
- 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
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
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)
- L'autre fait de même
4. Configuration de séparation dynamique et statique
- 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>
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
#重启
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh
- Configuration de Tomcat Server2
Fondamentalement identique à la configuration de Tomcat Server1
mkdir /usr/local/tomcat/webapps/xcf2
#记得重启
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh
5. Configurer le serveur Nginx
- 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
- 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;
- 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;
}
- 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;
}
- 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/
Visite du navigateur http://192.168.126.11/cat.jpg
Testez l'effet d'équilibrage de charge, actualisez le navigateur pour visiter http://192.168.126.11/xcf/index.jsp