一种主备服务单元的选择方法及装置
技术领域
本发明涉及电子通信领域,尤其涉及一种主备服务单元(Service Unit,SU)的选择方法及装置。
背景技术
在数据通信领域中,为了提高数据通信基础设施的高可用性(HighAvailability,HA),通常在高端设备中都会采用对提供主要服务的部件或功能进行冗余设计。在这种冗余的HA方案中,将当前正在对外提供服务的部件或功能定义为主角色,对随时准备好接替主角色提供服务的冗余部件或功能定义为备角色。当主角色由于某种原因无法再对外提供服务时,备角色就会接替主角色继续对外提供服务,从而提高设备的正常服务时间,减少停机时间,达到设备高可用性的目的。
在单台设备的HA设计方案中,通常采用的是2N冗余模式,即在一台设备中提供两张主控卡,主控卡中运行有设备主要的控制服务。一张主控卡以主角色的状态工作,另一张主控卡以备角色的状态工作。主控卡中的控制服务具有与卡角色相同的HA角色。这种方式对单台设备无疑是很合适的。但是在由多台设备组合成的集群环境中,由于有不止一台设备,就可能会有多于两张的主控卡。而为了达到负载分担的目的,也会在不同的主控卡中开启不同的控制服务,因此2N冗余模式就无法再对整个集群环境进行很好的支持。并且,每一个正在提供控制服务的主控卡都要具备一个备角色,采用一对一的2N冗余模式需要耗费大量的硬件资源,HA的实现成本较高。
为了适应集群模式的HA方案,在集群模式下需要将HA冗余模式扩展为N+M的方式,即在该模式下会有N个主控卡处于主角色状态,有M个主控卡处于备角色状态,其中,M和N是正整数,M和N可以不相等。
综上,由于N+M冗余模式下的主备选择方式与2N模式不同,并不是一对一的主备关系,因此,亟需一种可用于N+M模式的主备选择方法。
发明内容
本发明的实施例提供一种主备服务单元的选择方法及装置,可以在N+M冗余模式中为合理分配主备关系,从而便于N+M冗余模式的实现,降低HA成本。
为达到上述目的,本发明的实施例采用如下技术方案:
本发明的一方面,提供一种主备服务单元的选择方法,包括:
获取服务组中各个服务单元的高可用性HA状态,其中所述HA状态包括主角色、备角色和未知角色;
根据所述HA状态对所述服务组中的各个服务单元进行排序,得到临时链表;
按照所述临时链表中的顺序,为服务实例选择HA状态为主角色的服务单元作为主服务单元;
按照所述临时链表中的顺序,为所述服务实例选择HA状态为备角色的服务单元作为备服务单元。
本发明的另一方面,提供一种主备服务单元的选择装置,包括:
获取单元,用于获取服务组中各个服务单元的高可用性HA状态,其中所述HA状态包括主角色、备角色和未知角色;
排序单元,用于根据所述获取单元获取的HA状态对所述服务组中的各个服务单元进行排序,得到临时链表;
主角色选择单元,用于按照所述排序单元得到的临时链表中的顺序,为服务实例选择HA状态为主角色的服务单元作为主服务单元;
备角色选择单元,用于按照所述排序单元得到的临时链表中的顺序,为所述服务实例选择HA状态为备角色的服务单元作为备服务单元。
本发明实施例提供的主备服务单元的选择方法及装置,定义出了服务单元的三种HA状态,通过获取一个服务组中每个服务单元的HA状态,对服务单元按照HA状态进行排序,从而依据排列结果按顺序为服务实例选择主角色和备角色,从而可以实现在N+M冗余模式中为合理分配主备关系,便于N+M冗余模式的实现,降低HA成本。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例1中的一种主备服务单元的选择方法流程图;
图2为一种N+M冗余模式的实现方式示意图;
图3为本发明实施例2中的一种主备服务单元的选择方法流程图;
图4为本发明实施例3中的一种主备服务单元的选择装置组成示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明的实施例中,服务单元与服务组的配置如下:将系统中可以独立管理的控制服务划分为一个个的服务单元,并为其进行命名,如:如服务单元SU1、服务单元SU2等。这些服务单元会同时运行在N+M台设备中,由这些设备组合成一个集群环境。不同设备中的相同服务单元可以进行冗余备份,将这些运行在各设备中的同一种服务单元在逻辑上进行组合,就形成了该种服务单元的服务组。服务单元的主备角色选择就只能在同一服务组中进行。如服务单元1服务单元所在的服务组为服务组1,服务单元2服务单元所在的服务组为服务组2等。
在实际应用中,在集群环境系统启动之后,首先各个服务单元要在HA的主控单元上进行注册。首先,预先配置或选举出一个HA的主控,然后各设备中配置好的服务单元在启动后第一时间向HA主控进行注册。在全部服务单元都注册完成之后,HA主控中就形成了一个个的服务组,每个服务组中则包含有可以进行冗余的服务单元。并且,将服务单元实例化,根据所配置的N+M模型,HA主控会为每个服务组创建出N个服务实例,对应会有N个服务单元对外提供服务。
下面结合具体实施例对本发明的主备服务单元选择方法进行说明。
实施例1
本发明实施例提供一种主备服务单元的选择方法,如图1所示,包括:
101、获取服务组中各个服务单元的高可用性HA状态,其中所述HA状态包括主角色、备角色和未知角色。
在本发明中,根据产品中各模块所提供功能的不同,我们将业务逻辑相近,组合在一起可以独立管理的各模块划分成一个个的服务单元(SU),每个服务单元对外提供一种类型的控制服务。整个产品就可以认为是由许多个这样的服务单元组成。为了提高服务的可靠性,我们对这些服务单元进行冗余设计,根据HA状态将其分为主备两种角色的服务单元,服务单元作为HA管理的最小单元,可以独立进行HA状态的切换。每一组这样的服务单元对外提供一种类型的服务,我们称其为该服务单元对应的服务实例。对某个服务单元来说,有多少个主角色,就会有多少个服务实例。HA主备角色的选择就是为服务实例选择哪些服务单元为主角色,哪些服务单元为备角色。每一组这样的服务单元称为一个服务组(ServiceGroup,SG),每个服务组作为一个冗余设计的单元。例如,如图2所示,即为一个3+2冗余模型的示例。
在实际应用中,可以不仅规定三种HA状态,也还可以定义其他状态进行排序。例如,HA状态可以包括:active(主角色)、standby(备角色)、unknown(未知角色)、quiescing(停顿中),quiesced(静默)等。
102、根据所述HA状态对所述服务组中的各个服务单元进行排序,得到临时链表。
其中,HA状态的排序标准可以为主角色>备角色>未知角色。进一步的,对于HA状态相同的服务单元,还可以增加其他排序依据,例如服务单元的可切换状态,服务单元的优先级等。
103、按照所述临时链表中的顺序,为服务实例(Service Instance,SI)选择HA状态为主角色的服务单元作为主服务单元。
其中,基于102中合理的排序得到的临时链表,为服务实例选择主角色时便可以从链表的开头开始选取了。
104、按照所述临时链表中的顺序,为所述服务实例选择HA状态为备角色的服务单元作为备服务单元。
其中,与主角色的选择类似,基于临时链表中的顺序,可以从HA状态不为主角色的服务单元中从链表中靠前的服务单元开始选取。
本发明实施例提供的主备服务单元的选择方法,定义出了服务单元的三种HA状态,通过获取一个服务组中每个服务单元的HA状态,对服务单元按照HA状态进行排序,从而依据排列结果按顺序为服务实例选择主角色和备角色,从而可以实现在N+M冗余模式中为合理分配主备关系,便于N+M冗余模式的实现,降低HA成本。
实施例2
本发明实施例提供了一种主备服务单元的选择方法,如图3所示,该方法包括:
201、获取服务组中各个服务单元的高可用性HA状态,其中所述HA状态包括主角色、备角色和未知角色。
在本实施例中,我们为每个服务单元定义了三个与HA相关的状态:一个是HA状态,一个是可切换状态,还有一个优先级。
其中,HA状态表示该服务单元当前所具有的角色,其取值有:unknown,active,standby,quiescing,quiesced五种。其中主要的状态是active和standby,即前述的主角色和备角色。其它的三个状态属于临时过程状态。
202、获取所述服务组中各个服务单元的可切换状态,其中,所述可切换状态包括切换准备准备完成、切换准备部分完成和切换准备未完成。
其中,可切换状态主要用于备角色的选择中,表示该服务单元与对应的主角色数据同步完成的情况,看其是否为主备切换作好了准备。其取值有:切换准备未完成(not_ready_for_switchover),切换准备部分完成(ready_degrade_for_switchover),切换准备完成(ready_for_switchover)。
203、获取所述服务组中各个服务单元的优先级。
其中,优先级值指明了服务单元的优先选择权,指在具有相同的HA状态和可切换状态的情况下,哪个服务单元会被首先选取。其取值为:1-100。取值越小,优先级越高。
204、根据所述HA状态对所述服务组中的各个服务单元进行排序。
其中,在N+M台设备组成的集群环境中,可以有N台设备中的服务单元被设置为HA的主角色,对外提供服务,有M台设备中的服务单元设置为备角色,为对应的主角色提供冗余保障。在进行角色选择之前我们对N+M台设备的服务单元按照HA状态、可切换状态、优先级进行排序,排序的规则如下:首先按照HA状态进行排序:active>standby>unknown。其中,quiescing和quiesced状态属于中间状态,不能切换为active状态,当其终止以后,状态会转换到unknown状态。对于HA状态相同的服务单元排序详见步骤205。
205、对于HA状态相同的服务单元按照可切换状态进行排序。
其中,对HA状态同为standby的服务单元,再按照可切换状态进行排序,ready-for-active>ready-degrade-for-active>not-ready-for-active。
206、对HA状态相同并且可切换状态也相同的服务单元,按照优先级进行排序,得到临时链表。
其中,对HA状态为Active的服务单元并且它们的可切换状态也相同时,或者,对HA状态为standby的服务单元并且它们的可切换状态也相同时,再按照优先级从小到大进行排序。
207、判断是否存在未分配主服务单元的服务实例;若存在未分配主服务单元的服务实例,则执行步骤208;若不存在未分配主服务单元的服务实例,则执行步骤211。
208、判断所述临时链表中是否存在HA状态为主角色的服务单元;若存在HA状态为主角色的服务单元,则执行步骤209;若不存在HA状态为主角色的服务单元,则执行步骤210。
209、选择所述临时链表中第一个HA状态为主角色的服务单元作为所述服务实例的主服务单元,并继续执行步骤207。
210、进行服务单元数量不足告警。
211、将HA状态为主角色的服务单元全部从所述临时链表中删除。
在主角色服务单元选择完成之后,临时链表中仅保留下HA状态不是主角色的服务单元,下面进行备角色的选择:
212、判断是否存在未分配备服务单元的服务实例;若存在未分配备服务单元的服务实例,则执行步骤213;若不存在未分配备服务单元的服务实例,则主备角色选择完成。
213、判断临时链表是否为空;若临时链表不为空,则执行步骤214;若临时链表为空,则执行步骤215。
214、选择所述临时链表中第一个服务单元作为所述服务实例的备服务单元。
特殊的,对于集群环境系统启动时,初始状态下各服务单元主备角色的确定方式为:在初始状态下,根据204-206所描述的排序方法对同一服务组中的所有服务单元进行排序,此时,各服务单元的HA状态都为unknown,因此排序主要体现的就是各服务单元的优先级了。然后根据207-209所描述的主角色选择方式确定出N个主角色的服务单元,再根据210-214所描述的备角色选择方式确定出相应的M个备角色的服务单元。
在本实施例中,对于运行过程中各服务单元主备角色确定,则可以在系统运行过程中有主备切换事件发生,或有备机重启等事件发生时,触发本实施例201-215所描述的由HA主控重新进行主备角色的选择。
215、重新获取HA状态不为主角色的服务单元的HA状态、可切换状态和优先级,并进行排序,更新所述临时链表。然后,继续执行备角色的选择流程。
其中,本实施例提供的主备服务单元的选择方法在HA的多种冗余模式下都可适用,可以快速高效地确定需要冗余的业务模块的主备状态,可以从普通的1+1冗余模式到多机集群模式进行平滑扩展。该方案既可应用于单机环境中,也可以应用于交换机的堆叠和路由器集群环境中,简化堆叠集群方案,统一单机与集群形态下的HA管理,减小不同形态下的管理复杂度,提高系统的可维护性。
需要说明的是,本实施例中部分步骤的具体描述可以参考实施例1中的对应内容,本实施例这里不再重复赘述。
本发明实施例提供的主备服务单元的选择方法,定义出了服务单元的三种HA状态,通过获取一个服务组中每个服务单元的HA状态,对服务单元按照HA状态进行排序,从而依据排列结果按顺序为服务实例选择主角色和备角色,从而可以实现在N+M冗余模式中为合理分配主备关系,便于N+M冗余模式的实现,降低HA成本。
实施例3
本发明实施例提供了一种主备服务单元的选择装置30,如图4所示,包括:
获取单元31,用于获取服务组中各个服务单元的高可用性HA状态,其中所述HA状态包括主角色、备角色和未知角色;
排序单元32,用于根据所述获取单元31获取的HA状态对所述服务组中的各个服务单元进行排序,得到临时链表;
主角色选择单元33,用于按照所述排序单元32得到的临时链表中的顺序,为服务实例选择HA状态为主角色的服务单元作为主服务单元;
备角色选择单元34,用于按照所述排序单元32得到的临时链表中的顺序,为所述服务实例选择HA状态为备角色的服务单元作为备服务单元。
进一步可选的,所述获取单元31还用于:获取所述服务组中各个服务单元的可切换状态,其中,所述可切换状态包括切换准备完成、切换准备部分完成和切换准备未完成;
所述排序单元32还用于:根据所述HA状态对各个服务单元进行排序,对于HA状态相同的服务单元按照可切换状态进行排序。
进一步可选的,所述获取单元31还用于:获取所述服务组中各个服务单元的优先级;
所述排序单元32还用于:对HA状态相同并且可切换状态也相同的服务单元,按照优先级进行排序。
进一步可选的,所述主角色选择单元33具体用于:
当存在未分配主服务单元的服务实例时,判断所述临时链表中是否存在HA状态为主角色的服务单元;
若存在HA状态为主角色的服务单元,则选择所述临时链表中第一个HA状态为主角色的服务单元作为所述服务实例的主服务单元;
若不存在HA状态为主角色的服务单元,则进行服务单元数量不足告警。
进一步可选的,所述主角色选择单元33具体还用于:
当所述服务组中没有未分配主服务单元的服务实例时,将HA状态为主角色的服务单元全部从所述临时链表中删除。
进一步可选的,所述临时链表中仅保留HA状态不是主角色的服务单元;所述备角色选择单元34具体还用于:
当存在未分配备服务单元的服务实例时,判断所述临时链表是否为空;
若所述临时链表不为空,则选择所述临时链表中第一个服务单元作为所述服务实例的备服务单元;
若所述临时链表为空,则返回触发所述获取单元31。
需要说明的是,本实施例提供的主备服务单元的选择装置30可以用于实现上述实施例1和2中的方法,本实施例中部分功能单元的具体模式可以参考方法实施例中对应内容,本实施例这里不再详细赘述。
本发明实施例提供的主备服务单元的选择装置30,定义出了服务单元的三种HA状态,通过获取一个服务组中每个服务单元的HA状态,对服务单元按照HA状态进行排序,从而依据排列结果按顺序为服务实例选择主角色和备角色,从而可以实现在N+M冗余模式中为合理分配主备关系,便于N+M冗余模式的实现,降低HA成本。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘,硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。