几个负载均衡器的小结

简介:
之前负责过公司webcdn相关的设计和维护工作,同时做了些应用运维方面的工作,简单谈几个我对接触过的几款负载均衡器的了解:
1.keepalived
 使用vrrp实现高可用,可以理解成是IP层的高可用,虚拟出一个vip来实现高可用的功能。
实际应用时主要是两两组合,提供两个vip,在一台挂掉后可以自动转移至另一台服务。
比较常见的问题是脑裂问题和ip转移后的arp问题,第一种问题可以通过tcpdump快速定位rc(要抓vrrp协议),第二种情况可以使用arping的脚本解决(keepalived 的notify_master设置)。
 基本上没有性能上的问题。

2.lvs
 线上用的比较多的一种负载均衡器,内核态转发型的高可用工具,可以看做是tcp层的负载均衡器,主要原理就是对tcp的报文做些更改,然后进行转发,支持的状态检测方法也比较完善,有端口检测,url检测和自定义脚本检测。
 实际应用中一般是用lvs的dr模式,配合keepalived使用,keepalived提供主机的高可用,lvs提供应用的高可用,lvs采用url的检测方式(避免端口ok但是应用挂起的情况,比如java应用的gc)。
 比较常见的问题是realserver被踢出的问题,可以通过在lvs部署监控并根据检测方法部署相关的检测脚本(网络检测,端口检测,url检测)来找到问题的rc。
 很少能遇到性能的问题,在包量很大的情况下(几十万/s),可能会遇到网卡ring buffer和网卡中断的问题,可以通过丢包率和mpstat来定位,ring buffer问题可以尝试增加网卡的ring buffer设置解决,中断问题可以采用centos5.8以上的内核配合多队列(必须)来解决。

3.nginx
 现在主流的反向代理软件,可以通过代理的功能实现负载均衡的功能,本身功能比较完善,既可以做静态站点,缓存又可以做负载均衡器,配置上可以优化的地方很多,有端口检测和url的检测,但是检测的方式是被动式的,会对用户的访问造成一定的影响。
 以java类应用来说,常见的使用方式是lvs+nginx+tomcat/resin,比较完善的日志,可以通过分析nginx日志的状态码,响应时间(response time)和后端响应时间(upstream time)来跟踪qos,定位问题。
 性能上问题不大,比较常见的问题是buffer导致的io问题和日志本地切割导致的nginx慢速响应的问题
第一个问题可以尝试内存换io或者干脆关掉buffer试试,第二个问题可以把日志通过网络写入远端处理(不过貌似目前nginx不支持)。

4.tengine
 nginx的变种,在url check上做了改进,支持主动的检查,减少了对用户的影响,同时可以支持多种方式的日志处理(通过网络写入远端处理等),还支持各种自定义的插件,灵活性比较高。在webcdn的结构设计中我就是用了lvs+tengine+squid/trafficserver的结构。


5.squid/trafficserver/varnish
反向代理软件,个人觉得还是做缓存会比较有优势。没有用来做过负载均衡器,这里就不妄加评论了。。

6.haproxy
个人感觉和nginx差不多,比nginx要轻量级。
一般都是lvs + haproxy来做高可用,比如淘宝的cdn结构就是lvs+haproxy+trafficserver
这个个人用的也比较少。。

7.f5设备类

高大上的设备,没接触过,不过有界面一切都好说。


一句话:用好一个软件比用一个好软件更重要。



本文转自菜菜光 51CTO博客,原文链接:http://blog.51cto.com/caiguangguang/1357638,如需转载请自行联系原作者

相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
7月前
|
负载均衡 网络协议 算法
对负载均衡的全面理解
对负载均衡的全面理解
51 1
|
负载均衡 算法 网络协议
|
缓存 负载均衡 算法
负载均衡浅谈
在互联网尤其是移动互联网行业中一旦用户量达到一定数量级别之后,会面对高并发和海量数据的挑战,面对这种挑战必须提升系统整体的性能,可以采用垂直扩展和水平扩展两种方式。负载均衡是一种水平扩展的方式,它是建立在现有网络结构之上,它提供了一种有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
165 0
负载均衡浅谈
|
负载均衡 网络协议 应用服务中间件
服务器负载均衡
服务器负载均衡
120 0
|
弹性计算 负载均衡 Linux
集群及负载均衡
对比基于反向代理的负载均衡与阿里云的负载均衡服务
 集群及负载均衡
|
弹性计算 负载均衡 Linux
集群及负载均衡
对比基于反向代理的负载均衡与阿里云的负载均衡服务
|
负载均衡 Java 应用服务中间件
负载均衡介绍|学习笔记
快速学习负载均衡介绍
67 0
负载均衡介绍|学习笔记
|
缓存 负载均衡 网络协议
负载均衡是什么?
负载均衡知识介绍
245 1
|
弹性计算 负载均衡 算法
记一次负载均衡的配置和使用
负载均衡,英文名称为Load Balance,其含义就是指将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行,例如FTP服务器、Web服务器、企业核心应用服务器和其它主要任务服务器等,从而协同完成工作任务。 负载均衡构建在原有网络结构之上,它提供了一种透明且廉价有效的方法扩展服务器和网络设备的带宽、加强网络数据处理能力、增加吞吐量、提高网络的可用性和灵活性。
133 0
记一次负载均衡的配置和使用
|
域名解析 缓存 负载均衡
简单聊聊负载均衡的那些事
负载均衡(Load balance,LB),是一种计算机技术,用来在多个计算机(计算机集群)、网络连接、CPU、磁盘驱动器或其他资源中分配负载,以达到最优化资源使用、最大化吞吐率、最小化响应时间、同时避免过载的目的。
194 1
简单聊聊负载均衡的那些事

相关实验场景

更多