nginx负载均衡策略

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

轮询方式服务器

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

upstream bakend {ide

server 10.11.0.1;

server 10.11.0.2;

server 10.11.0.3;

}code

ip hash方式server

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

upstream backend {hash

ip_hash;

server 10.11.0.1;

server 10.11.0.2;

server 10.11.0.3;

}it

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

权重方式

还可使用指定权重(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 是不能同时使用的,缘由很简单,他们是不一样且彼此冲突的策略。

相关文章
相关标签/搜索