一种管理集群中保护组的方法及系统的制作方法

文档序号:7955107阅读:146来源:国知局
专利名称:一种管理集群中保护组的方法及系统的制作方法
技术领域
本发明涉及通信领域集群管理技术,尤其是涉及一种管理集群中保护组的方法及系统。
背景技术
在基于集群的高可用性平台软件中,普遍采用了集群方式来管理系统中的各种能够提供服务的组件以及节点。为了避免集群中某个节点或组件由于某种原因无法正常工作造成单点失效对通信服务的可用性带来负面影响,在集群中,以保护组(Protection Group,PG)的方式将能够提供相同类型服务的组件联系在一起,保护组中的某些组件处工作状态(Active)能正常对外提供服务,同时另外一些组件处于备份状态(Standby)作为工作状态组件的备份;当处工作状态的组件由于某种原因失效时,服务会被无缝地切换至处于备份状态的组件,并将该备份状态的组件设置为工作状态,以保证服务的高可用性。请参见图1所示,其描述了集群中各个实体间的关系集群包括节点1、节点2和节点3,每个节点上各包括两个组件,其中组件1、组件3和组件5被分配了同一种服务B,而组件2、组件4和组件6被分配了同一种服务A;如此,所述组件1、所述组件3和所述组件5就组成保护组PG_b,用于对所述服务B构成保护,而所述组件2、所述组件4和所述组件6就构成PG_a,用于对所述服务A构成保护。并且,在这两个保护组中各有一个组件处于工作状态(Active),分别有另外两个组件处于备份状态(Standby),作为工作状态组件的备份。另外,比如在服务A中,若所述组件2因为某种原因不能继续对外提供服务,此时,服务就会被无缝地切换至处于所述组件4(或所述组件6),并将所述组件4(或所述组件6)置为工作状态。
如图1所示的集群,在现有技术中,集群中的每个节点都包括一个内容一致的配置文件,该配置文件中预先规定了集群所有的配置信息,当然也包括集群中所有的保护组信息。当一个节点启动时,首先读取所述配置文件,并按照所述配置文件中的内容,在内存中为所述配置文件中规定的各个逻辑实体分配空间、设置属性,然后加入到集群中去。在所述节点之后运行过程中,将会根据内存中设置的配置信息来决定集群中可以存在哪些组件和哪些保护组,并且所述节点内存中的配置信息始终和所述配置文件中的内容保持一致,不能动态更改。
在集群实际运行过程中,随着组件的请求/拒绝提供服务,保护组的构成是动态变化的,而对于保护组信息的维护方式在很大程度上影响了集群构成的灵活性和提供服务的可扩展性。
所以,现有技术存在如下缺点1、由于预先规定了集群中所有的保护组信息,使得不能在运行时动态地更改集群中的保护组信息;2、无法在系统运行时为集群动态地添加新的服务类型,并且无法动态地建立新的保护组以保护该新的服务类型;3、既不能在运行时动态地更改集群中的保护组信息,也无法对集群中已有保护组的构成根据需要动态更改,例如无法在某个保护组中加入一个新组件以加强对相应服务的保护力度。

