nginx的负载均衡
1、负载均衡的作用
(1)分摊服务器集群压力
在服务器集群中,Nginx 可以将接收到的客户端请求“均匀地”(严格讲并不一定均匀,可以通过设置权重)分配到这个集群中所有的服务器上
(2)保证客户端访问的稳定性
Nginx还带有健康检查(服务器心跳检查)功能,会定期轮询向集群里的所有服务器发送健康检查请求,来检查集群中是否有服务器处于异常状态。一旦发现某台服务器异常,则剔除。
2、负载均衡配置
注意:后端服务器状态
down:当前服务器不参与负载均衡
backup:当其他节点都无法使用时的备用服务器
max_fails:允许请求失败的次数,若到达就会休眠
fail_timeout:经过max_fails次失败后,服务器的暂停时间,默认为10smax_conns:限制每个服务器的最大接收连接数
点击查看代码
proxy_pass http://backserver/;
upstream backserver{
ip_hash;
server 127.0.0.1:9090 down; //(down 表示单前的server暂时不参与负载)
server 127.0.0.1:8080 weight=2; //(weight 默认为1.weight越大,负载的权重就越大)
server 127.0.0.1:6060;
server 127.0.0.1:7070 backup; //(其它所有的非backup机器down或者忙的时候,请求backup机器)
}
3、分配策略
-
轮询(默认):
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。 -
weight(加权轮询):
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。 -
ip_hash:
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题 -
fair:
按后端服务器的响应时间来分配请求,响应时间短的优先分配。 -
url_hash:
按访问url的hash结果来分配请求,使每个url定向到同一个(对应的)后端服务器,后端服务器为缓存时比较有效。