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

一文读懂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

相关文章:

  • 软考知识点汇总
  • 【C++】手搓一个STL风格的string容器
  • 数字孪生市场格局生变:中国2025年规模214亿,工业制造领域占比超40%
  • SpringAI实现AI应用-使用redis持久化聊天记忆
  • 如何在Vue-Cli中使用Element-UI和Echarts和swiper插件(低版本)
  • 【Linux系列】目录大小查看
  • 《企业级前端部署方案:Jenkins+MinIO+SSH+Gitee+Jenkinsfile自动化实践》
  • 2025年渗透测试面试题总结-某服面试经验分享(附回答)(题目+回答)
  • 用uniapp在微信小程序实现画板(电子签名)功能,使用canvas实现功能
  • 聊一聊接口的压力测试如何进行的?
  • Algolia - Docsearch的申请配置安装【以踩坑解决版】
  • Java线程安全问题深度解析与解决方案
  • Vue2 中 el-dialog 封装组件属性不生效的深度解析(附 $attrs、inheritAttrs 原理)
  • 【记录】HunyuanVideo 文生视频工作流
  • 用于构建安全AI代理的开源防护系统
  • 辰鳗科技朱越洋:紧扣时代契机,全力投身能源转型战略赛道
  • 射频前端模组芯片(PA)三伍微电子GSR2337 兼容替代SKY85337, RTC7646, KCT8247HE
  • 2025年小程序DDoS与CC攻击防御全指南:构建智能安全生态
  • Linux下的c/c++开发之操作Sqlite3数据库
  • 使用 Vite 创建 Vue 3 项目并手动配置路由的完整步骤
  • 陕西永寿4岁女童被蜜蜂蜇伤致死,当地镇政府介入处理
  • 七大交响乐团“神仙斗法”,时代交响在上海奏出时代新声
  • 98岁动物学家、北京大学教授杨安峰逝世
  • 陕西澄城打造“中国樱桃第一县”:从黄土高原走向海外,年产值超30亿
  • 美联储主席:美联储工作方式不会受特朗普影响,从未寻求与总统会面
  • 网民反映“潜水时遭遇服务质量不佳”,三亚开展核查调查