tomcat的多实例和动静分离

目录

多实例

安装tomcat

[配置 tomcat 环境变量](#配置 tomcat 环境变量)

修改server.xml文件

修改开关文件,添加环境变量

tomcat1

tomcat2

启动

浏览器访问测试

nginx+tomcat实现动静分离

Nginx实现负载均衡的原理

部署nginx的负载器

搭建第三台tomcat

配置多实例服务器

Tomcat1配置

Tomcat2配置

配置nginx服务器负载均衡和动静分离


多实例

在一台服务器上有多个tomcat服务,配置成全局变量,方便后面传参

安装tomcat

安装好 jdk后编译安装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

配置 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

修改server.xml文件

修改 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

修改开关文件,添加环境变量

修改各 tomcat 实例中的 startup.shshutdown.sh 文件,添加 tomcat 环境变量

tomcat1

复制代码
vim /usr/local/tomcat/tomcat1/bin/startup.sh 

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


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

export CATALINA_BASE=$CATALINA_BASE1
export CATALINA_HOME=$CATALINA_HOME1
export TOMCAT_HOME=$TOMCAT_HOME1

tomcat2

复制代码
vim /usr/local/tomcat/tomcat2/bin/startup.sh 

export CATALINA_BASE=$CATALINA_BASE2
export CATALINA_HOME=$CATALINA_HOME2
export TOMCAT_HOME=$TOMCAT_HOME2


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

export CATALINA_BASE=$CATALINA_BASE2
export CATALINA_HOME=$CATALINA_HOME2
export TOMCAT_HOME=$TOMCAT_HOME2

启动

复制代码
/usr/local/tomcat/tomcat1/bin/startup.sh 
/usr/local/tomcat/tomcat2/bin/startup.sh 

netstat -natp | grep java

浏览器访问测试

http://192.168.233.100:8080

http://192.168.233.100:8081

telent 可以测试端口通信是否正常

nginx+tomcat实现动静分离

静:静态页面

动:动态页面

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

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

Nginx实现负载均衡的原理

Nginx实现负载均衡是通过反向代理实现Nginx服务器作为前端,Tomcat服务器作为后端,web页面请求由Nginx服务来进行转发。 但不是把所有的web请求转发,而是将静态页面请求Ncinx服务器自己来处理,动态页面请求,转发给后端的Tomcat服务器来处理。

Tomcat是属于轻量级的应用服务器,可接受访问量可能会不足,所以我们需要多台Tomcat服务器。并且Tomcat并发量处理能力弱(约Nginx的六分之一),所以需要Nginx方向代理时,进行合理的调用分配。

部署nginx的负载器

复制代码
systemctl stop firewalld
setenforce 0


systemctl stop firewalld
setenforce 0
 
yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ make
 
useradd -M -s /sbin/nologin nginx
 
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-file-aio \
--with-http_stub_status_module \
--with-http_gzip_static_module \
--with-http_flv_module \
--with-http_ssl_module \
--with-stream

--with-file-aio \ #启用文件修改支持

--with-http_stub_status_module \ #启用状态统计

--with-http_gzip_static_module \ #启用 gzip静态压缩

--with-http_flv_module \ #启用 flv模块,提供对 flv 视频的伪流支持

--with-http_ssl_module \ #启用 SSL模块,提供SSL加密功能

--with-stream #启用 stream模块,提供4层调

搭建第三台tomcat

tomcat的多实例之前已部署,在第三台服务器上部署一个tomcat

复制代码
systemctl stop firewalld

setenforce 0

systemctl stop firewalld
setenforce 0
 
 
#软件包的方式安装jdk环境

tar zxvf jdk-8u91-linux-x64.tar.gz -C /usr/local/
 
vim /etc/profile
export JAVA_HOME=/usr/local/jdk1.8.0_91
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin:$PATH
 
source /etc/profile

tar zxvf apache-tomcat-9.0.16.tar.gz
 
mv /opt/apache-tomcat-9.0.16/ /usr/local/tomcat
 
/usr/local/tomcat/bin/shutdown.sh 

/usr/local/tomcat/bin/startup.sh
 
netstat -ntap | grep 8080

配置多实例服务器

复制代码
mkdir -p /usr/local/tomcat/tomcat1/webapps/test
mkdir -p /usr/local/tomcat/tomcat2/webapps/test

Tomcat1配置

复制代码
vim /usr/local/tomcat/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>


vim /usr/local/tomcat/tomcat1/conf/server.xml  #把前面的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>
	
/usr/local/tomcat/tomcat1/bin/shutdown.sh 
/usr/local/tomcat/tomcat1/bin/startup.sh 

Tomcat2配置

复制代码
vim /usr/local/tomcat/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>

vim /usr/local/tomcat/tomcat2/conf/server.xml
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
	<Context docBase="/usr/local/tomcat/tomcat2/webapps/test" path="" reloadable="true" />

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

配置nginx服务器负载均衡和动静分离

复制代码
vim /usr/local/nginx/html/index.html
<html>
<body>
<h1> this is Nginx static test !</h2>
<img src="meinv.jpg"/>
</body>
</html>


vim /usr/local/nginx/conf/nginx.conf
......
http {
......	
	#配置负载均衡的服务器列表,weight参数表示权重,权重越高,被分配到的概率越大
	upstream tomcat_server {
		server 192.168.233.71:8080 weight=1;
		server 192.168.233.71:8081 weight=1;
	}
	
	server {
		listen 80;
		server_name localhost;
		charset utf-8;
		#配置Nginx处理动态页面请求,将 .jsp文件请求转发到Tomcat 服务器处理
		location ~ .*\.jsp$ {
			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处理静态图片请求
		location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|css)$ {
			root /usr/local/nginx/html;
			expires 10d;
		}
		
		location / {
			root html;
			index index.html index.htm;
		}
......
	}
......
}

location ~ .*\.jsp$ {
			proxy_pass http://tomcat_server;
			proxy_set_header HOST $host;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		}

访问测试

访问动态资源tomcat (192.168.233.80/index.jsp) #nginx的地址来访问

相关推荐
八荒被注册了几秒前
Nginx +Nginx-http-flv-module 推流&拉流
运维·nginx·http
敲上瘾7 分钟前
MySQL数据库与表结构操作指南
linux·数据库·mysql
白露与泡影24 分钟前
聊聊四种实时通信技术:短轮询、长轮询、WebSocket 和 SSE
网络·websocket·网络协议
可儿·四系桜39 分钟前
WebSocket:实时通信的新时代
java·网络·websocket·网络协议
forestsea40 分钟前
Maven 插件机制与生命周期管理
java·maven
七月在野,八月在宇,九月在户1 小时前
maven 依赖冲突异常分析
java·maven
金融数据出海1 小时前
黄金、碳排放期货市场API接口文档
java·开发语言·spring boot·后端·金融·区块链
胡斌附体1 小时前
微服务中 本地启动 springboot 无法找到nacos配置 启动报错
java·spring boot·微服务·yml·naocs yml
天夏已微凉1 小时前
1.3.2 linux音频PulseAudio详细介绍
linux·音视频
薯条不要番茄酱1 小时前
【JVM】从零开始深度解析JVM
java·jvm