【蓝因子教育】lvs、haproxy、nginx 『负载均衡』的比较分析

【蓝因子教育】lvs、haproxy、nginx 『负载均衡』的比较分析

lvs、haproxy、nginx 『负载均衡』的比较分析

对软件实现『负载均衡』的几个软件,小 D 详细看了一下,从性能和稳定上还是 LVS 最牛,基本达到了 F5 硬件设备的 60% 性能,其他几个 10% 都有点困难。

不过就因为 LVS 忒牛了,配置也最麻烦了,而且健康检测需要另外配置 Ldirector,其他 HAPROXY 和 NGINX 自己就用,而且配置超级简单。

所以建议,如果网站访问量不是门户级别的用 HAPROXY 或者 NGINX 就 OK 了,到了门户级别在用 LVS+Idirector 吧 哈哈

lvs 和 nginx 都可以用作多机负载的方案,它们各有优缺,在生产环境中需要好好分析实际情况并加以利用。

首先提醒,做技术切不可人云亦云,我云即你云;同时也不可太趋向保守,过于相信旧有方式而等别人来帮你做垫被测试。把所有即时听说到的好东西加以钻研,从而提高自己对技术的认知和水平,乃是一个好习惯。

下面来分析一下两者:

一、lvs 的优势:

1、抗负载能力强,因为 lvs 工作方式的逻辑是非常之简单,而且工作在网络 4 层仅做请求分发之用,没有流量,所以在效率上基本不需要太过考虑。在我手里的 lvs,仅仅出过一次问题:在并发最高的一小段时间内均衡器出现丢包现象,据分析为网络问题,即网卡或 linux2.4 内核的承载能力已到上限,内存和 cpu 方面基本无消耗。

2、配置性低,这通常是一大劣势,但同时也是一大优势,因为没有太多可配置的选项,所以除了增减『服务器』,并不需要经常去触碰它,大大减少了人为出错的几率。

3、工作稳定,因为其本身抗负载能力很强,所以稳定性高也是顺理成章,另外各种 lvs 都有完整的双机热备方案,所以一点不用担心均衡器本身会出什么问题,节点出现故障的话,lvs 会自动判别,所以系统整体是非常稳定的。

4、无流量,上面已经有所提及了。lvs 仅仅分发请求,而流量并不从它本身出去,所以可以利用它这点来做一些线路分流之用。没有流量同时也保住了均衡器的 IO 性能不会受到大流量的影响。

5、基本上能支持所有应用,因为 lvs 工作在 4 层,所以它可以对几乎所有应用做『负载均衡』,包括 http、数据库、聊天室等等。

另:lvs 也不是完全能判别节点故障的,譬如在 wlc 分配方式下,集群里有一个节点没有配置 VIP,会使整个集群不能使用,这时使用 wrr 分配方式则会丢掉一台机。目前这个问题还在进一步测试中。所以,用 lvs 也得多多当心为妙。

二、nginx 和 lvs 作对比的结果

1、nginx 工作在网络的 7 层,所以它可以针对 http 应用本身来做分流策略,比如针对域名、目录结构等,相比之下 lvs 并不具备这样的功能,所以 nginx 单凭这点可利用的场合就远多于 lvs 了;但 nginx 有用的这些功能使其可调整度要高于 lvs,所以经常要去触碰触碰,由 lvs 的第 2 条优点 看,触碰多了,人为出问题的几率也就会大。

2、nginx 对网络的依赖较小,理论上只要 ping 得通,网页访问正常,nginx 就能连得通,nginx 同时还能区分内外网,如果是同时拥有内外网的 节点,就相当于单机拥有了备份线路;lvs 就比较依赖于网络环境,目前来看『服务器』在同一网段内并且 lvs 使用 direct 方式分流,效果较能得到保证。另 外注意,lvs 需要向托管商至少申请多一个 ip 来做 Visual IP,貌似是不能用本身的 IP 来做 VIP 的。要做好 LVS 管理员,确实得跟进学习很多有关网络通信方面的知识,就不再是一个 HTTP 那么简单了。

