Nginx+Tomcat负载均衡多实例详解


Posted in Servers onApril 11, 2022

一、Tomcat多实例

1.1 安装好 jdk

在部署 Tomcat 之前必须安装好 jdk,因为 jdk 是 Tomcat 运行的必要环境。

1. #关闭防火墙
 
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
 
2. #将安装 Tomcat 所需软件包传到/opt目录下
apache-tomcat-9.0.16.tar.gz 
jdk-8u201-linux-x64.rpm
 
3. #切换至/opt下,安装JDK
cd /opt
rpm -ivh jdk-8u201-linux-x64.rpm 
?
4. #查看java版本
java -version

关闭防火墙

Nginx+Tomcat负载均衡多实例详解

将安装 Tomcat 所需软件包传到/opt目录下

Nginx+Tomcat负载均衡多实例详解

切换至/opt下,安装JDK

Nginx+Tomcat负载均衡多实例详解

查看java版本

Nginx+Tomcat负载均衡多实例详解

1.2 安装 tomcat

1. #切换至/opt下,解压tomcat包
cd /opt
tar -zxf apache-tomcat-9.0.16.tar.gz 
?
2. #新建文件夹/usr/local/tomcat
mkdir /usr/local/tomcat
 
3. #将解压后的包拷贝至/usr/local/下并重命名
cp -a apache-tomcat-9.0.16 /usr/local/tomcat/tomcat1
cp -a apache-tomcat-9.0.16 /usr/local/tomcat/tomcat2

切换至/opt下,解压tomcat包

Nginx+Tomcat负载均衡多实例详解

新建文件夹/usr/local/tomcat

Nginx+Tomcat负载均衡多实例详解

将解压后的包拷贝至/usr/local/下并重命名

Nginx+Tomcat负载均衡多实例详解

1.3 配置 tomcat 环境变量

vim /etc    profile
?
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

Nginx+Tomcat负载均衡多实例详解

1.4修改tomcat2中的主配置文件

vim /usr/local/tomcat/tomcat2/conf/server.xml 
?
22 <Server port="8006" shutdown="SHUTDOWN">
69 ? ? <Connector port="8081" protocol="HTTP/1.1"
116 ? ? <Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />
?

Nginx+Tomcat负载均衡多实例详解

Nginx+Tomcat负载均衡多实例详解

Nginx+Tomcat负载均衡多实例详解

1.5修改启动脚本和关闭脚本

1. #修改tomcat1的/usr/local/tomcat/tomcat1/bin/startup.sh 
vim /usr/local/tomcat/tomcat1/bin/startup.sh 
?
export CATALINA_HOME1=/usr/local/tomcat/tomcat1
export CATALINA_BASE1=/usr/local/tomcat/tomcat1
export TOMCAT_HOME1=/usr/local/tomcat/tomcat1
?
2. #修改tomcat1 的/usr/local/tomcat/tomcat1/bin/shutdown.sh 
vim /usr/local/tomcat/tomcat1/bin/shutdown.sh 
?
export CATALINA_HOME1=/usr/local/tomcat/tomcat1
export CATALINA_BASE1=/usr/local/tomcat/tomcat1
export TOMCAT_HOME1=/usr/local/tomcat/tomcat1
?
?
3. #修改tomcat2的/usr/local/tomcat/tomcat2bin/startup.sh 
vim /usr/local/tomcat/tomcat2/bin/startup.sh 
?
export CATALINA_HOME1=/usr/local/tomcat/tomcat2
export CATALINA_BASE1=/usr/local/tomcat/tomcat2
export TOMCAT_HOME1=/usr/local/tomcat/tomcat2
?
4. #修改tomcat2的/usr/local/tomcat/tomcat2/bin/shutdown.sh 
vim /usr/local/tomcat/tomcat2/bin/shutdown.sh 
?
export CATALINA_HOME1=/usr/local/tomcat/tomcat2
export CATALINA_BASE1=/usr/local/tomcat/tomcat2
export TOMCAT_HOME1=/usr/local/tomcat/tomcat2
?

修改tomcat1的/usr/local/tomcat/tomcat1/bin/startup.sh

Nginx+Tomcat负载均衡多实例详解

修改tomcat1 的/usr/local/tomcat/tomcat1/bin/shutdown.sh

Nginx+Tomcat负载均衡多实例详解

修改tomcat2的/usr/local/tomcat/tomcat2bin/startup.sh

Nginx+Tomcat负载均衡多实例详解

修改tomcat2的/usr/local/tomcat/tomcat2/bin/shutdown.sh :

Nginx+Tomcat负载均衡多实例详解

1.6启动tomcat并查看

