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


    1. 配置反向代理

    1.1 前置准备

    #所需环境
    192.168.67.100 #nginx代理服务器
    192.168.67.101 #客户机
    192.168.67.102 #真实服务器
    
    • 1
    • 2
    • 3
    • 4

    1.2 代理服务器配置

    vim /apps/nginx/conf/nginx.conf
    #编辑主配置文件
    
    #在http块中添加
    include        /apps/nginx/conf.d/*.conf
    
    • 1
    • 2
    • 3
    • 4
    • 5
    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
    #重新加载
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    在这里插入图片描述

    1.3 真实服务器配置

    systemctl stop firewalld
    setenforce 0 
    #关闭防火墙和selinux
    
    • 1
    • 2
    • 3
    yum  install   httpd  -y #安装服务
    
    cd  /var/www/html
    echo   "Hi~"  > index.html #主页内容
    
    systemctl start httpd #开启服务
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    vi /etc/hosts
    #添加地址映射
    
    192.168.67.100 www.pc.com
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    1.4 客户机配置

    vim  /etc/hosts
    
    192.168.67.100  www.pc.com
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    测试

    客户机访问代理服务器

    curl www.pc.com
    
    • 1

    在这里插入图片描述

    2. Tomcat 多实例部署

    2.1 部署JDK

    #所需安装包
    apache-tomcat-9.0.16.tar.gz  
    jdk-8u201-linux-x64.rpm
    
    rpm -ivh jdk-8u201-linux-x64.rpm  
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    2.2 设置JDK环境变量

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

    在这里插入图片描述

    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环境变量
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    在这里插入图片描述

    source /etc/profile.d/java.sh
    #调用Java脚本
    
    java -version
    #查看当前JDK版本
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    2.3 部署Tomcat服务

    cd /opt
    tar xf apache-tomcat-9.0.16.tar.gz
    
    #解压tomcat源码包
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    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 ,并且改名,方便管理
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

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

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    重复操作

    #修改各 tomcat 实例中的 startup.sh 和 shutdown.sh 文件,添加 tomcat 环境变量
    
    • 1
    #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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在这里插入图片描述

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述
    重复上述操作

    2.4 路径启动

    #绝对路径启动
     /usr/local/tomcat1/bin/startup.sh
     /usr/local/tomcat2/bin/startup.sh
     /usr/local/tomcat3/bin/startup.sh
    ss -natp |grep java
    #查看进程
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    #网页启动
    192.168.67.102:8081
    192.168.67.102:8082
    192.168.67.102:8083
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

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

    3.1 基本原理

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

    3.2 前置准备

    在这里插入图片描述

    #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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

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

    systemctl stop firewalld
    setenforce 0
    #关闭防火墙和selinux策略
    
    • 1
    • 2
    • 3
    #编译安装nginx并加入systemd服务
    #依赖
    yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ make
    #创建管理用户
    useradd -M -s /sbin/nologin nginx
    
    • 1
    • 2
    • 3
    • 4
    • 5
    #编译安装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/
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    #添加到系统服务中
    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
    #查看运行状态 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    在这里插入图片描述

    #配置负载均衡
    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 
    #重新加载
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

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

    在这里插入图片描述

    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 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    vim /etc/nginx/nginx.conf
    #编辑主配置文件
    
    • 1
    • 2

    在这里插入图片描述

    在这里插入图片描述

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

    在这里插入图片描述

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

    在这里插入图片描述
    在这里插入图片描述

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

    #前置准备
    systemctl stop firerwalld
    setenforce 0
    
    #当前已经部署了tomcat多实例
    #详情见上
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    #准备动态资源
    mkdir /usr/local/tomcat1/webapps/test
    mkdir /usr/local/tomcat2/webapps/test
    mkdir /usr/local/tomcat3/webapps/test
    #创建动态资源根目录
    
    • 1
    • 2
    • 3
    • 4
    • 5
    #创建动态页面
    
    #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>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    #重启服务
    
    /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
    #查看运行情况
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    在这里插入图片描述

    3.6 测试

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

    在这里插入图片描述
    在这里插入图片描述

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

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    Kafka由浅入深(5)RecordAccumulator的工作原理
    golang学习笔记——接口interfaces
    记录--Three.js的简单使用,Three.js在vue3.x中导入.pcd三维模型文件
    java计算机毕业设计vue基层社区管理服务网源码+数据库+系统+lw文档
    10G传输分析仪SDH表TFN D450S参数详情
    差模电感和共模电感的差别
    git常用命令(git github ssh)
    勤于奋国外LEAD最近一些常态
    面试官:说说Vue 3.0中Treeshaking特性?
    Thymeleaf th:fragment局部刷新
  • 原文地址:https://blog.csdn.net/m0_74170357/article/details/132790298