一种具有tcp连接容错功能的负载平衡调度器及其调度方法

文档序号:6591032阅读:362来源:国知局
专利名称:一种具有tcp连接容错功能的负载平衡调度器及其调度方法
技术领域
本发明属于计算机应用领域,具体涉及一种具有TCP连接容错功能的的负载平衡调度器及其调度方法。
为了解决服务器的性能问题,许多公司和研究机构研究了基于集群的服务器体系结构。集群服务器是一个利用高速局域网将多个节点(一个节点就是一台服务器、工作站或者PC机)联结起来的系统,这些节点在一个负载平衡调度器的指挥下并发地服务外界请求。由于多个节点是否能够均匀地分担服务请求关系到服务器的整体性能及其扩展性,所以负载平衡调度器的工作对服务器的服务能力至关重要。通常,负载平衡调度器根据某种策略将外来的网络服务请求调往一组工作节点。调度方案可在链路层、网络层或应用层等多处实现。例如,EDDIE,Reverse-Proxy和pWEB都使用基于应用层调度的方法来建立一个可伸缩的Web服务器。它们将到达的Web请求转发到不同的Web服务节点,取得结果后,再返回给用户。IBM的TCP Router和Network Dispatcher都是实现在网络层的调度器。Linux虚拟服务器(Linux Virtual Server)是一个基于Linux操作系统的集群调度软件。它通过扩展IP协议栈,对不同的网络服务提供了多种请求调度方案。
除了软件实现,一些公司也提出了硬件解决方案,比如Cisco公司的LocalDirector。它通过硬件进行集群服务器进出口包的重写,并取得了较高的性能。据称,它能同时调度数十万个TCP连接请求,但是这种专门的硬件产品价格非常昂贵,以致一般用户难以承受。
虽然以上的许多方案解决了服务器的性能瓶颈问题,但它们都存在共同的缺点,即很少考虑集中式调度器的可靠性。作为整个集群服务器的单一入口点,调度器一旦出现故障,整个服务器将陷入瘫痪,从而可能造成巨大的经济损失。一个简单的解决办法是为该调度器专设一台备份机,当调度器出现故障时,备份机取代其IP地址而继续工作。这种容错处理方式的一个重要不足之处在于已建立的TCP连接会全部丢失,这对用户会产生不便甚至带来损失。
Linux虚拟服务器提出了解决可靠性问题的一种方式。它通过内核层的多播将连接信息送往备份机备份,当故障发生时,备份机接管调度器的工作并将已有连接信息恢复。这种方式的缺点是开销较大。尤其是当连接数目增多且状态变化频繁时,多播会给网络造成沉重的负担。另外,这种方式需要专门的一台备份节点从事开销极低的备份工作,并且不能为调度器分担调度任务,所以对资源形成了浪费,这对于较小规模的集群服务器站点尤其突出。
为实现上述发明目的,一种具有TCP连接容错功能的负载平衡调度器,包括一套由CPU、主板、内存、持久性存储设备及其外围设备构成的计算机系统,其特征在于,本调度器还包括一套具有与所述计算机系统相同配置的计算机系统,二套计算机系统置于同一背板上,构成由二台调度机组成的调度器。
上述调度器的调度方法依次包括以下步骤(1)二台调度机的外部网卡配置成相同的IP地址和物理地址;
(2)二台调度机的链路层对IP包按照下述二种方式之一进行筛选①根据客户端IP地址值进行调度;②根据客户端IP地址和源端口号进行调度;(3)两台调度机定时地通过自己的内部网络接口对连接调度信息进行相互备份,相互备份时同时相互进行正常性检验如果某调度机在某一时间段内发现另一调度机没有备份信息到达,则前一调度机判断后一调度机出现故障,前一调度机即暂时停止调度工作,并完成以下工作①通过命令改变自己的物理地址,然后由一个专门的程序发送宣告式ARP包,强制外端路由或交换设备更新自己的ARP缓存;②根据已备份的对方调度器的连接信息,在自己的内核中重建该表,从而和自己原有的调度表并列形成两个表奇调度表和偶调度表;③关闭IP包的筛选控制开关,使本机能够接收所有的外来数据包;④报警;之后,前一调度机开始承担全部调度工作;(4)处理后一调度机的故障并重新启动,之后,后一调度机通过其自身的后台程序自动和前一调度机协商,并完成以下工作①命令前一调度机将偶调度表打包发送给自己,并在内核重建该表;②打开自己的筛选控制开关;③获得对方当前的物理地址,并将自己网卡设置成该物理地址,同时绑定公共的IP地址;④开启相互备份进程;与步骤(4)的同时,前一调度机完成以下工作①打开自己的筛选控制开关;②将偶调度表传给后一调度机,并释放该表所占内存;③开启相互备份进程;(5)二台调度机开始正常的协同调度以及相互容错。
上述具有TCP连接容错功能的负载平衡调度器具有以下效果及优点(1)高可靠本发明提出的容错方法使一台调度器出现故障时,另一台调度器能够平滑地接管其工作。使用户感觉不到服务的中断。并且在故障机恢复正常运转时,能够自动地进行调度任务的重新分配。多种报警方式使得系统更加易于管理。(2)低成本本调度器系统硬件全部由通用计算机部件构成,并且根据调度器的性能需求作了合理的规划。比如DOM的采用,是考虑到Linux操作系统的可裁剪特性,以节省不必要的硬盘存储空间。另外主板采用集成式,也能够有效地降低成本。(3)高效率本发明的双机同时调度方法在本领域内属于独创,它使两台机器能够对外界网络流量进行合理地分流,并各自对自己的网络支流进行调度,最大程度地挖掘了双机并行处理能力。(4)小体积本发明根据调度软件的大小对计算机硬件进行合理的剪裁,并使用一个背板耦合两套硬件,使得整个双机调度器的体积较一般方式的双主机调度系统减小了约70%。
所述的一体化双机结构,就是在一个背板上并列放置两套完全相同配置的计算机系统,如

