您好,欢迎访问三七文档
LVSLVSLVSLVS手册如何给出合理的框架和有效的设计方法,来建立高性能、高可伸缩、高可用的网络服务,这是摆在研究者和系统设计者面前极富挑战性的任务。下面文章就是围绕这一任务展开的。可伸缩网络服务的设计与实现人类社会正在进入以网络为中心的信息时代,人们需要更快捷、更可靠、功能更丰富的网络服务。万维网的流行促进互联网使用的指数级增长,现在很多站点收到前所未有的访问负载,经常担心系统如何被扩展来满足不断增长的性能需求,同时系统如何保持24x7的可用性。未来的应用将需要更高的吞吐率、更好的交互性、更高的安全性,这要求服务平台具有更强的处理能力和更高的可用性。所以,如何给出合理的框架和有效的设计方法,来建立高性能、高可伸缩、高可用的网络服务,这是摆在研究者和系统设计者面前极富挑战性的任务。本文研究和设计的可伸缩网络服务便是围绕这一任务展开的。一、可伸缩网络服务的体系结构二、IPIPIPIP负载均衡技术三、负载调度四、IPIPIPIP虚拟服务器的实现和性能测试五、内核中的基于内容请求分发六、TCPHATCPHATCPHATCPHA的设计与实现一、可伸缩网络服务的体系结构针对网络服务的可伸缩性、高可用性、可维护性和价格有效性需求,本章给出了可伸缩网络服务的体系结构和设计方法,它提供了负载平衡、可伸缩性和高可用性。1、可伸缩网络服务的定义2、网络服务的需求3、LVS集群的体系结构4、地理分布LVS集群的体系结构5、小结1111、可伸缩网络服务的定义可伸缩性(Scalability)是在当今计算机技术中经常用到的词汇。对于不同的人,可伸缩性有不同的含义。现在,我们来定义可伸缩网络服务的含义。可伸缩网络服务是指网络服务能随着用户数目的增长而扩展其性能,如在系统中增加服务器、内存或硬盘等;整个系统很容易被扩展,无需重新设置整个系统,无需中断服务。换句话说,系统管理员扩展系统的操作对最终用户是透明的,他们不会知道系统的改变。可伸缩系统通常是高可用的系统。在部分硬件(如硬盘、服务器、子网络)和部分软件(如操作系统、服务进程)的失效情况下,系统可以继续提供服务,最终用户不会感知到整个服务的中断,除了正在失效点上处理请求的部分用户可能会收到服务处理失败,需要重新提交请求。Caching和复制是建立高可用系统的常用技术,建立多个副本会导致如何将原件的修改传播到多个副本上的问题。实现可伸缩网络服务的方法一般是通过一对多的映射机制,将服务请求流分而治之(DivideandConquer)到多个结点上处理。一对多的映射可以在很多层次上存在,如主机名上的DNS系统、网络层的TCP/IP、文件系统等。虚拟(Virtual)是描述一对多映射机制的词汇,将多个实体组成一个逻辑上的、虚拟的整体。例如,虚存(VirtualMemory)是现代操作系统中最典型的一对多映射机制,虚存建立一个虚拟内存空间,将它映射到多个物理内存上。2222、网络服务的需求随着Internet的飞速发展和对我们生活的深入影响,越来越多的个人在互联网上购物、娱乐、休闲、与人沟通、获取信息;越来越多的企业把他们与顾客和业务伙伴之间的联络搬到互联网上,通过网络来完成交易,建立与客户之间的联系。互联网的用户数和网络流量正以几何级数增长,这对网络服务的可伸缩性提出很高的要求。例如,比较热门的Web站点会因为被访问次数急剧增长而不能及时处理用户的请求,导致用户进行长时间的等待,大大降低了服务质量。另外,随着电子商务等关键性应用在网上运行,任何例外的服务中断都将造成不可估量的损失,服务的高可用性也越来越重要。所以,对用硬件和软件方法实现高可伸缩、高可用网络服务的需求不断增长,这种需求可以归结以下几点:可伸缩性(Scalability),当服务的负载增长时,系统能被扩展来满足需求,且不降低服务质量。高可用性(Availability),尽管部分硬件和软件会发生故障,整个系统的服务必须是每天24小时每星期7天可用的。可管理性(Manageability),整个系统可能在物理上很大,但应该容易管理。价格有效性(Cost-effectiveness),整个系统实现是经济的、易支付的。单服务器显然不能处理不断增长的负载。这种服务器升级方法有下列不足:一是升级过程繁琐,机器切换会使服务暂时中断,并造成原有计算资源的浪费;二是越往高端的服务器,所花费的代价越大;三是一旦该服务器或应用软件失效,会导致整个服务的中断。通过高性能网络或局域网互联的服务器集群正成为实现高可伸缩的、高可用网络服务的有效结构。这种松耦合结构比紧耦合的多处理器系统具有更好的伸缩性和性能价格比,组成集群的PC服务器或RISC服务器和标准网络设备因为大规模生产,价格低,具有很高的性能价格比。但是,这里有很多挑战性的工作,如何在集群系统实现并行网络服务,它对外是透明的,它具有良好的可伸缩性和可用性。针对上述需求,我们给出了基于IP层和基于内容请求分发的负载平衡调度解决方法,并在Linux内核中实现了这些方法,将一组服务器构成一个实现可伸缩的、高可用网络服务的服务器集群,我们称之为Linux虚拟服务器(LinuxVirtualServer)。在LVS集群中,使得服务器集群的结构对客户是透明的,客户访问集群提供的网络服务就像访问一台高性能、高可用的服务器一样。客户程序不受服务器集群的影响不需作任何修改。系统的伸缩性通过在服务机群中透明地加入和删除一个节点来达到,通过检测节点或服务进程故障和正确地重置系统达到高可用性。3333、LVSLVSLVSLVS集群的体系结构下面先给出LVS集群的通用结构,讨论了它的设计原则和相应的特点;然后将LVS集群应用于建立可伸缩的Web、Media、Cache和Mail等服务。3.1、LVS集群的通用结构3.2、可伸缩Web和媒体服务3.3、可伸缩Cache服务3.4、可伸缩邮件服务3.13.13.13.1、LVSLVSLVSLVS集群的通用结构LVS集群采用IP负载均衡技术和基于内容请求分发技术。调度器具有很好的吞吐率,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。图2.1:LVS集群的体系结构为此,在设计时需要考虑系统的透明性、可伸缩性、高可用性和易管理性。LVS集群的体系结构如图2.1所示,它有三个主要组成部分:负载调度器(loadbalancer),它是整个集群对外面的前端机,负责将客户的请求发送到一组服务器上执行,而客户认为服务是来自一个IP地址上的。它可以是用IP负载均衡技术的负载调度器,也可以是基于内容请求分发的负载调度器,还可以是两者的结合。服务器池(serverpool),是一组真正执行客户请求的服务器,执行的服务有WEB、MAIL、FTP和DNS等。后端存储(backendstorage),它为服务器池提供一个共享的存储区,这样很容易使得服务器池拥有相同的内容,提供相同的服务。调度器采用IP负载均衡技术、基于内容请求分发技术或者两者相结合。在IP负载均衡技术中,需要服务器池拥有相同的内容提供相同的服务。当客户请求到达时,调度器只根据负载情况从服务器池中选出一个服务器,将该请求转发到选出的服务器,并记录这个调度;当这个请求的其他报文到达,也会被转发到前面选出的服务器。在基于内容请求分发技术中,服务器可以提供不同的服务,当客户请求到达时,调度器可根据请求的内容和服务器的情况选择服务器执行请求。因为所有的操作都是在操作系统核心空间中将完成的,它的调度开销很小,所以它具有很高的吞吐率。服务器池的结点数目是可变的。当整个系统收到的负载超过目前所有结点的处理能力时,可以在服务器池中增加服务器来满足不断增长的请求负载。对大多数网络服务来说,结点与结点间不存在很强的相关性,所以整个系统的性能可以随着服务器池的结点数目增加而线性增长。后端存储通常用容错的分布式文件系统,如AFS、GFS、Coda和Intermezzo等。分布式文件系统为各服务器提供共享的存储区,它们访问分布式文件系统就像访问本地文件系统一样。同时,分布式文件系统提供良好的伸缩性和可用性。然而,当不同服务器上的应用程序同时访问分布式文件系统上同一资源时,应用程序的访问冲突需要消解才能使得资源处于一致状态。这需要一个分布式锁管理器(DistributedLockManager),它可能是分布式文件系统内部提供的,也可能是外部的。开发者在写应用程序时,可以使用分布式锁管理器来保证应用程序在不同结点上并发访问的一致性。负载调度器、服务器池和分布式文件系统通过高速网络相连,如100Mbps交换机、Myrinet、CompactNET和Gigabit交换机等。使用高速的网络,主要为避免当系统规模扩大时互联网络成为瓶颈。GraphicMonitor是为系统管理员提供整个集群系统的监视器,它可以监视系统中每个结点的状况。GraphicMonitor是基于浏览器的,所以无论管理员在本地还是异地都可以监测系统的状况。为了安全的原因,浏览器要通过HTTPS(SecureHTTP)协议和身份认证后,才能进行系统监测,并进行系统的配置和管理。3.1.1、为什么使用层次的体系结构3.1.2、为什么是共享存储3.1.3、高可用性3.1.13.1.13.1.13.1.1、为什么使用层次的体系结构层次的体系结构可以使得层与层之间相互独立,允许在一个层次的已有软件在不同的系统中被重用。例如,调度器层提供了负载平衡、可伸缩性和高可用性等,在服务器层可以运行不同的网络服务,如Web、Cache、Mail和Media等,来提供不同的可伸缩网络服务。3.1.23.1.23.1.23.1.2、为什么是共享存储共享存储如分布式文件系统在这个LVS集群系统是可选项。当网络服务需要有相同的内容,共享存储是很好的选择,否则每台服务器需要将相同的内容复制到本地硬盘上。当系统存储的内容越多,这种不共享结构(Shared-nothingStructure)的代价越大,因为每台服务器需要一样大的存储空间,所有的更新需要涉及到每台服务器,系统的维护代价也很高。共享存储为服务器组提供统一的存储空间,这使得系统的维护工作比较轻松,如Webmaster只需要更新共享存储中的页面,对所有的服务器都有效。分布式文件系统提供良好的伸缩性和可用性,当分布式文件系统的存储空间增加时,所有服务器的存储空间也随之增大。对于大多数Internet服务来说,它们都是读密集型(Read-intensive)的应用,分布式文件系统在每台服务器使用本地硬盘作Cache(如2Gbytes的空间),可以使得访问分布式文件系统本地的速度接近于访问本地硬盘。3.1.33.1.33.1.33.1.3、高可用性集群系统的特点是它在软硬件上都有冗余。系统的高可用性可以通过检测节点或服务进程故障和正确地重置系统来实现,使得系统收到的请求能被存活的结点处理。通常,我们在调度器上有资源监视进程来时刻监视各个服务器结点的健康状况,当服务器对ICMPping不可达时或者她的网络服务在指定的时间没有响应时,资源监视进程通知操作系统内核将该服务器从调度列表中删除或者失效。这样,新的服务请求就不会被调度到坏的结点。资源监测程序能通过电子邮件或传呼机向管理员报告故障,一旦监测到服务进程恢复工作,通知调度器将其加入调度列表进行调度。另外,通过系统提供的管理程序,管理员可发命令随时将一台机器加入服务或切出服务,很方便进行系统维护。现在前端的调度器有可能成为系统的单一失效点。为了避免调度器失效导致整个系统不能工作,我们需要设立调度器的备份。两个心跳进程(HeartbeatDaemon)分别在主、从调度器上运行,它们通过串口线和UDP等心跳线来相互汇报各自的健康情况。当从调度器不能听得主调度器的心跳时,从调度器会接管主调度器的工作来提供负载调度服务。这里,一般通过ARP欺骗(GratuitousARP)来接管集群的VirtualIPAddress。当主调度器恢复时,这里有两种方法,一是主调度器自动变
本文标题:LVS手册---
链接地址:https://www.777doc.com/doc-5509704 .html