一种服务器故障切换方法

文档序号:7984255阅读:174来源:国知局
一种服务器故障切换方法
【专利摘要】本发明提供一种服务器故障切换方法,其包括:客户端通过池名访问服务器池,首先在池化器处进行池名解析,池化器收到客户端发来的池名解析请求后,会在自身保存的服务器列表中进行查找,并根据预先确定的策略选择一个有效的正常运行的服务器,然后将该服务器的IP地址发送给发出解析请求的客户端;客户端完成池名解析后,然后根据解析得到的服务器IP地址,直接访问服务器,并进行数据交互;如果在数据交换中该服务器发生故障,客户端从传输层得到一个错误信息,客户端由此可以获知服务器端发生故障,这时,客户端进入故障切换模式,客户端重新在池化器处做一次池名解析,获得下一台正常运行的服务器IP地址,然后直接和新的服务器建立连接,实现服务器切换。
【专利说明】一种服务器故障切换方法
【【技术领域】】
[0001]本发明是关于计算机网络服务器领域,特别是关于网络服务器故障切换的【技术领域】。
【【背景技术】】
[0002]在典型的服务器-客户机模式下,服务器是由DNS域名确定其位置的,客户端应用系统在访问服务器之前必须通过使用DNS服务对其域名进行解析,从而得到该服务器的IP地址。在客户机和服务器建立连接后,就可以进行信息交换;假如这一服务器发生故障,客户机应用系统有两种可能的选择:1.中断通信;2.选择另一个服务器继续。
[0003]在这种模式下, 客户端应用系统必须通过以下方式检测出服务器是否中断:
[0004](I)服务器没有响应(time out);
[0005](2)服务器回应错误信息;
[0006]( 3 )收到传输层错误信息;
[0007]为了让客户应用程序能够在检测出服务器发生故障后,有选择其它服务器的可能,必须在其应用程序中明确提供一个服务器列表,指明:第一服务器、第二服务器、第
三......等。当第一个服务器中断,则尝试和第二个服务器建立连接,再则第三,依此类推。
[0008]也就是说,这一故障切换过程是由用户程序的干涉而实现的,有较大局限性:
[0009]其一、服务器列表是静态的,必须有用户特别指明;
[0010]其二、替代服务器的选择有着较大的盲目性,无法保证所选服务器是否正常及有效,也不能因服务器的负载情况而灵活选择;
[0011]其三、接管是通过应用程序而实现,缺乏透明性;
[0012]其四、被动的中断识别方式;
[0013]其五、为满足可靠性的保证,应用程序开发量较大。
[0014]因为确有必要对现有技术进行改进。

【发明内容】

