已经了解了负载均衡的常用算法:轮询,加权轮询,热备等...
接下来就看看具体怎么配置。
upstream配置是写一组被代理的服务器地址,然后配置负载均衡的算法。
upstream mysvr{ server 192.168.10.121:3333; server 192.168.10.122:3333; } server{ ...... location ~*^.+${ proxy-pass http://mysvr; #请求转向mysvr 定义的服务器列表 } }
then,来点实际负载均衡配置
1. 热备:如果你有2台服务器,当一台服务器发生事故时,才启用第二台服务器给提供服务。服务器处理请求的顺序:AAAAAA突然A挂啦,BBBBBBBBBBBBBB.....
upstream mysvr { server 127.0.0.1:7878; server 192.168.10.121:3333 backup; }
2. 轮询:nginx默认就是轮询其权重都默认为1,服务器处理请求的顺序:ABABABABAB....
upstream mysvr { server 127.0.0.1:7878; server 192.168.10.121:3333; }
3. 加权轮询:跟据配置的权重的大小而分发给不同服务器不同数量的请求。如果不设置,则默认为1。下面服务器的请求顺序为:ABBABBABBABBABB....
upstream mysvr { server 127.0.0.1:7878 weight=1; server 192.168.10.121:3333 weight=2; }
4. ip_hash:nginx会让相同的客户端ip请求相同的服务器
upstream mysvr { server 127.0.0.1:7878; server 192.168.10.121:3333; ip_hash; }
5. 上面是简单的4种负载均衡配置方法。接下来再看下配置中的几个常见状态参数讲解。
-
down,表示当前的server暂时不参与负载均衡。
-
backup,预留的备份机器。当其他所有的非backup机器出现故障或者忙的时候,才会请求backup机器,因此这台机器的压力最轻。
-
max_fails,允许请求失败的次数,默认为1。当超过最大次数时,返回proxy_next_upstream 模块定义的错误。
-
fail_timeout,在经历了max_fails次失败后,暂停服务的时间。max_fails可以和fail_timeout一起使用。
upstream mysvr { server 127.0.0.1:7878 weight=2 max_fails=2 fail_timeout=2; server 192.168.10.121:3333 weight=1 max_fails=2 fail_timeout=1; }
参考文章:https://www.cnblogs.com/knowledgesea/p/5199046.html