tomcat的多实例,动静分离(web服务基础结束)

news2025/2/22 22:18:17

多实例

多实例就是在一台服务器上有多个tomcat的服务(核心是改端口)

实验:多实例

安装步骤

1.安装好 jdk
2.安装 tomcat
cd /opt
tar zxvf 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   

保留权限强制复制,把tomcat1复制为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 实例配置不能有重复的端口号

修改前先备份,在/usr/local/tomcat2/conf里备份

cp server.xml  server.xml.bak.20230811
vim /usr/local/tomcat/tomcat2/conf/server.xml
<Server port="8006" shutdown="SHUTDOWN">        #22行,修改Server prot,默认为8005 -> 修改为8006
<Connector port="8081" protocol="HTTP/1.1"        #69行,修改Connector port,HTTP/1.1  默认为8080 -> 修改为8081
<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />    
#116行,修改Connector port AJP/1.3,默认为8009 -> 修改为8010

----------------------------------------------------------------------------------------------------------
第一个连接器默认监听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等前端服务器集成,以实现负载均衡、反向代理等功能

几个端口搞明白:8080—连接客户端,接收http请求     8009—连接服务端
----------------------------------------------------------------------------------------------------------

5.修改各 tomcat 实例中的 startup.sh 和 shutdown.sh 文件,添加 tomcat 环境变量
vim /usr/local/tomcat/tomcat1/bin/startup.sh 
# -----------------------------------------------------------------------------
# Start Script for the CATALINA Server
# -----------------------------------------------------------------------------
##添加以下内容
export CATALINA_BASE=$CATALINA_BASE1
export CATALINA_HOME=$CATALINA_HOME1
export TOMCAT_HOME=$TOMCAT_HOME1

#分别把启动文件指向tomcat1和tomcat2,与启动文件做个区分


vim /usr/local/tomcat/tomcat1/bin/shutdown.sh
# -----------------------------------------------------------------------------
# Stop script for the CATALINA Server
# -----------------------------------------------------------------------------

##添加以下内容
export CATALINA_BASE=$CATALINA_BASE1
export CATALINA_HOME=$CATALINA_HOME1
export TOMCAT_HOME=$TOMCAT_HOME1

#startup和shutdown都要配置一下


vim /usr/local/tomcat/tomcat2/bin/startup.sh 
# -----------------------------------------------------------------------------
# Start Script for the CATALINA Server
# -----------------------------------------------------------------------------

##添加以下内容
export CATALINA_BASE=$CATALINA_BASE2
export CATALINA_HOME=$CATALINA_HOME2
export TOMCAT_HOME=$TOMCAT_HOME2


vim /usr/local/tomcat/tomcat2/bin/shutdown.sh
# -----------------------------------------------------------------------------
# Stop script for the CATALINA Server
# -----------------------------------------------------------------------------

##添加以下内容
export CATALINA_BASE=$CATALINA_BASE2
export CATALINA_HOME=$CATALINA_HOME2
export TOMCAT_HOME=$TOMCAT_HOME2

#1,2的多实例已经配置好了

6.启动各 tomcat 中的 /bin/startup.sh 
/usr/local/tomcat/tomcat1/bin/startup.sh 
/usr/local/tomcat/tomcat2/bin/startup.sh 

netstat -natp | grep java

7.浏览器访问测试
http://192.168.88.10:8080
http://192.168.88.10:8081

详解

export CATALINA_HOME1=/usr/local/tomcat/tomcat1

tomcat主目录的路径,包含所有tomcat的文件
export CATALINA_BASE1=/usr/local/tomcat/tomcat1

指定tomcat实例目录
export TOMCAT_HOME1=/usr/local/tomcat/tomcat1

tomcat主目录的路径,包含所有tomcat的文件

后面会把这些赋值的变量作为参数赋值给启动文件,这三条必须先在环境变量中声明配置成全局变量,方便后面赋值。

telnet工具

用来测试端口通信是否正常,服务本身不自带,需要用yum的方式进行安装

yum -y install telnet

