首页 > 范文大全 > 正文

软件定义负载均衡

开篇:润墨网以专业的文秘视角,为您筛选了一篇软件定义负载均衡范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

采用开源软件实现负载均衡每年能够为新浪节省1100~2000万元,而且可以不依赖于供货商。

作为内容提供商,新浪和其他互联网企业一样,对服务器的可靠性、稳定性要求非常高。据了解,新浪网站的业务访问量非常高,每天的交易上亿笔,和电信、银行的访问量不在一个量级。同时,互联网是24小时运作,没有专门的运维时间、停机升级时间,这些因素都促使互联网企业的IT建设走在了业内的前面。

IT对于互联网企业业务的重要性不言而喻。而负载均衡对于网站来说,更是必不可少。现在常见的负载均衡主要分为两种,一种是通过硬件来进行,如NetScaler、F5、Radware等企业的商用负载均衡器,但是费用昂贵。另外一种是利用开源软件来实现负载均衡,其成本较低,定制灵活。

从商用转向开源

国内互联网企业最初都是采用专业的硬件来实现负载均衡,新浪也同样如此。早在2001年,新浪就率先引入商用负载均衡设备,但经过几年的运行,随着企业业务和规模的大幅增长,对负载均衡的需求越来越大。这时,如果大量购买商用负载均衡设备,无疑将耗费高昂的成本,这对于新浪而言,是一个不小的负担。基于成本和大规模部署的考虑,从2006年开始,新浪开始尝试基于x86结构的软件负载均衡策略。目前新浪的整个结构已经放弃了商用的硬件负载均衡设备,全部使用开源软件来实现负载均衡。即在Linux操作系统下,采用Haproxy进行网络第七层的负载均衡。“在2006~2007年,商用负载均衡器在稳定性、操作界面等方面优于软件的开源负载均衡,但随着新浪对软件的开源负载均衡性能的提升,现在从稳定性、可靠性和性能方面,不差于商用设备。”新浪基础架构部总监王凯说。据王凯介绍,从成本方面来说,采用开源软件实现负载均衡能够每年为新浪节省1100~2000万元,而且可以不依赖于供货商,而硬件厂商需要一个订货周期,时间较长。

新浪基础架构部高级架构师林晓峰认为,利用软件实现负载均衡很灵活,相对硬件厂商可以灵活定制,“它是一个白盒,结合新浪自己的需求,增添自己的功能,去掉不需要的功能,出现故障、问题,新浪的响应度很快。而硬件厂商完全是一个黑盒,我们看不清楚,有些问题调度起来周期比较长。”

性能瓶颈

但是随着微博及其他业务的快速增长,软件的开源负载均衡也遇到了一些性能上的瓶颈。

为此,在2013年初,新浪开展了基于Haproxy应用的CPU性能优化工作。“这个项目主要是对大规模的集群做优化,优化CPU的性能,实现线性扩展。”目前新浪的部署情况是一个机房一个集群,一个集群大约有40~50台服务器。据介绍,新浪和英特尔公司长期以来建立了紧密的合作关系,并且建立了联合实验室。在软件平台和硬件设备上,新浪均采用的是英特尔产品,包括英特尔的x86架构,CPU以及网卡。

据林晓峰分析,“随着硬件平台向多核方向发展,8核、12核服务器越来越多,但软件相对滞后,就像做手机、玩游戏,在单核下跑得很好,换成多核没有看到显著的性能提升。实际上从新浪的角度来看开源软件确实存在一些问题。例如,硬件向多核发展,但是软件包括应用以及操作系统,它们在多核的扩展性表现有好有坏,或扩展性扩展到某一个级别的时候,扩展性的障碍可以看得清楚,如采用1核时系统的性能为1,但如果采用4核时性能可能只能达到3,而8核时系统的性能一定达不到8,甚至要小于4核带来的性能。从目前来看,Linux操作系统本身在多核的扩展方面还存在很大的瓶颈。”

