当前位置: 首页 > ds >正文

一文读懂Nginx应用之 HTTP负载均衡(七层负载均衡)

目录

一、HTTP负载均衡简介

(一)、概述

(二)、upstream模块核心参数

1、server指令参数

2、负载均衡策略指令参数

(1)、轮询(Rond Robin)

(2)、最少连接(least_conn)

(3)、一致性哈希(Consistent Hash)

(4)、IP哈希(IP Hash)

3、长连接指令参数

二、环境规划

三、Nginx服务、Tomcat服务安装部署

(一)、Nginx服务安装部署

(二)、Tomcat服务安装部署

1、Tomcat01应用服务器部署应用程序

(1)、tomcat_8081服务

(2)、tomcat_8082服务

2、Tomcat02应用服务器部署应用程序

(1)、tomcat_8081服务

(2)、tomcat_8082服务

(三)、Tomcat服务验证

四、HTTP反向代理负载均衡配置

(一)、反向代理负载均衡配置

(二)、启动Nginx服务

(三)、客户端访问反向代理服务

 1、客户端访问Nginx服务

2、观察服务日志

五、双虚拟主机反向代理负载均衡配置

(一)、反向代理负载均衡配置

(二)、启动Nginx服务

(三)、客户端访问反向代理服务

1、客户端访问虚拟主机8081

(1)、客户端访问Nginx服务

(2)、观察服务日志

2、客户端访问虚拟主机8082

(1)、客户端访问Nginx服务

(2)、观察服务日志


更多精彩原创博文详见: 《运维那些事儿》专栏总目录(持续更新)

一、HTTP负载均衡简介

(一)、概述

        Nginx负载均衡是由ngx_http_proxy_module模块(即代理模块)和ngx_http_upstream模块(即上游服务器组模块)共同实现的,Nginx通过代理模块的反向代理功能将客户端请求转发到上游服务器组,上游服务器组模块通过指定的负载均衡策略及相关的参数配置,将客户端请求转发到后端目标服务器上。

        HTTP负载均衡是基于HTTP协议的负载均衡应用,由于HTTP协议工作在OSI七层模型的应用层,因此也被称为“七层负载均衡”。

        Nginx的 HTTP负载均衡功能是由ngx_http_proxy_module模块和ngx_http_upstream模块共同实现的,这两个模块会被默认编译,无须特殊配置编译参数。

(二)、upstream模块核心参数

1、server指令参数

参数参数名称默认值参数说明
weight权重1设置服务器的权重
max_fails最大失败次数1被代理的后端服务器在fail_timeout规定时间内的最大请求失败次数,超过设定值后,被代理的后端服务器将被认为不可用。0表示关闭被代理的后端服务器的失败检测功能。
fail_timeout请求失败超时时间10s被代理的后端服务器被置为不可用的最长时间以及被代理的后端服务器被连续失败检测的最长时间。
max_conns最大连接数0与被代理的后端服务器建立活动连接的最大数量,默认值0表示没有限制。
down无效服务器用于将被代理的后端服务器标记为不可用状态。
backup备份服务器用于将被代理的后端服务器标记为备份状态。当其他非备份状态的后端服务器均不可用时,才会把请求转发给备份状态的后端服务器。

配置示例:

  • 标记后端服务器不可用

server    192.168.110.166:8081    down;

  • 标记后端服务器为备份状态

server    192.168.110.166:8081    backup;

  • 设置权重为1、不限制最大连接数、最大失败数为1、超时时间为10s

server    192.168.110.166:8081    weight=1    max_conns=0    max_fails=2    fail_timeout=10s;

2、负载均衡策略指令参数

        Nginx支持多种负载均衡策略,默认的负载均衡策略为轮询(Rond Robin)策略。负载均衡策略的配置指令参数需要配置在upstream模块的首行位置。使用默认负载均衡策略时,则不需要显式配置。

(1)、轮询(Rond Robin)

        轮询策略是Nginx默认的负载均衡策略,该策略将客户端的请求依次分配给后端服务器节点轮流响应。轮询策略实现简单、请求分配均衡,但也会因为后端服务器处理能力的不同而影响整个集群的处理性能。为了解决这个问题,在轮询策略的基础上,增加了权重参数,即可以根据后端服务器的性能差异,将客户端请求按照权重比例分配给不同的后端服务器进行响应。

        使用默认负载均衡策略时,upstream模块中不需要显式配置负载均衡策略。

配置示例:

upstream test {
    server    192.168.110.166:8081    weight=3;
    server    192.168.110.167:8081    weight=2;
    server    192.168.110.168:8081    weight=1;
}

(2)、最少连接(least_conn)

        最少连接策略会在后端服务器组中个服务器权重的前提下,将客户端请求分配给活跃连接数最少得后端服务器。

