前言:作为一名Linux/unix系统工程师、项目实施工程师,这几年一直在涉及到对外项目,经手过许多小中型网站的架构,F5、LVS及Nginx接触的都比较多,我想一种比较通俗易懂的语气跟大家说明下何谓负载均衡,何谓Linux集群,帮助大家走出这个误区,真正意义上来理解它们,具体项目施工案例请参考我在network.51cto.com上的同类文章.
一、目前网站架构一般分成负载均衡层、web层和数据库层,我其实一般还会多加一层,即文件服务器层, 现在随着网站的PV越来越多,文件服务器的压力也越来越大;不过随着moosefs、DRDB Heartbeat NFS的日趋成熟,这问题也不大了.网站最前端的负载均衡层称之为Director,它起的是分摊请求的作用,最常见的就是轮询.
二、F5是通过硬件的方式来实现负载均衡,它较多应用于CDN系统,用于squid反向加速集群的负载均衡,是专业的硬件负载均衡设备,尤其适用于每秒新建连接数和并发连接数要求高的场景;LVS和Nginx是通过软件的方式来实现的,但稳定性也相当强悍,在处理高并发的情况也有相当不俗的表现.
三、Nginx对网络的依赖较小,理论上只要ping得通,网页访问正常,nginx就能连得通,nginx同时还能区分内外网,如果是同时拥有内外网的节点,就相当于单机拥有了备份线路;lvs就比较依赖于网络环境,目前来看服务器在同一网段内并且lvs使用 direct方式分流,效果较能得到保证.
四、目前较成熟的负载均衡高可用技术有LVS Keepalived、Nginx Keepalived,以前 Nginx没有成熟的双机备份方案,但通过shell脚本监控是可以实现的,有兴趣的可具体参考我在51cto上的项目实施方案;另外,如果考虑 Nginx的负载均衡高可用,也可以通过DNS轮询的方式来实现,有兴趣的可以参考张宴的相关文章;但 我们目前的商务网站要考虑googel收录及域名备案还有其它的因素,暂时只能用单域名, 只采用了前面的方案;Nginx keepalived在我们的机房已经稳定运行了一年半了, 这架构我也一并介绍给大家.
五、集群是指负载均衡后面的web集群或tomcat集群等,但现在的集群意义泛指了整个系统架构,它包括了负载均衡器以及后端的应用服务器集群等,现在许多人都喜欢把Linux集群指为LVS,但我觉得严格意义上应该区分开.
六、负载均衡高可用中的高可用指的是实现负载均衡器的HA,即一台负载均衡器坏掉后另一台可以在<1s秒内切换,最常用的软件就是Keepalived和Heatbeat,成熟的生产环境下的负载均衡器方案有Lvs Keepalived、 Nginx Keepalived;如果能保证Heartbeat的心跳线的稳定的话,Heartbeat DRBD也是成熟的应用,适用于NFS文件服务器或Mysql.
七、LVS的优势非常多:①抗负载能力强;②工作稳定( 有成熟的HA方案);③无流量;④基本上能支持所有的应用,基于以上的优点,LVS拥有不少的粉丝;但世事无绝对,LVS对网络的依赖性太大了,在网络环境相对复杂的应用场景中,我不得不放弃它而选用Nginx.
八、Nginx对网络的依赖性小, 它的正则强大而灵活,强悍的特点吸引了不少人, 配置也是相当的方便和简约,小中型项目实施中我基本是考虑它的;当然,如果资金充足,F5是不二的选择;我到过许多CDN机房,经常能发现F5的身影.
九、大型网站架构中其实可以结合使用F5、LVS或Nginx,选择它们中的二种或三种全部选择;如果 预算的原因不选择F5,那么网站最前端的指向应该是LVS,也就是DNS的指向应为lvs均衡器,lvs的优点令它非常适合做这个任务.重要的ip地址,最好交由lvs托管,比如数据库的ip、webservice服务器的ip等等,这些ip地址随着时间推移,使用面会越来越大,如果更换ip则故障会接踵而至. 将这些重要ip交给lvs托管是最为稳妥的.
十、VIP地址是Keepalived虚拟的一个IP,它是一个对外的公开IP,也是DNS指向的IP; 在设计网站架构时,你 向你 |