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搭载rtmp直播服务器的方法
Oct 16 Servers
nginx内存池源码解析
Nov 20 Servers
详解nginx location指令
Jan 18 Servers
Kubernetes控制节点的部署
Apr 01 Servers
Nginx禁止ip访问或非法域名访问
Apr 07 Servers
docker compose 部署 golang 的 Athens 私有代理问题
Apr 28 Servers
Nginx配置之禁止指定IP访问
May 02 Servers
nginx实现多geoserver服务的负载均衡
May 15 Servers
win10+RTX3050ti+TensorFlow+cudn+cudnn配置深度学习环境的方法
Jun 25 Servers
Nginx跨域问题解析与解决
Aug 05 Servers
nginx sticky实现基于cookie负载均衡示例详解
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 彩色文字实现代码
2009/06/29 PHP
php smarty函数扩展
2010/03/15 PHP
php中长文章分页显示实现代码
2012/09/29 PHP
ajax返回值中有回车换行、空格的解决方法分享
2013/10/24 PHP
服务器上配置PHP运行环境教程
2015/02/12 PHP
PHP编写文件多服务器同步程序
2016/07/02 PHP
PHP实现mysqli批量执行多条语句的方法示例
2017/07/22 PHP
this[] 指的是什么内容 讨论
2007/03/24 Javascript
如何使用Javascript正则表达式来格式化XML内容
2013/07/04 Javascript
文本框中禁止非数字字符输入比如手机号码、邮编
2013/08/19 Javascript
XMLHttpRequest处理xml格式的返回数据(示例代码)
2013/11/21 Javascript
jQuery实现仿路边灯箱广告图片轮播效果
2015/04/15 Javascript
JavaScript中数据结构与算法(四):串(BF)
2015/06/19 Javascript
在Node.js应用中读写Redis数据库的简单方法
2015/06/30 Javascript
一道JS前端闭包面试题解析
2015/12/25 Javascript
AngularJs基本特性解析(一)
2016/07/21 Javascript
Vue结合原生js实现自定义组件自动生成示例
2017/01/21 Javascript
JavaScript比较两个数组的内容是否相同(推荐)
2017/05/02 Javascript
基于vue展开收起动画的示例代码
2018/07/05 Javascript
小程序页面动态配置实现方法
2019/02/05 Javascript
详解用Webpack与Babel配置ES6开发环境
2019/03/12 Javascript
微信小程序实现图片翻转效果的实例代码
2019/09/20 Javascript
如何修改Vue打包后文件的接口地址配置的方法
2020/04/22 Javascript
使用django-guardian实现django-admin的行级权限控制的方法
2018/10/30 Python
基于Python的OCR实现示例
2020/04/03 Python
基于python代码批量处理图片resize
2020/06/04 Python
基于Python的自媒体小助手---登录页面的实现代码
2020/06/29 Python
奥兰多迪士尼门票折扣:Undercover Tourist
2018/07/09 全球购物
纯净、自信、100%的羊绒服装:360Cashmere
2021/02/20 全球购物
婚礼主持词开场白
2014/03/13 职场文书
党员四风剖析材料
2014/08/27 职场文书
班子群众路线教育实践个人对照检查材料思想汇报
2014/09/30 职场文书
2014年村委会工作总结
2014/11/24 职场文书
党支部培养考察意见
2015/06/02 职场文书
Nginx防盗链与服务优化配置的全过程
2022/01/18 Servers
python超详细实现完整学生成绩管理系统
2022/03/17 Python