[0015]本发明的目的在于针对传统的故障切换模式的不足,提出在服务器池框架下实现全透明的故障切换模式,用户无需任何干预,只需要在服务器故障发生后进行一个池名解析就可以获得新的正常服务器,并重新进行连接,而从方便快捷完成故障切换的过程。
[0016]为达成前述目的,本发明一种服务器故障切换方法,其包括:
[0017]客户端通过池名访问服务器池,首先在池化器处进行池名解析,池化器收到客户端发来的池名解析请求后,会在自身保存的服务器列表中进行查找,并根据预先确定的策略选择一个有效的正常运行的服务器,然后将该服务器的IP地址发送给发出解析请求的客户端;
[0018]客户端完成池名解析后,然后根据解析得到的服务器IP地址,直接访问服务器,并进行数据交互;
[0019]如果在数据交换中该服务器发生故障,客户端从传输层得到一个错误信息,客户端由此可以获知服务器端发生故障,这时,客户端进入故障切换模式,客户端重新在池化器处做一次池名解析,获得下一台正常运行的服务器IP地址,然后直接和新的服务器建立连接,完成故障切换过程。
[0020]根据本发明的一个实施例,本发明的服务器池系统由以下三个部分组成:
[0021]服务器池:服务器池是由一组具有相同功能的,并被统一管理起来的服务器组成,每个服务器池均使用唯一的池名作为标识;
[0022]池化器:是服务器池的管理设备,负责将多台服务器组成一个虚拟的服务器池,并对各台服务器的运行状态进行 实时监控和采集;同时提供池名解析功能,以便能让用户方便地访问服务器;
[0023]客户端:访问服务器池的客户机。
[0024]根据本发明的一个实施例,所述服务器池采用登记机制,要求服务器在启动时需主动在池化器处进行登记,池化器中任意服务器启动后首先通过向池化器发送登记消息进行登记,其中该登记消息中包含有服务自身的相关信息,包括:池名、唯一的服务识别号、月艮务器IP地址、服务端口、服务协议、服务检测。
[0025]根据本发明的一个实施例,所述服务器池采用故障检测机制:在服务器池系统内,池化器服务器的登记信息负责对服务器进行周期性的健康状况检查,一旦发现服务器故障,池化器立刻将该服务器从服务器池中删除掉。
[0026]根据本发明的一个实施例,所述服务器池采用池化器信息同步机制:池化器发现某服务器发生故障,会立刻在自己所保存的服务器列表中将该服务器删除,同时通过服务器更新消息通知其他所有池化器该服务器发生故障,其他池化器收到通知后,也立刻将该服务器从其保存的服务器列表中删除掉,这样保证了服务器列表中都是运行正常的服务器,并且所有池化器信息的一致性。
[0027]根据本发明的一个实施例,:所述服务器池采用池化器的池名解析机制:客户端访问服务器池,先在池化器处做池名解析,池化器根据客户端提交的解析请求,在自己的服务器列表中进行查询,通常每个池名都对应着多个服务器,池化器按照事先确定好的选择策略,为该用户选择一个最佳的服务器IP,并将该结果以解析回应消息的形式反馈给客户端。
[0028]本发明的这种故障切换方法的优点在于简单透明,无需在客户端维护一个服务器列表,只需随时简单地在池化器做池名解析即可。同时服务器增加减少或变更都无需通知客户端做任何改动。对用户实现了完全的透明化。
【【专利附图】