1. #启动tomcat1
cd /usr/local/tomcat/
./tomcat1/bin/startup.sh
?
2. #启动tomcat2
./tomcat2/bin/startup.sh 
?
3. #查看是否启动成功
ss -ntap|grep java
http://192.168.59.118:8080/

启动tomcat1、tomcat2

Nginx+Tomcat负载均衡多实例详解

查看是否启动成功

Nginx+Tomcat负载均衡多实例详解

Nginx+Tomcat负载均衡多实例详解

Nginx+Tomcat负载均衡多实例详解

二、Nginx+Tomcat负载均衡、动静分离

Nginx+Tomcat负载均衡多实例详解

Nginx+Tomcat负载均衡多实例详解

Nginx+Tomcat负载均衡多实例详解

  • standalone模式,Tomcat单独运行,直接接受用户的请求,不推荐。

反向代理,单机运行,提供了一个Nginx作为反向代理,可以做到静态由nginx提供响应,动态jsp

代理给Tomcat

  • LNMT:Linux + Nginx + MySQL + Tomcat

LAMT:Linux + Apache(Httpd)+ MySQL + Tomcat

前置一台Nginx,给多台Tomcat实例做反向代理和负载均衡调度,Tomcat上部署的纯动态页面更

适合

LNMT:Linux + Nginx + MySQL + Tomcat

  • 多级代理

LNNMT:Linux + Nginx + Nginx + MySQL + Tomcat

动态服务器的问题,往往就是并发能力太弱,往往需要多台动态服务器一起提供服务。如何把并发的压力分摊,这就需要调度,采用一定的调度策略,将请求分发给不同的服务器,这就是Load Balance负载均衡。

当单机Tomcat,演化出多机多级部署的时候,一个问题便凸显出来,这就是Session。而这个问题的由来,都是由于HTTP协议在设计之初没有想到未来的发展。

2.1 部署Nginx 负载均衡器

环境简介:

ngnix:192.168.59.108

tomcat1:192.168.59.105

tomcat2: 192.168.59.118

1. #关闭防火墙
systemctl stop firewalld
setenforce 0
?
2. #安装依赖关系包
yum -y install pcre-devel zlib-devel gcc gcc-c++ make
?
3. #新建用户和组便于管理
useradd -M -s /sbin/nologin nginx
?
4. #切换至opt目录,将下载好的压缩包传进来解压
cd /opt
tar -zxf nginx-1.12.0.tar.gz 
?
4. #切换至解压后的目录下编译
cd nginx-1.12.0
?
./configure

–prefix=/usr/local/nginx
–user=nginx
–group=nginx
–with-http_stub_status_module
?
5. #安装
make && make install -j4
?
6. #做软连接,让系统识别nginx的操作命令
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
?
7. #将nginx命令加入服务
cd /lib/systemd/system
vim nginx.service
#!/bin.bash
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/usr/bin/kill -s HUP $MAINPID
ExecStop=/usr/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
?
8. #重新加载单元.启动服务
systemctl daemon-reload
systemctl start nginx
?
9. #查看是否成功启动
ss -ntap|grep nginx
http://192.168.59.108/

关闭防火墙

Nginx+Tomcat负载均衡多实例详解

安装依赖关系包

Nginx+Tomcat负载均衡多实例详解

新建用户和组便于管理

Nginx+Tomcat负载均衡多实例详解

切换至opt目录,将下载好的压缩包传进来

Nginx+Tomcat负载均衡多实例详解

切换至解压后的目录下编译

Nginx+Tomcat负载均衡多实例详解

安装

Nginx+Tomcat负载均衡多实例详解

做软连接,让系统识别nginx的操作命令

Nginx+Tomcat负载均衡多实例详解

将nginx命令加入服务

Nginx+Tomcat负载均衡多实例详解

Nginx+Tomcat负载均衡多实例详解

重新加载单元.启动服务

Nginx+Tomcat负载均衡多实例详解

查看是否成功启动

Nginx+Tomcat负载均衡多实例详解

2.2部署第一台Tomcat

192.168.59.105

