0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

详解Nginx负载均衡配置误区

Linux爱好者 来源:51cto 作者:mb5ff980f81f3d8 2021-05-13 14:36 次阅读

之前有很多朋友问关于Nginx的upstream模块中max_fails及fail_timeout,这两个指令,分别是配置关于负载均衡过程中,对于上游(后端)服务器的失败尝试次数和不可用时间,很多人不是很理解这两个参数到底怎么用,以及具体的含义

先看官网文档中的描述

3ea34db0-b3a2-11eb-bf61-12bb97331649.png

官网文档中解释max_fails是指在fail_timeout配置的时间内,服务器通信失败的次数,默认为1,即在fail_timeout时间内,1次请求失败即不再尝试,将请求根据hash规则,转发到下一个上游服务

fail_timeout有两种含义:

当已经确认上游服务不可用时,是指与上游服务器通信失败次数的时间

服务器不可用的时间段

默认是10s

文字不是很好理解,搭建个实验环境,环境如下:

Nginx

PHP-FPM(x2)

nginx通过fast-cgi将php请求转发到PHP-FPM,这里PHP-FPM服务即上游服务,设置upstream,负载PHP-FPM

3eb3feda-b3a2-11eb-bf61-12bb97331649.png

3ec5be9a-b3a2-11eb-bf61-12bb97331649.png

upstream按照默认配置,即max_fails=1,fail_timeout=10

现在通过tailf分别监听两个PHP-FPM日志

3ed58e06-b3a2-11eb-bf61-12bb97331649.png

请求4次,因为是默认轮询的,所以可以看时间,轮询将请求分发到两个PHP-FPM上游

可以从上面的日志中看到,按照轮询规则,下次请求应该落到PHP-FPM2上面,接着,关掉PHP-FPM1,继续请求

3ee02596-b3a2-11eb-bf61-12bb97331649.png

可以看到,PHP-FPM1肯定是不响应了,PHP-FPM2正常响应,接着看下Nginx日志

3ef35aa8-b3a2-11eb-bf61-12bb97331649.png

可以看到,关掉PHP-FPM1后,发起的请求,本来第二次请求(1758)应该分发到PHP-FPM1的,然后从Nginx错误日志可以看到,连接PHP-FPM1失败,这里只做了一次失败尝试,然后Nginx将请求转发到PHP-FPM2处理了

接着将max_fails设置为2,继续上面的请求

3efd6d7c-b3a2-11eb-bf61-12bb97331649.png

开启PHP-FPM1,继续请求,两个负载轮询转发请求

3f0c7650-b3a2-11eb-bf61-12bb97331649.png

接着继续关掉PHP-FPM1,连续发起多次请求,查看日志

3f1b1214-b3a2-11eb-bf61-12bb97331649.png

所有请求都在PHP-FPM2上,看Nginx错误日志

3f325b40-b3a2-11eb-bf61-12bb97331649.png

两次轮询到PHP-FPM1的时候,失败,之后不会再将请求分发到PHP-FPM1上游服务

接着,不开启PHP-FPM1,继续发起多次请求,由于默认的fail_timeout=10,所以在上面的失败检测10s之后再次发起请求,查看日志

3f449d0a-b3a2-11eb-bf61-12bb97331649.png

继续分发到PHP-FPM2,接着看Nginx错误日志

3f602872-b3a2-11eb-bf61-12bb97331649.png

可以看到,过了fail_timeout的时间后,Ngxin会再次将请求发往FPM-PHP1进行尝试,尝试2次失败后,在fail_timeout时间内,不会再将请求分发,

这里有几个误区:

Nginx记录了连接上游失败,这个请求就返回错误请求,或这个请求丢失没处理

这个理解是错误的,Nginx只是记录了失败的请求到日志,并将这个请求又转发到了可用的其他上游服务,知道所有上游都不可用时,才会返回错误状态

max_fails是指连续请求失败的次数

max_fails是在fail_timeout指定的时间内的失败次数,请求还是按照配置的负载均衡算法来走,并不是第一次请求失败之后,继续将这个请求在尝试一次,达到失败次数之后,标记为不可用

fail_timeout越短越好

当访问量大的时候,fail_timeout设置太短,会导致不断的尝试与不可用上游的连接,耗费大量的tcp资源进行连接

fail_timeout越长越好

当访问量大的时候,fail_timeout设置太长,会导致负载不均衡,有可能会击穿某个上游后端,达不到负载的效果

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 服务器
    +关注

    关注

    12

    文章

    9123

    浏览量

    85318
  • PHP
    PHP
    +关注

    关注

    0

    文章

    452

    浏览量

    26676
  • 负载均衡
    +关注

    关注

    0

    文章

    110

    浏览量

    12364

原文标题:Nginx负载均衡配置误区