telnet 192.168.88.10 80

日志位置

catalina.out      tomcat的主日志位置
/usr/local/tomcat/logs

nginx+tomcat实现动静分离

动:动态页面

静:静态页面

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

nginx通过反向代理实现负载均衡——tomcat是后端服务器——web静态由nginx来做→静态请求→nginx——动态页面→tomcat

tomcat处理并发量能力弱,只有nginx的六分之一,所以要有负载均衡进行合理的调用分配

 tomcat1.1和tomcat1.2为部署在同一个服务器上的多实例

实验

实验前准备,test1作为客户端,tomcat1服务器上已经配置好了多实例1.1 1.2   和tomcat2分别作为后端web服务器用来处理动态请求    nginx1作为web服务器

Nginx实现负载均衡的主要配置项 :
 
upstream 服务池名 {   }
作用:配置后端服务器池,以提供响应数据

proxy_pass http:// 服务池名
作用:配置将访问请求转发给后端服务器池的服务器处理

Nginx+Tomcat负载均衡的组合的优点
Nginx 静态处理优势:Nginx 处理静态页面的效率远高于Tomcat的处理能力,Nginx处理静态资源的能力是Tomcat 处理的6倍。

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

Nginx+Tomcat负载均衡

 第一步,先做个备份

  第二步,修改配置文件

在http模块里面配,因为转发的是http请求

配置七层反向代理upstream  ky30为调用名称,方便后面调用    

server 192.168.88.10:8080      server 192.168.88.10:8081做为后端要调用的服务器 

这两个tomcat服务器为是部署在一台服务器上的多实例

第三台tomcat服务器192.1668.88.20:8080   因为前两个为多实例部署所以权重给小一点

配置处理动态请求的location#配置Nginx处理动态页面请求,将 .jsp文件请求转发到Tomcat 服务器处理

 proxy_pass http://tomcat_server;
#设置后端的Web服务器可以获取远程客户端的真实IP
#设定后端的Web服务器接收到的请求访问的主机名(域名或IP、端口),默认HOST的值为proxy_pass指令设置的主机名。如果反向代理服务器不重写该请求头的话,那么后端真实服务器在处理时会认为所有的请求都来自反向代理服务器,如果后端有防攻击策略的话,机器就被封了。
proxy_set_header HOST $host;
#把$remote_addr赋值给X-Real-IP,来获取源IP
proxy_set_header X-Real-IP $remote_addr;
#在nginx 作为代理服务器时,设置的IP列表,会把经过的机器ip,代理机器ip都记录下来
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

 

 #正则匹配,配置Nginx处理静态图片请求  .*为所有  \.就表示点,意思为所有以gif,jpg结尾的文件都响应到这个location  root html指定访问的目录

 检查一下有没有语法错误

下面开始配tomcat,先从多实例开始,配置tomcat1

 

 访问tomcat1后端服务器就会访问test1

配置tomcat2

 

 多实例的两个服务器页面搞完了

下面还要在hosts文件里面把这两台主机声明出来,从tomcat1开始

 

 改配置文件前先做个备份

 

 先把默认配置的hosts删除

 加入这段代码,声明位置,只要访问192.168.88.10就是访问/usr/local/tomcat/tomcat1/weapps 里面的 test

下面配置tomcat2

 

 删除原有的hosts添加这段

下面配置单台的tomcat3

 

 修改配置文件,部署动态页面

改一下hosts

 

 删除原有的hosts并添加

修改完三个tomcat的配置文件后还需要把三个tomcat服务器重启一下

 

 

配置静态页面,在nginx服务器中配置

 在配置文件中删除全部内容并添加

 

 把图片lt.jpg拖入html下面

 现在静态页面,动态页面都有了

访问一下192.168.88.30,看一下静态页面是否可以正常访问

用客户端(也就是在浏览器上)访问一下,192.168.88.30/index.jsp,看动态页面是否可以正常访问

 

 

 动态页面也可以实现

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/863658.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IDEA项目实践——Spring集成mybatis、spring当中的事务