1. #关闭防火墙
systemctl stop firewalld
setenforce 0
?
2. #切换至/opt,将安装 Tomcat 所需软件包传到/opt目录下
apache-tomcat-9.0.16.tar.gz 
jdk-8u201-linux-x64.rpm
?
3. #安装JDK
rpm -ivh jdk-8u201-linux-x64.rpm 
?
4. #修改换将变量配置文件
vim /etc/profile
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
?
5. #刷新配置文件
source /etc/profile
?
6. #切换至/opt下,解压tomcat包
cd /opt
tar -zxf apache-tomcat-9.0.16.tar.gz 
?
7. #将解压后的包拷贝至/usr/local/下并重命名
cp -r apache-tomcat-9.0.16 /usr/local/tomcat
?
8. #添加用户设置属主属组
useradd -s /sbin/nologin tomcat
chown tomcat:tomcat /usr/local/tomcat -R
?
?
9. #新建服务文件
vim /etc/systemd/system/tomcat.service
[Unit]
Description=Tomcat
#After=syslog.target network.target remote-fs.target nss-lookup.target
After=syslog.target network.target
?
[Service]
Type=forking
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh
RestartSec=3
PrivateTmp=true
User=tomcat
Group=tomcat
?
[Install]
WantedBy=multi-user.target
?
10. #重新加载服务,并开启,查看是否成功启动
?
systemctl daemon-reload
systemctl start tomcat
ss -ntap |grep 8080
?
?
?
#############新建动态页面站点###########3
?
11. #切换至webapp下,新建test目录
cd /usr/local/tomcat/webapps/
mkdir test
?
12. #建立动态页面文件
vim test/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
  <head>
 ? ? <title>JSP test1 page </title>
  </head>
  <body>
 ? ? <% out.println("动态页面1,http://www.test1.com");%>
  </body>
</html>
?
13. #修改主配置文件
vim /usr/local/tomcat/conf/server.xml
删除原来的站点模块
添加
<Host name="localhost" appBase="webapps"
 ? ? ? ? ? ?unpackWARs="true" autoDeploy="true" xmlValidation="false"
 ? ? ? ? ? ?xmlNamespaceAware="false">
 ? ? ? ? ? ? ?  <Context docBase="/usr/local/tomcat/webapps/test"
 ? ? ? ? ? ? ? ?path="" reloadable="true" />
 ? ?  </Host>
?
?
14. #重启服务,并在网页测试
systemctl restart tomcat.service 
http://192.168.59.105:8080/

关闭防火墙

Nginx+Tomcat负载均衡多实例详解

切换至/opt,将安装 Tomcat 所需软件包传到/opt目录下

Nginx+Tomcat负载均衡多实例详解

安装JDK

Nginx+Tomcat负载均衡多实例详解

修改换将变量配置文件

Nginx+Tomcat负载均衡多实例详解

刷新配置文件

Nginx+Tomcat负载均衡多实例详解

切换至/opt下,解压tomcat包

Nginx+Tomcat负载均衡多实例详解

将解压后的包拷贝至/usr/local/下并重命名

Nginx+Tomcat负载均衡多实例详解

添加用户设置属主属组

Nginx+Tomcat负载均衡多实例详解

新建服务文件

Nginx+Tomcat负载均衡多实例详解

重新加载服务,并开启,查看是否成功启动

Nginx+Tomcat负载均衡多实例详解

Nginx+Tomcat负载均衡多实例详解

切换至webapp下,新建test目录

Nginx+Tomcat负载均衡多实例详解

建立动态页面文件

Nginx+Tomcat负载均衡多实例详解

修改主配置文件

Nginx+Tomcat负载均衡多实例详解

Nginx+Tomcat负载均衡多实例详解

重启服务,并在网页测试

Nginx+Tomcat负载均衡多实例详解

Nginx+Tomcat负载均衡多实例详解

2.3部署第二台Tomcat

1. #关闭防火墙
systemctl stop firewalld
setenforce 0
?
2. #切换至/opt,将安装 Tomcat 所需软件包传到/opt目录下
apache-tomcat-9.0.16.tar.gz 
jdk-8u201-linux-x64.rpm
?
3. #安装JDK
rpm -ivh jdk-8u201-linux-x64.rpm 
?
4. #修改环境变量配置文件
vim /etc/profile
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
?
5. #刷新配置文件
source /etc/profile
?
6. #切换至/opt下,解压tomcat包
cd /opt
tar -zxf apache-tomcat-9.0.16.tar.gz 
?
7. #将解压后的包拷贝至/usr/local/下并重命名
cp -r apache-tomcat-9.0.16 /usr/local/tomcat
?
8. #添加用户设置属主属组
useradd -s /sbin/nologin tomcat
chown tomcat:tomcat /usr/local/tomcat -R
?
?
9. #新建服务文件
vim /etc/systemd/system/tomcat.service
[Unit]
Description=Tomcat
#After=syslog.target network.target remote-fs.target nss-lookup.target
After=syslog.target network.target
?
[Service]
Type=forking
ExecStart=/usr/local/tomcat/bin/startup.sh
ExecStop=/usr/local/tomcat/bin/shutdown.sh
RestartSec=3
PrivateTmp=true
User=tomcat
Group=tomcat
?
[Install]
WantedBy=multi-user.target
?
10. #重新加载服务,并开启,查看是否成功启动
?
systemctl daemon-reload
systemctl start tomcat
ss -ntap |grep 8080
?
?
?
#############新建动态页面站点###########3
?
11. #切换至webapp下,新建test目录
cd /usr/local/tomcat/webapps/
mkdir test
?
12. #建立动态页面文件
vim test/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
  <head>
 ? ? <title>JSP test2 page </title>
  </head>
  <body>
 ? ? <% out.println("动态页面2,http://www.test2.com");%>
  </body>
