|
首先给大家说下upstream这个配置的,这个配置是写一组被代理的服务器地址,然后配置负载均衡的算法。这里的被代理服务器地址有2中写法。 + a" p* J3 x& `& M* x# U
[backcolor=rgb(245, 245, 245) !important][url=][/url]9 T( P1 |) @0 U, R
upstream mysvr { server 192.168.10.121:3333; server 192.168.10.122:3333; } server { .... location ~*^.+$ { proxy_pass http://mysvr; #请求转向mysvr 定义的服务器列表 } [backcolor=rgb(245, 245, 245) !important][url=][/url]
6 a. W1 H" P& A) j) p, x7 C0 m5 K5 Q+ y
0 W* w( P4 g. \1 p& x9 j! o7 w ]
[backcolor=rgb(245, 245, 245) !important][url=][/url]
: |9 ^! w7 o5 e% B2 Tupstream mysvr { server http://192.168.10.121:3333; server http://192.168.10.122:3333; } server { .... location ~*^.+$ { proxy_pass mysvr; #请求转向mysvr 定义的服务器列表 } [backcolor=rgb(245, 245, 245) !important][url=][/url]
# G, D! `1 ]0 J* l5 N# H: r4 M6 ?9 P$ L3 `, Z+ Q' e4 `
然后,就来点实战的东西。 1、热备:如果你有2台服务器,当一台服务器发生事故时,才启用第二台服务器给提供服务。服务器处理请求的顺序:AAAAAA突然A挂啦,BBBBBBBBBBBBBB..... upstream mysvr { server 127.0.0.1:7878; server 192.168.10.121:3333 backup; #热备 }
. M2 D9 L y+ F( d" {: k* c2、轮询:nginx默认就是轮询其权重都默认为1,服务器处理请求的顺序:ABABABABAB.... upstream mysvr { server 127.0.0.1:7878; server 192.168.10.121:3333; }
! j: ^9 R& s+ e) n1 J, ^3、加权轮询:跟据配置的权重的大小而分发给不同服务器不同数量的请求。如果不设置,则默认为1。下面服务器的请求顺序为:ABBABBABBABBABB.... upstream mysvr { server 127.0.0.1:7878 weight=1; server 192.168.10.121:3333 weight=2;( u; o9 N; y' D: b5 ]
}* C+ h. U, }+ F+ v1 @
4、ip_hash:nginx会让相同的客户端ip请求相同的服务器。 upstream mysvr { server 127.0.0.1:7878; server 192.168.10.121:3333; ip_hash; }5 U: k! q$ M0 ~
5、如果你对上面4种均衡算法不是很理解,那么麻烦您去看下我上一篇配的图片,可能会更加容易理解点。 到这里你是不是感觉nginx的负载均衡配置特别简单与强大,那么还没完,咱们继续哈,这里扯下蛋。 关于nginx负载均衡配置的几个状态参数讲解。 down,表示当前的server暂时不参与负载均衡。 backup,预留的备份机器。当其他所有的非backup机器出现故障或者忙的时候,才会请求backup机器,因此这台机器的压力最轻。 max_fails,允许请求失败的次数,默认为1。当超过最大次数时,返回proxy_next_upstream 模块定义的错误。 fail_timeout,在经历了max_fails次失败后,暂停服务的时间。max_fails可以和fail_timeout一起使用。
. ]* Y4 `# ~0 u7 |% ]) ^ 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; }
0 s! ^1 f1 @) L5 S* ^( Q到这里应该可以说nginx的内置负载均衡算法已经没有货啦。如果你像跟多更深入的了解nginx的负载均衡算法,nginx官方提供一些插件大家可以了解下。 |