系列文章目录 IDEA项目实践——创建Java项目以及创建Maven项目案例、使用数据库连接池创建项目简介 IDEWA项目实践——mybatis的一些基本原理以及案例 IDEA项目实践——动态SQL、关系映射、注解开发 IDEA项目实践——Spring框架简介&#xff0c;以及IOC注解 IDEA项目实践—…

python爬虫实战(1)——网站小说

整本小说的爬取保存 目标大致思路页面的爬取解析—XPath请求网页内容解析网页内容正文爬取与解析单个页面数据获取爬取所有页面 数据清洗 经过学习基础&#xff0c;我们学以致用一下子&#xff0c;爬取小说&#xff0c;注意这个小说本身是免费的哦&#xff0c;以后再进阶。 本次…

工作中的方法论总结

1、SMART SMART原则是目标管理的一种方法&#xff0c;通过有效地进行成员的组织与目标的制定和控制以达到更好的工作绩效。大到业务规划&#xff0c;小到个人项目开发计划都比较适用。 SMART的具体含义如下&#xff1a; S&#xff08;Specific&#xff09;&#xff1a;目标是确…

阿里发布财报,电商业务重回增长

KlipC报道&#xff1a;8月10日阿里巴巴集团发布了最新财报&#xff0c;据数据显示该公司一季度营收同比上涨14%&#xff0c;达2341.6亿元人民币&#xff0c;超市场预期。净利润为330亿元较去年同期增长63%达202.98亿元&#xff0c;财报发布后&#xff0c;阿里美股一度涨超5%&am…

动力节点|Spring6框架学习教程,从基础到手撕源码一套打通

Spring框架已广泛应用于诸多Java应用程序的开发中&#xff0c;它提供了很多解决方案及最佳实践&#xff0c;简化了Java应用程序的开发过程并加速了开发。 Spring6.0版本是下一个十年的新开端&#xff0c;动力节点老杜精心打造全新升级版Spring6教程&#xff0c;手把手教学&…

vue插槽slots

一、默认插槽&#xff1a; vue组件能够接收任意类型的 JavaScript 值作为 props&#xff0c;也可以为子组件传递一些模板片段&#xff0c;让子组件在它们的组件中渲染这些片段。 例如&#xff1a;有一个<FancyButton>组件 在父组件中引用 最终渲染出来的dom 插槽内容可…

Live800:客服中心数字化转型的5个关键点,你知道吗?

数字化转型的浪潮中&#xff0c;客服中心也不例外。传统的在线客服中心需要经历数字化转型&#xff0c;才能更好地适应用户需求&#xff0c;提高工作效率以及质量。然而&#xff0c;数字化转型并不仅仅是将传统客服系统搬到数字平台上&#xff0c;还要符合用户习惯和新技术趋势…

三、MySql表的操作

文章目录 一、创建表&#xff08;一&#xff09;语法&#xff1a;&#xff08;二&#xff09;说明&#xff1a; 二、创建表案例&#xff08;一&#xff09;代码&#xff1a;&#xff08;二&#xff09;说明&#xff1a; 三、查看表结构&#xff08;一&#xff09;语法&#xff…

产品经理如何突破职业瓶颈,杀出重围?

随着社会的进步和科技的发展&#xff0c;互联网行业从未停止过发展的脚步。而在这个充满机遇和挑战的赛道上&#xff0c;互联网产品经理的角色显得尤为重要。然而&#xff0c;随着互联网产品经理的数量逐年增加&#xff0c;内卷化现象也日益严重。那么&#xff0c;产品经理应该…

10个问题,带你重新认识smardaten企业级无代码

很多新客户在接触数睿数据&#xff0c;或者在初步认识smardaten企业级无代码的时候&#xff0c;大家更多地以为只是个普通的无代码工具。在交流过程中&#xff0c;大家也提出了很多疑惑&#xff1a; smardaten无代码平台包括哪些能力&#xff1f; 适合开发哪些应用&#xff1f…

