• Nginx+Tomcat 搭建负载均衡、动静分离


    目录

    一、Nginx负载均衡实现原理

    1.反向代理原理

    2.Nginx静态处理优势

    3.Nginx动静分离原理

    二、Nginx&Tomcat安装

    环境配置:

    1.安装启动Tomcat

    2.nginx安装

    三、动静分离配置

    1.Tomcat1 server 配置

    2.Tomcat2 server 配置

     3.Nginx server 配置


    一、Nginx负载均衡实现原理

    Nginx实现负载均衡是通过反向代理实现

            Nginx服务器作为前端,Tomcat服务器作为后端,web页面请求由Nginx服务来进行转发。
            但是不是把所有的web请求转发,而是将静态页面请求Nginx服务器自己来处理,动态页面请求,转发给后端的Tomcat服务器来处理。
            Tomcat是属于轻量级的应用服务器,可接受访问量可能会不足,所以我们需要多台Tomcat服务器,然后通过Nginx配置权重来进行挑选Tomcat服务器去进行处理,负载均衡的一种策略。

    1.反向代理原理

            反向代理(ReverseProxy)方式是指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器;并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。

            通常的代理服务器,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中。当一个代理服务器能够代理外部网络上的主机,访问内部网络时,这种代理服务的方式称为反向代理服务。

    Nginx配置反向代理的主要参数

            upstream 服务池名{}

    配置后端服务器池,以提供响应数据

            proxy_pass http://服务池名

    配置将访问请求转发给后端服务器池的服务器处理

    2.Nginx静态处理优势

    • Nginx处理静态页面的效率远高于Tomcat的处理能力
    • 若Tomcat的请求量为1000次,则Nginx的请求量为6000次
    • Tomcat每秒的吞吐量为0.6M,Nginx的每秒吞吐量为3 .6M
    • Nginx处理静态资源的能力是Tomcat处理的6倍

    3.Nginx动静分离原理

    服务端接收来自客户端的请求中,既有静态资源也有动态资源,静态资源有Nginx提供服务,动态资源Nginx转发至后端。

    二、Nginx&Tomcat安装

    环境配置:

    Nginx 服务器:192.168.131.50
    Tomcat服务器1:192.168.131.30
    Tomcat服务器2:192.168.131.40

    1.安装启动Tomcat

    解压apache-tomcat软件包
    cd /opt
    rpm -ivh jdk-8u201-linux-x64.rpm

    tar zxvf apache-tomcat-9.0.16.tar.gz
    mv apache-tomcat-9.0.16 /usr/local/tomcat

     Tomcat 配置

    1. vim /etc/profile.d/java.sh
    2. export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64
    3. export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
    4. export PATH=$JAVA_HOME/bin:$PATH

     加载生效、查看版本

    1. source /etc/profile.d/java.sh
    2. java -version

     启动tomcat

    1. 优化管理
    2. ln -s /usr/local/tomcat/bin/startup.sh /usr/local/bin/
    3. ln -s /usr/local/tomcat/bin/shutdown.sh /usr/local/bin/
    4. 开启服务
    5. startup.sh
    6. netstat -natp | grep 8080

    tomcat2安装方法与以上方法一样!

    2.nginx安装

    手动安装详见  《部署LNMP架构&论坛》  之      四、安装 Nginx 服务

    部署LNMP架构&论坛_啊啊啊啊啊建的博客-CSDN博客

    这里提供自动安装脚本  (安装包自行下载,若版本不同请更改脚本内容)

    1. #!/bin/bash
    2. ####关闭防火墙,关闭核心防护####
    3. ###试验环境:CentOS 7.6 Nginx 1.15 ###
    4. echo "关闭防火墙,关闭核心防护"
    5. systemctl stop firewalld
    6. systemctl disable firewalld &> /dev/null
    7. setenforce 0
    8. ###安装nginx####
    9. yum install -y gcc gcc-c++ make pcre pcre-devel expat-devel perl zlib zlib-devel &> /dev/null
    10. useradd -M -s /sbin/nologin nginx
    11. cd /opt
    12. tar zxvf nginx-1.15.9.tar.gz
    13. cd nginx-1.15.9
    14. echo " nginx正在编译安装"
    15. ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module &> /dev/null
    16. make && make install &> /dev/null
    17. ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin
    18. echo "
    19. [Unit]
    20. Description=nginx
    21. After=network.target
    22. [Service]
    23. Type=forking
    24. PIDFile=/usr/local/nginx/logs/nginx.pid
    25. ExecStart=/usr/local/nginx/sbin/nginx
    26. ExecReload=/usr/bin/kill -s HUP $MAINPID
    27. ExecStop=/usr/bin/kill -s QUIT $MAINPID
    28. PrivateTmp=true
    29. [Install]
    30. WantedBy=multi-user.target" >> /lib/systemd/system/nginx.service
    31. chmod 754 /lib/systemd/system/nginx.service
    32. systemctl daemon-reload
    33. systemctl start nginx
    34. echo "正在启动nginx服务"

    三、动静分离配置

    1.Tomcat1 server 配置

    1. mkdir /usr/local/tomcat/webapps/wu
    2. vim /usr/local/tomcat/webapps/wu/index.jsp #动态页面的配置
    3. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    4. <html>
    5. <head>
    6. <title>JSP wu page</title>
    7. </head>
    8. <body>
    9. <% out.println("动态页面 1,http://www.wu.com");%>
    10. </body>
    11. </html>

     添加虚拟主机配置

    1. vim /usr/local/tomcat/conf/server.xml
    2. 删除原host端和valve端
    3. <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
    4. <Context docBase="/usr/local/tomcat/webapps/wu" path="" reloadable="true" /> #新增
    5. ---》wq

    1. shutdown.sh
    2. startup.sh

    2.Tomcat2 server 配置

    1. mkdir /usr/local/tomcat/webapps/wxj
    2. vim /usr/local/tomcat/webapps/wxj/index.jsp #动态页面的配置
    3. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    4. <html>
    5. <head>
    6. <title>JSP wxj page</title>
    7. </head>
    8. <body>
    9. <% out.println("动态页面 2,http://www.wxj.com");%>
    10. </body>
    11. </html>

    配置虚拟主机

    1. vim /usr/local/tomcat/conf/server.xml #修改配置文件
    2. <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
    3. <Context docBase="/usr/local/tomcat/webapps/wxj" path="" reloadable="true" />
    4. </Host> #新增

    1. shutdown.sh
    2. startup.sh

     3.Nginx server 配置

    准备静态页面

    1. echo '

      this is static

      '
      > /usr/local/nginx/html/index.html

    配置负载均衡的服务器列表,weight参数表示权重,权重越高,被分配到的概率越大

    1. vim /usr/local/nginx/conf/nginx.conf
    2. #gzip on;
    3. upstream tomcat {
    4. server 192.168.131.30:8080 weight=1;
    5. server 192.168.131.40:8080 weight=1;
    6. }
    7. server {
    8. listen 80;
    9. server_name localhost;
    10. #charset koi8-r;
    11. #access_log logs/host.access.log main;
    12. location ~ .*\.jsp$ {
    13. proxy_pass http://tomcat;
    14. proxy_set_header HOST $host;
    15. proxy_set_header X-Real-IP $remote_addr;
    16. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    17. }
    18. location ~ .*\.jsp$ {
    19. proxy_pass http://tomcatserver; #这里不要加“_”
    20. #设置后端的 Web 服务器可以获取远程客户端的真实IP #设定后端的Web服务器接收到的请求访问的主机名(域名或IP、端口),默认host的值为proxy_pass指令设置的主机名
    21. proxy_set_header HOST $host;
    22. #把$remote_addr赋值给X-Real-IP(自定义),来获取源IP
    23. proxy_set_header X-Real-IP $remote_addr;
    24. #在Nginx作为代理服务器时,设置的IP列表,会把经过的机器ip,代理机器ip都记录下来
    25. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    26. }
    27. location / {
    28. root html;
    29. index index.html index.htm;
    30. }
    31. #error_page 404 /404.html;
    32. # redirect server error pages to the static page /50x.html
    33. #

     测试访问

    http://192.168.131.50

    测试负载均衡效果,不断刷新浏览器测试
    浏览器访问 http://192.168.131.50/index.jsp

     

  • 相关阅读:
    Flutter ChoiceChip 用来实现选择标签效果
    AMEYA360:蔡司扫描电镜Sigma系列:扫描电子显微镜的用途原来这么多
    【预测模型-SVM分类】基于算术优化算法优化支持向量机SVM实现数据分类附matlab代码
    Java栈和队列的实现
    “312血洗四周年”!比特币冲破7.2万创新高!手持华尔街资金与减半叙事,跃升为全球第8大资产!
    Spring IOC源码:finishBeanFactoryInitialization详解
    Git操作笔记
    6. N 字形变换
    Solr plugin热部署原理
    ExecutorService、Callable、Future实现有返回结果的多线程原理解析
  • 原文地址:https://blog.csdn.net/m0_66900908/article/details/126707893