这些 Nginx 负载均衡配置误区,运维请注意~
Posted 高效运维
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了这些 Nginx 负载均衡配置误区,运维请注意~相关的知识,希望对你有一定的参考价值。
先看官网文档中的描述
fail_timeout 有两种含义:
当已经确认上游服务不可用时,是指与上游服务器通信失败次数的时间
服务器不可用的时间段
默认是10s
文字不是很好理解,搭建个实验环境,环境如下:
Nginx
php-FPM(x2)
nginx 通过 fast-cgi 将 php 请求转发到 PHP-FPM,这里 PHP-FPM 服务即上游服务,设置 upstream,负载 PHP-FPM
upstream 按照默认配置,即 max_fails=1,fail_timeout=10
现在通过 tailf 分别监听两个 PHP-FPM 日志
请求4次,因为是默认轮询的,所以可以看时间,轮询将请求分发到两个PHP-FPM上游
可以从上面的日志中看到,按照轮询规则,下次请求应该落到 PHP-FPM2 上面,接着,关掉 PHP-FPM1,继续请求
可以看到,PHP-FPM1肯定是不响应了,PHP-FPM2正常响应,接着看下Nginx日志
接着将 max_fails 设置为2,继续上面的请求
开启 PHP-FPM1,继续请求,两个负载轮询转发请求
接着继续关掉 PHP-FPM1,连续发起多次请求,查看日志
所有请求都在 PHP-FPM2上,看 Nginx 错误日志
Nginx 记录了连接上游失败,这个请求就返回错误请求,或这个请求丢失没处理
这个理解是错误的,Nginx 只是记录了失败的请求到日志,并将这个请求又转发到了可用的其他上游服务,知道所有上游都不可用时,才会返回错误状态
max_fails 是指连续请求失败的次数
max_fails 是在 fail_timeout 指定的时间内的失败次数,请求还是按照配置的负载均衡算法来走,并不是第一次请求失败之后,继续将这个请求在尝试一次,达到失败次数之后,标记为不可用
fail_timeout 越短越好
当访问量大的时候,fail_timeout 设置太短,会导致不断的尝试与不可用上游的连接,耗费大量的 tcp 资源进行连接
fail_timeout 越长越好
当访问量大的时候,fail_timeout设置太长,会导致负载不均衡,有可能会击穿某个上游后端,达不到负载的效果。
5月21-22日,XOPS 风向标!GOPS 全球运维大会 2021 · 深圳站,腾讯、阿里、京东,各大行业已集结完毕,先来看看本次大会的五大亮点。
活动嘉宾
近期好文:
“高效运维”公众号诚邀广大技术人员投稿,
以上是关于这些 Nginx 负载均衡配置误区,运维请注意~的主要内容,如果未能解决你的问题,请参考以下文章