logo资料库

负载均衡软件LVS手册.pdf

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