Nginx、LVS、HAproxy负载均衡对比
Nginx:
1、工作在网络7层,可以针对http应用做一些分流的策略,比如针对域名,目录结构
2、Nginx对网络的依赖较小,理论上能ping通就能进行敷在功能
3、Nginx安装配置比较简单,测试起来很方便
4、也可以承担较高的负载压力且稳定,Nginx是为了解决c10k问题而诞生的
5、对后端服务器的健康检查,只支持通过端口来检测,不支持通过url来检测
6、Nginx对请求的异步处理可以帮助节点服务器减轻负载压力
7、Nginx仅能支持http、https和Email协议,这样就在适用范围较小
8、不支持Session的直接保持,但能通过ip_hash来解决,对Bigrequestheader的支持不是很好
9、Nginx还能做Web服务器即Cache功能。
LVS:
1、抗负载能力强,性能高,能达到F5的60%,对内存和cpu资源消耗比较低
2、工作在网络4层,通过VRRP协议(仅做代理使用),具体的流量是由liunx内核来处理,因此没有流量的产生。
3、稳定,可靠性强,自身有完美的热备方案(Keepalived+LVS)
4、不支持正则处理,不能做动静分离
5、支持多种负载均衡算法:rr(轮询),wrr(带权轮询)、lc(最小连接)、wlc(带权最小连接)
6、配置相对复杂,对网络依赖比较大,稳定性很高。
LVS工作模式有4种:
- nat地址转换
- dr直接路由
- tun隧道
- full-nat
HAproxy:
1、支持两种代理模式:TCP(四层)和HTTP(七层),支持虚拟主机
2、能够补充Nginx的一些缺点比如Session的保持,Cookie引导等工作
3、支持url检测后端的服务器出问题的检测会有很好的帮助。
4、更多负载均衡策略比如:动态加权轮循,加权源地址哈希,加权URL哈希加权等参数哈希已经实现。
5、单纯从效率上来讲HAproxy更会比Nginx有更出色的负载均衡
6、HAproxy可以对MYsql进行负载均衡,对后端的DB节点进行检测和负载均衡
7、支持负载均衡算法:轮循、带权轮循、源地址保持、请求URL、根据Cookie
8、不能做Web服务器即Cache。
三大主流软件负载均衡器适用的生产场景:
1、网站建设初期,可以选用Nginx、HAproxy作为反向代理负载均衡(流量不大时可以选择不用负载均衡)因为其配置简单,性能也能满足一般业务场景。如果考虑到负载均衡器是有单点失败问题,可以采用Nginx+Keepalived避免负载均衡器自身单点问题。
2、网站并发达到一定程度后,为了提高稳定性和转发效率,可以使用LVS,毕竟LVS比Nginx/HAproxy要更稳定,转发效率也高。
作者:一毛
本博客所有文章仅用于学习、研究和交流目的,欢迎非商业性质转载。
不管遇到了什么烦心事,都不要自己为难自己;无论今天发生多么糟糕的事,都不应该感到悲伤。记住一句话:越努力,越幸运。