当前位置: 首页 > news >正文

【Tomcat】tomcat的多实例和动静分离

多实例:

在一台服务器上有多台Tomcat;就算是多实例

安装telnet服务,可以用来测试端口通信是否正常

yum -y install telnettelnet 192.168.220.112 80

tomcat的日志文件

cd /usr/local/tomcat/logsvim catalina.out

Tomcat多实例部署:

1.安装好 jdk
cd /opt
rpm -ivh jdk-8u201-linux-x64.rpm 
java -version
2.安装 tomcat
cd /opt
tar -xf apache-tomcat-9.0.16.tar.gz
mkdir /usr/local/tomcat
mv apache-tomcat-9.0.16 /usr/local/tomcat/tomcat1
cp -a /usr/local/tomcat/tomcat1 /usr/local/tomcat/tomcat2
3.配置 tomcat 环境变量
vim /etc/profile.d/tomcat.sh#写入下面内容
#tomcat1
export CATALINA_HOME1=/usr/local/tomcat/tomcat1
export CATALINA_BASE1=/usr/local/tomcat/tomcat1
export TOMCAT_HOME1=/usr/local/tomcat/tomcat1#tomcat2
export CATALINA_HOME2=/usr/local/tomcat/tomcat2
export CATALINA_BASE2=/usr/local/tomcat/tomcat2
export TOMCAT_HOME2=/usr/local/tomcat/tomcat2#刷新配置文件
source /etc/profile.d/tomcat.sh
4.修改 tomcat2 中的 server.xml 文件,要求各 tomcat 实例配置不能有重复的端口号
vim /usr/local/tomcat/tomcat2/conf/server.xml#22行,修改Server prot,默认为8005 -> 修改为8006
<Server port="8006" shutdown="SHUTDOWN">
#69行,修改Connector port,HTTP/1.1  默认为8080 -> 修改为8081
<Connector port="8081" protocol="HTTP/1.1"
#116行,修改Connector port AJP/1.3,默认为8009 -> 修改为8010
<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />

----------------------------------------------------------------------------------------------------------
第一个连接器默认监听8080端口,负责建立HTTP连接。在通过浏览器访问Tomcat服务器的Web应用时,使用的就是这个连接器。
第二个连接器默认监听8009端口,负责和其他的HTTP服务器建立连接。
在把Tomcat与其他HTTP服务器集成时,需要用到这个连接器。

第三个连接器
port="8010":指定AJP连接器监听的端口号。在这个示例中,AJP连接器监听在8010端口上。

protocol="AJP/1.3":指定连接器所使用的协议。这里设置为AJP/1.3,表示使用AJP协议的版本1.3。

redirectPort="8443":指定重定向端口。当AJP连接器接收到HTTP请求时,如果请求是通过HTTPS(加密)访问的,
则会将请求重定向到8443端口。

AJP连接器用于将静态资源和动态请求从前端Web服务器(如Apache HTTP Server)转发到Tomcat服务器。
这样可以将Tomcat服务器隐藏在防火墙之后,提高安全性,同时提供更高的性能,特别是在处理动态请求时。
常见的AJP连接器配置是为了将Tomcat与Apache HTTP Server或Nginx等前端服务器集成,以实现负载均衡、反向代理等功能
----------------------------------------------------------------------------------------------------------

