LINUX系统学习与进阶—项目实践中Linux集群的总结和思考

作为一名Linux/unix系统工程师、项目实施工程师,这几年的工作重心之一就是公司的对外项目,经手过许多小中型网站的构建和调优工作,F5/LVS及Nginx/HAProxy接触的都比较多。我这里也总结了项目实践中Linux集群的几个重要知识点,希望大家能从中学习到对自己工作有帮助的地方,如下所示:
一、目前网站架构一般分成负载均衡层、web层和数据库层,我其实一般还会多加一层,即文件服务器层,因为现在随着网站的流量越来越多,文件服务器的压力也越来越大,DRBD+Heartbeat+NFS在后期可能压力太大了,这时候我们可以考虑图片单独分离或前端采用Squid集群缓层的方法来解缓图片服务器的压力;网站最前端的负载均衡层称之为 Director,它起的是分摊请求的作用,最常见的就是轮询,这个基本功能是每一款负载均衡器都自带的。
二、F5是通过硬件的方式来实现负载均衡,它较多应用于CDN系统,用于squid反向加速集群的负载均衡,是专业的硬件负载均衡设备,尤其适用于每秒新建连接数和并发连接数要求高的场景;LVS和HAproxy是通过软件的方式来实现的,但稳定性也相当强悍,在处理高并发的情况也有相当不俗的表现。Nginx我现在也较倾向于放在整个系统或网站的中间,让其作为中间层的负载均衡器,这样效果更好。
三、Nginx对网络的依赖较小,理论上只要ping得通,网页访问正常,Nginx就能连得通,Nginx同时还能区分内外网,如果是同时拥有内外网的节点,就相当于单机拥有了备份线路;LVS就比较依赖于网络环境,它涉及的项目的所有服务器都必须在同一机房的同一交换机上,我们有时不得不还要考虑单交换带来的单点故障问题。
四、目前较成熟的负载均衡高可用技术有LVS+Keepalived、Nginx+Keepalived,以前 Nginx没有成熟的双机备份方案,但通过SHELL脚本监控是可以实现的;另外,如果考虑 Nginx的双主负载均衡高可用,也可以通过DNS轮询的方式来实现,有兴趣的可以参考张宴的相关文章;但由于我们目前的商务网站要考虑googel收录及域名备案还有其它的因素,暂时只能用单域名,所以只采用了Nginx+Keepalived的方案;Nginx+keepalived在我们的机房已经稳定运行了二年了,所以这个方案我向大家推荐,有这种工作需求的可以放心实施。
五、集群是指负载均衡后面的web集群或tomcat集群等,但现在的集群意义泛指了整个系统架构,它包括了负载均衡器以及后端的应用服务器集群等等。我们其实可以这样加以区分,如果专指小范围的集群概念,我们可以指WEB集群、Squid集群等,如果指广泛意义上的集群,我们可以指明叫Linux集群,这样大家也不至于混淆。
六、负载均衡高可用中的高可用指的是实现负载均衡器的HA,即一台负载均衡器坏掉后另一台可以在<1s秒内切换,最常用的软件就是 Keepalived和Heatbeat,成熟的生产环境下的负载均衡器方案有Lvs+Keepalived、 Nginx+Keepalived;如果能保证Heartbeat的心跳线的稳定的话,Heartbeat+DRBD也是很成熟的生产环境下的应用,适用于NFS文件服务器或Mysql的高可用环境。
七、LVS的优势非常多:①抗负载能力强;②工作稳定性高(因为有成熟的HA方案);③无流量的转发,所以效率高;④基本上能支持所有的TCP应用(当然包括WEB),基于以上的优点,LVS拥有不少的粉丝;但世事无绝对,LVS对网络的依赖性太大了,在网络环境相对复杂的应用场景中,我不得不放弃它而选用Nginx。
八、Nginx对网络的依赖性小,而且它的正则强大而灵活(个人觉得比HAProxy的确实简单些),稳定的特点吸引了不少人,而且配置也是相当的方便和简约,小中型项目实施中我基本是考虑它的;当然,如果资金充足,F5是不二的选择;我到过许多公司的机房,经常能发现F5的身影。
九、大型网站架构中其实可以结合使用F5/LVS或Nginx,选择它们中的二种或三种全部选择;如果因为预算的原因不选择F5,那么网站最前端的指向应该是LVS,也就是DNS的指向应为LVS均衡器,LVS的优点令它非常适合做这个任务。重要的IP地址,最好交由LVS托管,比如数据库的IP、 提供WEB服务的IP等等,这些IP地址随着时间推移,使用面会越来越大;如果更换IP则故障会接踵而至,所以将这些重要IP交给LSV托管 是最为稳妥的。
十、VIP地址是Keepalived或Heartbeat虚拟的一个IP,它是一个对外的公开IP,也是DNS指向的IP;所以在设计网站架构时,你必须向你的IDC多申请一个对外IP;如果是做LVS+Keepalived的纯公网的这种架构,那就最好是购买一个IP网段吧。
十一、在实际项目实施过程中发现,LVS和Nginx对https的支持都非常好,尤其是LVS,相对而言处理起来更为简便。
十二、在LVS+Keepalived及Nginx+Keepalived的故障处理中,这二者都是很方便的;如果发生了系统故障或服务器相关故障,即可将DNS指向由它们后端的某台真实WEB,达到短期处理故障的效果。毕竟广告网站和电子商务网站的流量就是金钱,这也是为什么要将负载均衡高可用设计于此 的原因,大型的广告网站我就建议直接上CDN系统算了。
十三、现在Linux集群都被大家神话了,其实这个并没多少复杂;关键看你的应用场景,哪种适用就选用哪种,Nginx、HAProxy和LVS、F5都不是神话,都有自己本身的缺陷,我们应该扬长避短,最大性价比的发挥它们的优势。
十四、另外关于session共享的问题,这也是一个老生长谈的问题了;Nginx可以用ip_hash机制来解决session的问题,HAProxy有balance source,而F5/LVS则有会话保持机制来解决这个问题,此外,还可以将session写进数据库,这也是一个解决session共享的好办法,当然这个也会加重数据库的负担, 这个就要看系统架构师的取舍了。
十五、现在受张宴的影响,大家都去玩Nginx了(尤其是作web服务器),其实在服务器性能优异,内存足够的情况下,Apache的抗并发能力并不弱(16G 内存下Apache过2000问题也不大),整个网站的瓶颈应该还是在数据库方面;我建议大家可以多方面了解下Apache和Nginx,前端用Nginx作负载均衡患有,后端用Apache作WEB应用服务器,这样生级以前的单Apache网站可以实现平稳过渡,给网站带来的影响也是最小的。
十六、Heartbeat的脑裂问题没有想象中那么严重,在线上环境可以考虑使用;DRBD+Heartbeat算是成熟的应用了,我也建议掌握这个知识热点。我在相当多的场合用此组合来替代EMC共享存储,毕竟30多万的价格并不是每个客户都愿意接受的。
十七、无论设计的方案是多么的成熟,还是建议要配置Nagios监控机来实时监控我们的服务器情况;邮件和短信报警都可以开启,毕竟手机可以随身携带;有条件的还可以购买专门的商业扫描网站服务,例如Alertbot,它会以1秒为频率的扫描你的网站,如果发现没有alive会向你的邮件发警告邮件。
十八、至少网站的安全性问题,我建议用硬件防火墙,比较推荐的是华赛或Juniper系列的防火墙,DDOS的安全防护一定要到位(国内的DDOS攻击还是挺多的);Linux服务器本身的iptables和SElinux均可关闭,另外,端口开放越少越好。
十九、测试网站的响应时间我们可以用 http://tools.pingdom.com,我发现上了LVS+Keepalived、 Nginx+Keepalived后并不影响网站的访问速度,这一点大家就不要多虑了,Nginx现在作反向加速也日趋成熟了,大家也可尝试下在自己的网站上用这个来做反向加速服务器。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值