Nginx反向代理联动Tomcat实现多实例部署、动静分离、负载均衡

文章目录

  • 1. 配置反向代理
    • 1.1 前置准备
    • 1.2 代理服务器配置
    • 1.3 真实服务器配置
    • 1.4 客户机配置
  • 2. Tomcat 多实例部署
    • 2.1 部署JDK
    • 2.2 设置JDK环境变量
    • 2.3 部署Tomcat服务
    • 2.4 路径启动
  • 3. Nginx联动Tomcat实现动静分离、负载均衡
    • 3.1 基本原理
    • 3.2 前置准备
    • 3.3 配置nginx1实现四层代理,负载均衡
    • 3.4 配置nginx2\3实现七层代理,动静分离
    • 3.5 Tomcat配置,作为动态资源服务器
    • 3.6 测试

1. 配置反向代理

1.1 前置准备

#所需环境
192.168.67.100 #nginx代理服务器
192.168.67.101 #客户机
192.168.67.102 #真实服务器

1.2 代理服务器配置

vim /apps/nginx/conf/nginx.conf
#编辑主配置文件

#在http块中添加
include        /apps/nginx/conf.d/*.conf
vim /apps/nginx/conf.d/pc.com
#编辑子配置文件

server{
        listen 192.168.67.100:80;
        server_name www.pc.com;
     location / {
        root  /apps/nginx/html/pc;
       proxy_pass http://192.168.67.102;
    }
}

nginx -t
nginx -s reload
#重新加载

Nginx反向代理联动Tomcat实现多实例部署、动静分离、负载均衡_第1张图片

1.3 真实服务器配置

systemctl stop firewalld
setenforce 0 
#关闭防火墙和selinux
yum  install   httpd  -y #安装服务

cd  /var/www/html
echo   "Hi~"  > index.html #主页内容

systemctl start httpd #开启服务

Nginx反向代理联动Tomcat实现多实例部署、动静分离、负载均衡_第2张图片

vi /etc/hosts
#添加地址映射

192.168.67.100 www.pc.com

Nginx反向代理联动Tomcat实现多实例部署、动静分离、负载均衡_第3张图片

1.4 客户机配置

vim  /etc/hosts

192.168.67.100  www.pc.com

在这里插入图片描述

测试

客户机访问代理服务器

curl www.pc.com

Nginx反向代理联动Tomcat实现多实例部署、动静分离、负载均衡_第4张图片

2. Tomcat 多实例部署

2.1 部署JDK

#所需安装包
apache-tomcat-9.0.16.tar.gz  
jdk-8u201-linux-x64.rpm

rpm -ivh jdk-8u201-linux-x64.rpm  

Nginx反向代理联动Tomcat实现多实例部署、动静分离、负载均衡_第5张图片

2.2 设置JDK环境变量

#查看全局配置文件
vim /etc/profile

Nginx反向代理联动Tomcat实现多实例部署、动静分离、负载均衡_第6张图片

vi /etc/profile.d/java.sh


export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64   
#java家目录
export JRE_HOME=$JAVA_HOME/jre
#jre家目录
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
#指向java工具包和环境包
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
#java环境变量

在这里插入图片描述

source /etc/profile.d/java.sh
#调用Java脚本

java -version
#查看当前JDK版本

在这里插入图片描述

2.3 部署Tomcat服务

cd /opt
tar xf apache-tomcat-9.0.16.tar.gz

#解压tomcat源码包

在这里插入图片描述

cp -r apache-tomcat-9.0.16/ /usr/local/tomcat1
cp -r apache-tomcat-9.0.16/ /usr/local/tomcat2
cp -r apache-tomcat-9.0.16/ /usr/local/tomcat3
#将tomcat复制到usr/local ,并且改名,方便管理

在这里插入图片描述

#更改tomcat1、2、3 server.xhl文件
vi /usr/local/tomcat1/conf/server.xml

在这里插入图片描述
Nginx反向代理联动Tomcat实现多实例部署、动静分离、负载均衡_第7张图片
在这里插入图片描述

重复操作

#修改各 tomcat 实例中的 startup.sh 和 shutdown.sh 文件,添加 tomcat 环境变量
#tomcat1
vi /usr/local/tomcat1/bin/startup.sh 

#添加
export CATALINA_BASE=/usr/local/tomcat1
export CATALINA_HOME=/usr/local/tomcat1
export TOMCAT_HOME=/usr/local/tomcat1

Nginx反向代理联动Tomcat实现多实例部署、动静分离、负载均衡_第8张图片

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

#添加内容
export CATALINA_BASE=/usr/local/tomcat1
export CATALINA_HOME=/usr/local/tomcat1
export TOMCAT_HOME=/usr/local/tomcat1

Nginx反向代理联动Tomcat实现多实例部署、动静分离、负载均衡_第9张图片
重复上述操作

2.4 路径启动

#绝对路径启动
 /usr/local/tomcat1/bin/startup.sh
 /usr/local/tomcat2/bin/startup.sh
 /usr/local/tomcat3/bin/startup.sh
ss -natp |grep java
#查看进程

Nginx反向代理联动Tomcat实现多实例部署、动静分离、负载均衡_第10张图片

#网页启动
192.168.67.102:8081
192.168.67.102:8082
192.168.67.102:8083

Nginx反向代理联动Tomcat实现多实例部署、动静分离、负载均衡_第11张图片
Nginx反向代理联动Tomcat实现多实例部署、动静分离、负载均衡_第12张图片
Nginx反向代理联动Tomcat实现多实例部署、动静分离、负载均衡_第13张图片

3. Nginx联动Tomcat实现动静分离、负载均衡

3.1 基本原理

服务端接收来自客户端的请求中,包含静态资源和动态资源,静态资源由Nginx进行处理,动态资源Nginx转发至后端由tomcat负责处理。

3.2 前置准备

Nginx反向代理联动Tomcat实现多实例部署、动静分离、负载均衡_第14张图片

#tomcat多实例
192.168.67.102:8081
192.168.67.102:8082
192.168.67.102:8083

#四层实现负载均衡
nginx1 192.168.67.100 #用性能最好的一台

#七层实现动静分离
nginx2 192.168.67.101
nginx3 192.168.67.103

#客户机
192.168.67.104

3.3 配置nginx1实现四层代理,负载均衡

systemctl stop firewalld
setenforce 0
#关闭防火墙和selinux策略
#编译安装nginx并加入systemd服务
#依赖
yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ make
#创建管理用户
useradd -M -s /sbin/nologin nginx
#编译安装ngnix
cd /opt

#解压缩软件包
tar -zxf nginx-1.18.0.tar.gz

cd nginx-1.18.0
#加入源码包

#搭建编译环境
./configure \
--prefix=/apps/nginx \
--user=nginx \
--group=nginx \
--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层调度

make -j2 && make install
#编译并安装 

#软连接 添加到环境变量中
ln -s /apps/nginx/sbin/nginx /usr/local/
#添加到系统服务中
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
ExecrReload=/bin/kill -s HUP $MAINPID
ExecrStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target

systemctl daemon_reload
chmod 754 /lib/systemd/system/nginx.service

#启动nginx
systemctl start nginx
systemctl status nginx
#查看运行状态 

Nginx反向代理联动Tomcat实现多实例部署、动静分离、负载均衡_第15张图片

#配置负载均衡
vim /apps/nginx/conf/nginx.conf
...
#写在http部分上面
stream {
	
    upstream myserver {
		server 192.168.67.101:80 weight=1;
		server 192.168.67.103:80 weight=1;
    }
    server {
        listen 80;
        proxy_pass myserver;
    }
}

nginx -t
nginx -s reload 
#重新加载

Nginx反向代理联动Tomcat实现多实例部署、动静分离、负载均衡_第16张图片
Nginx反向代理联动Tomcat实现多实例部署、动静分离、负载均衡_第17张图片
Nginx反向代理联动Tomcat实现多实例部署、动静分离、负载均衡_第18张图片

ss -natp |grep nginx
#查看是否正常运行

在这里插入图片描述

3.4 配置nginx2\3实现七层代理,动静分离

nginx2和3配置基本相同,主页文件相同名字,不同内容的文本和静态网页,用于测试负载均衡

#前置准备
systemctl disable firewalld --now
setenforce 0

#yum安装nginx
yum -y install epel-release.noarch -y
yum -y install nginx 

#如果开启了httpd服务关了,不然会导致nginx无法开启

#开启服务
systemctl start nginx 
vim /etc/nginx/nginx.conf
#编辑主配置文件

Nginx反向代理联动Tomcat实现多实例部署、动静分离、负载均衡_第19张图片

Nginx反向代理联动Tomcat实现多实例部署、动静分离、负载均衡_第20张图片

#添加并编辑子配置文件
touch conf.d/scj.conf
vim conf.d/scj.conf

Nginx反向代理联动Tomcat实现多实例部署、动静分离、负载均衡_第21张图片

nginx -t
nginx -s reload
#重新加载
#静态页面
cd /usr/share/nginx/html
mkdir scj
echo "This is nginx2 ,from scj" > scj/index.html

在这里插入图片描述
Nginx反向代理联动Tomcat实现多实例部署、动静分离、负载均衡_第22张图片

3.5 Tomcat配置,作为动态资源服务器

#前置准备
systemctl stop firerwalld
setenforce 0

#当前已经部署了tomcat多实例
#详情见上
#准备动态资源
mkdir /usr/local/tomcat1/webapps/test
mkdir /usr/local/tomcat2/webapps/test
mkdir /usr/local/tomcat3/webapps/test
#创建动态资源根目录
#创建动态页面

#tomcat1
vi /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
vi /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.test1.com");%>
</body>
</html>

#tomcat3
vi /usr/local/tomcat3/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.test1.com");%>
</body>
</html>
#重启服务

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

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

/usr/local/tomcat3/bin/shutdown.sh 
/usr/local/tomcat3/bin/startup.sh 

ss -natp |grep java
#查看运行情况

Nginx反向代理联动Tomcat实现多实例部署、动静分离、负载均衡_第23张图片

3.6 测试

#访问静态资源
浏览器访问 http://192.168.67.100/scj/index.html
多次刷新

Nginx反向代理联动Tomcat实现多实例部署、动静分离、负载均衡_第24张图片
Nginx反向代理联动Tomcat实现多实例部署、动静分离、负载均衡_第25张图片

#访问动态资源
http://192.168.67.100/test/index.jsp
多次刷新

Nginx反向代理联动Tomcat实现多实例部署、动静分离、负载均衡_第26张图片
Nginx反向代理联动Tomcat实现多实例部署、动静分离、负载均衡_第27张图片
Nginx反向代理联动Tomcat实现多实例部署、动静分离、负载均衡_第28张图片

你可能感兴趣的:(nginx,tomcat,负载均衡)