作为很多站长都在使用负载均衡来让网站访问更快速稳定,用软件方式实现的负载均衡环境更为灵活。现在下列产品被普遍地应用于网站环境中。
目前,网站服务器使用的负载平衡软件主要有三种主流软件。
LVS:一是抗负荷能力强;抗负荷能力强,性能好,可达F5硬件的60%;内存和cpu资源消耗较少。
工作在网络4层,通过vrrp协议转发(仅用于分发),具体流量由linux核心处理,无流量产生。
2.稳定性和可靠性好,有完善的热备案;(如LVS+Keepalived)
应用范围较广,可对所有应用进行负载均衡;
不支持正则处理,不能进行动静分离。
5.支持负载平衡算法:rr(轮流)、wrr(带权轮流)、lc(最小连接)、wlc(权重最小连接)
配置复杂,对网络网络依赖性大,稳定性高。
Ngnix:
1.工作在网络7层以上,可以对http应用做一些分流策略,比如域名和目录结构;
Nginx对网络的依赖性较小,理论上可以ping通就可以实现负载功能;
3.Nginx安装配置简单,测试方便;
还可承受高负荷压力且稳定,一般可支撑10,000多次并发;
5.后端服务器的健康检查只支持端口检查,不支持url检查。
6.Nginx要求的异步处理可以帮助节点服务器减轻负载;
Nginx只能支持http,https和Email协议,因此适用范围较小。
8.不支持Session的直接维护,但可以通过ip_hash解决。对Bigrequestheader的支持不是很好。
9.支持负载平衡算法:Round-robin(循环)、Weight-round-robin(带权循环)、Ip-hash(Ip哈希)
Nginx还可以制作Web服务器,即Cache功能。
HAProxy的特点是:
支持两种代理模式:TCP(四层)和HTTP(七层),支持虚拟主机;
能够补充Nginx的一些缺点,如Session的维护,Cookie的引导等等。
3.支持url检测后端服务器故障的检测会很有帮助。
4.更多的负载平衡策略,如动态加权轮流(DynamicRoundRobin)、加权源地址哈希、加权URL哈希和加权参数哈希。
就效率而言,HAProxy将比Nginx具有更好的负载平衡速度。
6.HAProxy可以平衡Mysql的负载,检测后端的DB节点,平衡负载。
9.支持负载平衡算法:Round-robin(轮流)、Weight-round-robin(带权轮流)、source(保持原地址)、RI(请求URL)、rdp-cookie(基于cookie)
不能做Web服务器即Cache。
三大主流软件负载均衡器适用于业务场景:
1.在网站建设初期,可以选择Nigix/HAproxy作为反向代理负载平衡(或者流量不大的话可以不选择负载平衡),因为配置简单,性能可以满足一般业务场景。如果考虑到负载平衡器有单点问题,可以使用Nginx+Keepalived/HAproxy+Keepalived来避免负载平衡器本身的单点问题。
2.网站并发达到一定程度后,为了提高稳定性和转发效率,可以使用LVS。毕竟LVS比Nginx/HAproxy更稳定,转发效率更高。但是维护LVS对维护人员的要求会更高,投入成本也会更高。
注意:Niginx与Haproxy的比较:Niginx支持七层,用户数量最多,稳定性更可靠。Haproxy支持四层和七层,支持更多的负载平衡算法,支持session保存等特定的选择取决于使用场景,目前Haproxy由于弥补了一些Niginx的不足,用户数量也在不断增加。
衡量负载均衡器质量的几个重要因素:
1.会话率:单位时间内处理请求数。会话并发能力:高并发请求;
3.数据率:数据处理能力。官方测试统计显示,haproxy单位时间处理的最大要求为2万个,可同时维护4万-5万个并发连接,最大数据处理能力为10Gbps。综上所述,haproxy是一款性能优异的负载平衡和反向代理服务器。
总结HAProxy的主要优势:
第一,免费开源,稳定性也很好。从我做的一些小项目可以看出,单Haproxy也跑的很好,稳定性可以和LVS媲美;
第二,根据官方文件,HAProxy可以跑满10Gbps,作为软件级负载平衡,也是惊人的;HAProxy可xy可以作为MySQL、邮件或其他非网络的负载平衡,我们经常用它作为MySQL(阅读)的负载平衡;
自带强大监控服务器状态的网页,在实际环境中我们结合Nagios进行邮件或短信报警,这也是我非常喜欢它的原因之一;HAProxy支持虚拟主机。