nginx负载均衡

本文介绍了Nginx作为负载均衡器的工作原理和常见策略,包括轮询、权重分配和ip_hash,以及如何配置服务器状态值,如down和backup,并详细解释了max_fails和fail_timeout参数的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Nginx的upstream模板介绍

负载均衡(Load Balance)

分布式系统中一个非常重要的概念,当访问的服务具有多个实例时,需要根据某种“均衡”的策略决定请求发往哪个节点,这就是所谓的负载均衡,
原理是将数据流量分摊到多个服务器执行,减轻每台服务器的压力,从而提高了数据的吞吐量
负载均衡的种类

通过硬件来进行解决,常见的硬件有NetScaler、F5、Radware和Array等商用的负载均衡器,但比较昂贵的
通过软件来进行解决,常见的软件有LVS、Nginx等,它们是基于Linux系统并且开源的负载均衡策略
目前性能和成本来看,Nginx是目前多数公司选择使用的

配置案例

upstream lbs {
server 192.168.0.106:8080;
server 192.168.0.106:8081;
}

location /api/ {
proxy_pass http://lbs;
proxy_redirect default;
}

Nginx常见的负载均衡策略

节点轮询(默认)

简介:每个请求按顺序分配到不同的后端服务器
场景:会造成可靠性低和负载分配不均衡,适合静态文件服务器
weight 权重配置

简介:weight和访问比率成正比,数字越大,分配得到的流量越高
场景:服务器性能差异大的情况使用
upstream lbs {
server 192.168.159.133:8080 weight=5;
server 192.168.159.133:8081 weight=10;
}
ip_hash(固定分发)

简介:根据请求按访问ip的hash结果分配,这样每个用户就可以固定访问一个后端服务器
场景:服务器业务分区、业务缓存、Session需要单点的情况
upstream lbs {
ip_hash;
server 192.168.159.133:8080;
server 192.168.159.133:8081;
}

upstream还可以为每个节点设置状态值

down 表示当前的server暂时不参与负载
server 192.168.159.133:8080 down;

backup 其它所有的非backup机器down的时候,会请求backup机器,这台机器压力会最轻,配置也会相对低

server 192.168.159.133:8080 backup;

如果某个应用挂了,请求不应该继续分发过去

max_fails 允许请求失败的次数,默认为1.当超过最大次数时就不会请求

fail_timeout : max_fails次失败后,暂停的时间,默认:fail_timeout为10s

参数解释

max_fails=N 设定Nginx与后端节点通信的尝试失败的次数。
在fail_timeout参数定义的时间内,如果失败的次数达到此值,Nginx就这个节点不可用。
在下一个fail_timeout时间段到来前,服务器不会再被尝试。
失败的尝试次数默认是1,如果设为0就会停止统计尝试次数,认为服务器是一直可用的。
具体什么是nginx认为的失败呢

可以通过指令proxy_next_upstream来配置什么是失败的尝试。
注意默认配置时,http_404状态不被认为是失败的尝试。

配置实操
upstream lbs {
server 192.168.0.106:8080 max_fails=2 fail_timeout=60s ;
server 192.168.0.106:8081 max_fails=2 fail_timeout=60s;
}
​​
location /api/ {
proxy_pass http://lbs;
proxy_next_upstream error timeout http_500 http_503 http_404;
}

案例实操

暂停一个后节点,然后访问接口大于10次,Nginx会把这个节点剔除
重启这个节点,在fail_timeout周期里面不会再获取流量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值