3、nginx 安装和配置比较简单,测试起来也很方便,因为它基本能把错误用日志打印出来。lvs 的安装和配置、测试就要花比较长的时间了,因为同上所述,lvs 对网络依赖比较大,很多时候不能配置成功都是因为网络问题而不是配置问题,出了问题要解决也相应的会麻烦得多。

4、nginx 也同样能承受很高负载且稳定,但负载度和稳定度差 lvs 还有几个等级:nginx 处理所有流量所以受限于机器 IO 和配置;本身的 bug 也还是难以避免的;nginx 没有现成的双机热备方案,所以跑在单机上还是风险较大,单机上的事情全都很难说。

5、nginx 可以检测到『服务器』内部的故障,比如根据『服务器』处理网页返回的状态码、超时等等,并且会把返回错误的请求重新提交到另一个节点。目前 lvs 中 ldirectd 也能支持针对『服务器』内部的情况来监控,但 lvs 的原理使其不能重发请求。重发请求这点,譬如用户正在上传一个文件,而处理该上传的节点刚 好在上传过程中出现故障,nginx 会把上传切到另一台『服务器』重新处理,而 lvs 就直接断掉了,如果是上传一个很大的文件或者很重要的文件的话,用户可能 会因此而恼火。

6、nginx 对请求的异步处理可以帮助节点『服务器』减轻负载,假如使用 apache 直接对外服务,那么出现很多的窄带链接时 apache 『服务器』将会占用大 量内存而不能释放,使用多一个 nginx 做 apache 代理的话,这些窄带链接会被 nginx 挡住,apache 上就不会堆积过多的请求,这样就减少了相 当多的内存占用。这点使用 squid 也有相同的作用,即使 squid 本身配置为不缓存,对 apache 还是有很大帮助的。lvs 没有这些功能,也就无法能 比较。

7、nginx 能支持 http 和 email(email 的功能估计比较少人用),lvs 所支持的应用在这点上会比 nginx 更多。

在使用上,一般最前端所采取的策略应是 lvs,也就是 DNS 的指向应为 lvs 均衡器,lvs 的优点令它非常适合做这个任务。

重要的 ip 地址,最好交由 lvs 托管,比如数据库的 ip、webservice 『服务器』的 ip 等等,这些 ip 地址随着时间推移,使用面会越来越大,如果更换 ip 则故障会接踵而至。所以将这些重要 ip 交给 lvs 托管是最为稳妥的,这样做的唯一缺点是需要的 VIP 数量会比较多。

nginx 可作为 lvs 节点机器使用,一是可以利用 nginx 的功能,二是可以利用 nginx 的性能。当然这一层面也可以直接使用 squid,squid 的功能方面就比 nginx 弱不少了,性能上也有所逊色于 nginx。

nginx 也可作为中层代理使用,这一层面 nginx 基本上无对手,唯一可以撼动 nginx 的就只有 lighttpd 了,不过 lighttpd 目前还没有 能做到 nginx 完全的功能,配置也不那么清晰易读。另外,中层代理的 IP 也是重要的,所以中层代理也拥有一个 VIP 和 lvs 是最完美的方案了。

nginx 也可作为网页静态『服务器』,不过超出了本文讨论的范畴,简单提一下。

具体的应用还得具体分析,如果是比较小的网站(日 PV<1000 万),用 nginx 就完全可以了,如果机器也不少,可以用 DNS 轮询,lvs 所耗费的机器还是比较多的;大型网站或者重要的服务,机器不发愁的时候,要多多考虑利用 lvs。

Nginx 的优点:

性能好,可以负载超过 1 万的并发。

功能多,除了『负载均衡』,还能作 Web 『服务器』,而且可以通过 Geo 模块来实现流量分配。

社区活跃,第三方补丁和模块很多

支持 gzip proxy

缺点:

不支持 session 保持。