配置示例:

upstream test {
    least_conn;        # 启用最少连接负载均衡策略
    server    192.168.110.166:8081    weight=3;
    server    192.168.110.167:8081    weight=2;
    server    192.168.110.168:8081    weight=1;
}

(3)、一致性哈希(Consistent Hash)

        一致性哈希策略可以针对客户端访问的URL计算哈希值,针对相同的URL请求,Nginx可以因相同的哈希值而将其分配到同一个后端服务器。当后端服务器为缓存服务器时,将极大提高命中率,从而提升访问速度。

配置示例:

upstream test {
    hash $request_uri;        # 以客户端请求URI为计算哈希值的key
    server    192.168.110.166:8081    weight=3;
    server    192.168.110.167:8081    weight=2;
    server    192.168.110.168:8081    weight=1;
}

upstream test {
    hash $request_uri consistent;        # 以客户端请求URI为计算哈希值的key

                                                           # consistent表示启用一致性哈希算法
    server    192.168.110.166:8081    weight=3;
    server    192.168.110.167:8081    weight=2;
    server    192.168.110.168:8081    weight=1;
}

(4)、IP哈希(IP Hash)

        IP哈希策略根据客户端IP计算出哈希值,然后把客户端请求分配给该数值对应的后端服务器。在哈希值不变且后端服务器可用的情况下,同一个客户端的请求始终会被分配到同一台后端服务器上。IP哈希策略通常被应用在会话(Session)保持的场景。

配置示例:

upstream test {
    ip_hash;        # 启用IP哈希负载均衡策略
    server    192.168.110.166:8081    weight=3;
    server    192.168.110.167:8081    weight=2;
    server    192.168.110.168:8081    weight=1;
}

3、长连接指令参数

指令默认值指令说明
keepalive当Nginx与后端服务器建立长连接时,设定每个工作进程可以缓存的与当前后端服务器保持长连接的数量。当超过设定值时,将根据最近最少使用算法(LRU)关闭连接。
keepalive_requests100设置每个与后端服务器建立的长连接中传输请求的最大数量,超过这个值后该连接将被关闭。

配置示例:

upstream test {
    keepalive        100;                        # 设置长连接缓存池为100

    keepalive_requests        2000;      # 设置长连接复用请求的最大数量为2000


    server    192.168.110.166:8081    weight=3;
    server    192.168.110.167:8081    weight=2;
    server    192.168.110.168:8081    weight=1;
}


二、环境规划

  • 服务器规划
主机名称IP地址角色应用程序端口
Nginx01192.168.110.161反向代理服务器Nginx8081、8082
Tomcat01192.168.110.166后端应用服务器Tomcat8081、8082
Tomcat02192.168.110.167后端应用服务器Tomcat8081、8082

http://www.xdnf.cn/news/4787.html

相关文章:

  • 记录微信小程序掉起半屏失效问题
  • 带你玩转 Flink TumblingWindow:从理论到代码的深度探索
  • 使用 CDN 在国内加载本地 PDF 文件并处理批注:PDF.js 5.x 实战指南
  • QMK键盘固件自定义指南 - 打造你的专属键盘体验
  • Python开发之os.path的常用操作
  • Vim 编辑器常用快捷键速查表
  • 排序算法——基数排序
  • 函数级重构:如何写出高可读性的方法?
  • 生产型机器学习系统:静态训练与动态训练的权衡与实践
  • mobile自动化测试-appium webdriverio
  • element-ui form 组件源码分享
  • 2025.5.8总结(中期审视)
  • JAVA多线程进阶
  • 第五十四篇 AI与数据分析
  • 推测式思维树:让大模型快速完成复杂推理
  • 针对共享内存和上述windows消息机制 在C++ 和qt之间的案例 进行详细举例说明
  • Android7 Input(六)InputChannel
  • OpenHarmony平台驱动开发(九),MIPI DSI
  • Rust 开发环境搭建与插件
  • MySQL报错解决过程
  • 39、.NET GC是什么? 为什么需要GC?
  • # 如何使用OpenCV进行发票的透视变换和二值化处理
  • EasyRTC嵌入式音视频通话SDK驱动智能硬件音视频应用新发展
  • 集成变压器的网口的PCB设计
  • 【MySQL】存储引擎 - MEMORY详解
  • 【JS逆向基础】前端基础-HTML与CSS
  • 初学者的AI智能体课程:构建AI智能体的十堂课
  • SpringBoot 讯飞星火AI WebFlux流式接口返回 异步返回 对接AI大模型 人工智能接口返回
  • oracle 对一个字段的数据做排序 :值的依次排序为.“思考”->“asd”->“三点“
  • MySQL 8.0 OCP 英文题库解析(一)