一种集群服务器的多分配器前端系统构成方法 【技术领域】
本发明涉及网络服务器技术领域,尤其是一种集群服务器的多分配器前端系统构成方法。
背景技术
集群服务器因具有扩展性好、性价比高等特点,已成为大多数网络服务器系统的解决方案。典型的网络集群服务器结构由前端分配器系统和后端服务器系统组成,通过增加后端服务器数量、提高并发响应能力来消除访问输出瓶颈。当前,前端分配器中的调度粒度有两种:一种是基于传输控制协议(TCP)连接的转发模式,简称第四层交换;一种是基于请求内容的转发模式,简称应用层交换。
基于内容的请求分发模式可以充分利用服务器缓存(cache)中的数据,使得系统的性能得以极大提高;同时,可以针对不同能力的服务器配置不同的服务,支持异构的集群系统。因此,应用层交换模式的集群服务器系统具有更好的扩展性、更大的系统吞吐量、更短的平均响应时间,并且可以支持网络服务质量(QoS)服务。但是,基于内容的请求分发模式在前端分配器上的处理开销大,使得前端分配器成为系统瓶颈。相关参考文献:Guerrey Hunt et al.EnablingContent-Based Load Distribution for Scalable Services.Technical Report,IBM,May1997;Vivek S.Pai et al.Locality-Aware Request Distribution in Cluster-basedNetwork Servers.The 8th ACM Conference on Architectural Support forProgramming Languages and Operating System.San Jose,CA,Oct 1998。
针对前端分配器瓶颈,有研究者提出了多前端结构。该结构中有多个分配器同时处理请求转发任务,其中地一台负责对外提供统一的IP地址,分布请求到各个分配器中。其实,这是一种三层的树型结构,仍然只有一台分配器负责接收请求,其他分配器只负责处理请求。由于树型结构本身的限制,它仍然存在单点瓶颈和单点故障问题。相关参考文献:Jonghuck Hong et al.HierarchicalCluster for Scalable Web Servers.2001 IEEE International Conference on ClusterComputer;雷迎春等,高性能L5-Dispatcher的性能评测,计算机研究与发展,2003 Vol.40 No.3 pp475~480;Mohit Aron et al.Scalable Content-aware RequestDistribution in Cluster-based Network Servers.2000 USENIX Annual TechnicalConference,June 18~20。
同样为了消除前端瓶颈,Rice大学的研究人员提出了一种分布式请求分发结构。这种结构中,前端由一个第四层交换设备组成(效率较高),将开销较大HTTP解析和TCP迁移等任务分布到后端服务器中完成。虽然,后端承担了部分原本由前端完成的任务,但由于后端的并发执行,可以极大地减轻前端的工作负荷,有效地提高集群系统的扩展性和吞吐量。该方式对性能改善有显著影响。但是,由于前端采取盲目分配法(不考虑请求的内容),故为利用缓存相关性,可能存在N台服务器集群中有(N-1)/N概率的请求被转移到其他服务器执行,这影响了系统性能的进一步改善。此外,该方式是建立在前端第四层交换设备不存在瓶颈的假设上。相关参考文献:Cristian Coarfa et al.LARD:A DistributedApproach.Draft of the final report for ELEC520,1999;Mohit Aron et al.EfficientSupport for P-HTTP in Cluster-based Web Servers.1999 Annual USENIX TechnicalConference,Monterey,CA,June 1999;Mohit Aron et al.Scalable Content-awareRequest Distribution in Cluster-based Network Servers.2000 USENIX AnnualTechnical Conference,June 18~20。
为解决后端服务器间过多的TCP迁移的问题,研究人员提出了一种分布式请求分发的改进方法。该改进方法中,将访问频率最高的文档(5%~10%)组成一个核,核被每一个后端服务器复制,这样可以减少约90%的后端TCP迁移,因为大部分的请求可以在服务器本地响应。从而使集群系统的扩展性得到超线性增加。但是,由于热点文档不是一成不变的,因此,核也必须进行调整。而分析和重组核文件集是一个十分耗时的,通常细粒度(以URL为单位)组核计算需要十几小时;粗粒度(以网页簇为单位)组核计算也需要几个小时。此外,该方式对服务器集群系统的动态配置管理提出了更高的要求。同时,该方式为在集群内设置特殊用途的服务器带来不便。同样,该方式也是建立在前端第四层交换机不成为系统瓶颈的假设上。相关参考文献:Ludmila Cherkasova et al.Scalable Web Server Cluster Design with Workload-Aware Request DistributionStrategy WARD.2001 IEEE International Workshop on Advanced Issues inE-commerce and Web-Based Information System,San Jose,CA,June 21~22;HuicanZhu et al.Class-based Cache Management for Dynamic Web Content.2001 IEEEINFOCOM。
【发明内容】
本发明为了克服现有技术的不足,提供一种高效的集群服务器多分配器前端系统构成方法。
为了达到上述目的,本发明提供的技术方案是,一种集群服务器的多分配器前端系统构成方法,包括以下步骤:建立包括两台及以上配置了两块网卡的前端分配器、一台集线器的集群服务器前端系统,所有前端分配器的数据输入端网卡通过集线器并行集联,所有前端分配器的数据输出端网卡与集群服务器后端系统的交换机相连;所有前端分配器的数据输入端网卡配置一个相同的虚拟IP;通过集线器将输入数据包以广播方式传输到所有前端分配器;各前端分配器对输入数据包IP地址或TCP端口号进行散列计算,决定是否转发该数据包。
而且,前端分配器的数据包转发模式采用路径外返方式。
本发明通过多台前端分配器并行操作,保证了集群服务器的前端转发带宽,消除前端瓶颈,提高了集群服务器系统的整体性能。并且采用本发明,对后端服务器不需改变原来的配置,不增加额外的工作负担;既可以适用于基于TCP连接的请求分发模式,也可以适用于基于内容的请求分发模式;不需使用特殊的、昂贵的设备(如4CPU SMP结构的计算机)作为前端分配器。本发明采用的分配器可以参见本发明人同日申请的实用新型《网络请求访问分配器》。
【附图说明】
图1本发明集群服务器系统结构示意图;
图2本发明具体实施例集群服务器系统物理结构示意图;
图3本发明具体实施例的分配器工作流程图。
【具体实施方式】
参见图1、2,为了对用户提供透明、高效的请求转发服务,消除前端转发瓶颈,本发明提供了一种集群服务器的多分配器前端系统构成方法,包括以下步骤:
(1)建立包括两台及以上配置了两块网卡的前端分配器(分配器1…分配器m)、一台集线器的集群服务器前端系统,所有前端分配器的数据输入端网卡通过集线器并行集联,所有前端分配器的数据输出端网卡与集群服务器后端系统的交换机相连。在利用本发明来组建一个集群服务器系统时,需按照图1所示的拓扑结构来搭建系统。外部网络通过一个共享式集线器HUB连接到多台分配器,这样客户端输入的数据包都要先经过HUB,再到达分配器。本发明利用HUB的广播特性使得输入数据流可以到达所任何一台分配器。采用广播共享模式与通过交换机将网卡设置为杂收模式或镜像端口模式相比,效率更高,实现更容易。并且,为了避免HUB半双工通信方式可能造成的传输冲突影响,每台分配器内安装了两块网卡,一块负责接收HUB传来的数据,一块负责将数据转发到与后端服务器(服务器1…服务器n)连接的内部交换机。这样使得输入数据包在经过分配器到达服务器的过程中数据单向流动,不存在设备瓶颈。
(2)所有前端分配器的数据输入端网卡配置一个相同的虚拟IP,为了对外提供统一的IP地址,本发明中将每台分配器内与HUB相连的网卡设置为虚拟IP——VIP。所有分配器的VIP设置相同的地址,同时,将每个VIP对应的MAC地址也配置成相同的地址。这样可以解决同一局域网内相同IP设备共存问题,同时,对外部来说,多台分配器看上去就像是一台分配器在运行——只有一个IP地址。而在系统内部,仍可以使用每个网卡各自独立的IP地址交换信息,为应用程序的设计提供了方便。
(3)通过集线器将输入数据包以广播方式传输到所有前端分配器;
(4)各前端分配器对输入数据包IP地址或TCP端口号进行散列计算,决定是否转发该数据包。由于采用广播共享模式,前端所有的分配器都可以接收到当前到达的输入数据包。具体由那台分配器来处理该数据包,本发明中采用分配器自己决策的方式,这其中要兼顾到请求负载的均匀分布特性。
每台分配器侦听是否有输入数据包到达,一旦发现有新的输入数据包到达则截获数据包中的头信息,分配器内部进行散列计算。散列计算方法可以采用取模计算、素数乘积Hash映射等,在本发明具体实施例中选用对TCP源端口号取模运算。取模运算的模由前端分配器的个数决定,事先通过参数配置存储在分配器中。每台分配器分配一个固有值,也事先通过参数配置存储在分配器中。如果计算的散列值与分配器的固有值相等,则分配器完整地接收该数据包,并转入后续处理;否则,分配器丢弃该数据包,不做任何处理。本发明利用散列计算的随机性来保证请求数据包处理分布的均匀性。由于TCP源端口号是在连接建立时随机分配的,所以,对端口号取模运算也具有随机性。这样可以有效避免某台分配器只固定接收某些客户的输入数据包,使输入的请求数据流均匀分布到所有分配器上接收处理。同时,同一TCP连接中的所有数据包都具有相同的端口号,故可以使同一TCP连接中的请求数据包和响应数据包都被同一台分配器捕获。分配器根据已经建立的请求转发映射表,将请求的后续确认数据包转送到正在执行该请求的相应服务器,这样保证了多分配器并发工作时对确认数据包转发的正确性。由于确认数据包的转发产生的负荷相对于解析请求、分析内容、连接转移所产生负荷要小得多,而所有分配器对请求数据包所做的处理是相同的。因此,请求数据流分布的随机性、均匀性也就保证了前端多个分配器之间的负载均衡。
参见图2,本发明的具体实施例包括两台配置了两块网卡的前端分配器(fs1、fs2),一台集线器(HUB)的集群服务器前端系统,fs1、fs2的数据输入端网卡通过集线器并行集联,fs1、fs2的数据输出端网卡与集群服务器后端系统的交换机(第二层交换机)相连;fs1、fs2的数据输入端网卡配置一个相同的VIP(192.168.1.111),他们的真正IP(REAL IP)分别为192.168.1.11、192.168.1.12,Internet的集群出口路由通过第二层交换机连接HUB,通过HUB将输入数据包以广播方式传输到f1、f2;各前端分配器f1、f2对输入数据包IP地址或端口号进行散列计算,决定是否转发该数据包;多个后端服务器(rs1、rs2…rsN)通过第二层交换机并连前端分配器f1或f2根据已经建立的请求转发映射表,通过第二层交换机将数据包转送到正在执行该请求的相应后端服务器。后端服务器rs1、rs2…rsN的REAL IP为192.168.1.XX,但隐藏路径后VIP为192.168.1.111(WithHidden patch),与前端分配器f1、f2一致。
当前端需要增加或减少分配器个数时,只需重新配置每台分配器的散列计算参数即可,操作简单、方便;前端分配器的个数以保证重载转发输出带宽等于输入带宽为原则。
为了避免双向通信冲突影响数据输入带宽,分配器转发模式中采用路径外返方式,保证了输出的响应数据流不通过分配器系统,即在集线器与分配器之间的数据流是单向的,所以不存在冲突,保证了数据输入带宽。由于输入数据流通过共享模式接入多台分配器,本发明采用也必须采用路径外返(DirectRouting)的响应模式。服务器对请求处理的响应数据包都不通过前端分配器,而是直接传输给客户或外部网络接入设备。这种方式既不会在HUB设备产生传输冲突,也不会给分配器带来响应负荷。
参见图3,为了方便实施,本发明实施例提供分配器的工作流程,具体描述分配器的侦听、计算、决策步骤:在步骤01中等待数据包到达;在步骤02中判断是否为TCP/IP包,若结果为否,进行步骤07丢弃该数据包,然后回步骤01等待下一数据包到达;若步骤02的判断结果为是,在步骤03判断目的IP是否等于集群VIP,若结果为否,进行步骤07丢弃该数据包,然后回步骤01等待下一数据包到达;若步骤03的判断结果为是,在步骤04判断请求的服务端口号是否正确,若结果为否,进行步骤07丢弃该数据包,然后回步骤01等待下一数据包到达;若步骤04的判断结果为是,在步骤05中按源IP地址和TCP源端口号、mod的个数进行取模运算;然后进行步骤06,判断取模运算结果与本机固有值是否相同,进行步骤07丢弃该数据包,然后回步骤01等待下一数据包到达;若步骤06的判断结果为是,在步骤08中判断分配器内的已建立连接的映射表已记录该IP包的TCP端口号否,若结果为是,进行步骤09转发该数据包到表中对应的服务器,然后回步骤01等待下一数据包到达;若步骤08的判断结果为否,执行步骤10将该IP包TCP端口号加入连接表,然后执行步骤11,即后续的程序(如请求分析、调度决策、连接迁移、请求转发等),最后回步骤01等待下一数据包到达。