Tomcat的多实例和动静分离

目录

一、多实例

二、 nginx+tomcat的负载均衡和动静分离

三、Tomcat 客户端->四层代理->七层代理->tomcat服务器

实验:

问题总结:


tomcat日志文件:/usr/local/tomcat/logs/catalina.out

一、多实例

在一台服务器上有多个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/tomcat23.配置 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/tomcat2source /etc/profile.d/tomcat.sh4.修改 tomcat2 中的 server.xml 文件,要求各 tomcat 实例配置不能有重复的端口号
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等前端服务器集成,以实现负载均衡、反向代理等功能
----------------------------------------------------------------------------------------------------------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_HOME1vim /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_HOME1vim /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_HOME2vim /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_HOME26.启动各 tomcat 中的 /bin/startup.sh 
/usr/local/tomcat/tomcat1/bin/startup.sh 
/usr/local/tomcat/tomcat2/bin/startup.sh netstat -natp | grep java7.浏览器访问测试
http://192.168.233.21:8080
http://192.168.233.21:8081

二、 nginx+tomcat的负载均衡和动静分离

静:静态页面

动:动态页面

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

nginx:反向代理-----负载均衡-------tomcat是后端服务器------web静态由nginx来做-------静态请求到nginx-----动态页面到tomcat

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

nginx:请求静态页面她可以直接响应用户的静态请求,动态请求,通过nginx服务器转发到后端的tomcat进行处理。同时,设置动态请求的负载均衡。

结构图:

1、备份nginx配置文件

cd /usr/local/nginx/conf

cp nginx.conf nginx.conf.bak.20230811

2、编辑nginx配置文件

vim /usr/local/nginx/conf/nginx.conf

#添加以下内容

 upstream ky30 {        

    server 192.168.11.14:8080 weight=1; #多实例,不同端口

    server 192.168.11.14:8081 weight=1; #多实例,不同端口

    server 192.168.11.15:8080 weight=2; #单台

}

编辑html文件:

cd /usr/local/nginx/html

vim index.htm

#复制以下内容

<html>

<body>

<h1> this is Nginx static test !</h2>

<img src="gundam.jpg"/>

</body>

</html>

 

3、进入tomcat多实例主机

cd /usr/local/tomcat/tomcat1/webapps

Mkdir test

Cd test

Vim 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>

cd /usr/local/tomcat/tomcat2/webapps

Mkdir test

Cd test

Vim 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>

4、编辑tomcat多实例主机的server.xml

vim /usr/local/tomcat/tomcat1/conf/server.xml

#删除前面的host配置

#复制粘贴以下内容,注意<Host>标记!!!

<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">

<Context docBase="/usr/local/tomcat/tomcat1/webapps/test" path="" reloadable="true" />

</Host>

vim /usr/local/tomcat/tomcat2/conf/server.xml

#删除前面的host配置

#复制粘贴以下内容,注意<Host>标记!!!

<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">

<Context docBase="/usr/local/tomcat/tomcat2/webapps/test" path="" reloadable="true" />

</Host>

/usr/local/tomcat/tomcat1/bin/shutdown.sh

/usr/local/tomcat/tomcat1/bin/startup.sh

/usr/local/tomcat/tomcat2/bin/shutdown.sh

/usr/local/tomcat/tomcat2/bin/startup.sh

5、编辑单台tomcat的jsp文件

cd /usr/local/tomcat/webapps

Mkdir test

Cd test

Vim 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>

6、编辑单台tomcat的server.xml文件

vim /usr/local/tomcat/conf/server.xml

#删除前面的host配置

#复制粘贴以下内容,注意<Host>标记!!!

<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">

<Context docBase="/usr/local/tomcat/webapps/test" path="" reloadable="true" />

</Host>

/usr/local/tomcat/bin/shutdown.sh

/usr/local/tomcat/bin/startup.sh

三、Tomcat 客户端->四层代理->七层代理->tomcat服务器

实验:

四层代理:

 

 七层代理1:

 

 七层代理2:

 

编辑Tomcat服务器配置:

Tomcat多实例服务器:

cd /usr/local/tomcat/tomcat1/webapps

Mkdir test

Cd test

Vim 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>

cd /usr/local/tomcat/tomcat2/webapps

Mkdir test

Cd test

Vim 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>

编辑tomcat多实例主机的server.xml

vim /usr/local/tomcat/tomcat1/conf/server.xml

#删除前面的host配置

#复制粘贴以下内容,注意<Host>标记!!!

<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">

<Context docBase="/usr/local/tomcat/tomcat1/webapps/test" path="" reloadable="true" />

</Host>

vim /usr/local/tomcat/tomcat2/conf/server.xml

#删除前面的host配置

#复制粘贴以下内容,注意<Host>标记!!!

<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">

<Context docBase="/usr/local/tomcat/tomcat2/webapps/test" path="" reloadable="true" />

</Host>

/usr/local/tomcat/tomcat1/bin/shutdown.sh

/usr/local/tomcat/tomcat1/bin/startup.sh

/usr/local/tomcat/tomcat2/bin/shutdown.sh

/usr/local/tomcat/tomcat2/bin/startup.sh

编辑单台tomcat的jsp文件

cd /usr/local/tomcat/webapps

Mkdir test

Cd test

Vim 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>

编辑单台tomcat的server.xml文件

vim /usr/local/tomcat/conf/server.xml

#删除前面的host配置

#复制粘贴以下内容,注意<Host>标记!!!

<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">

<Context docBase="/usr/local/tomcat/webapps/test" path="" reloadable="true" />

</Host>

/usr/local/tomcat/bin/shutdown.sh

