论文部分内容阅读
人类社会正在进入以网络为中心的信息时代,人们需要更快捷、更可靠、功能更丰富的网络服务。万维网的流行促进互联网使用的指数级增长,现在很多站点收到前所未有的访问负载,经常担心系统如何被扩展来满足不断增长的性能需求,同时系统如何保持24x7的可用性。未来的应用将需要更高的吞吐率、更好的交互性、更高的安全性,这要求服务平台具有更强的处理能力和更高的可用性。所以,如何给出合理的框架和有效的设计方法,来建立高性能、高可伸缩、高可用的网络服务,这是摆在研究者面前极富挑战性的任务。本文研究的可伸缩网络服务便是围绕这一任务展开的。 首先,在分析现在和将来网络服务需求的基础上,本文提出基于集群的可伸缩网络服务体系结构Linux Virtual Server,分为负载调度器、服务器池和后端存储三层结构。负载调度器采用IP负载均衡技术和基于内容请求分发技术。LVS集群提供了负载平衡、可伸缩性和高可用性,可以应用于建立很多可伸缩网络服务。进而,提出地理分布的LVS集群系统,可节约网络带宽,改善网络服务质量,具有良好的抗灾害性。 在IP负载均衡技术上,针对网络服务非对称性的特点,为克服VS/NAT伸缩能力差的缺点,本文提出通过IP隧道和直接路由实现虚拟服务器的两种方法VS/TUN和VS/DR,极大地提高了系统的伸缩性。在负载调度研究中,针对请求的服务时间变化大,本文提出一个动态反馈负载均衡算法,结合内核中的加权连接调度算法,根据动态反馈回来的负载信息来调整服务器的权值,从而有效地解决服务器间的负载不平衡。我们在Linux内核中高效地实现了IP虚拟服务器软件,支持三种IP负载均衡技术和五种连接调度算法。 在对已有基于内容请求分发(Layer-7交换)的方法进行分析基础上,本文提出在操作系统中利用内核线程高效地实现基于内容请求分发的解决方法,避免多次内核与用户空间的切换和内存复制开销。并提出基于局部性最小连接(LBLC)调度算法,在服务器间负载基本平衡情况下,提高单个服务器的访问局部性。该算法可提高后端服务器的主存Cache命中率,从而提高了整个集群系统的性能。针对高并发度的需求,我们引入多线程事件驱动的服务器结构,在Linux内核中高效地实现了内核Layer-7交换机KTCPVS。实际的性能测试表明内核Layer-7交换方法有更高的吞吐率。 结合IPVS的IP负载均衡技术和KTCPVS的基于内容请求分发技术,本文设计和实现了大规模基于内容请求分发的系统。一个VS/DR或VS/TUN调度器作为系统的单一入口点,将请求分发给一组KTCPVS分发器,KTCPVS分发器通过使用中心的内容位置服务,确定处理该请求的后端服务器,再将该请求分发到后端服务器;并提出基于局部性的最小负载(LBLL)调度算法。进而,将该体系结构应用大规模Cache集群系统中,提出面向Cache应用的LBLL算法。算法通过基于内国防科学技术大学研究生院学位论文容请求分发可提高单个Cache服务器上请求的局部性;KTCPVS分发器将不可Cache的对象请求跳过CaChe服务器,直接发给源服务器,这样可以缩短处理时间,同时可以提高Cache服务器的使用效率;算法还保证Cache服务器在正常负载下工作。 在以上工作基础上,我们提供了一个1万S框架(F~ework),包括含有三种IP负载均衡技术的IP虚拟服务器软件、基于内容请求分发的KTCPVS软件和相应的集群管理软件。利用LVS框架可以高效地实现高可伸缩的、高可用的V触b、CaChe、Mail和Media等网络服务,进而开发支持庞大用户数的、高可靠的电子商务应用。LVS框架己在世界各地得到很好的实际应用,如Red Hat集群服务器软件、VAL~集群解决方案、英国国家JANET Cache网、Linux门户站点、real.com网站等。