web_nginx+tomcat实现负载均衡、动静分离

素颜马尾好姑娘i 2021-09-07 13:14 472阅读 0赞

nginx+tomcat

  • 一.Nginx负载均衡实现原理
        • 1) 反向代理:
        • 2)原理
      • Nginx服务器:
      • 3)Nginx静态处理优势
        • 4)Nginx动静分离原理
        • 5)Nginx配置反向代理的主要参数
    • 二.Nginx+Tomcat动静分离、负载均衡实验
        • 实验准备:
      • 1.部署Nginx负载均衡服务器
      • 脚本一键部署Nginx:
      • 2.部署两台Tomcat应用服务器
      • 一键部署Tomcat脚本
      • 3.动静分离配置
      • 1)Tomcat1 server配置
      • 2)Tomcat2 server配置
      • 3)Nginx server配置
      • 4.访问测试
      • 总结:

一.Nginx负载均衡实现原理

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

1) 反向代理:

代理服务器Nginx 来接受internet上的连接请求,然后请求转发给内部网络上的服务器,并将服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器

2)原理

  1. Nginx服务器作为前端,Tomcat服务器作为后端,web页面请求由Nginx服务来进行转发
  2. 将静态页面请求Nginx服务器自己来处理,
  3. 动态页面请求 转发给Tomcat服务器来处理
  4. Tomcat属于轻量级的应用服务器,接收访问量会不足
  5. 需要多台tomcat服务器,通过Nginx配置权重挑选Tomcat服务器进行处理

Nginx服务器:

1.首页使用精准匹配
2.静态页面使用正则匹配自己处理
3.动态页面使用正则匹配jsp结尾的请求,使用proxy_pass转发给Tomcat服务器

3)Nginx静态处理优势

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

4)Nginx动静分离原理

  1. 服务器接收来自客户端的请求中
  2. 即有静态资源也有动态资源
  3. 静态资源有Nginx提供服务
  4. 动态资源Nginx转发至后端

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

  1. 配置后端服务器池,以提供响应数据
  2. upstream 服务器名 { }

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

  1. proxy_pass http://服务器名

二.Nginx+Tomcat动静分离、负载均衡实验

实验准备:






























主机 操作系统 IP地址 所需软件
Nginx Server centos7 192.168.133.10 nginx-1.12.0.tar.gz
Tomcat Server1 centos7 192.168.133.20 apache-tomcat-9.0.16.tar.gz、jdk-8u201-linux-x64.rpm
Tomcat Server2 centos7 192.168.133.30 apache-tomcat-9.0.16.tar.gz、jdk-8u201-linux-x64.rpm

1.部署Nginx负载均衡服务器

安装Nginx具体步骤

脚本一键部署Nginx:

  • source 启动脚本
  • 将需要的软件包放入opt目录中

在这里插入图片描述

  1. #!/bin/bash
  2. systemctl stop firewalld
  3. systemctl disable firewalld
  4. setenforce 0
  5. yum -y install pcre-devel zlib-devel gcc gcc-c++ make
  6. useradd -M -s /sbin/nologin nginx
  7. cd /opt
  8. tar zxvf nginx-1.12.0.tar.gz -C /opt/
  9. cd /opt/nginx-1.12.0/
  10. ./configure \
  11. --prefix=/usr/local/nginx \
  12. --user=nginx \
  13. --group=nginx \
  14. --with-http_stub_status_module
  15. make && make install
  16. ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
  17. echo '[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' > /lib/systemd/system/nginx.service
  18. chmod 754 /lib/systemd/system/nginx.service
  19. systemctl start nginx.service
  20. systemctl enable nginx.service
  21. nginx -t

在这里插入图片描述

2.部署两台Tomcat应用服务器

安装Tomcat具体步骤

一键部署Tomcat脚本

  • source启动脚本
  • 将需要的软件放入opt 目录中

在这里插入图片描述

  1. #!/bin/bash
  2. systemctl stop firewalld
  3. systemctl disable firewalld
  4. setenforce 0
  5. cd /opt
  6. rpm -ivh jdk-8u201-linux-x64.rpm
  7. echo 'export JAVA_HOME=/usr/java/jdk1.8.0_201-amd64 export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar export PATH=$JAVA_HOME/bin:$PATH' > /etc/profile.d/java.sh
  8. source /etc/profile
  9. cd /opt
  10. tar zxvf apache-tomcat-9.0.16.tar.gz
  11. mv apache-tomcat-9.0.16 /usr/local/tomcat
  12. /usr/local/tomcat/bin/startup.sh

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

