




已阅读5页,还剩70页未读, 继续免费阅读
(计算机应用技术专业论文)面向内容交换的负载均衡技术的研究与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
e 立銮道占堂亟堂位迨塞虫塞煎至 中文摘要 “计算机基础教学平台”和“在线考试系统”属于大学计算机基础教学改革 项目,这两套系统是使用动态w 曲技术构建的应用系统。目前两套系统的硬件体 系结构为单一的w 曲服务器体系结构,在实际应用中,己经无法满足高并发数、 可伸缩性和高性价比等要求。在这样的背景下,w 曲服务器负载均衡集群系统应 运而生。该集群由一组互连的相互独立的服务器节点和均衡请求的调度器组成, 对外构成一个单一系统映像。 使用负载均衡集群技术可以大大提高w 曲服务质量。基于t c m p 的四层负载 均衡技术有很好的转发性能,而且技术成熟,得到了广泛应用。但是这种技术由 于看不到请求内容,不能做出有针对性的负载决策。对w 曲服务来说,不能根据 用户请求的内容进行报文交换是不够的,甚至会导致严重的错误。面向内容交换 的负载均衡技术的出现满足了这种需求,不仅能根据请求内容进行负载,而且能 够支持h t t p 的会话应用,具有良好的应用j j 景。 面向内容的交换是国际上最近兴起的研究课题,目l ; 尚未出现成熟的产品和 研究成果。本文在面向内容交换相关文献资料的研究基础上,尤其是在l i 删x 虚拟 服务器项目( l v s ) 的研究基础上,在l i i l l i 】内核中开发了支持h r r p 协议的内核 内容交换模块k c s m ( k e m c lc o n 衄m b a s e ds w i t c hm o d u l e ) ,并采用t c p 状态迁 移的报文转发技术。可以满足哪请求内容交换和h r r p 会话交换。同时,可 以方便的扩展支持更多的应用层协议。 该模块基本验证了本文所提出的面向内容交换解决方案,但是在性能优化方 面需要做进一步研究和探索,尚有很多工作要做。 关键词:面向内容交换;负载均衡集群技术;s e s s i o n ;t c p 状态迁移:n e t f i l t e r 分类号:t p 3 1 1 ,5 ;t p 3 9 3 0 2 毡塞銮道厶堂亟堂位论塞基si 墨! a b s t r a c t t h e “c 0 1 l e g ec o m p u t e rt e a c l l i n gp l a t f o n n ”a n dt l l e “c a 唧i i so n - l i n ee x 枷 s y s t e m ,a r et w os u b p r o j e c t s 、i 龇“c o n g t m c t i o na n dr e f o 咖o fc o r ec o m p u t e r c 删c u i 唧”p r o j e c t b o t ho fm e ma r ew e ba p p i i c 撕o i l sb m i tu p o nd y n a l l l i cw e b t c c l u l o l o g i e s c u 埘e n t l y ,w ed e p l o yt h e mo n as i n g l ew e b s e n ,e ru s i n gb u s i n e s sm a c h i l l c b u ti na c t i l a la p p l i c a t i o ne n v 的i l i n e n t ,t l l es i i l g l e m a c m n ea r c l l i t e c t u r ed o e s n tm e c to u r r c q u i 嘲n e n t se s p e c i a l l yi ns u c hc o n d i t i o n sl i k eh i g l lc o n c u r r e n tt r a n s a c t i o n ,e x t e i l s i b i l i 劬 a n dh i g l lp e r f o 册a n c e 砸c er a t i o ab e t t e rs o l u t i o ni st 0b u i l dal o a db a l a i l c i n gc l 璐t e r f o rw e bs e r v e r s t h ec i u s t e rc o n s i s t so fag r o 叩o fi n t e r c o i m e c t e da 1 1 di i l d e p e n d e n t s e r v e rn o d e sw o r k j n gc o o p e r a t i v e l y 晰t l lt h el o a db a i 觚c e rt op r o v i d eas i n g l es y s t e m i m a g e l o a db a l a n c ec l u s t e rt e c l l l l o l o g yc 弛i n c r e a s et h eq l l a l 毋o fw e bs e i c e 1 1 1 e l a y e r _ 4s w i t c hm e t h o db a s e do nt c p i pa r ew i d e l yd 印l o y e d 锄du s e db e c a l l s eo fg o o d f o h 训p e r f b m l 锄c e h o w e v e r ,t h i sm e t h o dc 锄o tm a k ep e r t m e n ti o a db a i a n c e d e c i s i o n sb e c a i l s ei tc a n r l o tr e c o g n i z et l l er e a lc o m e mi i lr e q u e s tp a c k e t m e a n w t l i l e ,i ti s i n e 伍c i e mi fp a c k e t sc a 衄o tb eb a l a n c e da c c o r d i n gt om ei l s e r sn e e d s i tm a ye v e nl e a d t os 舐o u se r r o r s t h ee x i s t e n c eo fc o n t e n t - b 醛e ds w i t c hm 砒o dm e e t st l l er e q l l i r e m e n t i na d d i t i o nt 0t h el a y e r 2 - 3 - 4i 幽肌a t i 叽a v a i l a b l ei nm ep a c k 吒ac o m e n t - b 嬲e ds w i t c h u s e s 印p l i c a t i o nl e v e i i n f o m l a t i o n t om u t et r a m ci nt l l en e t w o r k c o n t e n t - b a s e d 州t c hi san e wr e s e a r c ht | l e s i s a tp r e s e n t ,t h c r ca r en om a t u r e p r o d u c t so rr e s e a r c hc o n c l l l s i o n i l lt l l i sp a p id e s c 抽e 圮d e s i 弘锄di m p l e m e r l t a t i o n o fap r o t o t y p ek e n l e l n t e n t - b a s e ds w i t c hm o d u l ei 1 1l i m k e r n e l t b ec o n t c n t b a s c d s w i t c hm o d u l eu s e st c ph a l l d o 仃a sp a c k e tf o r w a r d i n gm e c h a i l i s m a l s oic 0 v e r 铆o s p e c i n cs 、i t c hp o l i c i e st h tib e l i e v ea r ei d e a lc a n d i d a t e sf o rc o n t e n t - b 雒e ds 、】l ,i t c h 沁: o n ei sr o u t i i 培、e bc o m e m _ b a s e do nu n i f o 蛐r j e s o u r c el o c a t o 塔( u r l ) a n dt l l eo t h e ri s s e s s i o 小a w a r es w i t c h i n go f h t t p t h i sm o d u l ev a l i d a t e s l es o l u t i o no fc o m e n t _ b a s e ds w i t c hd e s c 曲e di nt h ep a p b u t 如n l e rr e s e a r c ha i l dd e v e l o p m e n ta r en e e d e dt os o l v et l l ep e r f b m l a n c ep r o b l e m k e y w o i m s :c o m e n t _ b a s e ds w n c h ;l o a db a l a n c i n gt e c t h l o l o g y ;s e s s i o n ;t c p h a n d o 蛾n e t 6 l t e r c l a s s n 0 :t p 3 “5 :t p 3 9 3 0 2 致谢 本论文的研究开发工作以及论文的撰写都是在我的导师王移芝老师的悉心指 导下完成的。在此,首先向王老师表示我衷心的感谢和崇高的敬意。王老师严格 的要求、谦逊爽快的作风、平易近人的性格深深地影响着我,一直鞭策着我学习 进步。 其次,感谢王洪老师在我学习研究过程中对我的指导和教诲,王老师治学严 谨、学识渊博、为人正直、待人诚恳,这些都给我以深深的影响,是我一生的学 习典范。 还要衷心地感谢贾卓生老师在学业上对我的悉心教导,在我完成毕业设计期 i 日j 给予我的帮助,贾老师认真严谨的治学态度和精益求精的工作作风使我受益匪 浅,时时激励和鞭策着我,给我留下了深刻的印象,并将永远是我学习的榜样和 不懈追求的目标。 此外,我还要信息中心的所有老师和实验室的所有同学,在两年多研究生生 涯中给予我的支持和帮助,在此表示深深的感谢。 最后,对百忙之中审阅我的论文和参加答辩会的老师们表示深深的感谢! e立銮堑本堂亟堂焦监塞鳖监 l 绪论 1 1 研究背景 “计算机基础教学平台”和“在线考试系统”的研发和应用,促进了计算机 基础教学的发展和进步。这两套系统均采用b s 模式,分三层结构,前台的用户 界面和业务处理使用j s p 开发,后台的数据库使用0 r a c l e 8 i ,中间层的数掘库连接 池使用j “a 开发。w c b 服务器使用开源的r e s h 。整个应用系统运行的硬件平台采 用d e l l 的p o w e r e 起e6 8 5 0 服务器,操作系统平台采用r e d h a t 的a s 4 。 两套系统在功能上可以满足绝大多数教学环节的要求,从使用者的反馈来看, 系统表现是令人满意的。在支持的并发数上,考试系统平台可以支持3 5 0 4 0 0 人同 时在线考试。计算机基础教学平台教学平台的并发数也在3 0 0 人左右。但实际上 系统支持的并发数和可扩展性相当有限,不能满足闩益增长的使用人数和系统功 能扩展的需要。在最近两年探索解决系统并发数和可扩展性的问题过程中,尝试 了多种方案,比如重新设计业务流程处理,优化后台的w 曲程序,优化后台数据 库s q l 查询以及优化数据库连接池性能。但是最终的实践证明,整个运行系统的 优化对性能的提升非常有限,始终不能达到令人满意的效果。 总之,业务量的发展早已超过预计,追求服务器硬件的升级和软件系统的性 能优化造成了过高的投入和维护成本,而且性价比大大低于预期。针对目i j 的运 行和使用情况,综合考虑系统的研发投入和性能因素,想到使用面向内容交换的 负载均衡集群技术支持w 如应用系统。 1 2 负载均衡集群介绍 1 2 1负载均衡集群的概念 负载均衡集群通常在非常繁忙的w 曲站点上采用,是分布式作业调度系统 的一种实现。集群前端是负载均衡器,真实服务运行在一系列服务器节点上。前 端根据预设负载均衡技术和调度算法将服务请求分配至真实服务器结点。系统支 e塞銮适厶堂亟堂 位 迨塞 缝盈 持进程和结点的动态扩展。 负载均衡集群是实现多台服务器协同工作和并行处理业务的手段,核心思想 是增加并行工作的主机数量,根据当前的主机运行状况,采用一定的调度策略, 将大量的请求报文分配到不同的服务器处理,以减轻单个服务器的工作负载,提 高资源利用率和应用系统的运行性能。 整个负载均衡集群包括真实服务器( r e a ls e n ,e r ) 和负载均衡器( d i s p a t c l l e r ) 。 真实服务器是真正响应用户请求,为用户提供服务的设备;负载均衡器是在集群 前端接受用户请求,根据一定的负载调度策略和真实服务器的实际运行状况选择 真实服务器,分配用户请求的设备。 1 2 2 负载均衡技术 负载均衡器集中处理网络作业,统一过滤所有的网络流量( 单向或者双向) , 并且实时监控集群节点的资源状态,决定新的流量在集群节点中的分配。负载均 衡器可通过以下几个基本的方法来获得网络负载均衡,这些方法可以结合使用, 形成更高级的系统。 1 n a t ( n e t w o r ka d d r e s st r a n s l a t i o r l ) 网络地址转换 这种负载均衡技术的基本原理是将内部或专用网络地址和路由信息转换为外 部或公用网络地址和路由。该技术可以节省i p v 4 地址空间,均衡器能够起到一定 程度的防火墙作用,适用于将企业内部网络进行外连。但是负载均衡器很容易成 为集群系统的瓶颈。 2 d n s ( d o m a i nn 锄es y s t e m ) 轮转法 可伸缩的、b 服务器集群系统最早就是基于r r d n s ( r o l u l d r o b i nd o m a i n n 锄es y s t e m ) 实现的。将一组w 曲服务器配置为相同的域名,当用户通过这个域 名访闯w 曲服务时,r r d n s 服务器会把域名轮流解析到这组服务器的不同i p 地 址,从而使得用户使用相同的域名访问不同的服务器,达到负载均衡的目的。 使用d n s 做负载均衡是一种简单有效的方法,d n s 作为负载均衡器负载轻, 可以快速轮询实现负载均衡。但是缺点也是显而易见的。首先,简单的轮询方法 不能区分服务器的差异,无法结合动态负载均衡算法,负载均衡效果差;其次, 不能反映服务器的当前运行状态,有可能造成访问失效;最后,d n s 服务器和客 2 韭塞窒堑太堂亟堂 僮途 塞 缝途 户端会缓冲解析的域名到i p 的映射,造成实际的负载不均衡。 3 嵌入客户端应用的负载均衡技术 要求客户程序有一定的服务器集群知识,客户端的应用软件集成负载均衡功 能,由客户端主动选择集群的服务节点。比如n e t s c a p cn a v i ga _ t o r 浏览器访问 n e t s c a p e 主页时,会随机从多台服务器中选择一台,然后发送h r l l p 请求。但是这 样的客户程序的部署和实现都很不经济。 4 基于t c m p 分发器的负载均衡技术 用户通过虚拟i p 地址( v i n u a li p a d d r e s s ) 访问服务时,虚拟服务器收到请求 报文后根掘数据报的源和目的地址进行连接和识别,按照某个调度算法选出一个 真实服务器,将报文的目标地址和目标端口改写成选定服务器的地址和相应端口, 最后将报文发送给选定的服务器。真实服务器的响应报文经过虚拟服务器时将报 文的源地址和端口改为虚拟地址和相应端口,再把报文发送给客户。 这种技术具有处理速度快,可扩展性好,兼容大多数网络应用,节点可以实 现异构性的优点。但是缺点也很明显:不识别应用协议内容,无法处理应用级的 数据请求,要求每个服务器节点的应用内容完全一致。 5 应用依赖的负载均衡技术 又称面向内容的负载均衡或第七层调度。在对某个应用进行作业负载调度时, 通过分析应用协议的数据头,根据匹配规则将应用请求发往指定的节点。这种技 术支持应用层协议,在性能上可以有针对性地进行优化,而且集群节点的服务内 容可以不一致。但是和前面介绍的几种负载均衡技术相比实现复杂,需要分析应 用协议的数据头,针对不同的应用协议要分别编写独立的协议数据分析模块。 1 3 面向内容交换的提出 1 3 1 基于t c p i p 分发器的负载均衡集群的主要问题 目前主流的成熟的负载均衡技术是基于t c p 仰分发器的调度即四层调度“。 四层调度实现了对t c m p 数据包的投递选择,将客户端发送的报文分发到集群节 点中。可以把这种形式的调度看作是一种作业调度,而调度粒度是报文,调度算 法相对简单,为各种优化性能的高效调度技术提供扩展空间。负载均衡集群在四 韭立銮适厶堂亟 堂焦途塞缝 迨 层调度中,前端的负载均衡器从i p 层开始截获所有流入报文,获取t c p 佃数据头 信息如i p 地址和端口,并按照预设调度策略进行后端真实服务器节点选择,报文 修改和报文重新投递三项工作。四层交换目前已经非常成熟,因为均衡器仅需要 识别报文的地址和端口等相关信息,利用快速查找表即可实现报文交换。 四层的分发器由于其操作简单,在产品中常常是以硬件的形式出现的,因为 分发器不需要做任何t c p 的处理和保持连接状态。c i s c o 、i m e i 、f 5 、f o l l i l d r y 几 大厂商都有这方面的产品系列。在软件上,w i n d o w s 下的n l b 集群和l i i l l l ) 【下的 l v s ”1 ( l i n u x n u a 】s e r v e f ) 都是典型代表,它们都在操作系统核心层的t c p i p 协议栈实现报文快速处理,并且避免耗时耗资源的数据上下文切换。 但是四层的负载均衡无法根据数据请求的具体内容做有针对性地负载。以 w w w 应用为例: 1 缺乏对s e s s i o n 的支持 s e s s i o n ,即会话,是指有始有终的一系列动作和消息,包括了“面向连接” 和“保持状态”两个含义。“面向连接”是指通信双方在通信之前先要建立一个通 信渠道,“保持状态”是指通信的一方能够把一系列信息和通信另一方关联起来。 s e s s i o n 实际上是在客户端和服务器之问保持状态的解决方案,服务器端的s e s s i o n 是由服务器上的c o o k i e “。文件实现的,如果一个w w w 应用基于s e s s i o n ,那么当 客户端发出请求时,服务器会为客户端创建个包含s e s s i o nm 的c o o k i e 信息, 服务器根据这个i d 索引保存客户端状态的c o o l 【i e 文件,以保证会话级的通信能 顺利进行。 但是由于四层交换只能对请求报文的地址和端口信息进行负载均衡,可能会 把同一个会话请求重定向到另外一台服务器,这会造成很严重的错误,导致会话 无法继续。比如考生登录考试系统后,会在某台服务器上创建s e s s i o n 以保持考生 状态,但是如果该考生的后续请求被分发到另外的服务器就会导致考试系统报错。 2 不支持访问的局部性”1 w 曲服务器会把请求过的页面缓冲到内存,如果相同的请求再次到来,缓冲 的页面将会直接返回给客户,从而避免反复的磁盘读写。但是四层调度系统中每 台真实服务器提供的服务相同,用户相同的请求可能被负载到不同的服务器,造 成对磁盘的反复读写,增长系统处理延迟,不能享受到c a c h e 的便利和快速。 4 塞銮堑厶堂亟堂包迨塞 绻监 因为缓存保存了进程被访问的w 曲页面,要求调度程序能按照请求的类型进 行负载调度,将相同内容的请求交给同一个具有该内容的缓存数据节点进行服务, 最大程度利用缓存数据。有关研究吲表明,基于内容的调度策略能大大提高节点服 务器缓存命中率,从而提高整个w 曲服务器集群的性能。 1 - 3 2 面向内容交换的提出 面向内容交换的负载均衡技术能够克服基于t c p ,i p 分发器技术的缺点,在对 具体的服务请求进行调度时考虑请求的内容。面向内容交换的设计初衷就是解决 高层应用协议中会话应用的问题。由于集群设计直接面向具体协议,关键是通过 数据请求解析模块和可扩展的报文分类机制,灵活的对具体的应用协议进行定制, 提供基于协议的s e s s i o n 级交换。以h t t p 协议为例,h 1 v r p 协议本身是建立在t c p 基础上的无连接协议,面向内容交换w 曲集群要分析 i t r p 请求行的数据首先要 建立t c p 连接,所以面向内容的交换是面向连接的交换。其次。在分析请求行的 基础上支持s e s s i o n 应用和基于请求内容的负载。 1 4 国内外研究现状 国外已经出现了不少7 层交换的产品。硬件方面,c i s c o 的c s s 旧系列内容交 换机,f 5 的b i g i p 7 1 内容交换机,n o n e i 8 3 的应用交换机。软件方面,c i s c 0 的c s m ( c o n t e n ts 嘶a c hm o d u l e ) ,i b m 的w 曲s p h 伍ee 电es e r v e r 。这些商业产品不论 是硬件产品中的软件部分还是纯软件产品,都是运行在厂商特定的硬件平台上的, 而且价格不菲。 一些大学( 如美国的r j c e 大学) 、科研机构和开源组织也在7 层交换方面展 开研究。值得一提的是在世界上具有一定影响力的l v s ( l i n u x r h m is e r v e f ) 项 目是由我国的章文嵩博士发起的一个l i n u x 平台下负载均衡技术的开源项目,目前 l v s 在4 层交换方面已经非常完善,其i p v s 例应用程序已经进入l i l i l l ) 【内核,成 为内核可扩展的一部分。但是7 层交换的应用程序有很多研究和开发工作要做, 尚在进行中。 丝立銮 堑 厶堂亟堂僮迨塞缝 监 1 5 研究内容 本文的研究和实现工作以“计算机基础教学平台”和“在线考试系统”的研 发和应用部署为基础。研究面向内容交换的负载均衡技术的最初想法来源于改进 和提高上述两套w 曲应用系统的运行性能。作者希望通过本人的研究工作,为重 新部署“计算机基础教学平台”和“在线考试系统”的运行平台提供技术支持, 提高服务质量。 本文在现有的l i n l l ) 【虚拟服务器( 【s ) 的研发基础上设计并实现动态加载的 支持h 1 v r p 协议的面向内容交换的负载均衡器模块,该模块能根据用户请求的内 容将报文调度到真实服务器,对可扩展的w 曲服务器提供了支持。本文的研究内 容和所做的贡献如下: 1 设计内容交换集群的体系结构; 2 在n e 锄t e r 框架支持的基础上实现t c p 状态迁移的报文转发机制; 3 将内容交换器模块实现为可动态加载入内核的设备驱动模块。 6 e 塞銮堑厶堂亟堂焦迨童直自由在童拯啦基奎厦堡 2 面向内容交换的基本原理 2 1 协议基础 2 1 1t c p 协议 t c p 0 1 协议是专门为了在不可靠的互联网络上提供一个可靠的端到端字节流 而设计的。t c p 数掘头如图2 - l 所示: :数据: 保留 :;:;:;: 窗 口 大小 : i 偏移i l g i k i h i t l w l w l i 一+ 一一一+ 一+ 一十一+ 一+ 一+ 一+ 一l l 校验 和 紧急指针i 、f 图2 1 t c p 数据头格式 t c p 的主要内容有: 1 数掘分段,每个t c p 数据段必须适合i p 数据包净荷大小和网络的最大传 输单元; 2 滑动窗口,t c p 连接的每一方都有固定大小的发送接收数据的缓冲区,t c p 接收端只允许另一端发送接收缓冲区大小的数据; 3 可靠连接,t c p 实体收到t c p 连接另一端的数据后,将发送一个确认a c k 。 确认报文序号是接收到的报文序号加l ,相当于发送端下个要发送的报文序列 号; 4 定时重传,发送方传送一个数据段时,也启动一个定时器,如果发送方的 定时器在确认数据段到达之前过期的话,则发送方再次发送原来的数据段; 5 数据校验,校验和提供了额外的可靠性,其校验范围包括t c p 数据头首部 和数据,目的是检测数掘段传输过程中的任何变化,如果校验和有差错,将丢弃 该数据段。 每个t c p 数掘头都包含源端口和目的端口,用于寻找发送和接收端的相应进 7 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一口一 一 一 i 一的一 一 一 一 一 一 一目一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一号一号一 一 一 一 一 一 一 一 一 f i斟列一认斗 一 一 一 + i ;器一 一 一 一 + 一 一 一 一 一 一 一 + 一 一 一 一 一 一 一 + 一 一 一 一 一 一 + 一口一 一 一 一端一 一 一 一 一 一 一 一源一 一 一 一 一 一 一 , 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 一 丝哀銮道厶堂亟堂篮途窒厘自出盔銮拯敛基奎厦垄 程。端口和i p 数据头的i p 地址唯一标识一个t c p 连接。 3 2 位的报文序列号用束标识从t c p 发送端向t c p 接收端发送的数据字节流, 它表示在这个报文段的第一个字节。序列号是3 2 位无符号数,序号到达2 强1 后 又重新丌始。当建立一个新的连接时,s y n 的序列号是由这个主机选择的该连接 的初始序列号i s n ( i n i t i a ls e q u e n c en 啪b e r ) 。要发送数据的第一个字节序列号等于 这个i s n 加1 。 3 2 位的确认序号包含发送确认的一端所期望收到的下一个序列号。因此,确 认序号应当是上次已成功收到数据段序列号加l 。只有a c k 标志为1 时确认序号 字段才有效。 t c p 首部中6 个标志位的解释如下: 1 u r g :紧急指针( u r g e mp o i n 衙) ,当交互用户打断已经运行的远程计算过 程时,发送方应该把一些控制信息放在数据流中并将u r g 标志一起交给t c p ,这 一事件使得t c p 停止继续积累数据,而是将连接上的已有数据立即传输出去; 2 a c k :置1 表示a c k 号是有效的; 3 p s h :置l 表示接收方应尽快将该报文交给应用层; 4 r s t :被用于重置一个已经混乱的连接,置1 表示告诉对方关闭t c p 连接; 5 s y n :被用于建立连接,s y n 被置l 表示发起连接请求或连接已经被接受; 6 f i n :被用于释放一个连接,表示发送方已经没有数据要传输了。 t c p 是面向连接的协议,使用t c p 的应用层协议要发送数据必须先建立t c p 连接,三次握手建立连接的过程如图2 2 所示: 主机l 主机2 图2 2 建立t c p 连接的三次握手 丝立銮适本堂亟堂焦途塞厘囱内在塞拯盥基奎屡堡 1 客户端发送s y n 报文指明服务器的地址和端口,以及初始序列号x ; 2 服务器发回响应报文,其初始序列号为y ,确认号为要接收的下一个客户 端报文x + 1 ; 3 客户端将确认号设置为服务器端报文序列号加l ,即y 十1 ,以对服务器的 s y n 报文进行确认。至此三次握手过程结束。 t c p 连接的释放过程如图2 - 3 所示: 主机l 主机2 图2 3 t c p 连接释放过程 1 客户端向服务器发送设置了f i n 位的t c p 数掘段,并将其状态转为 f i n w a j t 1 ,表示应用程序已经结束连接了; 2 服务器在收到该报文后,将转入c l 0 s e w a i t 状态,表示客户端已经发起 了释放连接的过程;接着服务器将确认报文发回客户端,客户端收到确认报文后, 状态转为f i n w a i t 2 ,表示服务器同意释放连接; 3 服务器向客户端发出设置了f i n 位的t c p 报文,并将状态转为l a s t - a c k , 表示等待连接终止请求的确认;客户端收到该报文后将转入t i m e ,a i t 状态,表 示客户端将等待一个足够的时间确保服务器收到连接终止请求的确认报文: 4 客户端将服务器发来的f 1 n 报文的确认报文发回服务器,服务器得到确认 报文后,状态将转入c l o s e d ,表示连接终止。客户端等待超时后,将自动转入 c l o s e d 状念。 2 1 2h 丌p 协议 9 e 塞至适厶堂亟堂位途童西囱凼查銮拯的基奎厘堡 h r r p 川协议是用于从w w w 服务器传输超文本到本地浏览器的传送协议。 几乎所有的h t r p 协议实现都使用t c p 作为传输协议。使用t c p 的目的和意义在 于浏览器和服务器都不需要担心消息丢失、重复消息、长消息以及消息的确认等 问题。h r r p 协议是请求应答协议,在h r r p l o 版本中,当连接建立起来后,浏 览器发送一个h t t p 请求,之后服务器发回应答,然后t c p 连接被释放。 下面是一个对n v w i e t o r g :8 0 的请求和响应过程: 客户端发出请求: g e t r f c h t n l lh t n ,1 1 h o s t w 聊n i e t f o r g ( 跟随一个空行) 第一行是h 1 1 卫请求行,由方法、请求的资源和h r r p 协议版本号组成。每 个h t t p 请求只有一个请求行。随后是一个标准h r r p 报头,表示请求的主机是 w 岍n i e r o 唱,请求行后面可以跟多个报头。 服务器返回响应: h 1 v i p 1 12 0 00 k d a t e :s a t 2 3s e p2 0 0 60 5 :3 5 :0 4g m t s e r v e r :a p a c h e 2 o 5 2 ( r e dh a t ) c o n t e n t - l e n g m :3 2 1 1 c o i l i l e c t i o n :c 1 0 s e c o m e n t 1 卯e :t e x t ,b t m l ;c h a r s e t = i s o 8 8 5 9 - 1 响应的第一行是h r r p 状态行,每个h t t p 应答也只有一个状态行,后面跟 随多个h r r p 标准报头。 m 1 p 协议支持客户服务器模式。在客户向服务器请求服务时,只需传送请 求方法和路径。请求方法常用的有g e t 、h e a d 和p o s t ,每种方法规定的客户与 服务器联系的类型不同。由于 r n t 协议简单,使得 r r t p 服务器的程序规模小, 因而通信速度很快。唧允许传输任意类型的数据对象,正在传输的类型由 c o m e m t y p e 加以标记。 r r r p 协议本身是无状态无连接的协议。无状态是指客户 端只需要简单的向服务器请求某些文件,客户和服务器都没有必要记录彼此过去 的行为,这与h r r p 协议本来的目的是相符的。无连接的含义是限制每次连接只 处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断丌连接, 采用这种方式可以节省传输时间。 l o 丝鏖銮适厶堂亟堂焦i 金塞耍囱出奎銮基敛基奎星堡 2 2 基于h t r p 协议的面向内容交换策略和需求 2 2 1内容交换策略 面向内容交换针对应用层协议的集群应用而提出,而应用层协议是建立在 t c p i p 基础上的。所以面向内容的交换从严格的意义上讲,没有脱离四层交换的 范畴,可以看成是四层交换的补充。内容交换的策略可以从以下两个方面来理解: 从调度的角度来理解,面向内容的交换技术必须跨越连接而面向会话。t c p ,i p 协议簇没有严格定义会话,仅仅是在o s i 参考模型中给出规范而未实现。但是从 现实应用来看,越来越多的h r r p 应用要求存在客户和服务器之间保持状态的 s e s s i o n 机制。s e s s i o n 是建立在t c p 连接基础上的会话,由多个连接的通信活动 构成。这里谈到的s e s s i o n 是针对l 订t p 应用协议定义的。 从请求报文的内容角度来理解,面向内容的交换技术支持内容分区和访问局 部性。在大型的w 曲站点中,为了扩展后端真实服务器的存储容量和能力,避免 磁盘i o 瓶颈,每个服务器不可能存储整个站点的单一映像,而是按照文件类型和 不同文件的读写频度及功能差异将静态h m l 文档、图片、文件和动态c g i 程序 存储在不同的服务器上。充分利用w 曲服务器访问局部性提高w 曲服务的吞吐量 和缩短客户等待服务响应时自j 。 2 2 2 内容交换需求 1 支持服务器s e s s i o n 动态、b 技术,如a s p 、a sp n e t 、p h p 和j s p ,应用的越来越广泛。如“在 线考试系统”的考生用户登录后,会创建s e s s i o n 以保存考生信息,与考生相关的 试题信息和考试状态。这些动态w 曲技术扩展了h t t p 协议的功能,很好地支持 了s e s s i o n 机制。该机制是由服务器上的c o o k i e 文件实现的。当客户端请求一个 使用s e s s i o n 功能的动态页面时,服务器会为客户端创建一个s e s s i o nc o o l 【i e 文件, 并发回一个s e s s i o ni d 标识该c o o k i e 。后续的客户端请求都会包含这个c o o k i e , 服务器收到请求便根据s e s s i o ni d 来索引客户的c 0 0 l 【i e 文件。因此,集群的内容 交换器必须知道后端哪个服务器产生了什么样的c o o l ( i e 。在后续客户请求到来时, 些峦銮适叁堂亟堂位迨塞亟自凼查蛮拯丝基查厘堡 要根据请求中的s e s s i o ni d 选择并发送到先| j i 提供s e s s i o n 的服务器。 2 支持请求内容交换 “计算机基础教学平台”后台存储的文件类型多种多样,目的的文件存储没 有根据内容分区,平台的所有文件共享一个大容量磁盘集中存储。但是应用的运 行平台转移到集群上之后,内容必然要进行分区,而内容交换器必须区分请求内 容的类别。 h 1 y r p 请求是面向数据的,而数掘均以文件的形式存在,对信息的获取都是通 过获取文件进行。h t t p 协议中包含的文件相关信息足以提供交换器的解析支持。 r f c l 7 3 8 中定义的u r l “”( u n i f 0 肌r e s o u r c el 0 c a t o r s ,统一资源定位符) 通 常称为h 唧网址。如:l m p :、】l 州w i e 正o r g r f c 1 i t i n l 。h n p 表示使用h r r p 协议, v w i e t f o 曜表示访问的主机域名,疵 n l 表示要访问的文件名。文件名包含在 h t t p 请求的请求行中( 如,g e t 疵h t i i l l h t t p 1 1 ) ,是关键的部分。交换器必须 对h t t p 请求行进行解析,以便选择后端服务器,将客户请求转发出去。 3 解决h t t p 持续连接带来的问题 h 1 v r p 实现使用t c p 作为传输协议。t c p 要求采用三次握手的方式建立连接, 并用四个数据段关闭连接。在h r r p ,1 o 版本中,每个t c p 连接中只能完成一个 h t l 甲请求,服务器在h t t p 响应得到确认后要求这个t c p 连接关闭。这意味这 w 曲传输不能跨越t c p 的慢启动阶段。同时,h ,瞰l 文档日益复杂,常常嵌入图 像和多媒体文件。为了下载这样的组合文档,需要几个h r r p 事务处理,即要建 立多个t c p 连接,所以用户会感觉到明显的延迟。 为了使t c p 连接能够超越单个请求响应交换,h t t p 1 1 及以上版本提供了 对持续连接的支持。持续连接的基本思想是允许客户端在一条t c p 连接上以流水 线的方式发送请求。这样就减少了t c p 连接打开和关闭的次数,减轻了网络和服 务器的负载,缓解了拥塞情况,客户的延迟也明显减小。 由于h t t p 1 0 版本的协议缺省不支持持续连接,后来的h t t p 1 1 版本为了 向前兼容,增加了一个h t t p 标准报头:c o 衄e c t i o n :k e 印- a l i v e 。 客户端发起h 1 t p 请求时,只需要加上“c o m l e c t i o n :k e e p a l i v e ”标准报头, 服务器即认为此连接是持续连接。 如果客户端或服务器想关闭持续连接,可在h r r p 请求报文中增加如下标准 1 2 韭塞銮烫厶堂亟堂焦途塞厘囱出在銮拯地基奎厦壁 报头:c o 衄e c t i o n :c l o s e 。 则接下来的连接关闭了持续连接功能,当完成一次请求响应动作之后,客户 端和服务器之间的t c p 连接就会关闭。 采用面向内容交换的负载均衡集群后持续连接会带来的问题。客户端请求被 内容交换机调度到真实服务器上,而后续请求不再经过h r r p 协议解析直接发送 到真实服务器上。这样一来持续连接上只有第一个请求是按内容调度的,来自同 一客户端的后续请求在调度时没有考虑请求内容。这样的内容调度和原有四层调 度相比失去了优势,而且多出了t c p 粘合“m 4 1 或t c p 迁移乩操作,请求解析的 附加歼销,内容也不能在服务器上分类存放。所以内容交换机必须解决此类问题。 2 3 内容交换的机制 2 3 1 应用层代理 应用层代理1 是实现内容交换的最简单的机制。应用层代理广泛用于m t p 代理和m 1 p 缓存领域。应用层代理服务器位于客户端和被访问的服务器节点之 问,代理服务器透明地将客户请求和服务器响应进行双向转换,以协助双方完成 通信全过程。 当用户提交请求时,代理充当了客户端,根据转发策略将请求转发给合适的 后端服务器;当服务器响应到达代理时,代理又充当了服务器,将相应转发给客 户。 用 掣 h t t p 代理 服务器 户 后端真实 空 问 山避掣t 核ii 心 i 瓣i t c p 工p 协议栈 空 ii 闻 通 li i 网络接口i 信 i 网络接口| ii 链 图2 4 应用层代理原理 韭塞銮堙厶堂亟堂焦迨塞蕉囱出空銮丝数基奎厦堡 客户端发出h r r p 请求后,请求被重定向到h r r p 代理服务器的指定端口上。 代理接受请求后根据请求内容和指定的负载调度策略选择一台后端服务器,将客 户请求转发到该服务器上。随后,代理服务器在两个方向的连接上进行相互转发 请求和应答报文,代理实现了客户端对服务器的透明访问。这种机制的最大好处 是简单和易于实现,而且不需要修改操作系统内核的协议栈。但是缺点同样明显: 数据的双向拷贝需要经由核心的t c p ,i p 协议栈到用户空间,修改后再由用户空间 到协议栈进行处理转发,频繁的上下文交换导致代理效率低下;在实现上往往通 过多进程或多线程模型处理并发请求,会导致大量消耗系统资源。事实上,现实 的内容交换集群应用很难看到应用层代理的身影。 2 3 2 t c p 网关( t c pg a t e w a y ) t c p 网关和应用层代理的机制类似,但是h t t p 请求和响应的相互转发操作 均在内核层进行,这样做的好处是避免了内核空间和用户空问的数据拷贝过程, 能够大大提高数据交换效率。图2 5 描述了t c p 网关的工作流程: 存户端 内容交换机 服务器 图2 5t c p 网关的工作流程 使用t c p 网关机制的内容交换机在核心层和客户端进行三次握手建立t c p 连 1 4 韭壅窑堑厶堂亟翌熊途塞亟包出在銮拯趁基奎厦堡 接,收到h r r p 请求报文后根据请求内容和一定的负载调度策略选择后端服务器 并通过三次握手和服务器建立t c p 连接,将请求报文转发出去。内容交换机在收 到服务器的h r r p 响应报文后,通过和客户端建立的t c p 连接将响应报文转发给 客户。服务器在收到内容交换杌转发的客户端确认t c p 数据段后结束t c p 连接。 一次h t t p 的请求响应过程结束。 2 3 3 t c p 粘合( t c ps p l i c i n g ) t c p 网关机制中的t c p 网关相当于一个中介设备,在核心层维护两个方向上 的t c p 连接。并在这两个连接之间转发数据
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论