很多团队会在生产环境中引入Nginx来做负载均衡,下面给大家简要说说Nginx负载均衡中的6种不同策略。

轮询

轮询是默认策略,每个请求按时间顺序逐一分配到不同节点,后端各个节点平均处理请求。




nginx 默认轮训策略 nginx轮询策略_缓存

平均轮询



加权轮询

根据节点的权重进行轮询,权重越高分配到的请求越多。适用于服务器性能差别比较大的情况,比如硬件配置差别较大,或者新老服务器混用的时候。




nginx 默认轮训策略 nginx轮询策略_缓存_02

加权轮询,权重高,分配多



least_conn

按节点的连接数来分配,把请求优先分配给连接数少的节点。该策略主要为了解决,各个节点请求处理时间长短不一造成某些节点超负荷的情况。

fair

按节点的响应时间长短来分配,把请求优先分配给响应时间短的节点。该策略可用于节点性能不均衡的情况,也可以防止某个节点突发性能问题还继续接收同样多的请求,从而造成雪崩的情况。

ip_hash

按客户端来源IP的hash结果分配。这样相同客户端的请求会被分配到同一个节点上,主要是为了解决session问题。比如,某个用户的登录操作,登录的请求被分配到节点1,对用户来说他已经登录成功了。有可能下一刻,该用户某个需要权限才能访问的请求被分配到节点2了。但是对节点2来说该用户是没有登录的,会提示用户没登录。




nginx 默认轮训策略 nginx轮询策略_客户端_03

按客户端ip的hash结果分发



url_hash

按访问URL的hash结果分配。这样相同的url会被分配到同一个节点,主要为了提高缓存命中率。比如,为了提高访问性能,服务端有大量数据或者资源文件需要被缓存。使用这种策略,可以节省缓存空间,提高缓存命中率。




nginx 默认轮训策略 nginx轮询策略_nginx 默认轮训策略_04

按url的hash结果分发