码迷,mamicode.com
首页 > 其他好文 > 详细

nginx负载均衡策略

时间:2018-03-14 10:43:33      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:nginx

Nginx 提供轮询(round robin)、用户 IP 哈希(client IP)和指定权重 3 种方式。

轮询方式

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

upstream bakend {

server 10.11.0.1;

server 10.11.0.2;

server 10.11.0.3;

}

ip hash方式

默认情况下,Nginx 会为你提供轮询作为负载均衡策略。但是这并不一定能够让你满意。比如,某一时段内的一连串访问都是由同一个用户A发起的,那么第一次 A 的请求可能是 10.11.0.1,而下一次可能是 10.11.0.2, 在大多数应用场景中,这样并不高效。当然,也正因如此,Nginx 为你提供了一个按照用户的 IP 来 hash 的方式,这样每个 client 的访问请求都会被甩给同一个后端服务器。具体的使用方式如下:

upstream backend {

ip_hash;

server 10.11.0.1;

server 10.11.0.2;

server 10.11.0.3;

}

这种策略中,用于进行 hash 运算的 key,是 client 的 C 类 IP 地址(C 类 IP 地址就是范围在 192.0.0.0 到 223.255.255.255 之间,前三段号码表示子网,第四段号码为本地主机的 IP 地址类别)。这样的方式保证一个 client 每次请求都将到达同一个 server。当然,如果所 hash 到的 server 当前不可用,则请求会被转移到其他server。

权重方式

还可以使用指定权重(weight)的方式,如下:

upstream backend {

server 10.11.0.1;

server 10.11.0.2 weight=4;

}

默认情况下 weight 为 1,对于上面的例子,第一个 server 的权重取默认值 1,第二个是 4,所以相当于第一个 server 接收 20% 的请求,第二接收 80% 的。要注意的是 weight 与 ip_hash 是不能同时使用的,原因很简单,他们是不同且彼此冲突的策略。

nginx负载均衡策略

标签:nginx

原文地址:http://blog.51cto.com/guanhaizhan/2086335

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!