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配置ssl实现https的方法示例
Mar 31 Servers
Nginx访问日志及错误日志参数说明
Mar 31 Servers
Nginx代理同域名前后端分离项目的完整步骤
Mar 31 Servers
JVM上高性能数据格式库包Apache Arrow入门和架构详解(Gkatziouras)
May 26 Servers
Nginx使用Lua模块实现WAF的原理解析
Sep 04 Servers
nginx从安装到配置详细说明(安装,安全配置,防盗链,动静分离,配置 HTTPS,性能优化)
Feb 12 Servers
Tomcat用户管理的优化配置详解
Mar 31 Servers
如何通过cmd 连接阿里云服务器
Apr 18 Servers
Nginx利用Logrotate实现日志分割
May 20 Servers
nginx rewrite功能使用场景分析
May 30 Servers
windows server2008 开启端口的实现方法
Jun 25 Servers
ubuntu如何搭建vsftpd服务器
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
PHP类中的魔术方法(Magic Method)简明总结
2014/07/08 PHP
学习php设计模式 php实现工厂模式(factory)
2015/12/07 PHP
php打包压缩文件之ZipArchive方法用法分析
2016/04/30 PHP
Jquery替换已存在于element上的event的方法
2010/03/09 Javascript
jQuery温习篇 强大的JQuery选择器
2010/04/24 Javascript
JavaScript高级程序设计 阅读笔记(十三) js定义类或对象
2012/08/14 Javascript
JS 添加网页桌面快捷方式的代码详细整理
2012/12/27 Javascript
用js实现输入提示(自动完成)的实例代码
2013/06/14 Javascript
防止按钮在短时间内被多次点击的方法
2014/03/10 Javascript
javascript事件函数中获得事件源的两种不错方法
2014/03/17 Javascript
Javascript前端UI框架Kit使用指南之Kitjs简介
2014/11/28 Javascript
浅谈JavaScript对象的创建方式
2016/06/13 Javascript
如何防止INPUT按回车自动提交表单FORM
2016/12/06 Javascript
Bootstrap table两种分页示例
2016/12/23 Javascript
AngularJS常见过滤器用法实例总结
2017/07/06 Javascript
vue中七牛插件使用的实例代码
2017/07/28 Javascript
详解create-react-app 自定义 eslint 配置
2018/06/07 Javascript
nodejs基础之buffer缓冲区用法分析
2018/12/26 NodeJs
vue-cli3 DllPlugin 提取公用库的方法
2019/04/24 Javascript
JavaScript中window和document用法详解
2020/07/28 Javascript
js实现限定范围拖拽的示例
2020/10/26 Javascript
python 实现插入排序算法
2012/06/05 Python
python实现对指定输入的字符串逆序输出的6种方法
2018/04/26 Python
python opencv 二值化 计算白色像素点的实例
2019/07/03 Python
Python使用jpype模块调用jar包过程解析
2020/07/29 Python
美国艺术和工艺品商店:Hobby Lobby
2020/12/09 全球购物
简历中的自我评价怎么写
2014/01/29 职场文书
幼儿园运动会加油词
2014/02/14 职场文书
幼儿园的门卫岗位职责
2014/04/10 职场文书
党员作风建设自查报告
2014/10/23 职场文书
教师个人总结范文
2015/02/11 职场文书
计划生育目标责任书
2015/05/09 职场文书
离婚案件上诉状
2015/05/23 职场文书
担保公司2015年终工作总结
2015/10/14 职场文书
2016教师年度考核评语大全
2015/12/01 职场文书
Nginx tp3.2.3 404问题解决方案
2021/03/31 Servers