文章出处:【微信号:LinuxHub,微信公众号:Linux爱好者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    常见的lvs负载均衡算法

    常见的lvs负载均衡算法包括轮询(RR)、加权轮询(WRR)、最小连接(LC)、加权最小连接(WLC)、基于局部性的最少链接(LBLC)、带复制的LBLC(LBLCR)、目标地址散列(DH)、源地址
    的头像 发表于 12-12 13:50 52次阅读

    Nginx代理转发实战:零基础掌握服务器流量分发技巧

    Nginx 是最常用的反向代理工具之一,一个指令 proxy_pass搞定反向代理,对于接口代理、负载均衡很是实用,但 proxy_pass指令后面的参数很有讲究,通常一个“/”都可能引发一个血案
    的头像 发表于 12-09 12:28 230次阅读

    Nginx日常运维方法Linux版

    Nginx安装目录?   whereis nginx   如图: 执行目录:/usr/sbin/nginx 模块所在目录:/usr/lib64/nginx/modules
    的头像 发表于 12-06 16:38 145次阅读
    <b class='flag-5'>Nginx</b>日常运维方法Linux版

    常用的服务器负载均衡多少钱一台?

    服务器负载均衡的价格因配置、功能、类型(硬件、软件或云服务)及服务提供商不同而异。硬件负载均衡价格区间大,从数千元到数十万元不等;软件
    的头像 发表于 12-05 11:52 61次阅读

    确保网站无缝运行:Keepalived高可用与Nginx集成实战

    nginx负载均衡机高可用 脑裂 脑裂产生的原因 脑裂的常见解决方案 对脑裂进行监控 keepalived简介 keepalived官网 Keepalived 软件起初是专为LVS负载
    的头像 发表于 11-27 09:08 242次阅读
    确保网站无缝运行:Keepalived高可用与<b class='flag-5'>Nginx</b>集成实战

    多链路负载均衡设置在哪里?

    多链路负载均衡设置涉及交换机、路由器和(可选)负载均衡器的设置。首先规划网络拓扑和IP地址,备份设备配置。然后,在交换机上
    的头像 发表于 11-13 10:19 119次阅读

    nginx负载均衡配置介绍

    目录 nginx负载均衡 nginx负载均衡介绍 反向代理与
    的头像 发表于 11-10 13:39 230次阅读
    <b class='flag-5'>nginx</b><b class='flag-5'>负载</b><b class='flag-5'>均衡</b><b class='flag-5'>配置</b>介绍

    华纳云:什么是负载均衡?优化资源利用率的策略

    负载均衡是现代计算机网络架构中不可或缺的一部分,它通过智能分配请求和任务,确保系统资源的高效利用。本文将探讨负载均衡的概念、工作原理、优化资源利用率的策略及其在实际应用中的重要性。 1
    的头像 发表于 10-28 16:07 146次阅读

    天翼云弹性负载均衡介绍

    负载均衡(Load Balancing)是一种优化资源分配的技术,主要用于在网络环境中分散工作负载,以提高系统的响应速度、吞吐量以及可靠性。在互联网服务中,当单台服务器无法处理大量并发请求时,就需要
    的头像 发表于 10-25 16:20 532次阅读
    天翼云弹性<b class='flag-5'>负载</b><b class='flag-5'>均衡</b>介绍

    IPVS负载均衡原理解析

    ipvs (IP Virtual Server) 实现了传输层负载均衡,也就是我们常说的4层LAN交换,作为 Linux 内核的一部分。ipvs运行在主机上,在真实服务器集群前充当负载均衡
    的头像 发表于 10-24 17:34 204次阅读

    零基础也可以搞懂负载均衡怎么配置

    负载均衡怎么配置?在Linux中配置负载均衡器的步骤涉及多个环节,包括选择
    的头像 发表于 10-12 15:58 222次阅读

    负载均衡服务由几部分组成?分别是什么

    均衡服务通常由六部分组成,分别是客户端、负载均衡器、后端服务器、负载均衡算法、监控和健康检查及会话保持。这六者互相协同工作,实现了流量的有效
    的头像 发表于 09-18 11:16 253次阅读

    nginx重启命令linux步骤是什么?

      1、验证nginx配置文件是否正确   方法一:进入nginx安装目录sbin下,输入命令./nginx -t   看到如下显示nginx
    发表于 07-11 17:13

    nginx重启命令linux步骤是什么?

      1、验证nginx配置文件是否正确   方法一:进入nginx安装目录sbin下,输入命令./nginx -t   看到如下显示nginx
    发表于 07-10 16:40

    负载均衡器的诞生和工作机制

    今天我们来深度揭秘一下负载均衡器 LVS 的秘密,相信大家看了你管这破玩意儿叫负载均衡?这篇文章后,还是有不少疑问,比如 LVS 看起来只有类似路由器的转发功能,为啥说它是四层(传输层
    的头像 发表于 01-04 12:26 975次阅读
    <b class='flag-5'>负载</b><b class='flag-5'>均衡</b>器的诞生和工作机制