老男孩linux运维实战培训-lvs的中文阅读地址与内容_第1页
老男孩linux运维实战培训-lvs的中文阅读地址与内容_第2页
老男孩linux运维实战培训-lvs的中文阅读地址与内容_第3页
老男孩linux运维实战培训-lvs的中文阅读地址与内容_第4页
老男孩linux运维实战培训-lvs的中文阅读地址与内容_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

老男孩linux运维实战培训-LVS的中文阅读资料地址与内容整老老男孩老师教学与培 思想:重思路、重方法、重实践、重习惯、重总结:本系列文档为《老男孩Linux运维实战培训中心》内部教学教案,只允许VIP学员人使用私 ,违者直接取消VIP学员资格。 严格遵守,谢谢大家 :: (适合全体朋友:文档信息格式约定:LVS的中文阅读资料地址整 Linux服务器集群系统(一 Linux服务器集群系统(二 Linux服务器集群系统(三 LVS集群中的IP负载均衡技 Linux服务器集群系统(四 1:19952000Internet主机数的变Internet的飞速发展给网络带宽和服务器带来巨大的。从网络技术的发展来看,网络带宽的增长远高于处理器速度和内存速度的增长,如100MEthernet、ATM、GigabitEthernet等不断地涌现,10GigabitEthernet即将就绪,在主干网上密集波分复用(DWDM)IP的主流技术[2,3],Lucent800GigabitWaveStar?OLSGigabitEthernet1Gb/s的原因是协IO的处理作更深入的研究。在高速网络上,重新设比较热门的站点会吸引前所未有的流量,例如根据Yahoo的发布,Yahoo已经每天发送6.25亿页面[5]。一些网络服务也收到的流量,如AmericanOnline的WebCache系统每天处理50.2亿个用户Web的次数式地增长而重负,不处理用户的请求,导致用户进行大部分都需要提供每天24小时、每星期7天的服务,对电子商务等如,根据Dell的发布[6],Dell现在每天在上的收入为一千四百万,一个小时的服务中断都会造成平均五十八万的损失。所以,这对CPUI/O处理能力。例如,HTTPS(SecureHTTP)取一个静态页面需要的处理性能比通过HTTP(Scalability(ailability247天可用的。(Manageabilityeffectiveness对称多处理(SymmetricMulti-Processor,简称SMP)是由多个对称的处SMP的优点是单一系统映像(SingleSystemImage),有共享的内I/O,易编程。由于SMP的可扩展能力有限,SMP服务器显然不能满足高可伸缩、高可用网SMP服务器是单一故障点(SinglePointofFailure),一性能/价格PCRISC服务器和标准网络设备因为大规模数的增长而接近线性增加,该系统的性能/PC服务器。所以,这种松耦合结构比紧耦合的多处理器系统具有更好的性能/价格比当然,用服务器集群系统实现可伸缩网络服务也存在很多性的工作透明性性能高可用性可管理性况下,软硬件模块的插入能做到即插即用(Plug&y)。可编程性(ProgrLinuxVirtualServer项Linux内核中实现了这些方法,将一组服布的广域网相互连接,在它们的前端有一个负载调度器(LoadBalancer)。LinuxLinux虚拟服务器(LinuxVirtual图2:虚拟服务器的结19985LinuxVirtualServer的自由软件项目,进行Linux服务器集群的开发工作。同时,LinuxVirtualServer项目是国内最早LinuxVirtualServerLinux操作系统实现一个(Reliability)和可管理性(Manageability)目前,LVSLinuxVirtualServerIPVSLayer-7KTCPVS和集群管理软件。可以利用LVS框架实现高可伸缩的、高可用的Web、Cache、MailMedia等网络服务;在此基础上,可以开发支持庞大用户数的、高可图3:Linux虚拟服务器框IP虚拟服务器软件在调度器的实现技术中,IPIP负载均衡技术中有通过网络地址转换(NetworkAddressTranslation)将一组服务VS/NAT技术(VirtualServerviaNetworkAddressTranslation),大多数商品化的IP负载均衡调度器产品都是使用此方法,如Cisco的LocalDirector、F5的Big/IPAlteon的ACEDirectorVS/NAT的缺点和网络服务的非IPVS/TUN(VirtualServerviaIPTunneling),和通过直接路由实现虚拟服务器的方VS/DR(VirtualServerviaDirectRouting),它们可以极大地提高系统的伸缩性。所以,IPVS软件实现了这三种IP负载均衡技术,它们的大致原理如下(在其他章节对其工作原理进行详细描述),VirtualServerviaNetworkAddressVirtualServerviaIP采用NAT技术时,由于请求和响应报必须经过调度器地址重写,当IP隧道转发至真实服务器,而真实服务器将应答比请求报文大许多,采用VS/TUN技术后,集群系统的最大吞吐10倍。VirtualServerviaDirectVS/DRMAC地址,将请求发送到真实服务器,而VS/UN技术一样,VS/R技PP与真实服务器都有一块网卡连在同一物理网段上。轮叫(Round轮叫(WeightedRound最少(Least调度器通过"最少连接"最少(WeightedLeast (Locality-BasedLeastConnections) "调度算法是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。该算法根据请求的目标IP地址找出该目带的基于局部性最少(Locality-BasedLeastConnectionswithReplication)"带的基于局部性最少"调度算法也是针对目标IP地址的负载均从一个目标IP地址到一组服务器的映射,而LBLC算法从一个IPIP地址找出IP地址对应的服务器组,按"最小连接"原则从服务器组中选出一目标地址散列(Destination"目标地址散列"调度算法根据请求的目标IP地址,作为散列键(Hash源地址散列(Source"源地址散列"IP地址,作为散列键(Hash内核Layer-7交换机IPTCP报文头地址,保证此连接的后继报文被转发到该服务器。这样,IPVS无法检查到请功能不一,有的提供HTML文档,有的提供,有的提供CGI,这就需要基于内容的调度(Content-BasedScheduling)。Layer-7交换方法,来避免用户空间与空间的切换和内存的开销。在LinuxLayer-7KTCPVS(KernelTCPVirtualServer)。目前,KTCPVS已经能对HTTP请求进行一些研究[5]表明WEB流中存在局部性。Layer-7交换可以充分利用的更好的相似性,可进一步提高单台服务器的Cache。LVSLVS功IPVS内部实现上,采用了高效的Hash函数和回收机制,能正确ICMP消息(有些商品化的系统反而不能)。虚持久的虚拟服务(如HTTP和HTTPS等需要该功能的支持),模服务(DenyofService),实现了三种防卫策略。适用Unix(如BSD、SunSolaris、HPUnix等),Mac/OS和WindowsNT/2000等。负载调度器能够支持绝大多数的TCP和UDP协议DNS,NTP,ICP,、音频流协议性LVS服务器集群系统具有良好的伸缩性,可支持几百万个并发连接。配1Gbits/s;如配置千兆网卡,则系统的最大吞吐量可接近可靠LVS服务器集群软件已经在很多大型的、关键性的站点得到很好的应软件LVS集群软件是按GPL(GNUPublicLicense)证的自由软证你的修改也是以GPL方式。LVS的应用实例来说明LVS的高性能和稳定性。我们所知的一些大型LVS应用实英国国家JANETCacheService()是为英国150Linux的门户站点( )用LVS将很多台VALinuxSMP服务器组成高性能的WEB服务,已使用年。WEB、FTP、MailingListCVS等服务,他们也使用LVS将负载以Realyer提供音频服务而闻名的Real公 20,000 ) )从其6.1版起已包含LVS代码,他们开发了一个LVS集群管理工具叫Piranha,用于控制LVS集群,VALinux( )向客户提供基于LVS的服务器集群TurboLinux的"Linux集群产品"TurboCluster实际上是基Linux和中软都提供基于LVS的集群解决方案,并在20009月召开的LinuxWorld2000上展示"Wetriedvirtuallyallofthecommercialloadbalancers,LVSbeatsthemallforreliability,cost,manageability,you-name-it."—JerryGlomphBlack,Director,Internet&TechnicalOperations,RealNetworks,SeattleWashington,USA "IcansaywithoutadoubtthatlvstoastsF5/BigIPsolutions,atleastinourrealworldimplementations.Iwouldn'ttradeagoodlvsboxforaCiscoLocalDirectoreither."—DrewStreib,InformationArchitect,VALinuxSystems, virtual-LVSLVS项目于1998年5月在上发布IPVS第一个版本源程序,一直得到了来自Internet的用户和开发者的鼓励和支持。应该说,刚开始发布的程序是JulianAnastasovBugfixes和改进,JosephMackLVSHOWTO文档;还感谢一些厂商赞助LVSIPVSAH(AuthenticationHeader)ESP(EncapsulatingSecurityPayload)等,这样IPVS调度器将实现IPSec的服务器集群。LVSTCP粘合(TCPSplicing)TCP转移(TCPHandoff)等方面,做一些尝试性工作,进一步改进LVS集群中的应用层调度。上用CommonLispC++的对象数据库系统,有些LVS如果你对LVS项目 , LinuxVritualServer项目的主 /),你可以获得LVS源代码和有关运行软件,及如果你在使用LVS的过程中遇到,请订阅我们的邮件列表lvs-Linux服务器集群系统(二LVS集群的体系(wensong@)2002年4月本文主要介绍了LVS集群的体系结构。先给出LVS集群的通用体系结构,并讨论了其的设计原则和相应的特点;最后将LVS集群应用于建立可伸缩的Web、Media、CacheMail引在过去的十几年中,Internet从几个研究机构相连为信息共享的网络发展成为LVSWeb、Media、CacheMail等网络服务。LVSLVSIP负载均衡技术和基于内容请求分发技术。调度器具有很好的图1:LVS集群的体系般来说,LVS集群采用三层结构,其体系结构如图1所示,三层主要组成部分balancerIP地址(我们可称之为IP地址)上的。poolstorage,调度器是服务器集群系统的唯一点(SingleEntryPoint),它可以采用IPIP负载均衡技达,也会被转发到前面选出的服务器。在基于内容请求分发技术中,服务器可以提供不同的服务,当客户请求到达时,调度器可根据请求的内容选择服务器执行请求。因为所有的操作都是在Linux操作系统空间中将完成的,它调度开销很小,所以它具有很高的吞吐率。文件系统的伸缩能力有限,一般来说,NFS/CIFS3~6个繁AFS[1]、GFS[2.3]、Coda[4]和Intermezzo[5]等。分布式文件系统可为(DistributedLockManager),它可能是分布式文件系统内部提供的,也负载调度器、服务器池和共享系统通过高速网络相连接,如100Mbps交换网络、MyrinetGigabit模扩大时互联网络成为整个系统的瓶颈。GraphicMonitor是为系统管理员提供整个集群系统的监视器,它可以监视系统的状态。GraphicMonitor是基于浏览器的,所以无论管理员在本地还是异地都可以监测系统的状况。为了安全的原因,浏览器要通过HTTPS(Secure为什么使用层次的体系结MailMedia等,来提供不同的可伸缩网络服务。明确的功能划分和清晰的为什么是共共享如分布式文件系统在这个LVS集群系统是可选项。当网络服务需要相同的内容,共享是很好的选择,否则每台服务器需要将相同的内容到本地硬盘上。当系统的内容越多,这种无共享结构(Shared-nothing 松,如Webmaster只需要更新共享 加时,所有服务器的空间也随之增大。对于大多数Internet服务来说,使用本地硬盘作Cache(如2Gbytes的空间),可以使得分布式文件系储区域网(StorageAreaNetworks)技术解决了集群的每个结点可以直接道(FiberChannel)SCSI(SharedSCSI)。InfiniBand是一个通用的高性能I/O规范,使得区域网中以更低的延时传输I/O消息和集群通讯消息,并且提供很好的伸缩性。InfiniBand得到绝大多数的大厂商的支持,如Compaq、Dell、Hewlett-Packard、IBM、In、和SUNMicrosystems等,它正在成为一个业界的标准。这些技术的发展使得共高可用况。当服务器对ICMP不可达时或者探测网络服务在指定的时间没有现端的调度器有可能成为系统的单一失效点(SinglePointof的健康状况。当从调度器不能听得主调度器的心跳时,从调度器通过ARP(GratuitousARP)VirtualIPAddress,同时接管主调VirtualIPAddress,主调度VirtualIPAddress并提供负载调度服务。这里,多条心跳线可以使得务器上,这对客户会造成一定的不便。为此,IPVSLinux内核中实可伸Web服LVSWeb2所示:第一层是负载调度器,一般采IPWeb服务HTTPHTTPS服务、或者两者都运2:基LVSWeb集对于动态页面(如PHP、JSP和ASP等),需要的动态数据一般在Web服务器共享。无论同一Web服务器上多个动态页面同一数据,还是不同Web服务对于静态的页面和文件(如HTML文档和等),可以在网络文件系统享的网络文件系统或者分布式文件系统,Webmaster可以看到统一的文档存储空间,和更新页面比较方便,对共享中页面的修改对所有的服务器结点来处理请求,而无需将Web文档等到结点的本地硬盘上。有些Web服务可能用到HTTP 踪和标识客户的机制。使用HTTP 关性,这些连接必须被发送到同一Web服务器。一些Web服务使用安全的HTTPS协议,它是HTTP协议加SSL(SecureSocketLayer)协议。另有些Web服务可能使用安全的HTTPS协议,它是HTTP协议加SSL协议。当客户HTTPS服务(HTTPS的缺省端口为443)时,会先建立一个SSL连接,来交换对称公钥加密的并协商一个SSLKey,来加密以后的会话。在SSLKey的生命周期内,后续的所有HTTPS连接都使用这个SSLKey,所以同一客户的不同HTTPS连接也存在相关性。针对这些需要,IPVS调度器可伸缩服IP负载均衡技术,可以使得整个系统有较高的吞吐率;第二层是Web服务器 图3:基于LVS的集细叙述),来架构集群系统。调度器将服务请求较均衡地分发到各个服务器上,而服务器将响应数据直接返回给客户,这样可以使得整个服务器可以运行各种服务软件。目前,LVS集群对于RealMedia、WindowsMedia和AppleQuicktime服务都有很好的支持,都有真实的系统在运行。一般来说,流服务都会使用一个TCP连接(如RTSP协议:Real-TimeStreamingProtocol)进行带宽的协商和流速的控制,通过UDP将流数据返回客户。这里,IPVSTCP和UDP集中考虑,保证来自同一客户的TCP和UDP连接会被转发到集群中同一台服务器,使得服务准确无误地进行。共享是集群系统中最关键的问题,因为文件往往非常大(一部片子需要几百兆到几千兆的空间),这对的容量和读的速度有较高的要求。对于规模较小的集群系统,例3至6个服务器结点,统可以考虑用带千兆网卡的Linux服务器,使用软件RAID和日志型文件系统,再运行内核的NFS服务,会有不错的效果。对于规模较大的集群系统,最好选择对文件分段(FileStrip)和文件缓存有较好支持的分 Real公司以其高压缩比的音频格式、Real服务器和器Realyer而闻名。Real公司正在使用以上结构将由20多台服务器组成的LVS可伸缩Web和集群,为其全球用户提供Web和音频服务。RealLVS击败所有他们尝试过的商品化负载均衡产可伸Cache服时。所以,Cache服务的可伸缩性很重要,当系统负载不断增长时,整个系统Cache服务的处理能力。尤其,在主干网上的Cache服务可Gbps的吞吐率,单台服务器(SUN目前最高端的Enterprise10000服务器)PC服务器Cache服务是很有效的方法,也是性能价格比最高的方法。基于LVS的Cache集群的体系结构如图4所示:第一层是负载调度器,一般IPCache服务器池,一般Cache服务器放置在接近主干Internet连接处,它们可以分4:基LVSCache集IPVS负载调度器一般使用IP隧道方法(即VS/TUN方法,将在以后文章中详细叙述),CacheCache服务器可能被放置不同的地方(Internet连接处),Cache服务器池可能不VS/TUN方法,调度器只调度WebCache请的情况下,Cache服务器要向源服务器发请求,将结果取回,最后将结果返回VS/TUN方法(VS/DR方法),调度器只调度一次请求,其他三次都由Cache服务器直接Internet完成。所以,这种方法对CacheCache服务器采用本地硬盘来可缓存的对象,因为 操作,且占有一定的比例,通过本地硬盘可以提高I/O的 务器间有的多播通道(MulticastChannel),通过ICP协议(InternetCacheProtocol)来交互信息。当一台Cache服务器在本地硬盘中未命中当前请求时,它可以通过ICP查询其他Cache服务器是否有请求对象的副本,若存在,则从邻近的Cache服务器取该对象的副本,这样可以进一步提高Cache服务中率。0JANETWebCache9LVSCache集群[8]0多台相互独Cache服务器的一半,用户反映网络速度跟夏天一样快(学生放暑假)见,通过负载调度可以摸平单台服务器的毛刺(Burs),提高整个系统的资源利用率。随着Internet用户不断增长,很多ISP他们邮件服务器超载的问题。当 到p 5:基LVS的可伸缩邮件集5所示:端是一个采用IP负载均衡技术的负载调度器;第二层是服务器LDAP(Light-weightDirectoryAccessProtocol)服务器和一组邮件服务器。第三层是数据,通过分布式文件系统来用户的邮件。集群 和邮件容量限额等在LDAP服务器中,可以通过HTTPS让管理员进行用户管理。在各个邮件服务器上运行SMTP(SimpleMailTransferProtocol)、POP3(PostOfficeProtocolversion3)、IMAP4(InternetMessageAccessProtocolversionHTTP/HTTPS服务。SMTP接受和转发用户的邮件,SMTP服务进程查询LDAP服务器获得用户信息,再邮件。POP3和IMAP4通过LDAP服务器HTTP/HTTPS服务是让用户通过浏览器可以邮件。IPVS调度器将SMTP、POP3、IMAP4HTTP/HTTPS请求流负载较均衡地SMTP、POP3、IMAP4和结点间的负载均衡机制,则需要相应的邮件迁移机制来避免邮件的倾斜电信只要用一个邮件就可以)。当邮件用户不小LVSWeb、MediaCacheMail了系统架设时应注意的要点。在后续的文章中详细解释LVS集群的Linux服务器集群系统(三LVS集群中的IP负载均衡技(wensong@)2002年4月LVS集群中实现的三IP负载均衡技术(VS/NAT、VS/TUNVS/DR)的工作原理,以及它们的优缺点。前术,IP负载均衡技术是在负载调度器的实现技术中效率最高的。在已有IP负载均衡技术中,主要有通过网络地址转换(NetworkAddressVS/NAT技术(VirtualServerviaNetworkAddressTranslation)VS/NAT的缺点和网络服务的非对称性的基础上,我IPVS/TUN(VirtualServerviaIPTunneling),VS/DR(VirtualServerviaDirectRouting),它们可以极大地提高系统的伸缩性。VS/NAT、VS/TUNVS/DRLVSIP负载均衡技TCPUDP协议。下面简述当前用服务器集群实现高基于RR-DNS的解决方NCSAWEBRR-DNS(Round-RobinNameSystem)的原型系统[1,2]。它的结构和工作流程如下图所1:基RR-DNS的可伸WEB服务(注:本图来自文献【9】WEBAFS(AndrewFileHTML文档。这组服务器拥有相同的(),当用户按照这个时RR-DNS服务器会把轮流解析到这组服务器的不同IP地址,从而将负载分到各台服务器这种方法带来几个问题。第一,服务器是一个分布式系统,是按照一定的层次结构组织的。当用户就解析请求提交给本地的服务器,它会因不能直接解析而向上一级服务器提交,上一级服务器再依次向上提交,直到RR-DNS服器把这个解析到其中一台服务器的IP地址。可见,从用户到RR-DNS间存在多台服器,而它们都会缓冲已解析的名字到IP地址的映射,这会导致该服器组下所有用户都会同一WEB服务器,出现不同WEB服务器间严重的负载不平衡。为了保证在服务器中到IP地址的映射不被长久缓冲,RR-DNS在到IP地址的映射上设置一个TTL(TimeToLive)值,过了这一段时间,服务器将这个映射从缓冲中淘TTLTTL期间,很多请求会被WEB服务器上,同样会导致严重的负载不平衡。若这个值太小,例如是0,会导致本地服务器频繁地向RR-DNS提交请求,增加了RR-DNS第二,用户机器会缓冲从名字到P地址的映射,而不受L值的影响,用户的请求会被送到同一台WEB服务器上。由于用户 请求的突发性和访问方式不同,例的人一下就离开了,而有的人 可长达几个小时,所以各台服务器间的负载仍存在倾斜(Skew)而不能控制。假设用户在每个会话中平均请求数为,负载最大的服务器获得的请求数额高于各服务器平请求数的平均比率超过百分之三十。也就是说,当L值为0时,因为用户访问的突发性也会存在着较严重的负载不平衡。该服务器的用户看到服务中断,即使用户按“Reload”按钮,也无济于事。系和应用软件升级,这需要修改RR-DNS服务器中的IP地址列表,把该服务器的IP地址从中划掉,然后等上几天或者更长的时间,等所有服器将该基于客户端的解决方把以负载均衡的方式将请求发到不同的服务器。例如,NetscapeNavigator浏览器Netscape的主页时,它会随机地从一百多台服务器中挑选第N 法,Netscape只是利用它的Navigator避免了RR-DNS解析的麻烦,当使用IE等其他浏览器不可避免的要进行RR-DNS解析。Smart[3]是Berkeley做的另一种基于客户端的解决方法。服务提供JavaApplet在客户方浏览器中运行,Applet向各个服务器发请求来收Applet中实现,当服务器没有响应时,Applet向另一个服务器转基于应用层负载均衡调度的解决方层的负载调度器。当用 请求到达调度器时,请求会提交给作负载均衡Zeus负载调度器[4]、pWeb[5]、Reverse-[6]和SWEB[7]等。Zeus负载调度器是Zeus公司的商业产品,它是在ZeusWeb服务器程序改写而成的,采用单进程驱动的服务器结构。pWebApache1.1WEB调HTTP请求到达时,pWeb会选出一个服务器,重写请求并向Reverse-利用Apache1.3.1中的模块和Rewrite模块实现一个可伸缩WEB服务器,它与pWeb的不同之处在于它要先从的cache器返回的结果转发给客户。SWEBHTTPredirect错误代码,将WEBWEB服务器根据自己的负载情况,redirectWEB服务器,WEB服务器。34台时,调度器本身可能会成为新的瓶HTTPFTP、Mail、POP3等应用,都需要重写调基于IP层负载均衡调度的解决方用户通过虚拟IP地址(VirtualIPAddress)服务时,请求的报文会VirtualIPAddress改写成选定服务器的地址,报文的目标端口VirtualIPAddress和相应的端口,再把报文发给用户。Berkeley的MagicRouter[8]、CiscoLocalDirectorAlteonACEDirectorF5Big/IP等都是使用网络地址转换方法。MagicRouter是在Linux1.3版本的原型系统,没有成为有用的系统存。Cisco的LocalDirector、Alteon的ACEDirectorF5Big/IP是非常昂贵的商品化系统,它们支持部分TCP/UDPICMP处理上存在问题。IBMTCPRouter[9]使用修改过的网络地址转换方法在SP/2系统实现可伸缩的WEB服务器。TCPRouter修改请求报文的目标地址并把它转发给选出的服务器,服务器能把响应报文的源地址置为TCPRouter地址而非自己的地作系统内核都需要修改。IBM的NetDispatcher[10]TCPRouter的后继者,它将报文转发给服务器,而服务器在non-ARP的设备配置路由器的地址。这种方法与LVS集群中的VS/DR类似,它具有很高的可伸缩性,但一套IBMSP/2NetDispatcher需要上百万美金。总的来说,IBM的技术还在贝尔的ONE-IP[11]中,每台服务器都独立的IP地址,但都用IPAliasVIP地址,采用路由和广播两种方法分发请求,服务器收到VIPVIP为源地址返回结果。这种方法也是为了IPAliasVIP地址,会导WindowsNT负载均衡服务(WindowsNTLoadBalancingService,WLBS)[12]1998ValenceResearch公司获得的,程序和TCP/IP协议栈之间,获得目标地址为VIP的报文,它的过滤算法检查报文的源IP地址和端,保证只有一台服务器将报文交给上一层处理。但通过NAT实现虚拟服务器地址(///)[64,65,66]Internet上使用,而是专门为内部网络预留的。当内部网络中的主机要Internet或被Internet时,就需要采用网络地址转换(NetworkAddressTranslation,NAT),Internets上可用的外部地址。NAT的工作原理是报文头(目标地址、源地址和端口等)被正确改写IPIP地址的服务器组也认为它们是IP地址上的一个虚拟服务。VS/NAT的体系结构如图2所示。在一组服务器前有一个调度器,它们是通过Switch/HUB相连接的。这些服务器提供相同的网络服务、相同的内容,即不管请求被发送到哪一台服务器,执行结果是一样的。服务的内容可以到每图2:VS/NAT的体客户通过VirtualIPAddress(虚拟服务的IP地址)网络服务时,请求器,将报文的目标地址VirtualIPAddress改写成选定服务器的地址,报文Hash表中记录这个连接,当这个连接的下一个Hash表中可以得到原选定服务器的地址和端口,进行同VirtualIPAddress和相TCP连接中,根TCPW.RichardStevens的《TCP/IPIllustratedVolumeIUDP中,我们UDP状态。不同状态的超时值是可以设置的,在缺省情况下,1分钟;UDP5分钟。当连接终止或超时,调度器将Hash表中删除。VirtualIPAddress上提供的服务,而服务器集群Checksum的算法TCPChecksumChecksum端。我们所知道有这个问题的网络服务有FTP、IRC、H.323、CUSeeMe、RealAudio、Real、Vxtreme/Vosiac、VDOLive、VIVOActive、TrueSpeech、RSTP、PPTP、StreamWorks、NTTAudioLink、NTTSoftwareVision、YamahaMIDPlug、iChatPager、QuakeDiablo。VS/NAT33:VS/NAT的例VS/NAT的配置如下表所示,所有到IP地址为和端口为:21上。而到其他端口的报文将被VirtualIPRealIP121Web服务的报文可能有以下的源地址和目标地址:通过IP隧道实现虚拟服务器在VS/NAT的集群系统中,请求和响应的数据报需要通过负载调度器,的新瓶颈。大多数Internet服务都有这样的特点:请求报文较短而响应报文IP隧道(IPtunneling)是将一个IP报文封装在另一个IP报文的技术,这可以使得目标为一个IP地址的数据报文能被封装和转发到另一个IP地址。IP隧IP封装技术(IPencapsulation)。IP隧道主要用于移动主机和虚拟私有网络(VirtualPrivateNetwork),在其中隧道都是静态建立P务器直接返回给客户。但在这里,后端服务器有一组而非一个,所以我们不可IP地址上的虚拟网络服务。VS/TUN的体系结构如图4所示,各个服务器将VIP地址配置在自己的IP隧道设备上。图4:VS/TUN的体VS/TUN的工作流程如图5所示:它的连接调度和管理与VS/NAT中的一选择一台服务器,将请求报文封装在另一个IP报文中,再将封装后的IP报文转发给选出的服务器;服务器收到报文后,先将报文解封获得原来目标地址图5:VS/TUN的工在这里需要,根据缺省的TCP/IP协议栈处理,请求报文的目标地址为VIP,响应报文的源地址肯定也为VIP,所以响应报文不需要作任何修改,可6:半TCP有限状态通过直接路由实现虚拟服务器VS/TUN方法相同,VS/DRInternet服务的非对称特点,负法类似(其中服务器上的IP地址配置方法是相似的),但IBM的NetDispatcher是非常昂贵的商品化产品,我们也不知道它内部所使用的机制,其中有些是IBM的专利。VS/DR7所示:调度器和服务器组都必须在物理上有一个网HB相连。VIP地址VIPVIPNonARPVIP的网络请求。图7:VS/DR的体VS/DR8VS/NATVS/TUNVS/DR中,调度器根据各个服务器的负载情况,动态地选择一台服务器,不IPMACMAC地MAC图8:VS/DR的工VS/DRTCP/IP协议栈处理,请求报文的目标地址为VIPVIP,所以响应报文不需要作任何修改,可TCP有限状态机进行状态迁移。_Non-arpserverserverlowHighHighserverloadownOwnWeb服VirtualServerviaVS/NAT的优点是服务器可以运行任何支持TCP/IP的操作系统,它只需要一个IP地址配置在调度器上,服务器组可以用私有的IP地址。缺点是它的伸缩能力有限,当服务器结点数目升到20时,调度器本身有可能成为系统的新瓶颈,因为在VS/NAT中请求和响应报需要通过负载调度器。我们在Pentium16660us,性能更高的TCP536Bytes,则调度器8.93MBytes/s.我们再假设每台服务器的吞吐量为800KBytes/s10台服务器。(注:这是很早以前基于VS/NAT的的集群系统可以适合许多服务器的性能要求。如果负载调度器成为系统新的瓶颈,可以有三种方法解决这个问题:混合方法、VS/TUN和VS/DRDNSVS/NAT负载调度器,每个负载调度器带自己的服务器集群,同时这些负载调度器又通过RR-DNS组成简单。但VS/TUN和VS/DR是提高系统吞吐量的更好方法对于那些将P地址或者端在报文数据中传送的网络服务,需要编写相应应用模块来转换报文数据中的P地址或者端。这会带来实现的工作量,时应用模块检查报文的开销会降低系统的吞吐率。VirtualServerviaIPVS/TUN的集群系统中,负载调度器只将请求调度到不同的后端服务器,100Mbps的全双工网卡,整个系统的最大吞吐量可超过1Gbps。所以,VS/TUN可以极大地增加负载调度器调度VS/TUN技术对服务器有要求,即所有的服务器必须支持“IPTunneling”或者“IPEncapsulation”协议。目前,VS/TUN的后端服务器主要运行Linux操作系统,我们没对其他操作系统进试。因为“IPTunneling”正成为各个操作VS/TUN应该会适用运行其他操作系统的后端服务器。VirtualServerviaDirectVS/TUN方法一样,VS/DR调度器只处理客户到服务器端的连接,响应数VS/TUNIP隧道的开销,但是要求负载调度器与实际不作ARP响应,或者能将报文重定向(Redirect)到本地的Socket端口上小LVSIP负载均衡技术。在分析网络地址转换方VS/TUN,和通过直接路由实现虚拟服务器的方法Linux服务器集群系统(四LVS集群的负载调(wensong@)2002年5月本文主要讲述了LVS集群的IP负载均衡软件IPVS在内核中实现的各种连接调度算法。针前在上一篇文章中,我们主要讲述了LVS集群中实现的三种IP负载均衡技术,IPIPVS在内核中所实现的各种连接调度算法;第二部分给出一个动态反馈负载均衡算法(Dynamic-feedbackloadTCPUDPUDP数据报文的调度,IPVS来自同一地址(IP地址和端口)UDP数据包会被调度到同一台服务器。IPVS在内核中的负载均衡调度是以连接为粒度的。在HTTP协议(非持久)轮叫调度(Round-Robin轮叫调度(WeightedRound-Robin最小连接调度(Least-Connection最小连接调度(WeightedLeast-Connection基于局部性的最少(Locality-BasedLeastConnections带的基于局部性最少(Locality-BasedLeastConnectionswithReplicationScheduling)目标地址散列调度(DestinationHashing源地址散列调度(SourceHashing轮叫调轮叫调度(RoundRobinScheduling)算法就是以轮叫的方式依次将请求调i=(i+1)modni台服务轮叫调度算法流S{S0,S1,Sn-1},ij=i;do{j=(j+1)modn;if(W(Sj)>0){i=j;returnSi;}}while(j!=i);returnNULL;虽然Round-RobinDNS方法也是以轮叫调度的方式将一个解析到多个IP地址,但轮叫DNS方法的调度粒度是基于每个服务器的,服务器平衡。这里,IPVS轮叫调度算法的粒度是基于每个连接的,同一用户的不同DNS的轮叫调轮叫调度(WeightedRound-RobinScheduling)算法可以解决服务器值为1。假设服务器A的权值为1,B的权值为2,则表示服务器B的处理性能是A的两倍。轮叫调度算法是按权值的高低和轮叫方式分配请求到各服轮叫调度算法流S{S0,S1,Sn-1},W(Si)Siicw表示集合S中所有服务器的最大权值, i1,cwwhile(true)while(true)i=(i+1)modn;if(i==0){cw=cw- if(cw<=0){cw=max(S);if(cw==return}}if(W(Si)>=cw)returnSi;}例如,有三个服务器A、B和C分别有权值4、3和2,则在一个调度周期内(modsum(W(Si)))AABABCABC。轮叫调度算法还是比较简单和高效。当请求的服务时间变化很大,单独的轮叫调度算法依然会导器可用,算法返回NULL,所有的新连接都会被丢掉。轮叫调度也无需记最小连接调最小连接调度(Least-ConnectionScheduling)算法是把新的连接请求分配1;当连接最小连接调度算法流S={S0,S1,...,Sn-1},W(Si)SiC(Si)Sifor(m=0;m<n;m++)for(m=0;m<n;m++)if(W(Sm)>0)for(i=m+1;i<n;i++){if(W(Si)<=0)if(C(Si)<C(Sm))m=}return}}returnTCPTIME_WAIT状态,TCPTIME_WAIT一般为2分钟,此时连接还占用服务器的资源,所以会出现这样情形,性能高的服务最小连接调最小连接调度(WeightedLeast-ConnectionScheduling)算法是最权值为1,系统管理员可以动态地设置服务器的权值。最小连接调度在调最小连接调度的算法流S={S0,S1,...,Sn-1},W(Si)SiC(Si)SiCSUM=ΣC(Si) (i=0,1,n-1)。当前的新连接请求会被发送服务器Sm(C(Sm)/CSUM)/W(Sm)=min{(C(Si)/CSUM)/W(Si)} 1,.,n-1)W(Si)CSUMC(Sm)/W(Sm)=min{C(Si)/ (i=0,1,.,n-C(Sm)W(Sm)C(Si)W(Si)C(Sm)*W(Si)C(Si)*W(Sm)。同时保证服务器的权值为零时,服务器不度。所以,算法只要执行 程for(m=0;m<n;m++)if(W(Sm)>0)for(i=m+1;i<n;i++)if(C(Sm)*W(Si)>m=}return}}return基于局部性的最少调基于局部性的最少调度(Locality-BasedLeastConnectionsSchedulingLBLC)IP地址的负载CacheCache集群中客户请求报IP地址是变化的。这里假设任何后端服务器都可以处理任一请求,算IP地址的请求调LBLCIPIP地址最近使用的服务LBLC调度算法流S={S0,S1,...,Sn-1},W(Si)Siif(ServerNode[dest_ip]isNULL)thenn=if(nisNULL)thenreturnNULL;ServerNode[dest_ip].server=n;}elsen=ServerNode[dest_ip].server;if((nisdead)OR(C(n)>W(n)thereisanodemwithC(m)<W(m)/2)))then{n=WLC(S);if(nisNULL)thenreturnNULL;ServerNode[dest_ip].server=n;}}ServerNode[dest_ip].lastuse=Now;returnn;此外,对关联变量ServerNode[dest_ip]要进行周期性的回(GarbageCollection),IP地址到服务器关联项进行回收。过期的关联项是指哪些当前时间(jiffies)减去最24小带的基于局部性最少调带的基于局部性最少调度(Locality-BasedLeastConnectionswithReplicationScheduling,以下简称为LBLCR)IP是它要从一个目标IP地址到一组服务器的映射,而LBLC算法从一个IP地址到一台服务器的映射。对于一个“热门”站点的服务请求,一台Cache服务器可能会忙不过来处理这些请求。这时,LBLC调度算从所有Cache服务器中按“最小连接”Cache服务器,映射该“热门”CacheCache服务器也会超载,就会重复上述Cache服务器。这样,可能会导致该“热门”站点的映像会出现在所有的Cache服务器上,降低了Cache服务器的使用效率。LBLCR调度算将“热门”Cache服务器(服务器集合),当该“热门”站点的请“热门”Cache服务器数目。这样,该“热门”CacheCache的程度。LBLCR调度算法的流程如下LBLCR调度算法流S{S0,S1,Sn-1},W(Si)SiC(Si)SiServerSet[dest_ip]是一个关联变量,IPHashWLC(S)在集合S中的 集合S中的 修改时间,Tif(ServerSet[dest_ip]isNULL)then{n=WLC(S);if(nisNULL)thenreturnNULL;addnintoServerSet[dest_ip];}elsen=WLC(ServerSet[dest_ip]);if((nisNULL)OR(nisdead)OR(C(n)>W(n)ANDthereisanodemwithC(m)<W(m)/2)))then{n=WLC(S);if(nisNULL)thenreturnNULL;addnintoServerSet[dest_ip];}if(|ServerSet[dest_ip]|>1Now-ServerSet[dest_ip].lastmod>T)then{m=WGC(ServerSet[dest_ip]);removemfromremovemfrom}}ServerSet[dest_ip].lastuse=if(ServerSet[dest_ip]changed)thenServerSet[dest_ip].lastmod=Now;return此外,对关联变量ServerSet[dest_ip]也要进行周期性的回(GarbageCollection),IP地址到服务器关联项进行回收。过期的关联项是指哪些当前时间(jiffies)减去最24小时。目标地址散列目标地址散列调度(DestinationHashingScheduling)算法也是针对目标IP地址的负载均衡,但它是一种静态映射算法,通过一个散列(Hash)函数IP地址映射到一台服务器。目标地址散列调度算法流S={S0,S1,...,Sn-1},W(Si)SiC(Si)SiServerNode[]256(Bucket)2n=ServerNode[hashkey(dest_ip)];if((nisdead)OR(W(n)==0)(C(n)>2*W(n)))thenreturnNULL;returnHash函数如下:素数乘Hash函staticinlineunsignedhashkey(unsignedintstaticinlineunsignedhashkey(unsignedint{return UL)&} UL是2到2^32( (sqrt(5)-1)/2= =源地址散列调源地址散列调度(SourceHashingScheduling)算法正好与目标地址散列IP地址,作为散列键(HashKey)从静态分IP地址,所以这里不一一叙述。系统的吞吐率。图1显示了该算法的工作环境,在负载调度器上运行MonitorDaemon进程,MonitorDaemon来监视和收集各个服务器的负载信息。MonitorDaemon可根据多个负载信息算出一个综合负载值。MonitorDaemon将各个服务器的综合负载值和当前权值算出一组新的权值,若新权值和当前权值的差值大于设定的阀值,MonitorDaemon将该服务器的权值设置到内核中的IPVS调度中,而在内核中连接调度一般采用轮叫调度算法或 图1:动态反馈负载均衡算法的工作环连接调当客户通过TCP连接网络时,服务所需的时间和所要消耗的计算资源进行计算密集的查询、数据库、很长响应数据流;而负载比较轻的请求往HTML页面或者进行很简单的计算。请求处理时间的千差万别可能会导致服务器利用的倾斜(Skew),即服务器WEBA、、CDD是大图像文件,浏览器需要建立四个连接来取这些文件。当多个用户通过浏览器同时该页面时,最的情况是所有D文件的请求被发到同一台服务器。所以说,有可能存在这样情况,有些服务器已经超负荷运行,而其他服务器基本是闲置着。同时,有些服务器已经忙不过来,有很长的请求队列,还不断地收到新的请求。反过来说,这会导致客户长时间的等待,觉得系统的服务质量差。D文件的请实际TCP/IP流量的特[2,3,4,5]WANLANWEB动态反馈负载均衡机TCP/IP流量的特征通俗地说是有许多短事务和一些长事务组成,而长事务的务器的负载。例如,在IPVS调度器的内核中使用轮叫调度(WeightedRound-RobinScheduling)算法来调度新的请求连接;在负载调度器的用户MonitorDaemon。MonitorDaemon定时地监视和收集各个服务器的负载信息,根据多个负载信息算出一个综合负载值。MonitorDaemon权值的差值大于设定的阀值,MonitorDaemon将该服务器的权值设置到内核IPVS调度中。过了一定的时间间隔(2秒钟),MonitorDaemon再综合负Si,可以得到分别在时T1T2Ci1Ci2T2-T1SiNi=Ci2-Ci1T2-T1内Si收到新连接数{Ni}SiINPUTi为其新连接数与n台服务器收到平均连接数的比值,其为CPULOADi、DiMi和当前进程数目Pi。有两SNMP(SimpleNetworkManagementProtocol)MonitorD

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论