nginx负载均衡策略

负载均衡可以将前端的请求分担到后端多个节点上,提升系统的响应和处理能力。

负载均衡策略

负载均衡的策略可以分为两大类:内置策略扩展策略

  • 内置策略:一般会直接编译进Nginx内核,常用的有轮询ip hash
  • 扩展策略:fairurl hash

普通轮询方式

默认选项,当weight不指定时,各服务器权重相同, 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

1
2
3
4
5
upstream bakend {
server 10.11.0.1;
server 10.11.0.2;
server 10.11.0.3;
}

加权轮询方式

指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。

1
2
3
4
upstream backend {
server 10.11.0.1 weight=3;
server 10.11.0.2 weight=7;
}

权重越高,在被访问的概率越大,如上例,分别是30%,70%。

轮询流程图

首先将请求都分给高权重的机器,直到该机器的权值降到了比其他机器低,才开始将请求分给下一个高权重的机器;当所有后端机器都down掉时,nginx会立即将所有机器的标志位清成初始状态,以避免造成所有的机器都处在timeout的状态

ip hash方式

默认情况下,Nginx 会为你提供轮询作为负载均衡策略

采用ip_hash策略解决登录信息丢失,如果客户已经访问了某个服务器,当用户再次访问时,会将该请求通过哈希算法,自动定位到同一个服务器,当然,如果所 hash 到的 server 当前不可用,则请求会被转移到其他server
每个请求按访问iphash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题

1
2
3
4
5
upstream backend {
ip_hash;
server 10.11.0.1;
server 10.11.0.2;
}

fair

根据后端服务器的响应时间判断负载情况,从中选出负载最轻的机器进行优先分配。

1
2
3
4
5
upstream backend {
server 10.11.0.1;
server 10.11.0.2;
fair;
}

缺点:需要「负载均衡器」不停的去统计每一台后端服务器对请求的处理速度,比如一分钟统计一次,生成一个后端服务器处理速度的排行榜,然后「负载均衡器」根据这个排行榜去转发服务。

热评文章