图1所示。这里的计算机系统由CPU、主板、内存、DOM(Disk On Module)电子磁盘和电源、风扇等外围设备构成。其中主板采用集成方式,内嵌了显卡和两个网络接口卡。DOM是一种采用集成电路设备(Integrated Devices Electronics,IDE)接口的电子盘,它利用先进的集成电路作存储器,而不象传统硬盘采用磁介质作存储器。对低容量要求的系统它可以降低成本;它还具有数据断电后不会丢失、低功耗、防震、抗污染和抗干扰能力强等优点。集成式主板和DOM的采用不仅提高了系统的性能,而且使系统的体积较传统的双机调度器减小约70%,同时成本也大为降低。两套计算机系统通过集群服务器内部网络相互联结。
所述的双机协作调度方法首先将两台调度机的外部网卡配置成相同的IP地址和物理地址。这个IP地址就是集群服务器的公开访问地址。为了避免IP地址的冲突,需要在内核屏蔽掉ARP(Address Resolve Protocol,地址解析协议)广播询问包的响应。两台调度机的外部网卡都通过网线联入一个共享介质的集线器。当外部IP包到来时,借助于集线器的共享介质特征,使得该IP包能够被两台调度机的网卡同时接收并传往它们各自的链路层。然后两台调度机的链路层对IP包按照某种方式进行筛选。可选的方式有两种(1)根据客户端IP地址值进行调度。比如,1号调度器只对奇数IP地址的包进行调度,而丢弃偶数IP地址的数据包;2号调度器只对偶数IP地址的包进行调度,而丢弃奇数IP地址的数据包。
(2)根据客户端IP地址和源端口号进行调度。比如对源IP地址和源端口号进行哈希运算,产生一个值。然后根据它们的奇偶性进行分流。
第一种方式可以适用于任何网络服务。筛包的过程可以在Linux的内核函数netif_rx(struct sk_buff*skb)中进行。该函数紧挨着网卡驱动程序,能够尽早地将不属于本机的包筛掉,从而避免包向网络协议栈上层流动带来的开销。这种方式的一个缺点是根据IP地址的奇偶筛选可能导致分流不均,因为许多客户的访问请求是通过一个网关或代理转发的。第二种方式能够克服的第一种方式分流不均的缺点,但不能用于动态端口服务比如Ftp(File Transfer Protocol,文件传输协议),或持久性服务当中。这种方式只能在IP层实现,较链路层的实现效率有所降低。在实际应用时应该根据具体情况加以选择。
除了并行地进行请求调度以外,两台调度机还定时地通过自己的内部网络接口对连接调度信息进行相互备份。备份时采取增量备份的方式,即只备份连接的变化信息。由于TCP连接的状态繁多且变化频繁,这里的变化情况只包括新增连接和新撤销连接的信息。这样备份的数据量能够减小到最少,结合内核的多播机制,使得备份开销几乎可以忽略不计。
以上相互备份的过程同时也是一个相互进行正常性检验的过程,这个过程是实现容错机制的前提。如果某调度器(设为调度器1)在某一时间段内发现另一台调度器(设为调度器2)的没有备份信息到达,则调度器1判断调度器2出现故障。这时它暂时停止调度工作,并完成以下工作(1)通过命令改变自己的物理地址,然后由一个专门的程序发送宣告式ARP包,强制外端路由或交换设备更新自己的ARP缓存;(2)根据已备份的对方调度器的连接信息,在自己的内核中重建该表,从而和自己原有的调度表并列形成两个表奇调度表和偶调度表;(3)关闭IP包的筛选控制开关,使本机能够接收所有的外来数据包;(4)报警,并向系统管理员的电子信箱发送通知故障日志邮件。
完成这些工作之后,调度器1开始恢复以前的调度工作。
当调度机2恢复正常时(通过管理员或自己重启动),通过其自身的后台程序自动和调度机1协商,并完成以下工作(1)命令调度机1将偶调度表打包发送给自己,并在内核重建该表;(2)打开自己的筛选控制开关;(3)获得对方当前的物理地址,并将自己网卡设置成该物理地址,同时绑定公共的IP地址(调度器初启时外部网卡是非活跃状态的);(4)开启相互备份进程。
与此同时调度机1完成以下工作(1)打开自己的筛选控制开关;(2)将偶调度表传给调度机2,并释放该表所占内存;(3)开启相互备份进程。以上工作完成之后,双机开始正常的协同调度以及相互容错。
如上所述,本发明调度器由紧密耦合在一个小型机箱中的两套相同配置的计算机系统构成,每一套系统的硬件和操作系统可采用如表1所示的配置。

