Nginx+Tomcat的负载均衡&动静分离 详细解读,附具体实验

Nginx的upstream负载方式

upstream负载

  • 指的是nginx如何将HTTP请求分配给一组服务器的方法。nginx支持多种负载方式。
  • upstream是nginx之中的一个模块。
    • upstream adj. adv. 在(向)上游的,逆流的

轮询(默认)

常规

  • 每个请求按时间顺序逐一分配到不同的后端服务器,若有服务器宕机,故障系统自动剔除。

加权轮询

  • 在常规的基础之上可以对服务器进行加权(weight)
  • weight越大,分配概率越大。适用于服务器性能不一样的情况下。

优缺点

  • 优点
    • 简单易用,适合处理长连接或者耗时请求场景
  • 缺点
    • 无法保证会话持久性,可以会导致客户端访问不同服务器而出现不可预知的问题。

IP哈希

根据客户端的IP地址确定请求的服务器,保证同一个IP总是访问同一个服务器,解决了动态网页存在的session共享问题

  • 优点
    • 保证会话持久,适合需要记录客户端状态或信息的场景
  • 缺点
    • 无法平衡服务器的负载,不支持 TCP/UDP 协议

IP 哈希配置

vim /usr/local/nginx/conf/nginx.conf
  • 配置在需要设置的server 块
upstream tomcat {
        
        ip_hash;         
        server 192.168.45.11:8080 weight=1 max_fails=1 fail_timeout=10s;
        server 192.168.45.12:8080 weight=2 max_fails=1 fail_timeout=10s;
    }

Nginx的Session和Cookie

  • Nginx的Session是一个独特的机制,它允许应用程序在用户会话之间存储和检索信息不需要借助其他数据存储机制。
  • Cookie是一种在用户的本地计算机上存储的文本文件,由Web服务器发送给用户的浏览器,以便用户能够在访问同一站点时保持状态信息。
  • Nginx中,Session和Cookie可以结合起来使用,以维护用户的会话,如用户认证和访问控制等功能。
    • 但是,Session通常仅用于检索和存储用户特定的信息,而Cookie则提供了一种更加有效的方式来跟踪用户的会话,并在用户访问相同站点时自动将其带回服务器。

哈希

  • 根据自定义的键值(如URL、Cookie等)计算哈希值,然后根据哈希值选择服务器。
  • nginx本身不支持,需要安装 nginx_upstream_hash软件包
  • 优点
    • 可以自定义键值负载均衡
  • 缺点
    • 需要配置额外的参数,也可能出现负载不均衡的情况

最短时间

最短时间(仅NGINX Plus):请求发送给响应时间最短且活跃连接数最少的服务器。

fair负载均衡

  • Nginx的fair负载均衡模块增强了Nginx提供的标准轮换负载均衡器,以便它能够跟踪繁忙的后端服务器(例如Thin,Ebb,Mongrel),并将负载平衡到非繁忙的服务器进程。
  • 简单来说,fair采用的不是内建负载均衡使用的轮换的均衡算法,而是可以根据页面大小、加载时间长短智能地进行负载均衡

Tomcat+Nginx搭建

拓扑环境

主机 IP 服务 版本
YY 192.168.45.10 nginx 1.22.0
YY1 192.168.45.11 tomcat 8.5.82
YY2 192.168.45.12 tomcat 8.5.82

基本服务搭建

完成服务器服务搭建,这里不做讲述,如有需要后续进行超链接,单独出一篇部署的详细说明。

Nginx 负载均衡设置

配置具体参数

  • 路径
vim /usr/local/nginx/conf/nginx.conf
  • 格式示例:
    • 位置:http 模块定义后端集群
  • 参数说明
    • Down:表示当前的 server 暂时不参与负载;
    • Weight:默认为 1,weight 越大,负载的权重就越大;
    • Max_fails:允许请求失败的次数默认为 1,当超过最大次数 proxy_next_upstream 模块定义的错误;
    • Fail_timeout:max_fails:请求失败后,暂停的时间;
    • Backup:其它所有的非 backup 机器 down 或者忙的时候,才会请求 backup 机器,所以这台机器压力会最轻。
    • 注意192.168.45.10:9090192.168.45.13:7070 示范使用
    upstream tomcat {
    
        server 192.168.45.10:9090 down; 
        server 192.168.45.11:8080 weight=1 max_fails=1 fail_timeout=10s; 
        server 192.168.45.12:8080 weight=1 max_fails=1 fail_timeout=10s; 
        server 192.168.45.13:7070 backup; 
        }

image.png

  • server 块参数
    • proxy_pass http://tomcat;
      • 表示该 host 下转发集群的名称
      • tomcat 为之前定义的集群名称
        location / {
   
           # root   html;
           # index  index.html index.htm;
            proxy_pass http://tomcat;
        }
  • 每次配置文件的修改都需要进行服务的重载
    • nginx -s reload

测试负载均衡

  • 使用 curl 命令进行测试
curl 192.168.45.10
  • 成功结果:页面内容会进行跳转
    image.png
  • 在 tomcat 服务器中已经定义了默认网页的内容
    • tom1 是 11 号机 tom2 是 12 号机

后端获取真实 IP<

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值