专利名称:利用机群节点相互备份的容错方法
技术领域:
本发明涉及一种冗余备份、用以提高机群系统的高可用性的方法,尤其是一种利用机群节点相互备份的容错方法,属于计算机网络技术。
背景技术:
随着网络技术的发展,商业服务机群的需求不断扩大。商业服务机群的特点是单个任务量较小,而并发的任务总量非常大;负载具有波动性、突发性等;在不同的任务之间具有一定的独立性。商业服务机群的主要目标是提高系统吞吐能力,即在一定的时间内完成尽可能多的任务。此外,商业应用对可用性有非常高的要求,关键的商业应用一般都要求7×24小时的连续不间断运行;短暂的停机可能会造成无法估量的损失。因此,根据应用的要求,商业服务机群采用相应的高可用备份方式。
高可用机群中的服务器逻辑多为运行机和备份机;运行机和备份机可以是并行运行,也可以是一方运行,一方备份。节点之间采用多条心跳线连接;在发现节点出故障时,先经过确认节点证实出故障后,再采取迁移该节点上的运用,而不影响用户的使用。
在运行节点和备份节点之间通过冗余心跳线保证节点间异常状态的诊断。应用程序所有的数据存放在共享的磁盘介质(独立于节点服务器)中。为了保持数据的一致性,通过加锁机制来控制对共享存储的访问。
目前,在大型的商务机群中,所有的服务可分为以下几种1、只由一个节点提供的服务,该节点是单一故障点。该服务可以被其他所有的节点接管,即该服务对运行节点没有特殊的要求,我们称该类服务为单一服务。
2、由多个节点提供的服务,提供服务的节点运行相同的程序,共享相同的数据。可以任为各个节点是相同的拷贝。通常通过一个任务分发节点采用一些负载均衡策略,给这些节点分发用户的服务请求,该类服务为多重服务。
3、对于一些服务,需要直接连接其他设备;例如存储节点作为网络文件系统服务(NFS Server)需要连接盘阵。这类的服务出现故障时,只能由与盘阵相连的节点来接管服务。因此,这类服务为专用服务。
当各种服务出现故障时,都应该有相应的接管措施。目前,为了保证各种服务的和应用的的高可用性,一般机群系统提供热备份机制;例如多向备份,N+1备份,N+M备份以及层叠式备份、双机系统等。
参见图1,其为支持四个节点的多向恢复备份方式;即节点N1、-N4之间建立环状连接,相互备份。参见图2,其为支持多路运行节点由一个备份节点S1做故障恢复,其他的为普通节点,即N+1备份方式;备份机也可以不止一台,即N+M备份;参见图3,其为层叠式备份方式,多个节点N1-N5都是一个应用的备份,当运行节点(例如N1-N3)发生故障时,由下一个节点(例如N4)接替该节点,直至所有服务器都发生故障;参见图4,其为双机系统,即节点N1和节点N2相互备份。
上述备份方式的最大缺点是需要大量的冗余设备;成本高,不能充分利用机群系统的资源。
发明内容
本发明的主要目的在于提供一种利用机群节点相互备份的容错方法,通过机群中的节点相互备份来提高机群系统的可用性,充分利用节点资源,降低冗余备份的成本。
本发明的目的是这样实现的一种利用机群节点相互备份的容错方法,其特征在于机群节点间通过心跳环连接、相互通信和备份,至少包括节点加入机群以及节点故障的处理。
所述的节点至少包括服务应用(Services Applications)进程、节点服务监测器(lifeguard)进程、节点执行器(Executor)进程、故障接管模块(Standby)进程和核心控制模块(Commander)进程。
节点加入机群的处理具体包括如下的步骤步骤10新加入节点向主节点发出加入机群的请求;步骤11主节点收到请求后,分配新加入节点在机群中的位置,并返回新加入节点所承担的服务信息;步骤12新加入节点逐一启动服务所依赖的进程,并设置相应的服务IP;步骤13新加入节点通知主节点服务启动的情况如果启动失败,主节点则选择其他节点来启动该服务;步骤14如果服务启动成功,主节点标识该服务为启动状态,并记录提供服务的节点信息,便于在该节点发生故障时,及时将该节点上运行的所有服务迁移到该服务的备份节点上。
节点故障的处理具体包括步骤20当机群中节点的存活信息检测(Heartbeat)进程发现相邻节点出现异常时,向该相邻节点的Executor进程发送确认包;步骤21该相邻节点如果接收到故障确认包,则向自身的Lifeguard发送消息,检查本节点上所有依赖进程的运行情况及资源使用情况;节点恢复正常后应答Heartbeat的确认包;步骤22如果发出确认包节点的Heartbeat无法与相邻节点通讯,或者在规定时间内没有接受到该相邻节点的应答,则向备份主节点的Commander进程发送消息,报告故障;步骤23主节点接收该消息,并分析该服务的类型,如果该服务是多重服务,则通知前置的任务分发节点停止向该故障节点发送任务;步骤24如果该故障是单一服务或专用服务,主节点为该故障服务根据各节点的负载信息在可支持改服务的节点中,选择负载最轻的节点,并向给节点的Executor发送服务接管命令,接管故障服务;步骤25被选中作为故障服务接管节点收到接管信息,调用Standby模块将故障服务在本节点上恢复,并通知节点服务监测器重新获取监控的配置,对本节点上新增加的服务进程进行监控。
节点故障的处理还进一步包括步骤26主节点发出命令,要求所有心跳环内部所有节点是否正常,便于快速处理大面积节点故障。
主节点对故障服务进行接管的具体操作为步骤241主节点根据备份节点的优先级和该节点当前的实际工作负载选择相应的备份节点接管故障服务;步骤242主节点将接管命令发送给选定接管节点的Executor进程;步骤243接管节点的Executor调用Lifeguard模块,启动该服务的所有依赖进程,并设置相应的服务IP,然后通知Lifeguard监控对本节点上新增加服务的进程进行监控。
所述的服务至少具有机群提供该服务的IP地址、服务采用协议类型、用来检查该服务是否能正常侦听用户请求服务的端口号、服务的类型、服务缺省运行的节点、服务的备选节点以及服务所依赖的进程及其启停脚本的位置。
服务采用协议类型至少包括TCP和UDP两类。所述的服务类型至少包括单一服务、多重服务以及专用服务。所述的缺省运行节点为该服务在机群所有节点正常运行时,应该提供该项服务的节点;当该节点处于不可用状态时,该服务具有备份节点;当缺省运行节点排除故障并加入机群后,该服务即被迁移到缺省运行节点上运行。所述的备选节点至少为一个。
综上所述,本发明通过机群中的节点相互备份,提高了机群系统的可用性,充分利用了机群中所有节点的资源,并且降低了冗余设备的成本。
图1为现有技术中多向备份的系统结构示意图;图2为现有技术中N+1备份的系统结构示意图;图3为现有技术中层叠式备份的系统结构示意图;图4为现有技术中双机系统的结构示意图;图5为本发明系统结构示意及故障处理流程图;图6为本发明一实施例的结构示意图。
具体实施例方式以下通过具体的实施例和附图对本发明的技术方案进行详细说明在本发明中,定义一个服务至少需要以下属性1.服务访问的IP地址,机群提供该服务的IP地址;2.服务采用协议类型,主要分为TCP和UDP两类;3.服务所侦听的端口号,可用来检查该服务是否能正常侦听用户的请求;4.服务的类型即该服务属于单一服务、多重服务还是专用服务;5.服务缺省运行的节点该服务在机群所有节点正常运行时,应该提供该项服务的节点,该节点处于不可用状态,该服务有其他备份节点提供,但当缺省运行节点排除故障并加入机群后,服务将被迁移到缺省运行节点上运行。
6.服务的备选节点服务的备选节点可以有多个,某些服务甚至可以由机群中的所有其他节点作为备选节点,如主节点担任管理协调机群工作以及机群故障接管的服务,所有的安装了该程序的节点都可以提供该项服务而成为主节点。因此服务的备选节点可视为安装了服务所需程序具备提供该服务能力的节点。在提供服务的节点出现故障时,主节点将根据所有该服务的备份节点的负载情况选择一台负载较轻的节点来接替故障节点的工作。
7. 服务所依赖的进程节点提供服务所依赖的进程,这些进程的启停脚本的位置,当一个节点被选中提供服务时,该节点查询该服务所依赖的所有进程,并通过该进程的启动脚本和程序来运行该进程。
在本发明中,每个节点包括服务应用(Services Applications)进程、lifeguard(节点服务监测器)进程、Executor(节点执行器)进程、Standby(故障接管模块)进程和Commander(核心控制模块)进程。节点与节点之间通过以太网连接,由核心控制模块(commander)将节点逻辑上组成心跳环,各节点通过通过心跳检测进程(heartbeat)相互通信。当启动一个节点时,具体执行的步骤为步骤10该节点向主节点的核心控制模块(commander)发出加入机群系统的请求;步骤11主节点收到请求后,分配该节点在机群心跳环中的位置,并返回该节点所应承担的服务信息;告诉该节点应该承担哪些服务;步骤12该节点逐一启动主节点分配的服务所依赖的进程,并设置相应的服务IP;步骤13通知主节点该服务启动的情况成功或失败,如果失败,主节点会选择别的节点来启动该服务。
步骤14如果服务启动成功,主节点将标识该服务为启动状态,并记录提供服务的节点信息,便于在该节点发生故障时,及时将该节点上运行的所有服务迁移到其他可用的节点上,即该服务的备份节点上。
参见图5,当节点的Heartbeat发现相邻节点出现异常时,其处理过程为
步骤20Heartbeat向相邻节点的Executor进程发送确认包,确认相邻节点是否发生故障;步骤21相邻节点如果接收到故障确认包,向Lifeguard发送消息,检查节点上所有依赖进程的运行情况及资源使用情况,节点恢复正常后应答Heartbeat的确认包;步骤22若Heartbeat无法与相邻节点通讯,或者在规定时间内没有接受到相邻节点的应答,就认为该相邻节点已经出现故障,则本节点向备份主节点的Commander进程发送消息,向主节点报告故障;步骤23主节点分析该服务的类型,如果该服务是多重服务,不需要接管该服务,只需要通知前置的任务分发节点,停止向该节点发送任务;步骤24如果故障是单一服务或专用服务,则需要对故障服务进行接管,先由主节点选择备份节点接管故障服务,该备份节点可以运行服务的程序并代替故障节点提供服务,由于备份节点可有多个,则对所有的节点定义优先级,首先选择优先级最高的备份节点作为接管节点,如果可选节点的优先级相同,则根据各节点当前的实际工作负载信息选择工作负载最轻的节点作为接管节点。主节点选定接管节点后,把接管命令发送给选定的接管节点上的Executor进程。被选中作为故障服务接管节点收到接管信息后,调用Standby模块启动该服务,对于每个服务,由用户设定该服务要正常运行所需要启动的进程,我们成为服务的依赖进程,同时,某个进程的启动可能需要先启动其他进程,这些进程又可视为该进程依赖进程,Standby模块启动服务时采用递归的方法,将该服务的所有进程启动起来,设置相应的服务IP,将故障服务在本节点上恢复,并通知节点服务监测器(Lifeguard)重新获取监控的配置,对本节点上新增加的服务进程进行监控。
在机群中,由主节点将所有运行的节点构成多个心跳环,这种结构便于扩展,每个心跳环中的第一个节点即成为该心跳环的组长节点。在故障服务恢复后,主节点向所有心跳环组长节点要求检查各自心跳环内部的节点是否正常,这有利于快速处理大面积节点故障的情况。
参见图6,在机群中,输入/输出(Input/Output,简称I/O)节点直接与盘阵相连,因此,输入/输出节点IO1、IO2、IO3相互备份,作为网络文件系统(Network File System,简称NFS)服务器(Server);其他所有服务节点通过输入/输出节点IO1、IO2、IO3访问存储设备—盘阵。本实施例包含了文件传送/输协议(File Transfer Protocol,简称ftp)服务,其由3个节点提供;Web服务,由节点WebServer1、WebServer2、WebServer3、WebServer4、WebServer5提供域名服务器(Domain Name Server,简称DNS)服务;邮件服务,其由2个节点Mail Server1、Mail Server2提供;数据库服务,由2个数据库服务器节点提供。请求分发器1(Dispatcher1)和请求分发器2(Dispatcher2)是负载均衡的前置任务分发节点。前置任务分发节点和文件传送/输协议服务运行在同一个节点上,如果文件传送/输协议服务所在的节点发生故障,将由其他节点接替节点Dispatcher1的工作,分发用户的请求,同时通知任务分发节点停止向文件传送/输协议服务分发任务。
图6中的DNS服务器DNS Server只由一个节点运行,在该节点出现故障时,由其他安装了DNS程序的节点接管DNS服务。
输入/输出节点IO1为网络文件系统服务器NFS Server的缺省运行节点,只有输入/输出节点IO2、IO3和数据库服务器可以作为网络文件系统服务器NFSServer服务的备份节点,因为这些节点与盘阵相连接,如果输入/输出节点IO1作为网络文件系统服务器NFS Server运行,在输入/输出节点IO1发生故障后,主节点会在这些备份节点中选择节点接替输入/输出节点IO1的工作。本实施例中,所有节点均可安装主节点所需的程序,因此,机群中的任意节点都可以成为主节点。
在该系统中,Web服务,ftp服务和邮件服务都由多个节点同时提供,因此具有很好的扩展性,输入/输出节点的备份节点除了接管网络文件系统服务器NFS Server的服务,还可作为其他服务的备份节点,这样可以充分利用机群的资源,不需设置专用的冗余备份设备就可以实现系统多向备份,提高了机群的可用性。
最后应说明的是以上实施例仅用以说明本发明而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明进行修改或者等同替换,而不脱离本发明的精神和范围,其均应涵盖在本发明的权利要求范围当中。
权利要求
1.一种利用机群节点相互备份的容错方法,其特征在于机群节点之间通过心跳环连接、相互通信和备份,至少包括节点加入机群以及节点故障的处理。
2.根据权利要求1所述的利用机群节点相互备份的容错方法,其特征在于所述的节点至少包括服务应用(Services Applications)进程、节点服务监测器(lifeguard)进程、节点执行器(Executor)进程、故障接管模块(Standby)进程和核心控制模块(Commander)进程。
3.根据权利要求1所述的利用机群节点相互备份的容错方法,其特征在于节点加入机群的处理具体包括如下的步骤步骤10新加入节点向主节点发出加入机群的请求;步骤11主节点收到请求后,分配新加入节点在机群中的位置,并返回新加入节点所承担的服务信息;步骤12新加入节点逐一启动服务所依赖的进程,并设置相应的服务IP;步骤13新加入节点通知主节点服务启动的情况如果启动失败,主节点则选择其他节点来启动该服务;步骤14如果服务启动成功,主节点标识该服务为启动状态,并记录提供服务的节点信息,便于在该节点发生故障时,及时将该节点上运行的所有服务迁移到该服务的备份节点上。
4.根据权利要求1所述的利用机群节点相互备份的容错方法,其特征在于节点故障的处理具体包括步骤20当机群中节点的存活信息检测(Heartbeat)进程发现相邻节点出现异常时,向该相邻节点的Executor进程发送确认包;步骤21该相邻节点如果接收到故障确认包,则向自身的Lifeguard发送消息,检查本节点上所有依赖进程的运行情况及资源使用情况;节点恢复正常后应答Heartbeat的确认包;步骤22如果发出确认包节点的Heartbeat无法与相邻节点通讯,或者在规定时间内没有接受到该相邻节点的应答,则向备份主节点的Commander进程发送消息,报告故障;步骤23主节点接收该消息,并分析该服务的类型,如果该服务是多重服务,则通知前置的任务分发节点停止向该故障节点发送任务;步骤24如果该故障是单一服务或专用服务,主节点为该故障服务根据各节点的负载信息在可支持改服务的节点中,选择负载最轻的节点,并向给节点的Executor发送服务接管命令,接管故障服务;步骤25被选中作为故障服务接管节点收到接管信息,调用Standby模块将故障服务在本节点上恢复,并通知节点服务监测器重新获取监控的配置,对本节点上新增加的服务进程进行监控。
5.根据权利要求4所述的利用机群节点相互备份的容错方法,其特征在于节点故障的处理还进一步包括步骤26主节点发出命令,要求所有心跳环内部所有节点是否正常,便于快速处理大面积节点故障。
6.根据权利要求4所述的利用机群节点相互备份的容错方法,其特征在于主节点对故障服务进行接管的具体操作为步骤241主节点根据备份节点的优先级和该节点当前的实际工作负载选择相应的备份节点接管故障服务;步骤242主节点将接管命令发送给选定接管节点的Executor进程;步骤243接管节点的Executor调用Lifeguard模块,启动该服务的所有依赖进程,并设置相应的服务IP,然后通知Lifeguard监控对本节点上新增加服务的进程进行监控。
7.根据权利要求1或3或4或5或6所述的利用机群节点相互备份的容错方法,其特征在于所述的服务至少具有机群提供该服务的IP地址、服务采用协议类型、用来检查该服务是否能正常侦听用户请求服务的端口号、服务的类型、服务缺省运行的节点、服务的备选节点以及服务所依赖的进程及其启停脚本的位置。
8.根据权利要求7所述的利用机群节点相互备份的容错方法,其特征在于服务采用协议类型至少包括TCP和UDP两类。
9.根据权利要求7所述的利用机群节点相互备份的容错方法,其特征在于所述的服务类型至少包括单一服务、多重服务以及专用服务。
10.根据权利要求7所述的利用机群节点相互备份的容错方法,其特征在于所述的缺省运行节点为该服务在机群所有节点正常运行时,应该提供该项服务的节点;当该节点处于不可用状态时,该服务具有备份节点;当缺省运行节点排除故障并加入机群后,该服务即被迁移到缺省运行节点上运行。
11.根据权利要求7所述的利用机群节点相互备份的容错方法,其特征在于所述的备选节点至少为一个。
全文摘要
一种利用机群节点相互备份的容错方法,机群节点之间通过心跳环连接、相互通信和备份;主节点分配新加入节点在机群中的位置,并返回新加入节点所承担的服务信息;新加入节点逐一启动服务所依赖的进程,并设置相应的服务IP;如果启动失败,主节点则选择其他节点来启动该服务;当机群中节点发现相邻节点异常时,向该相邻节点进行确认;主节点对该故障服务进行接管;本发明通过机群中的节点相互备份,提高了机群系统的可用性,充分利用了机群中所有节点的资源,并且降低了冗余设备的成本。
文档编号G06F11/07GK1512375SQ02159479
公开日2004年7月14日 申请日期2002年12月31日 优先权日2002年12月31日
发明者李电森, 冯锐, 姜晓东, 肖利民 申请人:联想(北京)有限公司