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 相关文章推荐
Apache压力测试工具的安装使用
Mar 31 Servers
使用nginx动态转换图片大小生成缩略图
Mar 31 Servers
详解Apache SkyWalking 告警配置指南
Apr 22 Servers
apache基于端口创建虚拟主机的示例
Apr 24 Servers
uwsgi+nginx代理Django无法访问静态资源的解决
May 10 Servers
详解nginx安装过程并代理下载服务器文件
Feb 12 Servers
Linux中如何安装并部署Redis
Apr 18 Servers
阿里云ECS云服务器快照的概念以及如何使用
Apr 21 Servers
linux目录管理方法介绍
Jun 01 Servers
Windows server 2003卸载和安装IIS的图文教程
Jul 15 Servers
CentOS7设置ssh服务以及端口修改方式
Dec 24 Servers
码云(gitee)通过git自动同步到阿里云服务器
Dec 24 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
zend framework文件上传功能实例代码
2013/12/25 PHP
PHP集成百度Ueditor 1.4.3
2014/11/23 PHP
PHP判断数组是否为空的常用方法(五种方法)
2017/02/08 PHP
thinkphp5框架实现数据库读取的数据转换成json格式示例
2019/10/10 PHP
use jscript List Installed Software
2007/06/11 Javascript
Javascript计算时间差的函数分享
2011/07/04 Javascript
九种js弹出对话框的方法总结
2013/03/12 Javascript
遍历DOM对象内的元素属性示例代码
2014/02/08 Javascript
JavaScript简单实现鼠标拖动选择功能
2014/03/06 Javascript
jQuery中closest()函数用法实例
2015/01/07 Javascript
js实现禁止中文输入的方法
2015/01/14 Javascript
JS拖动鼠标画出方框实现鼠标选区的方法
2015/08/05 Javascript
jQuery模拟窗口抖动效果
2017/03/15 Javascript
react高阶组件经典应用之权限控制详解
2017/09/07 Javascript
解决select2在bootstrap modal中不能正常使用的问题
2018/08/09 Javascript
富文本编辑器vue2-editor实现全屏功能
2019/05/26 Javascript
vue下使用nginx刷新页面404的问题解决
2019/08/02 Javascript
有关wxpython pyqt内存占用问题分析
2014/06/09 Python
Python机器学习之决策树算法实例详解
2017/12/06 Python
Python编程在flask中模拟进行Restful的CRUD操作
2018/12/28 Python
学python安装的软件总结
2019/10/12 Python
Python基础之函数原理与应用实例详解
2020/01/03 Python
如何使用Python抓取网页tag操作
2020/02/14 Python
Python利用PyPDF2库获取PDF文件总页码实例
2020/04/03 Python
使用pyplot.matshow()函数添加绘图标题
2020/06/16 Python
Numpy中np.random.rand()和np.random.randn() 用法和区别详解
2020/10/23 Python
python实现发送邮件
2021/03/02 Python
skyn ICELAND官网:冰岛成分天然护肤品
2020/08/24 全球购物
娇韵诗香港官网:Clarins香港
2020/08/13 全球购物
英文自荐信格式
2013/11/28 职场文书
会议邀请函范文
2014/01/09 职场文书
自考生自我评价分享
2014/01/18 职场文书
2015年计划生育责任书
2015/05/08 职场文书
个人求职意向书
2015/05/11 职场文书
Python基础之条件语句详解
2021/06/16 Python
Python绘画好看的星空图
2022/03/17 Python