【附图说明】】
[0029]图1是本发明的服务器池系统的结构示意图。
[0030]图2为本发明的登记消息格式示意图。
[0031]图3为本发明的登记消息格式中池名参数格式示意图。
[0032]图4为本发明的登记消息格式中服务器参数格式示意图。
[0033]图5为本发明的登记回应消息格式示意图。
[0034]图6为本发明的持续活动消息格式示意图。[0035]图7为本发明的持续活动消息格式中系统参数的格式示意图。
[0036]图8为本发明的持续活动确认消息格式示意图。
[0037]图9为本发明的服务器更新消息格式示意图。
[0038]图10为本发明的服务器切换方法流程图。
【【具体实施方式】】
[0039]此处所称的“一个实施例”或“实施例”是指可包含于本发明至少一个实现方式中的特定特征、结构或特性。在本说明书中不同地方出现的“在一个实施例中”并非均指同一个实施例,也不是单独的或选择性的与其他实施例互相排斥的实施例。
[0040]现有的服务器-客 户机模式下,服务器是由DNS域名确定其位置的,客户端应用系统在访问服务器之前必须通过使用DNS服务对其域名进行解析,从而得到该服务器的IP地址。在客户机和服务器建立连接后,就可以进行信息交换。本发明所述的故障切换的方法须建立在服务器池框架下方能发挥其功能,服务器池的核心思想是让某项服务由多个冗余服务器同时来提供,所有这些服务器的集合被称为一个服务器池。也就是说:一项服务是由一个服务器池的整体来提供的,服务器是分布式的,均拥有各自的IP地址。当其中一个服务器因故障而不能继续提供服务的时候,可以由存在于服务器池中另一个正常运行的服务器继续提供。其系统示意图图1所示,本发明的服务器池系统由以下三个部分组成:
[0041]服务器池:服务器池是由一组具有相同功能的,并被统一管理起来的服务器组成,每个服务器池均使用唯一的池名作为标识;
[0042]池化器:是服务器池的管理设备,负责将多台服务器组成一个虚拟的服务器池,并对各台服务器的运行状态进行实时监控和采集;同时提供池名解析功能,以便能让用户方便地访问服务器;
[0043]客户端:访问服务器池的客户机。
[0044]其中本发明的服务器池系统采用下面的几种工作机制:
[0045]服务器池的登记机制:要求服务器在启动时需主动在池化器处进行登记,请参阅图2、图3和图4所示,其分别显示本发明一个实施例中登记(registration)消息格式,池名参数格式、服务器参数格式。池化器中任意服务器启动后首先通过向池化器发送登记消息registration进行登记,其中该登记消息中包含有服务自身的相关信息,包括:池名、唯一的服务识别号、服务器IP地址(可多个,视服务器的网卡数量而定)、服务端口、服务协议(tcp、udp、ftp、http 等.)。
[0046]池化器收到登记消息后,立刻以登记回应消息registration_response回复,并将其中的信息进行归类保存在服务器列表中,同时将该信息内容通过服务器更新消息Server_Update发送给其他池化器,这样可以保证所有池化器拥有相同的一份服务器列表。请参阅图5所示,其显示本发明的一个实施例中登记回应(registration_response)消息格式。
[0047]服务器在完成首次登记后,之后仍将以固定的时间间隔向池化器重复发送此登记消息。池化器每次收到登记消息,都将更新自己保存的服务器列表(Server List),并同时通过服务器更新消息Server_Update向其他池化器发生更新信息。
[0048]池化器的故障检测机制:在服务器池系统内,池化器服务器的登记信息负责对服务器进行周期性的健康状况检查,一旦发现服务器故障,池化器立刻将该服务器从服务器池中删除掉,池化器的这种机制可以保证服务器池中所有服务器都是有效的、可用的。
[0049]具体的过程为:池化器每隔一个固定的时间间隔向该服务器发送持续活动消息Keep_Alive。请参阅图6和图7所示,其分别显示本发明的一个实施例中保持活动消息的格式和保持活动消息中系统参数描述的格式。
[0050]服务器接到持续活动消息Keep_Alive后,立刻以持续活动确认消息Keep_Alive_Ack回复给池化器。请参阅图8所示,其显示本发明的持续活动确认消息的格式。在持续活动确认消息Keep_Alive_Ack中服务器附带了自身的相关状态信息(比如:CPU使用率、网络使用率、内存使用率、硬盘使用率等)。这样池化器可以知晓服务器的实时系统状况,并可以参照作为依据判断服务器的状况。在一些情况下,虽然服务器运行都正常,但由于资源近乎消耗殆尽,例如CPU使用率、网络使用率、内存使用率、硬盘使用率等超过预定值,继续运行可能导致更大的问题,这种情况,池化器可提前预知,可将该服务器设置为故障服务器。
[0051]如果池化器发出的持续活动消息Keep_Alive,在设定时间(timeout)内没有收到持续活动确认消息Keep_Alive_Ack,则迅速连续发送几个持续活动消息Keep_Alive,如果仍然没有收到持续活动确认消息Keep_Alive_Ack,则可以判定服务器发生故障,这种故障可能有多种可能:服务器宕机、软件故障、网络故障等,总之在这种情况下,用户肯定是无法使用该服务器的服务。
[0052]池化器信息同步:池化器发现某服务器发生故障,会立刻在自己所保存的服务器列表中将该服务器删除,同时通过服务器更新消息(Server_Update)通知其他所有池化器该服务器发生故障,其他池化器收到通知后,也立刻将该服务器从其保存的服务器列表中删除掉。这样保证了服务器列表中都是运行正常的服务器,并且所有池化器信息的一致性。请参阅图9所示,其显示本发明的一个实施例中服务器更新消息的格式,其中在该服务器更新消息中其中更新动作(Update Action)定义如下:
[0053]Update Action=Oxl 增加服务;
[0054]Update Action=0x2 删除服务。
[0055]池化器的池名解析机制:客户端访问服务器池,先在池化器处做池名解析,池化器根据客户端提交的解析请求,在自己的服务器列表中进行查询,通常每个池名都对应着多个服务器,池化器按照事先确定好的选择策略,为该用户选择一个最佳的服务器IP,并将该结果以解析回应消息的形式反馈给客户端。
[0056]基于这种服务器池的特性,可以实现一种完全透明有效的服务器故障切换的方法,请参阅图10所示,其具体步骤如下:
[0057]步骤S1:某用户通过池名访问服务器池,需首先在池化器处进行池名解析,池化器收到用户(客户端)发来的池名解析请求后,会在自身保存的服务器列表中进行查找,并根据预先确定的策略选择一个有效的正常运行的服务器,然后将该服务器的IP地址发送给发出解析请求的用户。由于所有池化器之间的信息是实时同步的,所以用户无论在哪台池化器上做解析,都可以得到同样的解析结果。
[0058]步骤S2:客户端完成池名解析后,然后根据解析得到的服务器IP地址,直接访问服务器,并进行数据交互。
[0059]步骤S3:如果在数据交换中该服务器发生故障,客户端从传输层(TransportLayer)得到一个错误信息,客户端由此可以获知服务器端发生故障,这时,客户端进入故障切换模式,客户端只需重新在池化器处做一次池名解析,就可以获得下一台正常运行的服务器IP地址,然后直接和新的服务器建立连接,这样一个简单快速的故障切换过程就完成了。
[0060]这种故障切换方法的优点在于简单透明,无需在客户端维护一个服务器列表,只需随时简单地在池化器做池名解析即可。
[0061 ] 同时服务器增加减少或变更都无需通知客户端做任何改动。对用户实现了完全的透明化。
[0062]上述说明已经充分揭露了本发明的【具体实施方式】。需要指出的是,熟悉该领域的技术人员对本发明的【具体实施方式】所做的任何改动均不脱离本发明的权利要求书的范围。相应地,本发明的权利要求的范围也并不仅仅局限于前述【具体实施方式】。
【权利要求】
1.一种服务器故障切换方法,其包括: 客户端通过池名访问服务器池,首先在池化器处进行池名解析,池化器收到客户端发来的池名解析请求后,会在自身保存的服务器列表中进行查找,并根据预先确定的策略选择一个有效的正常运行的服务器,然后将该服务器的IP地址发送给发出解析请求的客户端; 客户端完成池名解析后,然后根据解析得到的服务器IP地址,直接访问服务器,并进行数据交互; 如果在数据交换中该服务器发生故障,客户端从传输层得到一个错误信息,客户端由此可以获知服务器端发生故障,这时,客户端进入故障切换模式,客户端重新在池化器处做一次池名解析,获得下一台正常运行的服务器IP地址,然后直接和新的服务器建立连接,完成故障切换过程。
2.如权利要求1所述的方法,其特征在于:本发明的服务器池系统由以下三个部分组成: 服务器池:服务器池是由一组具有相同功能的,并被统一管理起来的服务器组成,每个服务器池均使用唯一的池名作为标识; 池化器:是服务器池的管理设备,负责将多台服务器组成一个虚拟的服务器池,并对各台服务器的运行状态进行实时监控和采集;同时提供池名解析功能,以便能让用户方便地访问服务器; 客户端:访问服务器池的客户机。
3.如权利要求1所述的方法,其特征在于:所述服务器池采用登记机制,要求服务器在启动时需主动在池化器处进行登记,池化器中任意服务器启动后首先通过向池化器发送登记消息进行登记,其中该登记消息中包含有服务自身的相关信息,包括:池名、唯一的服务识别号、服务器IP地址、服务端口、服务协议、服务检测。
4.如权利要求1所述的方法,其特征在于:所述服务器池采用故障检测机制:在服务器池系统内,池化器服务器的登记信息负责对服务器进行周期性的健康状况检查,一旦发现服务器故障,池化器立刻将该服务器从服务器池中删除掉。
5.如权利要求1所述的方法,其特征在于:所述服务器池采用池化器信息同步机制:池化器发现某服务器发生故障,会立刻在自己所保存的服务器列表中将该服务器删除,同时通过服务器更新消息通知其他所有池化器该服务器发生故障,其他池化器收到通知后,也立刻将该服务器从其保存的服务器列表中删除掉,这样保证了服务器列表中都是运行正常的服务器,并且所有池化器信息的一致性。
6.如权利要求1所述的方法,其特征在于:所述服务器池采用池化器的池名解析机制:客户端访问服务器池,先在池化器处做池名解析,池化器根据客户端提交的解析请求,在自己的服务器列表中进行查询,通常每个池名都对应着多个服务器,池化器按照事先确定好的选择策略,为该用户选择一个最佳的服务器IP,并将该结果以解析回应消息的形式反馈给客户端。
【文档编号】H04L12/24GK103731290SQ201210393053
【公开日】2014年4月16日 申请日期:2012年10月16日 优先权日:2012年10月16日
【发明者】张焰 申请人:无锡云捷科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1