【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 \
--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;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.rhkb.cn/news/85209.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[免费在线] 将 PDF 转换为 Excel 或 Excel 转换为 PDF | 5 工具

有了免费的在线 PDF 转换器&#xff0c;您可以轻松免费在线将 PDF 转换为 Excel 或 Excel 转换为 PDF。这篇文章为您筛选了 5 个最常用的工具。要从存储介质恢复错误删除或丢失的 PDF 文档、Excel 电子表格、Word 文件或任何其他文件&#xff0c;您可以使用免费的数据恢复程序 …

vscode-启动cljs

打开vscode &#xff0c;打开cljs项目文件 先npm installvscode安装插件Calva: Clojure & ClojureScript启动REPL 选择Start yout project with a REPL and connect(a.k.a. jack) 后选择shadow-cljs&#xff0c;然后选择shadow&#xff0c;如果需要选择build的话&#xf…

海外电子商务源代码跨境系统开发,Java现成代码全开源

海外电子商务跨境系统的开发是一个复杂的过程&#xff0c;而利用现成的Java代码进行开发可以节省时间和成本。下面是海外电子商务跨境系统开发的全开源步骤。 第一步&#xff1a;需求分析和规划 在开发海外电子商务跨境系统之前&#xff0c;需要进行需求分析和规划。这包括确定…

MySQL多表连接查询3

目录 表结构 创建表 表数据 查询需求&#xff1a; 1.查询student表的所有记录 2.查询student表的第2条到4条记录 3.从student表查询所有学生的学号&#xff08;id&#xff09;、姓名&#xff08;name&#xff09;和院系&#xff08;department&#xff09;的信息 4.从s…

React使用antd的图片预览组件,点击哪个图片就预览哪个的设置

使用了官方推荐的相册模式的预览&#xff0c;但是点击预览之后&#xff0c;每次都是从图片列表的第一张开始预览&#xff0c;而不是点击哪张就从哪张开始预览&#xff1a; 所以这里我就封装了一下&#xff0c;对初始化预览的列表进行了逻辑处理&#xff1a; 当点击开始预览的…

竞赛项目 深度学习的水果识别 opencv python

文章目录 0 前言2 开发简介3 识别原理3.1 传统图像识别原理3.2 深度学习水果识别 4 数据集5 部分关键代码5.1 处理训练集的数据结构5.2 模型网络结构5.3 训练模型 6 识别效果7 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习…

MongoDB 备份与恢复

1.1 MongoDB的常用命令 mongoexport / mongoimport mongodump / mongorestore 有以上两组命令在备份与恢复中进行使用。 1.1.1 导出工具mongoexport Mongodb中的mongoexport工具可以把一个collection导出成JSON格式或CSV格式的文件。可以通过参数指定导出的数据项&#xff0c…

Java多线程(十)

目录 一、synchronized基本特点 二、synchronized加锁工作过程 2.1 无锁 2.2 偏向锁 2.3 轻量级锁 2.4 重量级锁 三、synchronized其他优化操作 3.1 锁消除 3.2 锁粗化 一、synchronized基本特点 开始是乐观锁&#xff0c;如果锁冲突频繁就会转换成悲观锁开始是轻量级锁&#x…

机器学习---梯度下降代码

1. 归一化 # Read data from csv pga pd.read_csv("pga.csv") print(type(pga))print(pga.head())# Normalize the data 归一化值 (x - mean) / (std) pga.distance (pga.distance - pga.distance.mean()) / pga.distance.std() pga.accuracy (pga.accuracy - pg…

MySQL 数据类型总结

整形数据类型 1字节 8bit 2^8256

Mongodb:业务应用(1)

环境搭建参考&#xff1a;mongodb&#xff1a;环境搭建_Success___的博客-CSDN博客 需求&#xff1a; 在文章搜索服务中实现保存搜索记录到mongdb 并在搜索时查询出mongdb保存的数据 1、安装mongodb依赖 <dependency><groupId>org.springframework.data</groupI…

【办公自动化】使用Python一键提取PDF中的表格到Excel

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

当编程遇上AI,纵享丝滑

目录 前言 一、提出需求 二、检查代码 三、进一步提出需求 总结 前言 自从CHATGPT火了以后&#xff0c;我发现我身边的人再也不怕写报告了&#xff0c;什么个人总结&#xff0c;汇报材料&#xff0c;年度总结&#xff0c;伸手就来&#xff08;反正哪些报告也没人看&#x…

腾讯云服务器CVM实例族有什么区别?怎么选?

腾讯云服务器CVM有多种实例族&#xff0c;如标准型S6、标准型S5、SA3实例、高IO型、内存、计算型及GPU型实例等&#xff0c;如何选择云服务器CVM实例规格呢&#xff1f;腾讯云服务器网建议根据实际使用场景选择云服务器CVM规格&#xff0c;例如Web网站应用可以选择标准型S5或S6…

python压缩pdf文件大小

pdf文件过大&#xff0c;经常会是一个问题&#xff0c;但是市面上基本上都是收费的工具&#xff0c;wps需要开会员才能使用。因此找了一个python库进行试验&#xff1a; 首先需要安装 pip install aspose-pdf 运行的代码&#xff1a; import aspose.pdf as apcompressPdfDo…

k8s ingress获取客户端客户端真实IP

背景 在Kubernetes中&#xff0c;获取客户端真实IP地址是一个常见需求。这是因为在负载均衡架构中&#xff0c;原始请求的源IP地址会被替换成负载均衡器的IP地址。 获取客户端真实IP的需求背景包括以下几点&#xff1a; 安全性&#xff1a;基于客户端IP进行访问控制和认证授…

【TensorFlow】P0 Windows GPU 安装 TensorFlow、CUDA Toolkit、cuDNN

Windows 安装 TensorFlow、CUDA Toolkit、cuDNN 整体流程概述TensorFlow 与 CUDA ToolkitTensorFlow 是一个基于数据流图的深度学习框架CUDA 充分利用 NIVIDIA GPU 的计算能力CUDA Toolkit cuDNN 安装详细流程整理流程一&#xff1a;安装 CUDA Toolkit步骤一&#xff1a;获取CU…

Spring Boot对接Oracle数据库

Spring Boot对接Oracle数据库 最近学习了Oracle数据库&#xff0c;那么如何使用Spring Boot和MyBatis Plus对接Oracle数据库呢&#xff1f; 这就有了这篇随记&#xff0c;具体流程如下 1、创建Maven工程 创建一个空的Maven工程&#xff0c;导入如下依赖&#xff1a; <?…

Python数据分析实战-列表字符串、字符串列表、字符串的转化(附源码和实现效果)

实现功能 str([None,master,hh]) ---> [None,"master","hh"] ---> "None,master,hh" 实现代码 import re import astx1 str([None,master,hh]) print(x1)x2 ast.literal_eval(x1) print(x2)x3 ",".join(str(item) for item…

微服务与Nacos概述-3

流量治理 在微服务架构中将业务拆分成一个个的服务&#xff0c;服务与服务之间可以相互调用&#xff0c;但是由于网络原因或者自身的原因&#xff0c;服务并不能保证服务的100%可用&#xff0c;如果单个服务出现问题&#xff0c;调用这个服务就会出现网络延迟&#xff0c;此时…