鲁大师电动车智能化测评报告第二十一期:峰值功率20kW,九号E300P极速破圈

简介&#xff1a;第二十一期参与测评的电动车是九号E300P、雅迪冠能探索E10、绿源Moda7、台铃超能S塞北、新日幻影F9、小牛G400六款车型 鲁大师第二十一期智能化电动车测评排行榜数据来源于鲁大师智慧实验室&#xff0c;测评的车型均为市面上主流品牌的主流车型。截止目前&…

19 | 首尔自行车共享需求预测

文章目录 首尔自行车共享需求预测1. 问题陈述2. 数据描述3. 项目的业务用途是什么?4. 模型构建步骤5. 数据可视化1)热力图2)按季节分的租赁自行车数量3)假日和非假日租赁自行车数量4)太阳辐射与租赁自行车数量5)租赁自行车数量和一天的小时数6)特征重要性首尔自行车共享…

allure测试报告

使用pytest结合Allure进行测试报告生成的简单教程 allure测试报告 Allure基于Java开发&#xff0c;因此我们需要提前安装Java 8或以上版本的环境。 ◆安装allure-pytest插件在DOS窗口输入命令“pip3 install allure-pytest”&#xff0c;然后按“Enter”键。 下载安装Allure…

网站SSL安全证书是什么及其重要性

网站SSL安全证书具体来说是一个数字文件&#xff0c;是由受信任的数字证书颁发机构&#xff08;CA机构&#xff09;进行审核颁发的&#xff0c;其中包含CA发布的信息&#xff0c;该信息表明该网站已使用加密连接进行了安全保护。 网站SSL安全证书也被称为SSL证书、https证书和…

Stack的三种含义

学习编程的时候&#xff0c;经常会看到stack这个词&#xff0c;它的中文名字叫做"栈"。 理解这个概念&#xff0c;对于理解程序的运行至关重要。容易混淆的是&#xff0c;这个词其实有三种含义&#xff0c;适用于不同的场合&#xff0c;必须加以区分。 含义一&…

新手小白如何快速使用家用电脑远程访问摄像头【内网穿透】

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏:《高质量编程技巧》《cpolar》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 快速远程访问内网的摄像头前言具体操作步骤1. 打开“允许远程桌面”开关2. 建立TCP-IP隧道3. 获取生成的TCP-IP隧道…

蓝牙运动耳机哪个好、最好的运动蓝牙耳机品牌排行

在忙碌的都市生活中&#xff0c;人们往往容易迷失方向。音乐是一种良药&#xff0c;能够使心灵平静下来&#xff0c;找到正确的方向。生命需要运动&#xff0c;而有趣的运动更能让人们自由自在&#xff0c;释放身心。因此&#xff0c;运动和音乐天然地相辅相成。当我们佩戴一款…

深入了解ASEMI二极管APT80DQ60BG的功能与优点

编辑-Z 如果您是电子业内的人员&#xff0c;或者是想增加您关于二极管的知识&#xff0c;那么您一定不能错过今天我们要深度剖析的APT80DQ60BG二极管。这篇文章将帮助你深入理解这一二极管的功能、性能以及它在多种应用中的优点。 二极管APT80DQ60BG是一种半导体器件&#xff…

上下拉电阻

(一)上拉电阻&#xff1a;1、当TTL电路驱动COMS电路时&#xff0c;如果TTL电路输出的高电平低于COMS电路的最低高电平&#xff08;一般为3.5V&#xff09;&#xff0c;这时就需要在TTL的输出端接上拉电阻&#xff0c;以提高输出高电平的值。2、OC门电路必须加上拉电阻&#xff…

牛奶产业链的工业“链主品牌”利乐是如何诞生的?

瑞典的利乐公司&#xff0c;一个在乳品产业链中占据重要地位的“链主品牌”&#xff0c;通过提供创新的包装材料和解决方案&#xff0c;在全球范围内占据了显著的市场份额。利乐从不生产一滴奶&#xff0c;却赚取了中国乳业 75%的利润&#xff0c;一年创收超过 800 亿人民币。在…