nginx负载均衡策略
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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负载均衡策略的主要内容,如果未能解决你的问题,请参考以下文章