对后端 realserver 的健康检查功能效果不好。而且只支持通过端口来检测,不支持通过 url 来检测。

nginx 对 big request header 的支持不是很好,如果 client_header_buffer_size 设置的比较小,就会返回 400bad request 页面。

Haproxy 的优点:

它的优点正好可以补充 nginx 的缺点。支持 session 保持,同时支持通过获取指定的 url 来检测后端『服务器』的状态。

支持 tcp 模式的『负载均衡』。比如可以给 mysql 的从『服务器』集群和邮件『服务器』做『负载均衡』。

缺点:

不支持虚拟主机 (这个很傻啊)

目前没有 nagios 和 cacti 的性能监控模板

LVS 的优点:

性能好,接近硬件设备的网络吞吐和连接负载能力。

LVS 的 DR 模式,支持通过广域网进行『负载均衡』。这个其他任何『负载均衡』软件目前都不具备。

缺点:

比较重型。另外社区不如 nginx 活跃。

特别声明:[【蓝因子教育】lvs、haproxy、nginx 『负载均衡』的比较分析] 该文观点仅代表作者本人,今日霍州系信息发布平台,霍州网仅提供信息存储空间服务。

猜你喜欢

20个独特小众、风格鲜明的男宝宝名字推荐,结合冷门典故、自然奇观(小众却很惊艳)

、抽象概念等元素,确保不易撞名且富有深意: 【自然异象类】 岫白寓意:山峦间雾气如白练,空灵清透风格:冷门山水意象,仙气缥缈烬川寓意:野火焚尽后重生的河流,象征破而后立风格:矛盾美学,暗黑与希望交织悬黎寓意:…

20个独特小众、风格鲜明的男宝宝名字推荐,结合冷门典故、自然奇观(小众却很惊艳)

『王一博』观看法网公开赛决赛,现场生图路透,没有技巧,就是硬帅(我想看『王一博』的)

没想到法网公开赛在CCTV5号同步播出,『王一博』就这么出现在自己喜欢的频道上。 我最喜欢『王一博』的地方是,承受了内娱最多的网暴造谣谩骂,看多了内娱的尔虞我诈的虚伪,依然能保持内心的纯净,不卖惨,不屈服,不同流合…

『王一博』观看法网公开赛决赛,现场生图路透,没有技巧,就是硬帅(我想看『王一博』的)

影帝影后暧昧23年不婚,“抱团”养老,谁也没捅破最后一层窗户纸(影帝影后甜宠小说)

这对『娱乐圈』️&quot;无证驾驶&quot;23年的神仙CP,用教科书级操作啪啪打脸传统婚恋观!2.,真正的安全感,是成为彼此的红烧肉——不需要满汉全席,但永远是非常对味的那道菜 3.,非常高级的浪漫,是我愿意陪你变老,但不愿

影帝影后暧昧23年不婚,“抱团”养老,谁也没捅破最后一层窗户纸(影帝影后甜宠小说)

3吨液压千斤顶家用轿车换胎神器,手摇省力又安全?(3吨液压千斤顶多少钱一个)

想自己动手换轮胎却怕扛不动千斤顶?这款3吨液压立式千斤顶专为家用轿车设计,手摇操作省力高效,升降平稳不晃动。无需电力,适合家庭、车库、户外应急使用。本文详解其原理、选型要点与适用场景,帮你避坑,选对工具轻松应对爆胎危机!

3吨液压千斤顶家用轿车换胎神器,手摇省力又安全?(3吨液压千斤顶多少钱一个)

P35炭黑多环芳烃是多少(317炭黑)

在炭黑生产和使用过程中,应加强对炭黑多环芳烃的监测和控制,减少其对环境和人体的危害。改进炭黑生产工艺可以减少裂解产物中多环芳烃的生成,例如采用低温裂解、添加催化剂等方法可以降低多环芳烃的生成量;加强污染治理措…

P35炭黑多环芳烃是多少(317炭黑)