解析 Nginx 负载均衡策略
转载:https://www.cnblogs.com/wpjamer/articles/6443332.html
1 前言
随着网站负载的不断增加,负载均衡(load balance)已不是陌生话题。负载均衡是将流量负载分摊到不同的服务单元,保证服务器的高可用,保证响应足够快,给用户良好的体验。
nginx第一个公开版发布于2004年。2011年发布了1.0版。它的特点是稳定性高、功能强大、资源消耗低。从服务器市场占有率来看,nginx已有与Apache分庭抗礼势头。其中,不得不提到的特性就是其负载均衡功能,这也成了很多公司选择它的主要原因。
我们将从源码的角度介绍nginx的内置负载均衡策略和扩展负载均衡策略,以实际的工业生产为案例,对比各负载均衡策略,为nginx使用者提供一些参考。
2. 源码剖析
nginx的负载均衡策略可以划分为两大类:内置策略和扩展策略。
内置策略包含加权轮询和ip hash,在默认情况下这两种策略会编译进nginx内核,只需在nginx配置中指明参数即可。扩展策略有很多,如fair、通用hash、consistent hash等,默认不编译进nginx内核。
由于在nginx版本升级中负载均衡的代码没有本质性的变化,因此下面将以nginx1.0.15稳定版为例,从源码角度分析各个策略。
2.1. 加权轮询(weighted round robin)
轮询的原理很简单,首先我们介绍一下轮询的基本流程。如下是处理一次请求的流程图:
3 对比测试
了解了以上负载均衡策略,接下来我们来做一些测试。
主要是对比各个策略的均衡性、一致性、容灾性等,从而分析出其中的差异性,根据数据给出各自的适用场景。
为了能够全面、客观的测试nginx的负载均衡策略,我们采用两个测试工具、在不同场景下做测试,以此来降低环境对测试结果造成的影响。
首先给大家介绍测试工具、测试网络拓扑和基本之测试流程。
3.1 测试工具
3.1.1 easyABC
easyABC是百度内部开发的性能测试工具,培训采用epool模型实现,简单易上手,可以模拟GET/POST请求,极限情况下可以提供上万的压力,在团队内部得到广泛使用。
由于被测试对象为反向代理服务器,因此需要在其后端搭建桩服务器,这里用nginx作为桩Web Server,提供最基本的静态文件服务。
3.1.2 polygraph
polygraph是一款免费的性能测试工具,以对缓存服务、代理、交换机等方面的测试见长。它有规范的配置语言PGL(Polygraph Language),为软件提供了强大的灵活性。其工作原理如下图所示:
4 小结
通过实际的对比测试,我们对nginx各个负载均衡策略进行了验证。下面从均衡性、一致性、容灾性以及适用场景等角度对比各种策略。如下图示:
posted on 2019-01-09 10:29 1625101366 阅读(378) 评论(0) 收藏 举报
















浙公网安备 33010602011771号