</html>
?
13. #修改主配置文件
vim /usr/local/tomcat/conf/server.xml
删除原来的站点模块
添加
<Host name="localhost" appBase="webapps"
 ? ? ? ? ? ?unpackWARs="true" autoDeploy="true" xmlValidation="false"
 ? ? ? ? ? ?xmlNamespaceAware="false">
 ? ? ? ? ? ? ?  <Context docBase="/usr/local/tomcat/webapps/test"
 ? ? ? ? ? ? ? ?path="" reloadable="true" />
 ? ?  </Host>
?
?
14. #重启服务,并在网页测试
systemctl restart tomcat.service 
http://192.168.59.105:8080/

关闭防火墙

Nginx+Tomcat负载均衡多实例详解

切换至/opt,将安装 Tomcat 所需软件包传到/opt目录下

Nginx+Tomcat负载均衡多实例详解

安装JDK

Nginx+Tomcat负载均衡多实例详解

修改环境变量配置文件

Nginx+Tomcat负载均衡多实例详解

刷新配置文件

Nginx+Tomcat负载均衡多实例详解

切换至/opt下,解压tomcat包

Nginx+Tomcat负载均衡多实例详解

将解压后的包拷贝至/usr/local/下并重命名

Nginx+Tomcat负载均衡多实例详解

添加用户设置属主属组

Nginx+Tomcat负载均衡多实例详解

新建服务文件

Nginx+Tomcat负载均衡多实例详解

重新加载服务,并开启,查看是否成功启动

Nginx+Tomcat负载均衡多实例详解

切换至webapp下,新建test目录

Nginx+Tomcat负载均衡多实例详解

建立动态页面文件

Nginx+Tomcat负载均衡多实例详解

修改主配置文件

Nginx+Tomcat负载均衡多实例详解

Nginx+Tomcat负载均衡多实例详解

重启服务,并在网页测试

Nginx+Tomcat负载均衡多实例详解

Nginx+Tomcat负载均衡多实例详解

2.4nginx 配置

准备静态页面和图片

1. #切换至/usr/local/nginx/html/目录下
cd /usr/local/nginx/html/
?
2. #创建test文件夹,并在里面创建静态网页
mkdir test
cd test
vim test.html
this is static test web !!
?
3. #拖一张图片至test下改名为1.jpg
mv 1.jfif 1.jpg
?
4. #配置主配置文件
vim /usr/local/nginx/conf/nginx.conf
?
#配置负载均衡服务器列表,weight参数表示权重,权重越高,被分配到的概率越大 ?
#gzip  on; ?
 ?  upstream tomcat_server {
 ? ? ? ? ? ? ? ? ?  server 192.168.59.105:8080 weight=1;
 ? ? ? ? ? ? ? ? ?  server 192.168.59.118:8080 weight=1;
 ? ? ? ? ? ? ? ? 
 ? ? ? ? ? ? ? ? ?  }
 ? ? ? ? ? ? ? ? ? ?
 ? ? ? ? ? ? ? ? ? ?
#动静分离
 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;
 ? ? }
?
#静态图片正则
 ? ? ? ? location ~* .*.(jpg|html|png|gif)$ {
 ? ? ? ? root /usr/local/nginx/html/test;
 ? ? }
?
?
 ? ? ? ? location / {
 ? ? ? ? ?  root ? html;
 ? ? ? ? ?  index  index.html index.htm;
 ? ? }
?
?
?
5. ?#重启nginx并测试
http://192.168.59.108/1.jpg
http://192.168.59.108/test.html

切换至cd /usr/local/nginx/html/目录下

Nginx+Tomcat负载均衡多实例详解

创建test文件夹,并在里面创建静态网页

Nginx+Tomcat负载均衡多实例详解

拖一张图片至test下

Nginx+Tomcat负载均衡多实例详解

配置主配置文件

Nginx+Tomcat负载均衡多实例详解

Nginx+Tomcat负载均衡多实例详解

Nginx+Tomcat负载均衡多实例详解