5.修改各 tomcat 实例中的 startup.sh 和 shutdown.sh 文件,添加 tomcat 环境变量;分别把启动文件指向tomcat1和tomcat2
vim /usr/local/tomcat/tomcat1/bin/startup.sh ##--G--在页尾添加以下内容
export CATALINA_BASE=$CATALINA_BASE1
export CATALINA_HOME=$CATALINA_HOME1
export TOMCAT_HOME=$TOMCAT_HOME1vim /usr/local/tomcat/tomcat1/bin/shutdown.sh
##--G--在页尾添加以下内容
export CATALINA_BASE=$CATALINA_BASE1
export CATALINA_HOME=$CATALINA_HOME1
export TOMCAT_HOME=$TOMCAT_HOME1vim /usr/local/tomcat/tomcat2/bin/startup.sh 
##--G--在页尾添加以下内容
export CATALINA_BASE=$CATALINA_BASE2
export CATALINA_HOME=$CATALINA_HOME2
export TOMCAT_HOME=$TOMCAT_HOME2vim /usr/local/tomcat/tomcat2/bin/shutdown.sh
##--G--在页尾添加以下内容
export CATALINA_BASE=$CATALINA_BASE2
export CATALINA_HOME=$CATALINA_HOME2
export TOMCAT_HOME=$TOMCAT_HOME2
6.启动各 tomcat 中的 /bin/startup.sh 
/usr/local/tomcat/tomcat1/bin/shutdown.sh 
/usr/local/tomcat/tomcat2/bin/startup.sh /usr/local/tomcat/tomcat1/bin/shutdown.sh 
/usr/local/tomcat/tomcat2/bin/startup.sh 
7.浏览器访问测试
http://192.168.220.112:8080
http://192.168.220.112:8081

nginx+tomcat实现动静分离

动静:动态页面和静态页面

分离:分别可以对静态页面和动态页面发起不同的请求,会有不同的响应结果

nginx通过反向代理实现负载均衡——tomcat是后端服务器——web静态由nginx实现——静态请求会分配给nginx——动态页面则经有nginx转发分配给后端的tomcat

tomcat的并发能力比较弱只有nginx的1/6,所以需要由负载均衡对请求进行合理的分配

Nginx+Tomcat负载均衡的组合的优点

Nginx 静态处理优势:Nginx 处理静态页面的效率远高于Tomcat的处理能力,Nginx处理静态资源的能力是Tomcat 处理的6倍

动静分离原理:服务端接收来自客户端的请求中,既有静态资源也有动态资源,静态资源由Nginx 提供服务,动态资源由Nginx转发至后端。

Nginx+Tomcat负载均衡

【安装 Nginx 服务】

Nginx服务装在另一台linux上,不要和tomcat装在同一台机子上

systemctl stop firewalld
systemctl disable firewalld
setenforce 01、安装依赖包
yum -y install pcre-devel zlib-devel gcc gcc-c++ make2、创建运行用户
useradd -M -s /sbin/nologin nginx3、编译安装
cd /opt
tar zxvf nginx-1.22.0.tar.gz -C /opt/cd nginx-1.22.0/
./configure --with-stream
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_modulemake -j 4 && make install4、优化路径
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/5、添加 Nginx 系统服务
vim /lib/systemd/system/nginx.service
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.targetchmod 777 /lib/systemd/system/nginx.service
systemctl start nginx.service
systemctl enable nginx.service
——
cd /usr/local/nginx/conf/
#先备份nginx.conf文件
cp nginx.conf nginx.conf.20230811.bakvim nginx.conf
在--28行-- #tcp_nopush下插入
upstream ky30 {server 192.168.220.112:8080 weight=1;server 192.168.220.112:8081 weight=1;server 192.168.220.114:8080 weight=2;
}然后到--47行--#access_log下插入
location ~ .*\.jsp$ {proxy_pass http://ky30;proxy_set_header HOST $host;#将真实的IP地址传给后端服务器proxy_set_header X-Real-IP $remote_addr;#记录代理服务器地址proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location ~ .*\.(gif|jpg|png)$ {root html;index index.html index.htm;
}
检查配置文件并重启
nginx -tsystemctl restart nginx.service
1号机
创建网页文件
Tomcat1的配置
mkdir /usr/local/tomcat1/webapps/test
vim /usr/local/tomcat1/webapps/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>Tomcat2的配置
mkdir /usr/local/tomcat2/webapps/test
vim /usr/local/tomcat2/webapps/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>
修改server.xml配置文件
cd /usr/local/tomcat1/conf/
改之前先备份一下
cp server.xml server.xml.20230811.bakvim server.xml#在原有的<host>标签下新添下面的内容
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"><Context docBase="/usr/local/tomcat1/webapps/test" path="" reloadable="true" />
</Host>cd /usr/local/tomcat2/conf/
改之前先备份一下
cp server.xml server.xml.20230811.bakvim server.xml#在原有的<host>标签下新添下面的内容
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"><Context docBase="/usr/local/tomcat2/webapps/test" path="" reloadable="true" />
</Host>
重启tomcat服务
/usr/local/tomcat1/bin/shutdown.sh
/usr/local/tomcat1/bin/startup.sh/usr/local/tomcat2/bin/shutdown.sh
/usr/local/tomcat2/bin/startup.sh
打开另一台虚拟机;安装好tomcat服务
访问一下1号机的tomcat,看能否连得上——显示网页代码
curl 192.168.220.112:8080
curl 192.168.220.112:8081或者打开浏览器访问
192.168.220.112:8080
192.168.220.112:8081