3.动静分离配置

1)Tomcat1 server配置

  1. mkdir /usr/local/tomcat/webapps/test
  2. vim /usr/local/tomcat/webapps/test/index.jsp
  3. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  4. <html>
  5. <head>
  6. <title>JSP test1 page</title>
  7. </head>
  8. <body>
  9. <% out.println("动态页面 1:www.test1.com");%>
  10. </body>
  11. </html>
  12. #修改配置文件
  13. vim /usr/local/tomcat/conf/server.xml
  14. <Host name="tomcat1" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
  15. <Context docBase="/usr/local/tomcat/webapps/test" path="" reloadable="true" />
  16. </Host>
  17. /usr/local/tomcat/bin/shutdown.sh
  18. /usr/local/tomcat/bin/startup.sh

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

2)Tomcat2 server配置

  1. mkdir /usr/local/tomcat/webapps/test
  2. vim /usr/local/tomcat/webapps/test/index.jsp
  3. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  4. <html>
  5. <head>
  6. <title>JSP test2 page</title>
  7. </head>
  8. <body>
  9. <% out.println("动态页面 1:www.test2.com");%>
  10. </body>
  11. </html>
  12. #修改配置文件
  13. vim /usr/local/tomcat/conf/server.xml
  14. <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
  15. <Context docBase="/usr/local/tomcat/webapps/test" path="" reloadable="true" />
  16. </Host>
  17. /usr/local/tomcat/bin/shutdown.sh
  18. /usr/local/tomcat/bin/startup.sh

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3)Nginx server配置

  1. #准备静态页面和静态图片
  2. echo '<html><body><h1>this is static</h1></body></html>' > /usr/local/nginx/html/index.html
  3. mkdir /usr/local/nginx/html/img
  4. cd /usr/local/nginx/html/img

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

  1. vim /usr/local/nginx/conf/nginx.conf
  2. ......
  3. http {
  4. ......
  5. #gzip on;
  6. upstream tomcat_server {
  7. server 192.168.133.20:8080 weight=1;
  8. server 192.168.133.30:8080 weight=1;
  9. }
  10. server {
  11. listen 80;
  12. server_name localhost;
  13. #charset koi8-r;
  14. #access_log logs/host.access.log main;
  15. #配置Nginx处理动态页面请求,将 .jsp 文件请求转发到Tomcat 服务器处理
  16. location ~ .*\.jsp$ {
  17. proxy_pass http://tomcat_server;
  18. proxy_set_header HOST $host;
  19. proxy_set_header X-Real-IP $remote_addr;
  20. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  21. }
  22. #配置Nginx处理静态图片请求
  23. location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|css)$ {
  24. root /usr/local/nginx/html/img/;
  25. expires 10d;
  26. }
  27. location / {
  28. root html;
  29. index index.html index.htm;
  30. }
  31. systemctl restart nginx.service

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

4.访问测试

测试静态页面效果
浏览器访问 http://192.168.133.10/
浏览器访问 http://192.168.133.10/c.jpg

在这里插入图片描述

在这里插入图片描述

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

在这里插入图片描述

在这里插入图片描述

总结:

  1. Nginx实现负载均衡是通过反向代理实现
  2. 反向代理:nginx接收请求,转发给内部网络上的服务器,
  3. 结果返回客户端,代理服务器对外就为反向代理服务器
  • 负载均衡原理:
    Nginx作为前端,tomcat为后端,web页面请求由nginx服务来进行转发
    静态页面请求Nginx处理
    动态页面转发给Tomcat服务器处理

tomcat 属于轻量的应用服务器,需要多台,通过nginx配置权重进行挑选Tomcat进行处理

  • Nginx动静分离原理:
    服务器接收来自客户端的请求中
    即有静态资源也有动态资源
    静态资源有Nginx提供服务
    动态资源Nginx转发至后端

发表评论

表情:
评论列表 (有 0 条评论,472人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Nginx 动静分离负载均衡实现

    一、前提 企业中,随着用户的增长,数据量也几乎成几何增长,数据越来越大,随之也就出现了各种应用的瓶颈问题。 问题出现了,我们就得想办法解决,一般网站环境,均会使用LAM