Nginx+Tomcat负载均衡多实例详解

重启nginx并测试

Nginx+Tomcat负载均衡多实例详解

Nginx+Tomcat负载均衡多实例详解

Nginx+Tomcat负载均衡多实例详解

Nginx+Tomcat负载均衡多实例详解

Nginx+Tomcat负载均衡多实例详解

到此这篇关于Tomcat多实例与负载均衡的文章就介绍到这了,更多相关Tomcat多实例与负载均衡内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Servers 相关文章推荐
Nginx反向代理多个服务器的实现方法
Mar 31 Servers
nginx服务器的下载安装与使用详解
Aug 02 Servers
nginx从安装到配置详细说明(安装,安全配置,防盗链,动静分离,配置 HTTPS,性能优化)
Feb 12 Servers
nginx刷新页面出现404解决方案(亲测有效)
Mar 18 Servers
Z-Order加速Hudi大规模数据集方案分析
Mar 31 Servers
Tomcat项目启动失败的原因和解决办法
Apr 20 Servers
Windows Server 2019 域控制器安装图文教程
Apr 28 Servers
Nginx静态压缩和代码压缩提高访问速度详解
May 30 Servers
winserver2019安装软件一直卡在应用程序正在为首次使用做准备
Jun 10 Servers
Windows server 2022创建创建林、域树、子域的步骤
Jun 25 Servers
Windows Server 修改远程桌面端口的实现
Jun 25 Servers
本地搭建minio文件服务器(使用bat脚本启动)的方法
Jul 15 Servers
Nginx配置根据url参数重定向
Apr 11 #Servers
在Docker容器中部署SQL Server
Apr 11 #Servers
阿里云日志过滤器配置日志服务
阿里云k8s服务升级时502错误 springboot项目应用
Apr 09 #Servers
Consul在linux环境的集群部署
nginx.conf配置文件结构小结
docker-compose部署Yapi的方法
Apr 08 #Servers
You might like
php下载文件的代码示例
2012/06/29 PHP
在PHP中输出JS语句以及乱码问题的解决方案
2019/02/13 PHP
PHP实现网站应用微信登录功能详解
2019/04/11 PHP
使用composer命令加载vendor中的第三方类库 的方法
2019/07/09 PHP
真正的JQuery.ajax传递中文参数的解决方法
2011/05/28 Javascript
关于URL中的特殊符号使用介绍
2011/11/03 Javascript
javascript显式类型转换实例分析
2015/04/25 Javascript
JS+CSS实现下拉列表框美化效果(3款)
2015/08/15 Javascript
js+css实现有立体感的按钮式文字竖排菜单效果
2015/09/01 Javascript
前端学习笔记style,currentStyle,getComputedStyle的用法与区别
2016/05/28 Javascript
js enter键激发事件实例代码
2016/08/17 Javascript
AngularJS通过$location获取及改变当前页面的URL
2016/09/23 Javascript
AngularJS中update两次出现$promise属性无法识别的解决方法
2017/01/05 Javascript
bootstrap组件之导航组件使用方法
2017/01/19 Javascript
vue-resource + json-server模拟数据的方法
2017/11/02 Javascript
详解vue移动端日期选择组件
2018/02/22 Javascript
Vue 实现输入框新增搜索历史记录功能
2019/10/15 Javascript
浅谈vue单页面中有多个echarts图表时的公用代码写法
2020/07/19 Javascript
html+vue.js 实现漂亮分页功能可兼容IE
2020/11/07 Javascript
[03:11]不朽宝藏三外观展示
2020/09/18 DOTA
使用Python构建Hopfield网络的教程
2015/04/14 Python
python实现简单点对点(p2p)聊天
2017/09/13 Python
使用PyCharm创建Django项目及基本配置详解
2018/10/24 Python
Pycharm更换python解释器的方法
2018/10/29 Python
远程部署工具Fabric详解(支持Python3)
2019/07/04 Python
python实现IOU计算案例
2020/04/12 Python
python性能测试工具locust的使用
2020/12/28 Python
会计求职信范文
2014/05/24 职场文书
化学专业毕业生求职信
2014/07/28 职场文书
优秀党员学习焦裕禄精神思想汇报范文
2014/09/10 职场文书
2014年员工工作总结范文
2014/11/18 职场文书
小程序实现文字循环滚动动画
2021/06/14 Javascript
JMeter对MySQL数据库进行压力测试的实现步骤
2022/01/22 MySQL
MySQL创建管理LIST分区
2022/04/13 MySQL
详解PyTorch模型保存与加载
2022/04/28 Python
Python实现Matplotlib,Seaborn动态数据图
2022/05/06 Python