/usr/local/tomcat/bin/startup.sh

测试:

192.168.11.12:82

192.168.11.12:82/index.jsp

问题总结:

1、如果配置完成后,测试访问页面,发现进入weclome to cent0s7页面,就代表,进入了使用yum安装的nginx配置的页面(/usr/share/nginx/html)

出现此情况表示:进入了yum安装的nginx配置的页面了,和自己安装的nginx冲突,可以systemctl stop nginx后,进入自己配置的nginx文件中,输入指令:nginx  ,可以开启单一的配置文件中的nginx服务,而不会像systemctl restart nginx 那样,打开所有nginx。

或者删除nginx服务,然后重新编译安装。(慎重)

2、出现此状况:

 可能是你的配置文件输入有错误,写完后一定要输入:nginx -t  ,查看配置文件中拼写是否有错误。

3、如果发现比如端口80被占用的情况

Netstat -antp | grep 80

#查看端口情况

此时,有两种解决办法:

1、kill -9 xxx 杀死占用端口的进程

2、更改配置文件中的端口号,避免出现重复使用端口号导致的端口被占用的情况。

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

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

相关文章

如何在电力行业运用IPD?

电力行业是国民经济众多垄断行业中较早实施改革的行业之一。近几年我国电力行业保持着较快的发展速度&#xff0c;也取得了很大的成绩&#xff0c;发电机容量和发电量居世界首位。2015-2020年&#xff0c;全国发电量不断攀升。 电力是以电能作为动力的能源。电力的发现和应用掀…

【BASH】回顾与知识点梳理(十四)

【BASH】回顾与知识点梳理 十四 十四. 文件与目录的默认权限与隐藏权限14.1 文件预设权限&#xff1a;umaskumask 的利用与重要性&#xff1a;专题制作 14.2 文件隐藏属性chattr (配置文件案隐藏属性)lsattr (显示文件隐藏属性) 14.3 文件特殊权限&#xff1a; SUID, SGID, SBI…

打造企业或者个人IP引流法

打造企业或者个人IP引流法. 大家好&#xff0c;我是百收网SEO编辑&#xff1a;狂潮老师&#xff0c;今天给大家分享企业IP打造的方法 首先我们想让人知道你的企业叫什么&#xff0c;怎么找到你的企业 这个时候我们就需要去各大平台发布信息&#xff0c;客户想了解直接去搜索…

Torch基本操作扫盲

torch.rand是均匀分布采样 torch.randn是标准正态分布采样 同时设定好了GPU种子 高斯/正态分布

Android多屏幕支持-Android12

Android多屏幕支持-Android12 1、概览及相关文章2、屏幕窗口配置2.1 配置xml文件2.2 DisplayInfo#uniqueId 屏幕标识2.3 adb查看信息 3、配置文件解析3.1 xml字段读取3.2 简要时序图 4、每屏幕焦点 android12-release 1、概览及相关文章 AOSP > 文档 > 心主题 > 多屏…

Rabbitmq消息不丢失

目录 一、消息不丢失1.消息确认2.消息确认业务封装2.1 发送确认消息测试2.2 消息发送失败&#xff0c;设置重发机制 一、消息不丢失 消息的不丢失&#xff0c;在MQ角度考虑&#xff0c;一般有三种途径&#xff1a; 1&#xff0c;生产者不丢数据 2&#xff0c;MQ服务器不丢数据…

开源数据库Mysql_DBA运维实战 (DDL语句)

DDL DDL语句 数据库定义语言&#xff1a;数据库、表、视图、索引、存储过程. 例如:CREATE DROP ALTER DDL库 定义库{ 创建业务数据库&#xff1a;CREAATE DATABASE ___数据库名___ ; 数据库名要求{ a.区分大小写 b.唯一性 c.不能使用关键字如 create select d.不能单独使用…

最强自动化测试框架Playwright(22)-模拟器

可以使用测试生成器通过仿真生成测试&#xff0c;以便为特定窗口、设备、配色方案生成测试&#xff0c;以及模拟地理位置、语言或时区。测试生成器还可以生成测试&#xff0c;同时保留经过身份验证的状态。 模拟视口大小 Playwright 打开一个浏览器窗口&#xff0c;其视口设置…

【MAC】 M2 brew安装 docker 运行失败 解决

MAC 安装 brew install --cask docker 之后一直显示docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?. 网上看了一些文章 发现 这个不适用于M2 所以要从官网上下载 docker 安装成功

awk案例练习

目录 一、awk练习 1.1筛选ip地址 1.2字段去重 1.3次数统计 1.4统计TCP连接状态 1.5处理字段缺失的数据 1.6筛选给定时间范围内的日志 一、awk练习 1.1筛选ip地址 ifconfig命令查看IP 利用awk进行筛选 ifconfig | awk BEGIN{RS""}NR2{print $6} RS指定输入记…

MySql012——检索数据:创建计算字段(拼接字段、使用别名、执行算术计算)

准备工作1&#xff1a;在study库中创建表vendors&#xff0c;并插入数据 说明&#xff1a;vendors表包含供应商名和位置信息。 use study;CREATE TABLE vendors (vend_id int NOT NULL AUTO_INCREMENT,vend_name char(50) NOT NULL ,vend_address char(50) NULL ,…

16.1.2 Linux 的多用户多任务环境

在 Linux 下面执行一个指令时&#xff0c;系统会将相关的权限、属性、程序码与数据等均载入内存&#xff0c; 并给予这个单元一个程序识别码 &#xff08;PID&#xff09;&#xff0c;最终该指令可以进行的任务则与这个 PID 的权限有关。根据这个说明&#xff0c;我们就可以简单…