发明内容
本发明解决的技术问题是提供一种管理集群中保护组的方法和系统,以实现集群中保护组的动态调整,以提高集群构成的灵活性,以及保证集群服务的高可用性。
为解决上述问题,本发明公开了一种管理集群中保护组的方法,关键是,包括以下步骤节点接收组件发出的服务请求,该服务请求包括所述组件的服务信息;所述节点判断所述服务请求的类型;根据所述服务请求的类型,所述节点对与所述组件的服务对应的保护组进行管理。
所述服务请求的类型包括提供服务请求或者拒绝继续服务请求。
若所述节点判断所述服务请求的类型为提供服务请求,则所述节点判断所述组件的服务是否为所述节点已有服务,若是,则将该组件添加至与保护所述组件的服务对应的保护组,否则,所述节点建立包括所述组件的保护组。
所述节点建立包括所述组件的保护组的步骤之后,还包括如下步骤所述节点将所述组件的服务请求信息发送至集群中其他节点;所述其他节点接收该信息并判断所述组件的服务是否为本节点已有服务,若是,则本节点将所述服务对应的保护组中所包括本节点的组件信息发送至所述节点,并将所述组件添加至所述服务对应的保护组,否则,不作任何处理。
所述本节点将所述服务对应的保护组所包括本节点的组件信息发送至所述节点的步骤之后,还包括如下步骤所述节点接收集群中其他节点的信息,将该信息中包括的组件添加至所述组件的服务对应的保护组中。
若所述组件的服务为所述节点已有服务时,还包括如下步骤所述节点将所述组件的服务请求信息以及所述组件被添加至与保护所述组件的服务对应的保护组的信息发送给集群中其他节点。
所述集群中其他节点接收所述信息后,接收所述信息的节点判断所述组件的服务是否为本节点已有服务,若是,则本节点将所述组件添加保护所述组件的服务对应的保护组,否则不做任何处理。
若所述节点判断所述服务请求的类型为拒绝继续服务请求,则所述节点接收所述组件的服务请求,并从与所述组件的服务对应的保护组中将所述组件删除。
所述节点从与所述组件的服务对应的保护组中将所述组件删除的步骤之后,还包括如下步骤所述节点将所述组件的服务请求信息以及所述组件从与所述组件的服务对应的保护组中被删除信息发送至集群中的其他节点;所述集群中其他节点接收所述信息后,接收所述信息的节点判断所述组件的服务是否为本节点已有服务,若是,则本节点从与所述组件的服务对应的保护组中将所述组件删除,否则不做任何处理。
所述本节点从与所述组件的服务对应的保护组中将所述组件删除的步骤之后,还包括如下步骤所述节点判断所述组件的服务对应的保护组中是否还包括本节点的其他组件,若无,则所述节点将所述保护组删除,否则不做任何处理。
所述服务请求为所述组件调用服务函数向该组件所在节点发出;该服务函数包括提供服务请求的服务请求函数以及拒绝继续服务请求的拒绝服务函数。
相应地,本发明公开一种管理集群中保护组的系统,为一组节点集合的通信系统,各个节点中将提供相同服务的组件组成保护该服务的对应保护组,关键是,所述系统包括服务请求单元、判断单元、消息单元以及控制单元;
所述服务请求单元用于实现所述组件向所在节点发出服务请求;所述消息单元实现各节点之间相互通信的消息接口;所述判断单元用于判断所述服务请求的类型以及发出所述服务请求的组件的服务是否为节点的已有服务;所述控制单元用于根据所述判断单元的判断结果,动态的实现保护组的创建、删除以及修改,并控制所述消息单元将保护组改变的信息通知所述组件所在节点。
所述服务请求单元包括服务函数子单元,用于提供一个服务函数库,以实现所述组件通过调用该服务函数库向所在节点发出服务请求;所述服务函数库包括提供服务请求的服务请求函数以及拒绝继续服务请求的拒绝服务函数。
与现有技术相比,本发明具有以下有益效果1.本发明中,由于不预设配置文件,而是根据组件的服务请求完全动态地调整集群中的保护组,因此,集群中可包含的保护组不受限于任何预先的规定,可根据需要任意扩展;2.集群中已有保护组的构成可根据组件的请求/拒绝提供服务而动态更改,因此,集群构成具有很好的灵活性。