在英特尔互联网事业部资深技术顾问黄新平看来,“免费的时代已经过去,以前软件的性能是跟着硬件走,只要CPU升级,性能自然就随之而提升。处理器变成多核以后,硬件性能提升,软件也需要改写,所以必然要做并行化。而传统软件开发中的思维还是串行化,并行化方面并没有特别好的实践,因此像Linux操作系统性能仍旧不能直线上升,所以我们就要改变一些东西,让它能实现多增加机器,性能就得到提升。比如淘宝‘双十一’,用户的访问量增加,这时只需要加一些服务器就可以,而原来加机器则达不到这样的效果”。

优化的本质

从目前来看,技术上两个发展趋势,一是计算机处理器多核的趋势。第二个是万兆网卡(Flow Director)接入的趋势。新浪基于Haproxy的优化项目就是把这两个方面整合起来,提供最大的性能收益。

据介绍,在优化的过程中,团队遇到了不小的挑战。“Linux操作系统是全球最优秀的软件工程师集体的智慧,要想在上面有所突破,并非易事。对此,团队不仅查阅了大量前沿的论文,包括2010年之后的新技术,同时也依靠团队的运维开发经验,最后突破了技术难点,这花了四五个月时间。同时又花了四五个月时间,完善产品的使用特性,提高产品的用户体验,让业务部门、运维部门很方便的用起来。”林晓峰说。

“优化的本质从技术角度看,就是把内核对SKB处理优化了。而Haproxy代码是不动的,保证了其通用性。这样相当于我们提供了一款对于socket程序的通用优化的可能。”王凯说。

在采访现场,林晓峰演示了优化前和优化后CPU性能的差别:“当启动一个客户端请求,在标准版的Haproxy加Linux操作系统配置中,在脚本中看到这种状况下的CPU的情况,最低的空闲14%,整个系统需要一个扩容的状态,因为只剩余14%的计算资源了,压力稍微大一点,可能跑到零,也许空闲不到零的时候,系统就要丢包,丢连接或服务不是很稳定,对于客户来讲,一个页面会变成白页,或者打开页面的速度比较慢,这是一个异常的状态。而优化后的情况是如何呢?后端的请求量不变,脚本压力最大的一个CPU空闲47%,也就是说系统的整体负载没变,但是负载均衡设备的压力降低了47%左右。在标准状态下只有14%的空闲CPU状态,已经十分危险,如果是这种情况,必须上一台新的设备,去维护比较低的状态。而现在已经是47%的空闲了,系统负载分配是比较合理的,还可以承载更多的业务以及相应的流量”。另外,如果配合英特尔万兆网卡,性能将得到进一步提升。林晓峰演示了另一个脚本,CPU的负载最低由原来的49%变成57%,差不多提升了8个点的整体容量。

CPU冗余多少算合理?据王凯介绍,根据业务的特点和重要性来区分设备的负载。“如果业务很重要,冗余就必须要很低,CPU要在20%、30%以上才能扛住一些突发性的流量。假如业务无关紧要,访问量很小,平时也不会带来大容量的话,就可以让服务器的负载各方面达到60%、70%左右。但是整体都倾向于整个服务器的负载在60%以下”。

其实优化的最终目的是使业务运行更平稳、顺畅,用户的体验更好。“通过优化,用户的访问效果更好,访问速度更快,假如服务器出现了一些问题,用户端是感受不到的。而且部署会根据就近原则,比如四川的用户只访问四川的,因为在全国的IDC(互联网数据中心)都有部署。”王凯说。

“通过优化,使用Haproxy软件实现负载均衡仍然有些不足,主要有四方面,一是如果它的部署量到了一定的程度,版本如何统一?二是如何实现自动化的部署,新浪对自动化方面要加大研发力度,对这方面做一些完善。三是从维护的角度来讲,运维成本会增加。四是商用设备操作界面比较友好一点,而对于开源的软件策略,对这方面要加大力度。这些也是今后需要攻克的难点。”王凯说。