表1调度器系统硬件配置具体实施时,调度器的两个调度机分别用一根网线联入集群服务器外端的共享介质集线器,同时用一根网线联入内部的交换机。机器启动后,对Linux Virtual Server进行相应配置,并启动所述的双机容错调度软件,即可开始正常工作。
权利要求
1.一种具有TCP连接容错功能的负载平衡调度器,包括一套由CPU、主板、内存、持久性存储设备及其外围设备构成的计算机系统,其特征在于,本调度器还包括一套具有与所述计算机系统相同配置的计算机系统,二套计算机系统置于同一背板上,构成由二台调度机组成的调度器。
2.一种权利要求1所述调度器的调度方法,其特征在于,该调度方法依次包括以下步骤(1)二台调度机的外部网卡配置成相同的IP地址和物理地址;(2)二台调度机的链路层对IP包按照下述二种方式之一进行筛选①根据客户端IP地址值进行调度;②根据客户端IP地址和源端口号进行调度;(3)两台调度机定时地通过自己的内部网络接口对连接调度信息进行相互备份,相互备份时同时相互进行正常性检验如果某调度机在某一时间段内发现另一调度机没有备份信息到达,则前一调度机判断后一调度机出现故障,前一调度机即暂时停止调度工作,并完成以下工作①通过命令改变自己的物理地址,然后由一个专门的程序发送宣告式ARP包,强制外端路由或交换设备更新自己的ARP缓存;②根据已备份的对方调度器的连接信息,在自己的内核中重建该表,从而和自己原有的调度表并列形成两个表奇调度表和偶调度表;③关闭IP包的筛选控制开关,使本机能够接收所有的外来数据包;④报警;之后,前一调度机开始承担全部调度工作;(4)处理后一调度机的故障并重新启动,之后,后一调度机通过其自身的后台程序自动和前一调度机协商,并完成以下工作①命令前一调度机将偶调度表打包发送给自己,并在内核重建该表;②打开自己的筛选控制开关;③获得对方当前的物理地址,并将自己网卡设置成该物理地址,同时绑定公共的IP地址;④开启相互备份进程;与步骤(4)的同时,前一调度机完成以下工作①打开自己的筛选控制开关;②将偶调度表传给后一调度机,并释放该表所占内存;③开启相互备份进程;(5)二台调度机开始正常的协同调度以及相互容错。
全文摘要
一种具有TCP连接容错功能的负载平衡调度器及其调度方法,采用一体化双机协同结构,利用一个背板并列放置两套相同配置的计算机系统,使双机系统形成一个整体。计算机系统利用DOM作为持久性存储器,并安装经裁剪的Linux操作系统。双机通过设置成相同的IP地址和物理地址,同时接收外来IP包,并在链路层按不同规则对IP包进行过滤,对网络请求进行分流。对各自的网络支流,双机利用Linux虚拟服务器对请求进行调度。同时,双机系统通过互相监控和备份,在某台机器出现故障时另一台机器能够平滑地接管其工作。该接管过程能保证客户的连接不会中断。当故障机恢复正常后,通过与另一台机器协商,能够重新分担调度任务。本发明与其他方案相比,具有高可靠、低成本、高效率、体积小等优点。
文档编号G06F15/16GK1410904SQ02139089
公开日2003年4月16日 申请日期2002年9月24日 优先权日2002年9月24日
发明者金海 , 谭光, 陈祖彬, 韩宗芬, 李昕, 程璞峰, 庞丽萍, 李胜利 申请人:武汉拓锐计算机系统有限责任公司, 华中科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1