图1是现有集群的构成示意图。
图2A是本发明管理集群中保护组的方法第一实施例的流程示意图。
图2B是本发明管理集群中保护组的方法第二实施例的流程示意图。
图3是本发明管理集群中保护组的方法第三实施例的流程示意图。
图4是本发明管理集群中保护组的系统示意图。
具体实施例方式
本发明是基于如下构思来解决现有技术的问题在集群中不预先设置包含的保护组,保护组的创建、删除以及更改保护组内部构成均可在节点运行时根据需要动态完成,也就是说,完全动态地调整集群中的保护组。具体而言,当有组件发出提供服务请求时,根据该请求的服务类型判断该服务是否为本节点已有的服务,若是,则将该组件添加至所述组件的服务对应的保护组,否则表明该组件提供的是一种新服务,则建立一个新的保护组以保护该新服务,并将该组件添加至该新保护组中;当有组件发出拒绝继续服务请求时,根据该组件以前提供的服务类型,从对应的保护组中将该组件删除。
基于本发明的构思,不难发现,有如下四种情况会引起某个节点动态地改变该节点内存中的保护组信息一.该节点上有组件请求提供服务;二.该节点上有组件拒绝继续提供服务;三.其它节点上请求提供服务的组件可以和该节点上的组件组成保护组;四.其它节点上原本和该节点上组件组成保护组的组件拒绝继续提供服务。
以下分别对应所述四种情况,来详细阐述本发明管理集群中保护组的方法。
一.节点上有组件请求提供服务所述组件向所在节点发出提供服务请求,比如,所述组件通过调用服务函数中包括的请求服务函数与该组件所处的节点发出提供服务请求,该请求服务函数中包括该组件的名称、以及能够提供服务的名称、属性、属性数;通过所述请求服务函数,该组件将其所能够提供的服务以及服务的属性的信息提交至该组件所属节点;该节点根据接收到的所述信息,将该组件能够提供的服务信息和该节点内存中保存的已有的服务信息进行比较,显然,比较的结果只可能有两种A.该组件提供一种新服务;B.该组件提供所处节点上已有服务。
以下对应所述两种比较结果,分别给出2个具体实施例来说明保护组管理的实现过程。
第一实施例组件请求提供一种新服务,请参见图2A所示。
组件1调用所述请求服务函数,向该组件1所在的节点1发出提供服务请求(步骤10);所述节点1判断所述组件1为提供一种新服务,所述节点1创建所述组件1的服务对应的保护组,并将所述组件1添加至该保护组(步骤11);所述节点1将所述组件1的提供服务请求的信息以及所述组件1添加至对应的保护组的信息分别发送至集群中的其它节点(步骤12和16);集群中的其他节点根据收到的所述节点1发送的信息进行处理(步骤13和17)判断所述组件1的服务是否为本节点已有服务,若是,则将所述服务对应的保护组中所包括本节点的组件的信息发送至所述节点1(步骤14和18),并将所述组件1添加至该保护组,否则,集群中的其他节点不做任何处理;其中,所述步骤13和17具体为将所述组件1的服务与本节点内存中本节点所包括组件的服务相比较,若判断所述组件1的服务与本节点所包括组件的服务均不相同,则表明所述组件1与本节点所包括组件均不能组成保护组,则本节点不做任何处理;若判断所述组件1的服务与本节点所包括组件的服务相同,则表明所述组件1与本节点所包括组件组成保护组,那么本节点将该保护组中所包括本节点的组件的信息发送至所述节点1(步骤14和18),且本节点内存中将所述组件1添加至所述保护组中。
然后,所述节点1收到所述步骤14和18的信息后,分别进行更新处理(步骤14和18)所述节点1将所述步骤14和18的信息中包含的组件添加至步骤11所创建的保护组中。
当然,若所述步骤14和18的信息均包括组件1对应保护组的组件信息,则所述节点1更新处理所述步骤14的信息后,将忽略对所述步骤18的信息的更新处理。
另外,该实施例也可以采用如下替代方案来实现所述组件1向所述节点1发出提供服务请求后,所述节点1将所述组件1的信息发送至集群中所有节点,每一个节点将本节点中能够与所述组件1组成保护组的组件信息发送至所述节点1(当然,本节点需要将所述组件1加入所述组件1的服务对应的保护组),所述节点1根据接收的其他节点的信息,为所述组件1建立对应的保护组。
第二实施例组件请求提供所处节点上已有服务,请参见图2B所示。
组件1向节点1发出提供服务请求(步骤21),此步骤为所述节点1将所述组件1能够提供的服务类型信息与所述节点1包括的其他组件的服务类型信息相比较得知;所述节点1判断所述组件1的服务是所述节点1已有服务,所述节点1将所述组件1添加至所述组件1的服务对应的保护组(步骤22),然后将所述组件1的提供服务请求信息以及包所述组件1已经加入了对应保护组的信息发送给集群中的其它节点(步骤23和25);若其他节点根据收到的信息判断所述组件1不能和本节点的组件组成保护组(服务类型不同),则不做任何处理;而若某个节点(节点2)根据收到的信息发现所述组件1能够加入其本节点的某个保护组(服务类型相同),那么该节点2将所述组件1加入到相应的保护组(步骤24)。
二.节点上有组件拒绝继续提供服务第三实施例,具体请参见图3所示。
当节点1上的组件1由于某种原因拒绝继续提供服务时,所述组件1向节点1发出拒绝继续服务请求,比如,所述组件1通过调用服务函数中包括的拒绝服务函数与节点1向节点1发出拒绝继续服务请求(步骤31),所述拒绝服务函数中包括该组件1的名称;所述节点1收到所述组件1的信息后,将所述组件1从所述组件1的服务对应的保护组中删除(步骤32);然后,所述节点1将所述组件1拒绝继续服务请求信息以及所述组件1从所述节点1中对应保护组中被删除的信息发送至集群中的其它节点,以通知组件1拒绝继续提供服务(步骤33和35);若其他节点根据收到所述节点1的信息,判断所述组件1的服务是否为本节点已有服务,若不是,则不做任何处理,若是,则本节点也在内存中从与所述组件1的服务对应的保护组中将组件1删除(步骤34)。
当然,在所述步骤31中,若组件1在其对应的保护组中被删除后,该保护组中已没有节点1上的任何组件,那么此时节点1则应该将整个保护组删除。
此外,若某个组件由于意外原因突然失效而从集群中退出(没有显式地调用所述拒绝服务函数),该组件所处的节点会检测到该失效信息,相当于隐式地删除该组件,对于保护组的动态调整,仍按照图3所示流程;而如果是集群中的某个节点由于意外原因而突然失效退出(该节点上的所有组件自然也就随之失效退出),那么集群中的其它节点会检测到这一失效信息,并将这一失效节点上的所有组件在本节点对应的保护组中删除。
三.其它节点上请求提供服务的组件可以和该节点上的组件组成保护组实际上,此类情况已包含在情况一中的流程中。因为所述节点1上的所述组件1发出的提供服务请求,相对于节点2来说,就是其它节点上的组件发出的提供服务请求,因此,本情况实际上为情况一所包括,在此不再详述。
四.其它节点上原本和该节点上组件组成保护组的组件拒绝继续提供服务此情况的实现方法已经包含在情况二的实现流程中,是因为在情况二中,所述节点1上的所述组件1发出拒绝继续服务请求,相对于所述节点2来说,就是其它节点上原来和本节点上组件组成保护组的组件。所以,对于此情况的实现流程为图3中的步骤34,在此不再详叙。
本发明也可以采用如下方案来实现当所述组件1向所述节点1发出请求/拒绝服务请求后,所述节点1将所述组件1的信息发送至集群中的所有节点(包括所述节点1),集群中的每个节点接收所述信息后同步进行处理,在此不一一详叙。
请参考图4所示,相应的,本发明还揭示了一种管理集群中保护组的系统,包括一组为该集群成员的节点,该集群能够管理所述节点,且所述节点之间能够相互通信。
所述系统包括服务请求单元210、存储单元220、判断单元240、消息单元230以及控制单元250,具体请参见图4所示(仅绘示集群中的一个节点的示意图)。
所述服务请求单元210用于实现所述组件向所在节点发出服务请求;所述服务请求单元210包括服务函数子单元,用于提供一个服务函数库,以实现所述组件通过调用该服务函数库向所在节点发出服务请求;所述服务函数库包括为提供服务请求的请求服务函数以及拒绝继续服务请求的拒绝服务函数,该请求服务函数中包括该组件的名称、以及能够提供服务的名称、属性、属性数的信息;所述拒绝服务函数包括所述组件名称的信息;所述组件调用所述服务请求单元210中的服务函数,用于将所述组件能够提供的服务以及该服务的属性信息提交至所述节点;所述存储单元220用于储存所述节点的配置信息;所述消息单元230实现各节点之间相互通信的消息接口;所述判断单元240用于判断所述服务请求的服务类型以及发出所述服务请求的组件的服务是否为节点的已有服务;;所述控制单元250用于根据所述判断单元的判断结果,动态的实现保护组的创建、删除以及修改等,并控制所述消息单元将保护组改变的信息通知所述组件所在节点。
较优的,所述存储单元220为内存。
其中,所述判断单元240从所述存储单元220获取本节点所包括组件、组件对应的服务类型以及组件所对应的保护组的信息等;并且,所述判断单元240从所述消息单元230将接收的其他节点消息获取其他节点所包括组件的请求服务类型信息以及该组件对应保护组的动态调整实现信息。
所述组件调用所述请求服务函数,所述控制单元250根据所述判断单元的判断结果,若所述服务类型与所述节点包括组件的服务类型相同,则所述控制单元250控制将所述组件添加至本节点所述服务属性对应的保护组中,并控制所述消息单元230将所述组件的服务请求信息以及所述组件被添加至所述保护组的信息发送至集群中的其他节点,否则,所述控制单元250控制所述节点建立一个与所述服务对应的保护组,并将该组件添加至该保护组,所述控制单元250控制所述消息单元230将所述组件的相关信息发送至集群中的其他节点。
所述集群中其他节点接收所述节点发送的所述组件的服务请求信息以及所述组件被添加至所述保护组的信息,接收所述信息的节点判断所述组件的服务类型是否为本节点已有服务类型,若是,则本节点将所述组件添加保护所述服务的对应保护组,否则不做任何处理。
所述集群中其他节点接收所述节点发送的所述组件的服务请求信息,接收该信息的节点判断所述组件的服务类型是否为本节点已有服务类型,若是,则本节点将该保护组所包括本节点的组件的信息发送至所述节点,并将所述组件添加至该保护组,否则不作任何处理;所述节点接收集群中其他节点的信息,将该信息中包括的组件添加至所述组件对应的保护组中。
所述组件调用所述拒绝服务函数,所述控制单元250从所述储存单元220获取所述组件的服务信息,并控制所述组件从该服务对应的保护组中删除,且所述节点将所述组件的服务请求信息以及所述组件从对应的保护组中被删除信息发送至集群中的其他节点;所述集群中其他节点接收所述信息后,接收所述信息的节点判断其包括组件的服务类型是否与所述组件的服务类型相同,若是,则该节点从所述服务属性对应的保护组中将所述组件删除,否则不做任何处理。
综上,由于本发明实现集群中各节点动态地维护保护组信息,所以,本方案可带来如下有益效果1.集群中可包含的保护组不受限于任何预先的规定,可根据需要任意扩展;2.集群中已有保护组的构成可根据组件的请求/拒绝提供服务而动态更改。
以上实施例仅用以说明本发明而并非限制本发明所描述的技术方案;因此,尽管本说明书参照上述的各个实施例对本发明已进行了详细的说明,但是,本领域的普通技术人员应当理解,仍然可以对本发明进行修改或者等同替换;而一切不脱离本发明的精神和范围的技术方案及其改进,其均应涵盖在本发明的权利要求范围当中。
权利要求
1.一种管理集群中保护组的方法,其特征在于,包括以下步骤节点接收组件发出的服务请求,该服务请求包括所述组件的服务信息;所述节点判断所述服务请求的类型;根据所述服务请求的类型,所述节点对与所述组件的服务对应的保护组进行管理。
2.根据权利要求1所述的管理集群中保护组的方法,其特征在于,所述服务请求的类型包括提供服务请求或者拒绝继续服务请求。
3.根据权利要求2所述的管理集群中保护组的方法,其特征在于,若所述节点判断所述服务请求的类型为提供服务请求,则所述节点判断所述组件的服务是否为所述节点已有服务,若是,则将该组件添加至与保护所述组件的服务对应的保护组,否则,所述节点建立包括所述组件的保护组。
4.根据权利要求3所述的管理集群中保护组的方法,其特征在于,所述节点建立包括所述组件的保护组的步骤之后,还包括如下步骤所述节点将所述组件的服务请求信息发送至集群中其他节点;所述其他节点接收该信息并判断所述组件的服务是否为本节点已有服务,若是,则本节点将所述服务对应的保护组中所包括本节点的组件信息发送至所述节点,并将所述组件添加至所述服务对应的保护组,否则,不作任何处理。
5.根据权利要求4所述的管理集群中保护组的方法,其特征在于,所述本节点将所述服务对应的保护组所包括本节点的组件信息发送至所述节点的步骤之后,还包括如下步骤所述节点接收集群中其他节点的信息,将该信息中包括的组件添加至所述组件的服务对应的保护组中。
6.根据权利要求3所述的管理集群中保护组的方法,其特征在于,若所述组件的服务为所述节点已有服务时,还包括如下步骤所述节点将所述组件的服务请求信息以及所述组件被添加至与保护所述组件的服务对应的保护组的信息发送给集群中其他节点。
7.根据权利要求6所述的管理集群中保护组的方法,其特征在于,所述集群中其他节点接收所述信息后,接收所述信息的节点判断所述组件的服务是否为本节点已有服务,若是,则本节点将所述组件添加至与保护所述组件的服务对应的保护组,否则不做任何处理。
8.根据权利要求2所述的管理集群中保护组的方法,其特征在于,若所述节点判断所述服务请求的类型为拒绝继续服务请求,则所述节点接收所述组件的服务请求,并从与所述组件的服务对应的保护组中将所述组件删除。
9.根据权利要求8所述的管理集群中保护组的方法,其特征在于,所述节点从与所述组件的服务对应的保护组中将所述组件删除的步骤之后,还包括如下步骤所述节点将所述组件的服务请求信息以及所述组件从与所述组件的服务对应的保护组中被删除信息发送至集群中的其他节点;所述集群中其他节点接收所述信息后,接收所述信息的节点判断所述组件的服务是否为本节点已有服务,若是,则本节点从与所述组件的服务对应的保护组中将所述组件删除,否则不做任何处理。
10.根据权利要求9所述的管理集群中保护组的方法,其特征在于,所述本节点从与所述组件的服务对应的保护组中将所述组件删除的步骤之后,还包括如下步骤所述节点判断所述组件的服务对应的保护组中是否还包括本节点的其他组件,若无,则所述节点将所述保护组删除,否则不做任何处理。
11.根据权利要求1所述的管理集群中保护组的方法,其特征在于,所述服务请求为所述组件调用服务函数向该组件所在节点发出;该服务函数包括提供服务请求的服务请求函数以及拒绝继续服务请求的拒绝服务函数。
12.一种管理集群中保护组的系统,为一组节点集合的通信系统,各个节点中将提供相同服务的组件组成保护该服务的对应保护组,其特征在于,所述系统包括服务请求单元、判断单元、消息单元以及控制单元;所述服务请求单元用于实现所述组件向所在节点发出服务请求;所述消息单元实现各节点之间相互通信的消息接口;所述判断单元用于判断所述服务请求的类型以及发出所述服务请求的组件的服务是否为节点的已有服务;所述控制单元用于根据所述判断单元的判断结果,动态的实现保护组的创建、删除以及修改,并控制所述消息单元将保护组改变的信息通知所述组件所在节点。
13.根据权利要求12所述的管理集群中保护组的系统,其特征在于,所述服务请求单元包括服务函数子单元,用于提供一个服务函数库,以实现所述组件通过调用该服务函数库向所在节点发出服务请求;所述服务函数库包括提供服务请求的服务请求函数以及拒绝继续服务请求的拒绝服务函数。
全文摘要
本发明公开一种管理集群中保护组的方法及系统,本发明的方法包括以下步骤节点接收组件发出的服务请求,该服务请求包括所述组件的服务信息;所述节点判断所述服务请求的类型;根据所述服务请求的类型,所述节点对与所述组件的服务对应的保护组进行管理,将创建该服务对应的保护组并将所述组件添加至该保护组,或将所述组件添加至与该服务对应的保护组,或从与该服务对应的保护组中删除所述组件。本发明能根据需要任意动态调整保护组,提高集群中保护组构成的灵活性,有利于保证集群服务的高可用性。
文档编号H04L12/24GK1984381SQ20061003594
公开日2007年6月20日 申请日期2006年6月9日 优先权日2006年6月9日
发明者张乾 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1