mkdir /usr/local/tomcat/webapps/test
vim index.jspmkdir /usr/local/tomcat/webapps/testvim /usr/local/tomcat/webapps/test/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<html>
<head>
<title>JSP test3  page</title>  
</head>
<body>
<% out.println("动态页面 3,http://www.test3.com");%>
</body>
</html>
修改配置文件
cd /usr/local/tomcat/conf/
cp server.xml server.xml.20230811.bak
vim server.xml在原有的<host>标签下添加
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"><Context docBase="/usr/local/tomcat/webapps/test" path="" reloadable="true" />
重启tomcat服务
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh
回到装有Nginx服务的机子
cd /usr/local/nginx/html/
vim index.html<html>
<head>
<title>Nginx test page</title>
</head>
<body>
<h1>this is Nginx static test !</h2>
<img src="1.jpg"/>
</body>
</html>systemctl stop firewalld
setenforce 0将图片文件添加到/usr/local/nginx/html/目录下,注意文件名要一致打开浏览器访问Nginx服务所在机子的IP地址
192.168.220.102加上/index.jsp访问,刷新页面,页面内容也随之刷新
192.168.220.102/index.jsp

http://www.lryc.cn/news/125536.html

相关文章:

  • Python爬虫IP代理池的建立和使用
  • Java面试题(dubbo)
  • JVM源码剖析之Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded异常
  • 使用PDF文件入侵任何操作系统
  • 强训第32
  • vue3 setup+Taro3 调用原生小程序自定义年月日时分多列选择器,NutUI改造
  • git命令使用
  • 每日记--前端解决方案--el-select下拉样式-el-option内容过长-鼠标悬停到文字不修改光标样式-设置透明
  • Windows系统Git安装教程(详细Git安装过程)
  • 前后端分离------后端创建笔记(11)用户删除
  • 24、springboot的自动配置01--类条件注解@ConditionalOnClass、bean条件注解@ConditionalOnBean
  • 婚恋交友h5多端小程序开源版开发
  • uniapp案例30余种实战项目
  • 回归预测 | MATLAB实现GRNN广义回归神经网络多输入多输出预测
  • 从零开始学习VBA(一)
  • Kotlin Executors线程池newSingleThreadExecutor单线程
  • ZooKeeper介绍
  • 首起针对国内金融企业的开源组件投毒攻击事件
  • 源于传承,擎领未来,新架构、新工艺下的“换心工程”——金融电子化访中电金信副总经理、研究院院长况文川
  • pytest数据驱动(最简单)
  • 分布式 - 服务器Nginx:一小时入门系列之代理缓冲与缓存
  • 什么是集成学习算法
  • springboot多模块打包方式
  • 【爬虫】Urllib让我们的 python 假装是浏览器
  • java基础面试
  • C++ 动态规划经典案例解析之最长公共子序列(LCS)_窥探递归和动态规划的一致性
  • 接口测试自动化:简化测试流程,提升效率
  • LoRA微调方法详解
  • redis-数据类型及样例
  • 公司电脑三维图纸加密、机械图挡加密软件