论文部分内容阅读
摘要:Internet的飞速发展,导致一些网站的服务能力正面临着单点脆弱性的危机, Web服务器集群已经成为解决此问题的一个选择。本文讨论了服务器组的组成模式及其组成结构,就目前服务器集群的结构进行比较,针对各种负载均衡方法的优缺点进行了探讨,对负载均衡技术的发展进行了思考与展望。
关键词:Web集群;集群体系结构;负载均衡;资源调度
中图分类号:TP309文献标识码:A文章编号:1009-3044(2008)09-11608-03
Analysis of Cluster Website Load Balancing Solution
ZHANG Jun-hui, ZHANG Hong-yan
(College of Educational Science of Anhui Normal University,Wuhu 241000,China)
Abstract: With the rapid development of Internet,the website’s service ability is faceing the crisis of a single point of vulnerability. the WEB server cluster already becoming a choice resolving this problem. This paper discusses the composition and structure of the server group,and their composition structure, server cluster structure carries out comparison right away at present, think deeply that and look into the merit and shortcoming of various load balanced method. Finally,the load balancing technology’s development in the future also consider.
Key words: Web Cluster; Cluster Architecture; Load Balancing; Resource Schedulin
随着网络用户的增加,Web服务器的系统容量面临着巨大的挑战,对一些大型的电子商务网站影响巨大,任何的服务中断或是关键性数据的丢失均会造成直接的经济损失。如何在高访问量的情况下保证高的服务质量成为亟待解决的课题。Web服务器集群是将若干Web服务器通过一定的技术组织在一起构成的一个逻辑整体。从外部应用看来,系统仿佛是一台功能更加强大的逻辑Web服务器。[1]这种系统具有较高的性能价格比和良好的系统可靠性,并且能够通过添加服务器的方式来不断扩充系统的容量,其已经成为构建大型Web网站系统的关键技术之一。对于快速膨胀的网络来说,引进负载平衡机制是一个明智的选择。
1 当前Web集群方式及体系结构解析
1.1 Web集群体的集群方式
Web集群体集群方式有两种,一种方式是镜像,另一种方式是采用URL重定向方式。
1.1.1 镜像方式(mirroring)
镜像方式通过将网站的全部内容复制到若干台位于相同或不同的地理位置服务器上,并且分别拥有各自的IP地址和服务器名字。用户访问站点时,自选Web服务器集群相关技术其中的一台服务器提供服务,用户的请求被分布到不同的服务器上,实现了系统负载的分配。特别是当服务器分布在不同的地理位置时,如果用户选择最近的服务器,就可能节省网络传输带宽,并获得较快的响应速度。有的站点将客户端的浏览器软件中嵌入服务器选择功能,这样用户就不必自己进行服务器选择,而是由客户端软件系统根据一定的算法来选择服务器。在 Netscape 的 Navigator 浏览器中就采用了这种技术。[2]但是,镜像方式由客户端来选择服务器,而服务器本身无法控制用户的选择,容易造成负载失衡。比如,人们习惯会选择编号靠前的服务器,这样就容易造成编号靠前的服务器过载,而编号靠后的服务器空闲的情况。
1.1.2 URL重定向方式
URL 重定向方式的实现是当用户首先访问一台主 Web 服务器,通过链接将请求指向其它服务器,从而让负载分散到各台服务器上。以上两种方式均存在一些不足。虽然,URL重定向方式似乎解决了这一问题,但是由于所有的访问都以主服务器为入口,因此主服务器可能成为系统的瓶颈。一旦系统中某台服务器失效,系统将无法提供该部分的服务。特别是主 Web 服务器失效时,由于无法得到指向其它服务器的连接,即使其它服务器正常工作,也会造成整个 Web 系统瘫痪。
1.2 集中式服务器组的结构
1.2.1 集中式
在集中式的服务器组中,有一个服务器是作为交换机或分派器存在的,其它服务器分别与其相连。用户的访问请求首先到达交换机,由交换机根据每个服务器的当前状态将链接分派给合适的服务器。
Luis Aversa等专家对这种模式及其业务流进行了较详细的描述。其中,MagicRouter的角色就是一个分派器,它将来自所有客户机的访问请求按一定的策略进行转发。MagicRouter中保存有其它服务器的状态信息,其它服务器需要定时向MagicRouter报告自己的状态。当客户机的请求到达了MagicRouter时,Magi-cRouter检查“服务器状态表”,发现服务器1相对较空闲,于是就将链接转发到服务器1;服务器1响应后再经MagicRouter或直接将响应返回到该客户机。如果是直接返回,可减轻转发器的负担,这对于大数据量的响应尤其重要,可避免转发器成为新瓶颈。但此时,转发器就必须要保存一个“链接分配表”。
1.2.2 分布式
在分布式模式中,所有服务器组成一个无主式的局域网,用户的访问请求可以是任意一个服务器,该服务器根据自己的负载情况决定响应或转发。
图1
与集中式服务器组方式不同,分布式模式中的所有的服务器都有可能参与链接的转发。当某台客户机发出的请求到达一个服务器时,该服务器根据它所掌握的服务器组的状态信息,按照某种策略将链接请求转发至其它服务器。接收服务器将响应直接返回给请求客户机。在这种方式中,服务器组内每个服务器均有两个角色:响应请求和转发请求。所转发的内容中包含有源请求的IP地址。当一个服务器转发一个客户机的请求的同时,它也可以转发其它客户机的请求。转发决策使用的信息来源于:(1)客户机的同步包(SYN Packet,即第一个包),同步包中包含有源/目的IP地址和源目的端口号;(2)服务器组内的状态信息,在每个服务器上都有一个表来存放这些信息。在服务器组内,服务器状态通过组播(Multicast)或广播方式周期性(例如每隔1秒)地更新。概括地说,服务器的转发决策是基于:源/目IP地址、源/目端口号和组内状态信息。不管是哪种服务器结构,都至少需要一级转发,和服务器直接响应相比,这不可避免地会增加一级时延,即转发时延。但这种转发时延和因服务器拥塞而引起的时延相比则要小得多。对于集中式服务器结构,转发器往往会成为潜在的瓶颈,特别是当用户访问量很大时。而分布式服务器结构中,每个服务器均可以作为转发器,从概率的角度讲,用户的访问是平均分配在这些服务器上的,因此可避免转发瓶颈。 另外,和集中式服务器结构相比,分布式服务器结构的可扩展性、容错性要好得多。特别是当一台服务器无效时,该服务器上的访问会自动平均加载到组内其它服务器上,在软、硬件上都不需要动作;如果失效的服务器恢复或新增一台服务器,系统会自动将其它服务器上访问加载到新服务器上。
2 当前比较成熟的负载均衡策略和调度方法
负载均衡策略是指为了使服务器组中各服务器上的负载基本一样,当客户机的请求到达转发器时,转发器必须采取一定的算法将当前请求分配到某一服务器上的算法。
2.1 网络地址转换(NAT)
其实原理是在前端分配器在收到的用户请求后,将请求包中虚拟服务器的 IP 地址转换为某个选定真实服务器的 IP 地址,然后将该请求转发给真实服务器;真实服务器将应答包发给前端分配器,前端分配器再将应答包中真实服务器的 IP 地址转换为虚拟服务器的 IP地址发送给用户。其优点在于:真实服务器可运行在任何支持 TCP/IP 的 OS 上,能使用私有 IP 地址,仅需要一个合法的 IP 地址分配给前端分配器。缺点在于:可扩展性不够好,当真实服务器的结点数增加时,前端服务器会成为整个系统的瓶颈,因为请求包和应答包都须经过前端分配器重写。
2.2 IP 隧道(IP tunnel)
其实现原理是在前端分配器收到用户请求包后,根据 IP 隧道协议封装该包,然后传给某个选定的真实服务器;真实服务器解包出请求信息,直接将应答数据包传给用户。此时要求真实服务器和前端分配器都要支持 IP 隧道协议。其优点是:在 IP 隧道实现技术中, 前端分配器只将请求送往不同的真实服务器,真实服务器直接应答用户请求。因此前端分配器可以处理大量请求,管理大约 100 个真实服务器且不会成为系统瓶颈,最大流量可达 1Gbps。其缺点是:要求所有真实服务器支持 IP 隧道协议。但随着 IP 隧道协议成为操作系统的标准,该技术将可以应用于所有的OS。
2.3 直接路由(Direct Routing)
其实现原理是在前端分配器收到请求包后,将请求包中目的 MAC 地址转换为某个选定真实服务器的 MAC 地址后将请求包转发出去,真实服务器收到请求包后,可直接将应答包传给用户。此时要求前端分配器和所有真实服务器都必须在一个物理段内,且前端分配器与真实服务器群共享一个虚拟 IP 地址。其优点是:不需要隧道设备,可处理大量请求,真实服务器可运行在任何 OS 上。其缺点是:前端分配器仅改变数据帧的 MAC 地址为选定的真实服务器的 MAC 地址,要求它们在同一个网段内。
2.4 基于DNS (Domain Name Server)的负载均衡
它又可分为两种情况:一种是通过将一个域名解析成不同的IP,以此来分流服务请求的dlbDNS(dynamic load balance DNS)。另一种是根据服务内容等将整个网站划分为几个功能模块,每个模块用一个二级域名(此处视网站域名为一级域名)命名,域名服务器将用户请求不同的二级域名解析为不同的服务器IP,以实现访问请求的分流。
图2
2.5 基于OSI/RM第七层的负载均衡
其基于OSI/RM第七层的负载均衡和基于内容的交换技术,根据数据包内数据的内容不同,再考虑各支撑服务器的处理能力和等待执行的任务队列中的任务量,将任务分配到不同的服务器处理。这个方案中,由于均衡服务器要解出数据包内的内容,故对其性能要求比较高,且极易在此形成瓶颈。如Apache的ProxyPass,可以将不同的路径,映射到不同的服务器上;又如ASP的redirection等,需要特定的应用程序支持。
2.6 基于IP层的负载均衡
其根据一定的调度算法,将数据包直接转发到物理上不同的服务器。由于均衡在IP层进行,调度成本比上述两者都要低,能调度更多的支撑服务器。这样的产品有IBM的Interactive Network Dispatcher,Cisco的LocalDirector, Alteon的ACEDirector F5的Big/IP等。
2.7 反向代理负载均衡
其通过把来自网络的服务请求以反向代理的方式动态转发给内部服务器进行处理,从而实现负载均衡。此方法属于OSI的第七层,所以就必须为每一种应用服务开发一个反向代理服务器,这样就限制了其应用的范围。同样进出系统的报文都要由中心负载均衡设备处理,这样它的工作负载就会很重,可能会成为系统的瓶颈。
3 集群式网站负载均衡系统实现的思考
3.1 基于分布式服务器结构的思考
通过集中式和分布式两种结构的比较,我们可以发现:在分布式服务器结构(DCA)中,每个服务器都可以作为报文的转发器,因此从概率上讲,访问是平均分配在这些服务器上的,一定程度可以避免转发瓶颈;分布式服务器结构的可扩展性、容错性也较集中式强,当一台服务器无效时,该服务器上的访问会自动平均加载到组内其它服务器上,如果失效的服务器恢复或新增一台服务器,系统会自动将其它服务器上访问加载到新服务器上。
3.2 基于IP数据包重组及跨传机制的思考
(1)利用前端在接收数据时,根据 IP 头中协议类型分离出 TCP 报文,并从TCP 头中的目的端口号分离出 HTTP 报文,对 HTTP 报文进行特殊的处理,这样就可以实现不影响其它协议数据单元以及采用 TCP 协议的其它应用层协议报文的正常处理。将承载该报文的 IP 包的目的 IP 地址替换为被选中的后端服务器(分配器)的 IP 地址,并重新计算 IP校验和,填入 IP 头的首部校验和字段中。服务器的选择可以采用基于源端口号的简单取模 Hash算法。当该包被向上传时,由于其目的地址不是本机,IP层协议调用 IP 包转发过程,将该 HTTP 报文转发给相应的服务器(分配器)。
(2)采用与前端交换机相同的方式分离分配器驻留的 HTTP 报文,然后进一步对 HTTP 报文的内容进行解析,来确定提供响应的Web 服务器,并将承载该报文的 IP 包的目的 IP 地址和目的端口号改成被选中的 Web 服务器的 IP 地址和 WWW 服务的端口号,并重新计算 TCP 头和 IP 头校验和,填入相应的首部校验和字段中。当该包传递给 IP 层协议时,如果 IP 地址正好是本机的 IP 地址,则 IP 层协议将其发送给 TCP 层,并最终被本机的 Web 服务器在该端口接收;否则,IP层协议调用 IP 包转发过程,将该 HTTP 报文转发给相应的 Web 服务器。
(3)在Web 服务器发送 HTTP 响应报文时,当报文封装后传递至 IP层,修改后的 IP 协议首先根据 IP 头中协议类型识别 TCP 报文,再从 TCP 头中的源端口号识别出 HTTP 报文。修改承载 HTTP 报文的 IP 包源地址和 TCP 源端口号,改成集群系统的 IP地址和端口号,重新计算 TCP头和 IP 头校验和。再通过调用接收函数,把刚接收到的数据从发送队列转到接收队列。这样就实现了 IP数据包跨传功能,避免了通过分配器转发结果报文的开销和传输瓶颈。客户端在检查来自集群系统的 IP 包时,由于 IP 地址已经修改为集群系统的IP 地址,因此,屏蔽了后端服务器的存在,保证了集群系统对客户端的透明性。
我们对服务器集群体系结构、动态负载均衡算法等关键技术进行的这些理论研究,为我们最终实现一个良好的系统原型提供了一定的指导,但对于不同环境下系统原型的实现及测试还是有待我们去思考和探讨的。
参考文献:
[1] 林海, 孙军. Windows 2003 中网络负载均衡群集技术在Web 网站中的应用[J]. 电脑知识与技术,2003,(6):49.
[2] 谢希仁. 计算机网络[M]. 北京:电子工业出版社,1999:36-40.
[3] Luis Aversa, Azer Bestavros, Load balancing a cluster of web servers us-ing distributed packet rewriting[C].In:Proc. of IEEE IPCCC’2000,Phoenix, AZ,2,2000,24-29.
[4] 陈志刚, 刘安丰, 等. 一种有效负载均衡的网格Web服务体系结构模型[J]. 2005:458-466.
[5] 朱利, 张兴军. Web服务器组的负载均衡方法研究[J]. 西安交通大学学报,2003,(5):24.
[6] 孙海霞, 马玉凤. 负载均衡综述[J]. 电脑知识与技术,2003,(4):162.
[7] 戴刚, 罗宇. 服务器集群关键技术的研究与实现[J]. 国防科技大学,2002,(4):121.
[8] 余松庆. 网络教学平台负载均衡解决方案[J]. 中国远程教育,2004,3:23-46.
关键词:Web集群;集群体系结构;负载均衡;资源调度
中图分类号:TP309文献标识码:A文章编号:1009-3044(2008)09-11608-03
Analysis of Cluster Website Load Balancing Solution
ZHANG Jun-hui, ZHANG Hong-yan
(College of Educational Science of Anhui Normal University,Wuhu 241000,China)
Abstract: With the rapid development of Internet,the website’s service ability is faceing the crisis of a single point of vulnerability. the WEB server cluster already becoming a choice resolving this problem. This paper discusses the composition and structure of the server group,and their composition structure, server cluster structure carries out comparison right away at present, think deeply that and look into the merit and shortcoming of various load balanced method. Finally,the load balancing technology’s development in the future also consider.
Key words: Web Cluster; Cluster Architecture; Load Balancing; Resource Schedulin
随着网络用户的增加,Web服务器的系统容量面临着巨大的挑战,对一些大型的电子商务网站影响巨大,任何的服务中断或是关键性数据的丢失均会造成直接的经济损失。如何在高访问量的情况下保证高的服务质量成为亟待解决的课题。Web服务器集群是将若干Web服务器通过一定的技术组织在一起构成的一个逻辑整体。从外部应用看来,系统仿佛是一台功能更加强大的逻辑Web服务器。[1]这种系统具有较高的性能价格比和良好的系统可靠性,并且能够通过添加服务器的方式来不断扩充系统的容量,其已经成为构建大型Web网站系统的关键技术之一。对于快速膨胀的网络来说,引进负载平衡机制是一个明智的选择。
1 当前Web集群方式及体系结构解析
1.1 Web集群体的集群方式
Web集群体集群方式有两种,一种方式是镜像,另一种方式是采用URL重定向方式。
1.1.1 镜像方式(mirroring)
镜像方式通过将网站的全部内容复制到若干台位于相同或不同的地理位置服务器上,并且分别拥有各自的IP地址和服务器名字。用户访问站点时,自选Web服务器集群相关技术其中的一台服务器提供服务,用户的请求被分布到不同的服务器上,实现了系统负载的分配。特别是当服务器分布在不同的地理位置时,如果用户选择最近的服务器,就可能节省网络传输带宽,并获得较快的响应速度。有的站点将客户端的浏览器软件中嵌入服务器选择功能,这样用户就不必自己进行服务器选择,而是由客户端软件系统根据一定的算法来选择服务器。在 Netscape 的 Navigator 浏览器中就采用了这种技术。[2]但是,镜像方式由客户端来选择服务器,而服务器本身无法控制用户的选择,容易造成负载失衡。比如,人们习惯会选择编号靠前的服务器,这样就容易造成编号靠前的服务器过载,而编号靠后的服务器空闲的情况。
1.1.2 URL重定向方式
URL 重定向方式的实现是当用户首先访问一台主 Web 服务器,通过链接将请求指向其它服务器,从而让负载分散到各台服务器上。以上两种方式均存在一些不足。虽然,URL重定向方式似乎解决了这一问题,但是由于所有的访问都以主服务器为入口,因此主服务器可能成为系统的瓶颈。一旦系统中某台服务器失效,系统将无法提供该部分的服务。特别是主 Web 服务器失效时,由于无法得到指向其它服务器的连接,即使其它服务器正常工作,也会造成整个 Web 系统瘫痪。
1.2 集中式服务器组的结构
1.2.1 集中式
在集中式的服务器组中,有一个服务器是作为交换机或分派器存在的,其它服务器分别与其相连。用户的访问请求首先到达交换机,由交换机根据每个服务器的当前状态将链接分派给合适的服务器。
Luis Aversa等专家对这种模式及其业务流进行了较详细的描述。其中,MagicRouter的角色就是一个分派器,它将来自所有客户机的访问请求按一定的策略进行转发。MagicRouter中保存有其它服务器的状态信息,其它服务器需要定时向MagicRouter报告自己的状态。当客户机的请求到达了MagicRouter时,Magi-cRouter检查“服务器状态表”,发现服务器1相对较空闲,于是就将链接转发到服务器1;服务器1响应后再经MagicRouter或直接将响应返回到该客户机。如果是直接返回,可减轻转发器的负担,这对于大数据量的响应尤其重要,可避免转发器成为新瓶颈。但此时,转发器就必须要保存一个“链接分配表”。
1.2.2 分布式
在分布式模式中,所有服务器组成一个无主式的局域网,用户的访问请求可以是任意一个服务器,该服务器根据自己的负载情况决定响应或转发。
图1
与集中式服务器组方式不同,分布式模式中的所有的服务器都有可能参与链接的转发。当某台客户机发出的请求到达一个服务器时,该服务器根据它所掌握的服务器组的状态信息,按照某种策略将链接请求转发至其它服务器。接收服务器将响应直接返回给请求客户机。在这种方式中,服务器组内每个服务器均有两个角色:响应请求和转发请求。所转发的内容中包含有源请求的IP地址。当一个服务器转发一个客户机的请求的同时,它也可以转发其它客户机的请求。转发决策使用的信息来源于:(1)客户机的同步包(SYN Packet,即第一个包),同步包中包含有源/目的IP地址和源目的端口号;(2)服务器组内的状态信息,在每个服务器上都有一个表来存放这些信息。在服务器组内,服务器状态通过组播(Multicast)或广播方式周期性(例如每隔1秒)地更新。概括地说,服务器的转发决策是基于:源/目IP地址、源/目端口号和组内状态信息。不管是哪种服务器结构,都至少需要一级转发,和服务器直接响应相比,这不可避免地会增加一级时延,即转发时延。但这种转发时延和因服务器拥塞而引起的时延相比则要小得多。对于集中式服务器结构,转发器往往会成为潜在的瓶颈,特别是当用户访问量很大时。而分布式服务器结构中,每个服务器均可以作为转发器,从概率的角度讲,用户的访问是平均分配在这些服务器上的,因此可避免转发瓶颈。 另外,和集中式服务器结构相比,分布式服务器结构的可扩展性、容错性要好得多。特别是当一台服务器无效时,该服务器上的访问会自动平均加载到组内其它服务器上,在软、硬件上都不需要动作;如果失效的服务器恢复或新增一台服务器,系统会自动将其它服务器上访问加载到新服务器上。
2 当前比较成熟的负载均衡策略和调度方法
负载均衡策略是指为了使服务器组中各服务器上的负载基本一样,当客户机的请求到达转发器时,转发器必须采取一定的算法将当前请求分配到某一服务器上的算法。
2.1 网络地址转换(NAT)
其实原理是在前端分配器在收到的用户请求后,将请求包中虚拟服务器的 IP 地址转换为某个选定真实服务器的 IP 地址,然后将该请求转发给真实服务器;真实服务器将应答包发给前端分配器,前端分配器再将应答包中真实服务器的 IP 地址转换为虚拟服务器的 IP地址发送给用户。其优点在于:真实服务器可运行在任何支持 TCP/IP 的 OS 上,能使用私有 IP 地址,仅需要一个合法的 IP 地址分配给前端分配器。缺点在于:可扩展性不够好,当真实服务器的结点数增加时,前端服务器会成为整个系统的瓶颈,因为请求包和应答包都须经过前端分配器重写。
2.2 IP 隧道(IP tunnel)
其实现原理是在前端分配器收到用户请求包后,根据 IP 隧道协议封装该包,然后传给某个选定的真实服务器;真实服务器解包出请求信息,直接将应答数据包传给用户。此时要求真实服务器和前端分配器都要支持 IP 隧道协议。其优点是:在 IP 隧道实现技术中, 前端分配器只将请求送往不同的真实服务器,真实服务器直接应答用户请求。因此前端分配器可以处理大量请求,管理大约 100 个真实服务器且不会成为系统瓶颈,最大流量可达 1Gbps。其缺点是:要求所有真实服务器支持 IP 隧道协议。但随着 IP 隧道协议成为操作系统的标准,该技术将可以应用于所有的OS。
2.3 直接路由(Direct Routing)
其实现原理是在前端分配器收到请求包后,将请求包中目的 MAC 地址转换为某个选定真实服务器的 MAC 地址后将请求包转发出去,真实服务器收到请求包后,可直接将应答包传给用户。此时要求前端分配器和所有真实服务器都必须在一个物理段内,且前端分配器与真实服务器群共享一个虚拟 IP 地址。其优点是:不需要隧道设备,可处理大量请求,真实服务器可运行在任何 OS 上。其缺点是:前端分配器仅改变数据帧的 MAC 地址为选定的真实服务器的 MAC 地址,要求它们在同一个网段内。
2.4 基于DNS (Domain Name Server)的负载均衡
它又可分为两种情况:一种是通过将一个域名解析成不同的IP,以此来分流服务请求的dlbDNS(dynamic load balance DNS)。另一种是根据服务内容等将整个网站划分为几个功能模块,每个模块用一个二级域名(此处视网站域名为一级域名)命名,域名服务器将用户请求不同的二级域名解析为不同的服务器IP,以实现访问请求的分流。
图2
2.5 基于OSI/RM第七层的负载均衡
其基于OSI/RM第七层的负载均衡和基于内容的交换技术,根据数据包内数据的内容不同,再考虑各支撑服务器的处理能力和等待执行的任务队列中的任务量,将任务分配到不同的服务器处理。这个方案中,由于均衡服务器要解出数据包内的内容,故对其性能要求比较高,且极易在此形成瓶颈。如Apache的ProxyPass,可以将不同的路径,映射到不同的服务器上;又如ASP的redirection等,需要特定的应用程序支持。
2.6 基于IP层的负载均衡
其根据一定的调度算法,将数据包直接转发到物理上不同的服务器。由于均衡在IP层进行,调度成本比上述两者都要低,能调度更多的支撑服务器。这样的产品有IBM的Interactive Network Dispatcher,Cisco的LocalDirector, Alteon的ACEDirector F5的Big/IP等。
2.7 反向代理负载均衡
其通过把来自网络的服务请求以反向代理的方式动态转发给内部服务器进行处理,从而实现负载均衡。此方法属于OSI的第七层,所以就必须为每一种应用服务开发一个反向代理服务器,这样就限制了其应用的范围。同样进出系统的报文都要由中心负载均衡设备处理,这样它的工作负载就会很重,可能会成为系统的瓶颈。
3 集群式网站负载均衡系统实现的思考
3.1 基于分布式服务器结构的思考
通过集中式和分布式两种结构的比较,我们可以发现:在分布式服务器结构(DCA)中,每个服务器都可以作为报文的转发器,因此从概率上讲,访问是平均分配在这些服务器上的,一定程度可以避免转发瓶颈;分布式服务器结构的可扩展性、容错性也较集中式强,当一台服务器无效时,该服务器上的访问会自动平均加载到组内其它服务器上,如果失效的服务器恢复或新增一台服务器,系统会自动将其它服务器上访问加载到新服务器上。
3.2 基于IP数据包重组及跨传机制的思考
(1)利用前端在接收数据时,根据 IP 头中协议类型分离出 TCP 报文,并从TCP 头中的目的端口号分离出 HTTP 报文,对 HTTP 报文进行特殊的处理,这样就可以实现不影响其它协议数据单元以及采用 TCP 协议的其它应用层协议报文的正常处理。将承载该报文的 IP 包的目的 IP 地址替换为被选中的后端服务器(分配器)的 IP 地址,并重新计算 IP校验和,填入 IP 头的首部校验和字段中。服务器的选择可以采用基于源端口号的简单取模 Hash算法。当该包被向上传时,由于其目的地址不是本机,IP层协议调用 IP 包转发过程,将该 HTTP 报文转发给相应的服务器(分配器)。
(2)采用与前端交换机相同的方式分离分配器驻留的 HTTP 报文,然后进一步对 HTTP 报文的内容进行解析,来确定提供响应的Web 服务器,并将承载该报文的 IP 包的目的 IP 地址和目的端口号改成被选中的 Web 服务器的 IP 地址和 WWW 服务的端口号,并重新计算 TCP 头和 IP 头校验和,填入相应的首部校验和字段中。当该包传递给 IP 层协议时,如果 IP 地址正好是本机的 IP 地址,则 IP 层协议将其发送给 TCP 层,并最终被本机的 Web 服务器在该端口接收;否则,IP层协议调用 IP 包转发过程,将该 HTTP 报文转发给相应的 Web 服务器。
(3)在Web 服务器发送 HTTP 响应报文时,当报文封装后传递至 IP层,修改后的 IP 协议首先根据 IP 头中协议类型识别 TCP 报文,再从 TCP 头中的源端口号识别出 HTTP 报文。修改承载 HTTP 报文的 IP 包源地址和 TCP 源端口号,改成集群系统的 IP地址和端口号,重新计算 TCP头和 IP 头校验和。再通过调用接收函数,把刚接收到的数据从发送队列转到接收队列。这样就实现了 IP数据包跨传功能,避免了通过分配器转发结果报文的开销和传输瓶颈。客户端在检查来自集群系统的 IP 包时,由于 IP 地址已经修改为集群系统的IP 地址,因此,屏蔽了后端服务器的存在,保证了集群系统对客户端的透明性。
我们对服务器集群体系结构、动态负载均衡算法等关键技术进行的这些理论研究,为我们最终实现一个良好的系统原型提供了一定的指导,但对于不同环境下系统原型的实现及测试还是有待我们去思考和探讨的。
参考文献:
[1] 林海, 孙军. Windows 2003 中网络负载均衡群集技术在Web 网站中的应用[J]. 电脑知识与技术,2003,(6):49.
[2] 谢希仁. 计算机网络[M]. 北京:电子工业出版社,1999:36-40.
[3] Luis Aversa, Azer Bestavros, Load balancing a cluster of web servers us-ing distributed packet rewriting[C].In:Proc. of IEEE IPCCC’2000,Phoenix, AZ,2,2000,24-29.
[4] 陈志刚, 刘安丰, 等. 一种有效负载均衡的网格Web服务体系结构模型[J]. 2005:458-466.
[5] 朱利, 张兴军. Web服务器组的负载均衡方法研究[J]. 西安交通大学学报,2003,(5):24.
[6] 孙海霞, 马玉凤. 负载均衡综述[J]. 电脑知识与技术,2003,(4):162.
[7] 戴刚, 罗宇. 服务器集群关键技术的研究与实现[J]. 国防科技大学,2002,(4):121.
[8] 余松庆. 网络教学平台负载均衡解决方案[J]. 中国远程教育,2004,3:23-46.