很多团队会在生产环境中引入Nginx来做负载均衡,下面给大家简要说说Nginx负载均衡中的6种不同策略。
轮询
轮询是默认策略,每个请求按时间顺序逐一分配到不同节点,后端各个节点平均处理请求。
![e7347fc5423f606c98faad092ebd747c.png](https://i-blog.csdnimg.cn/blog_migrate/dbe99b8389cdba1b7d2b5df632b2d291.jpeg)
平均轮询
加权轮询
根据节点的权重进行轮询,权重越高分配到的请求越多。适用于服务器性能差别比较大的情况,比如硬件配置差别较大,或者新老服务器混用的时候。
![e4c36dad1e8e0d7d12a49f89bad5c5f5.png](https://i-blog.csdnimg.cn/blog_migrate/17f02755a76e048646f61903c5c1df3b.jpeg)
加权轮询,权重高,分配多
least_conn
按节点的连接数来分配,把请求优先分配给连接数少的节点。该策略主要为了解决,各个节点请求处理时间长短不一造成某些节点超负荷的情况。
fair
按节点的响应时间长短来分配,把请求优先分配给响应时间短的节点。该策略可用于节点性能不均衡的情况,也可以防止某个节点突发性能问题还继续接收同样多的请求,从而造成雪崩的情况。
ip_hash
按客户端来源IP的hash结果分配。这样相同客户端的请求会被分配到同一个节点上,主要是为了解决session问题。比如,某个用户的登录操作,登录的请求被分配到节点1,对用户来说他已经登录成功了。有可能下一刻,该用户某个需要权限才能访问的请求被分配到节点2了。但是对节点2来说该用户是没有登录的,会提示用户没登录。
![aaeb12227799a72dbd022909d933e24f.png](https://i-blog.csdnimg.cn/blog_migrate/7f8ba35d1f17bdaddb597c3580d2ceb6.jpeg)
按客户端ip的hash结果分发
url_hash
按访问URL的hash结果分配。这样相同的url会被分配到同一个节点,主要为了提高缓存命中率。比如,为了提高访问性能,服务端有大量数据或者资源文件需要被缓存。使用这种策略,可以节省缓存空间,提高缓存命中率。
![c8c09f2b26383ccb15e8a96aa03e8b22.png](https://i-blog.csdnimg.cn/blog_migrate/3ea9ff6d314df059723c1669747a3766.jpeg)
按url的hash结果分发