Tomcat的多实例和动静分离

目录

一、多实例

[二、 nginx+tomcat的负载均衡和动静分离](#二、 nginx+tomcat的负载均衡和动静分离)

[三、Tomcat 客户端->四层代理->七层代理->tomcat服务器](#三、Tomcat 客户端->四层代理->七层代理->tomcat服务器)

实验:

问题总结:


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

一、多实例

在一台服务器上有多个tomcat的服务。

bash 复制代码
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

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


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


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

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.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、更改配置文件中的端口号,避免出现重复使用端口号导致的端口被占用的情况。

相关推荐
吾日三省吾码4 小时前
JVM 性能调优
java
弗拉唐5 小时前
springBoot,mp,ssm整合案例
java·spring boot·mybatis
oi776 小时前
使用itextpdf进行pdf模版填充中文文本时部分字不显示问题
java·服务器
少说多做3436 小时前
Android 不同情况下使用 runOnUiThread
android·java
知兀6 小时前
Java的方法、基本和引用数据类型
java·笔记·黑马程序员
蓝黑20206 小时前
IntelliJ IDEA常用快捷键
java·ide·intellij-idea
Ysjt | 深7 小时前
C++多线程编程入门教程(优质版)
java·开发语言·jvm·c++
shuangrenlong7 小时前
slice介绍slice查看器
java·ubuntu
牧竹子7 小时前
对原jar包解压后修改原class文件后重新打包为jar
java·jar