服务器均置于国内,他们对集群这块了解的并不深,而且要求也很简单,只要求1+2架构。在初期我使用的是Nginx作为负载均衡器,后期发现HAProxy更加稳定,而且它自带强大的监控页面功能,所以我全部换成了HAproxy作为最前端的负载均衡器了;由于我越来越喜欢它了,在这里请允许我单独介绍其优点。
HAProxy是一款提供高可用性、负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理软件,HAProxy是完全免费的、借助HAProxy可以快速并且可靠的提供基于TCP和HTTP应用的代理解决方案。
HAProxy最主要的特点是性能优越,HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。 HAProxy完全可以支持数以万计的并发连接。并且HAProxy的运行模式使得它可以很简单安全的整合进您当前的架构中,同时可以保护你的web服务器不被暴露到网络上(即通过防火墙80端口映射的方法)。
更重要的是,HAProxy也是一款优秀的负载均衡软件,其优点如:
(1)免费开源,稳定性也是非常好,这个可通过我做的一些小项目可以看出来,单Haproxy也跑得不错,稳定性可以与硬件级的F5相媲美;
(2)根据官方文档,HAProxy可以跑满10Gbps-New benchmark of HAProxy at 10 Gbps using Myricom's 10GbE NICs (Myri-10G PCI-Express),这个数值作为软件级负载均衡器是相当惊人的;
(3)HAProxy 支持连接拒绝 : 因为维护一个连接的打开的开销是很低的,有时我们很需要限制攻击蠕虫(attack bots),也就是说限制它们的连接打开从而限制它们的危害。 这个已经为一个陷于小型DDoS攻击的网站开发了而且已经拯救了很多站点,这个优点也是其它负载均衡器没有的。
(4)HAProxy 支持全透明代理(已具备硬件防火墙的典型特点): 可以用客户端IP地址或者任何其他地址来连接后端服务器. 这个特性仅在Linux 2.4/2.6内核打了cttproxy补丁后才可以使用. 这个特性也使得为某特殊服务器处理部分流量同时又不修改服务器的地址成为可能。
(5)HAProxy现多于线上的Mysql集群环境,我们常用于它作为MySQL(读)负载均衡;
(6)自带强大的监控服务器状态的页面,实际环境中我们结合Nagios进行邮件或短信报警,这个也是我非常喜欢它的原因之一;
(7)HAProxy支持虚拟主机,许多朋友说它不支持虚拟主机是错误的,通过测试我们知道,HAProxy是支持虚拟主机的。
另外,提到Nginx作负载均衡器,这个由于我自己也比较喜欢它的强大的正则处理功能和其强悍的抗并发能力,所以我在自己的博客及51cto.com上推行它的Nginx+Keepalived,并成功用此架构帮许多客户实施他们的网站,Nginx对网络的依赖性非常小,理论上只要ping得通它就就能实现它的负载均衡能力,这一点跟LVS不一样。我去年在一家公司准备实施LVS+Keepalived时,发现它的网络环境太复杂了,每台机器都是7、8静态路由,网络中还有二个网关,LVS实现不了转发功能;最后还是换成了Nginx+Keepalived。
现在我觉得Nginx作为最前端的负载均衡并不是一个非常理想的选择,一个大型的网站或系统的话,可以存在多级代理,比如我们最前端可以用F5或LVS来作为网站或系统的入口,让它们来顶外部的高并发流量,而Nginx由于其强大的正则处理能力,可以作为中层代理,一来可以作为F5/LVS的补充,节约大量成本,这种做法也是张宴推荐的,拓朴如下图:
大家可以看一下基于架构的好处有:
一、不需要担心单Nginx负载均衡器crash的问题,随便怎么挂都可以;
二、Nginx作为F5的补充,利用其强大的upstream模块和正则,可以轻松实现动静分离;
三、压缩可以通过nginx做,这样,后台应用服务器不管是apache、resin、lighttpd甚至iis或其他古怪服务器,都不用考虑压缩的功能问题。
四、方便的运维管理,在各种情况下可以灵活制订方案;
五、即使没有squid群组,Nginx现在可以做为优秀的反向代理加速软件了。
我现在做的项目网站,原理跟上面类似,只不过用的是LVS代替了F5,这个更节约资金了,拓朴图如下:
现在的负载均衡均衡技术是多样化的,我们应该根据其特点做到因地制宜,取长补短,最大限度的发挥它们的优点,将我们的网站或系统架构调优到一个新的高度!