集群系统中确定主控节点的方法及装置制造方法
【专利摘要】本发明提供了一种集群系统中确定主控节点的方法及装置,其中的方法包括,根据节点的ID的大小将节点排序生成备选链表;将备选链表头部的节点确定为主控节点;将备选链表中除了主控节点外的其它节点确定为备份节点;当备选链表的节点失效时,更新备选链表,并根据更新前的备选链表的节点确定更新后的备选链表的主控节点。通过本发明能够保证集群系统内的所有节点首次启动时,自动确定主控节点,无需人工配置和干预,当主控节点失效时,在重新选定主控节点的过程中遵循同步延迟最小原则,保证失效的主控节点在故障恢复后无需再次选定主控节点,减少同步信息的损失。
【专利说明】 集群系统中确定主控节点的方法及装置
【技术领域】
[0001]本发明涉及集群系统【技术领域】,更为具体地,涉及一种集群系统中确定主控节点的方法及装置。
【背景技术】
[0002]随着PC服务器等廉价硬件设备的发展,以及基于PC服务器等集群方案的产生,导致很多主要的关键的生产系统都需要部署在PC服务器等低端的计算机设备上,以取代工作站或超级计算机等昂贵的设备,节约服务器硬件成本。但在节约服务器硬件成本的同时,PC服务器由于软件和硬件的缺陷,经常会出现不知原因的系统崩溃,这就要求软件能够适应硬件引起的系统宕机等异常情况,以保障集群系统的高可用性。
[0003]在集群系统中,一般包含一个主控节点和多个工作节点,主控节点用于管理集群系统内所有工作节点,检查所有工作节点在线状态和服务管理等;工作节点对外提供应用服务,并从主控节点获取同步信息,主控节点作为计算机集群系统的中枢系统,起着非常重要的管理作用。目前,通常采用配置文件的方式指定某个节点作为主控节点,并指定另一个工作节点为该节点的备份节点,备份节点采用心跳检测的方式不断探测主控节点是否有效,若发现主控节点无效,则备份节点会接替主控节点成为临时的主控节点,待原来的主控节点恢复后,再进行自动切换,采用这种方法需要配置文件,人为指定哪个是主控节点和备份节点;通过对上述方法的改进,另一种方法为根据各个节点的ID大小来选举主控节点,在多个节点的集群系统中,一般选举ID最小的节点为主控节点。当主控节点失效后,已形成的节点ID列表中肯定会包含一个最小的ID,将节点ID列表中最小ID的节点选举为主控节点,以保证选举的一致性,但是这种改进的方法也存在如下问题:
[0004](I)主控节点故障恢复后仍然会成为主控节点,造成集群重新选举主控节点,额外增加集群更新主备控制节点的操作;
[0005](2)选举主控节点原则单一,未考虑集群系统重新选举主控节点的成本,在主备控制节点更新过程中容易造成同步信息缺失。
【发明内容】
[0006]鉴于上述问题,本发明的目的是提供一种集群系统中确定主控节点的方法及装置,以解决集群系统中主控节点故障后重新确定主控节点的问题。
[0007]本发明提供一种集群系统中确定主控节点的方法,包括:
[0008]根据节点的ID的大小将节点排序生成备选链表;
[0009]将备选链表头部的节点确定为主控节点;
[0010]将备选链表中除了主控节点外的其它节点确定为备份节点;
[0011]当备选链表的主控节点和/或备份节点失效时,更新备选链表,并根据更新前的备选链表的主控节点和备份节点确定更新后的备选链表的主控节点。
[0012]另一方面,本发明提供一种集群系统中确定主控节点的装置,包括:[0013]备选链表生成单元,用于根据节点的ID的大小将节点排序生成备选链表;
[0014]主控节点确定单元,用于将备选链表头部的节点确定为主控节点;
[0015]备份节点确定单元,用于将备选链表中除了主控节点外的其它节点确定为备份节
占.[0016]备选链表更新单元,用于当备选链表的主控节点和/或备份节点失效时,更新备选链表,并根据更新前的备选链表的主控节点和备份节点确定更新后的备选链表的主控节点。
[0017]利用上述根据本发明提供的集群系统中确定主控节点的方法及装置,将集群系统内的所有节点在首次启动时,按照节点的ID的大小排序生成备选链表,能够保证集群系统内的所有节点首次启动时,自动确定主控节点,无需人工配置和干预,当主控节点失效时,在重新确定主控节点的过程中遵循同步延迟最小原则,保证失效的主控节点在故障恢复后无需再次确定主控节点,减少同步信息的损失。
[0018]为了实现上述以及相关目的,本发明的一个或多个方面包括后面将详细说明并在权利要求中特别指出的特征。下面的说明以及附图详细说明了本发明的某些示例性方面。然而,这些方面指示的仅仅是可使用本发明的原理的各种方式中的一些方式。此外,本发明旨在包括所有这些方面以及它们的等同物。
【专利附图】
【附图说明】
[0019]通过参考以下结合附图的说明及权利要求书的内容,并且随着对本发明的更全面理解,本发明的其它目的及结果将更加明白及易于理解。在附图中:
[0020]图1为根据本发明的集群系统中确定主控节点和备选链表的方法的流程图;
[0021]图2为根据本发明实施例的集群系统中确定主控节点和备选链表的方法的流程图;
[0022]图3为根据本发明实施例的集群系统中首次确定主控节点和备选链表的流程图;
[0023]图4为根据本发明实施例的集群系统中备份节点失效后重新确定备选链表的流程图;
[0024]图5为根据本发明实施例的集群系统中主控节点失效后重新确定主控节点和备选链表的流程图;
[0025]图6为根据本发明的集群系统中确定主控节点和备选链表装置的结构图。
[0026]在所有附图中相同的标号指示相似或相应的特征或功能。
【具体实施方式】
[0027]以下将结合附图对本发明的具体实施例进行详细描述。
[0028]图1示出了根据本发明的集群系统中确定主控节点和备选链表的方法的流程。
[0029]如图1所示,当集群系统内所有节点全部启动成功后,根据节点的ID的大小将节点排序生成备选链表(步骤S100);然后将备选链表头部的节点确定为主控节点(步骤S110 );再将备选链表中除了主控节点外的其它节点确定为备份节点(步骤S120 );当备选链表中有主控节点和/或备份节点失效时,更新备选链表,并根据更新前的备选链表的主控节点和备份节点确定更新后的备选链表的主控节点(步骤S130)。[0030]其中,节点失效指节点发生宕机或者节点软件升级需要重启等情况。
[0031]为了更为详细地说明本发明提供的集群系统中确定主控节点的方法,图2示出了根据本发明实施例的集群系统中确定主控节点的方法的流程。
[0032]如图2所示,本发明提供的集群系统中确定主控节点和备选链表的方法,包括:
[0033]S200:集群系统内共有m个节点首次启动。
[0034]S210:根据节点ID大小将m个节点按照从小到大或从大到小的顺序排列生成备选链表。
[0035]本实施例按照节点ID从小到大的顺序排列生成备选链表,备选链表的顺序为NI,N2,…,Nm,其中,将节点ID中最小的节点确定为主控节点即备选链表头部的节点NI,将NI除外的其它节点确定为备份节点。
[0036]S220:当节点Nk宕机后重启(l〈k〈=m),主控节点NI将重启后的节点Nk连接到备选链表的尾部。
[0037]S230:更新经过重新排列的备选链表,更新后的备选链表的顺序为NI,N2,...,Nk-l,Nk+l,...,Nm,Nk,其中,更新后的备选链表的主控节点与更新前的备选链表的主控节点相同。
[0038]需要说明的是,节点Nk宕机的情况也可以发生在主控节点NI宕机情况之后,这种情况下主控节点仍然不变, 也就是说,主控节点不发生故障永远是主控节点(有主控节点),这时不需要重新确定主控节点。
[0039]S240:当节点NI宕机后重启,将备选链表中NI的下一个节点N2确定为新的主控节点,节点N2将重启后的节点NI连接到备选链表的尾部。
[0040]S250:更新经过重新排列的备选链表,更新后的备选链表的顺序为N2,...,Nk-1,Nk+1,..., Nm, Nk, NI,其中,由于节点NI为更新前的备选链表的主控节点,节点N2为更新后的备选链表的主控节点,所以将更新后的备选链表头部的节点N2确定为新的主控节点。
[0041]需要说明的是,主控节点宕机的情况也不限定于发生在备份节点宕机情况之后,这种主控节点宕机的情况需要重新确定主控节点,也就是说,主控节点发生故障时(无主控节点),遵循同步延迟最小原则,从备选链表中将主控节点的下一个备份节点确定为新的主控节点,这样能够把延迟降到最低。
[0042]S260:m个节点全部宕机或重启。
[0043]S270:这时判断是否有主控节点冲突。
[0044]S280:如果有主控节点冲突,以最近一次确定的主控节点作为新的主控节点,并更新备选链表。
[0045]S290:如果没有主控节点冲突,则保持主控节点和备选链表不变,备选链表的顺序为 N2,...,Nk-1, Nk+1,..., Nm, Nk, NI。
[0046]本实施例全部节点首次启动时也可以按照节点ID从大到小的顺序排列生成备选链表,备选链表的顺序为Nm,-N2, NI,其中,将节点ID中最大的节点确定为主控节点,再次确定主控节点的步骤与上述步骤相同。
[0047]由上述流程可以得出确定主控节点分为五种情况:集群系统内全部节点首次启动的情况、集群系统内备份节点失效的情况、集群系统内主控节点失效的情况、集群系统内全部节点失效的情况、集群系统内多主异常的情况。[0048]下面针对上述各种情况做详细的描述。
[0049]一、集群系统内全部节点首次启动的情况
[0050]图3示出了根据本发明实施例的集群系统中首次确定主控节点和备选链表的流程。
[0051]如图3所示,当集群内所有节点均未启动过时,各个节点的备选链表还未形成,集群系统内没有节点被确定为主控节点。此时根据节点ID的大小确定主控节点,以启动后的节点ID最小的节点为主控节点,主控节点确定成功后,由主控节点按照从小到大的顺序排列生成备选列表,即,首次启动时,按照节点ID顺序形成备选链表。以节点数n=4为例,首次启动后,那么节点I为主控节点,节点2、3、4为备份节点,备选链表的顺序为1-2-3-4。
[0052]二、集群系统内备份节点失效的情况
[0053]图4示出了根据本发明实施例的集群系统中备份节点失效后重新确定备选链表的流程。
[0054]如图4所示,备选链表的顺序为1-2-3-4,节点I为主控节点,节点2、3、4为备份节点,对于备份节点宕机这种情况,直接将该备份节点从各个节点的备选链表中删除即可,待备份节点重新启动后,由主控节点控制连接到备选链表尾部,以备份节点3宕机为例,此时主控节点不变,备选链表的顺序由1-2-3-4变为1-2-4-3。
[0055]其中,如果该备份节点3重启失败,则主控节点I检测不到该备份节点3,不会将该备份节点3连接到备选链表的尾部。
[0056]三、集群系统内主控节点失效的情况
[0057]图5示出了根据本发明实施例的集群系统中主控节点失效后重新确定主控节点和备选链表的流程。
[0058]如图5所示,备选链表的顺序为1-2-3-4,节点I为主控节点,节点2、3、4为备份节点,如果是主控节点宕机,则主控节点I的下一个备份节点2会成为新的主控节点,待原主控节点I重新启动后,由新的主控节点2控制连接到备选链表尾部,备选链表的顺序由
1-2-3-4 变为 2-3-4-1。
[0059]其中,如果原主控节点I重启失败,则新的主控节点2检测不到该原主控节点I,不会将原主控节点I连接到备选链表的尾部。
[0060]四、集群系统内全部节点失效的情况
[0061]当集群系统内所有节点都宕机或者由于软件升级而要求所有节点都重启时,再次启动所有节点后,则需要根据固化文件内最近一次确定主控节点的时间进行重新确定主控节点的操作,并以最近一次确定的主控节点做为新的主控节点。在这种情况下,节点的固化文件可能会出现两种结果,一是所有节点同时重启或所有备份节点先重启主控节点后重启,这时所有节点的备选链表一致或备选链表中主控节点一致,即主控节点无冲突,此时无需重新确定主控节点,原主控节点重启后仍然是主控节点;二是主控节点先重启,然后所有备份节点重启,这时备份节点又重新确定出主控节点,这样各个节点的备选链表中的主控节点会出现冲突,此时,所有节点重启成功后,应该以最近一次主控节点的确定结果作为新的主控节点。例如,以节点数n=4为例,原备选链表的顺序为1-2-3-4,若主控节点I宕机后,备选节点2、3、4的固化备选链表中的顺序为2-3-4,由于备份节点2与主控节点I连接,当主控节点I宕机后,备份节点2被确定为主控节点,而已经宕机的主控节点I的固化备选链表的顺序为1-2-3-4,此时当所有节点重启后,节点I和节点2都认为自己是主控节点,造成主控节点冲突,此时经过各自备选链表确定主控节点的时间进行判断,节点2被确定为主控节点的时间是最近的,所以节点2成为主控节点,备选链表的顺序由1-2-3-4变为2-3-4-1。
[0062]如果集群系统内所有节点在重启的过程中有一个节点重启失败,则集群系统不会进行任何操作。
[0063]五、集群系统内多主异常的情况
[0064]由于网络设备异常等特殊原因,当集群内节点间形成多个子网的异常情况时,可能会出现多个主控节点,此时,以最近一次主控节点的确定结果作为新的主控节点。
[0065]需要说明的是,第四种情况中的固化文件指的是将备选链表储存到节点上的文件,每个节点都为一台PC服务器,并且本发明不只适用于PC服务器集群系统,还适用于其它的集群系统。
[0066]本发明集群系统中的所有节点采用总线型拓扑结构,共同连接到TCP/IP网络,每个节点有唯一的ID,各个节点之间属于平等关系,采用网状链路的连接方式将ID小的节点主动连接所有大于自己ID的节点,或者将ID大的节点主动连接所有小于自己ID的节点,这样就形成了一个网状链路结构。该网状链路结构可以保证所有节点之间都有连接并且每两个节点之间只有一条连接,并且,任意节点发生异常时所有节点都会及时获得该信息,去除该异常节点后的结构仍然是网状链路结构。
[0067]为了更详细的描述本发明提供的集群系统中确定主控节点的方法,将从另一角度进行说明,本发明的信息同步过程为:
[0068]集群系统内所有节点在全部启动成功后,会形成一个备选链表,其中,备选链表头部为主控节点,其余节点全部为备份节点。主控节点会按照备选链表的顺序定期将同步信息发送给下一个备份节点,各个备选备份节点会按照备选链表的顺序对前一节点的同步信息进行存储并转发到下一个备份节点直到备选链表尾部。如果信息同步过程中,发现有节点失效,则更新备选链表,删除失效节点后,继续下发给失效节点的下一个节点。链状结构的优点是在信息同步时不需要以一对多的方式进行信息同步,不会因为节点数的增加而导致主控节点性能下降,链状结构能够降低主控节点的压力,保障主控节点总体性能。
[0069]与上述方法相对应,本发明还提供一种集群系统中确定主控节点的装置。图6示出了根据本发明的集群系统中确定主控节点装置的结构。
[0070]如图6所示,本发明提供的集群系统中确定主控节点的装置600包括备选链表生成单元610、主控节点确定单元620、备份节点确定单元630、备选链表更新单元640。
[0071]备选链表生成单元610,用于根据节点的ID的大小将节点排序列生成备选链表;主控节点确定单元620,用于将备选链表头部的节点确定为主控节点;备份节点确定单元630,用于将备选链表中除了主控节点外的其它节点确定为备份节点;备选链表更新单元640,用于当备选链表的主控节点和/或备份节点失效时,更新备选链表,并根据更新前的备选链表的主控节点和备份节点确定更新后的备选链表的主控节点。其中,在本发明的一个【具体实施方式】中,备选链表更新单元640包括主控节点排列单元(图未示出)、备份节点排列单元(图未示出)。
[0072]其中,主控节点排列单元,用于当备选链表的主控节点失效时,则将失效的主控节点连接到备选链表的尾部后更新备选链表,并将更新前的备选链表中失效的主控节点的下一个备选节点确定为更新后的备选链表的主控节点;备份节点排列单元,用于当备选链表的备份节点失效时,则将失效的备份节点排列到备选链表的尾部后更新备选链表;并将更新前的备选链表的主控节点确定为更新后的备选链表中的主控节点。
[0073]另外,在本发明的另一个【具体实施方式】中,备选链表更新单元640还包括主节点冲突判断单元(图未示出),用于当备选链表的主控节点和备份节点全部失效时,判断更新后的备选链表的主控节点是否冲突;如果更新后的备选链表的主控节点冲突,则将更新前的备选链表中失效的主控节点的下一个备选节点确定为更新后的备选链表的主控节点;如果更新后的备选链表中的主控节点不冲突,则将更新前的备选链表的主控节点确定为更新后的备选链表的主控节点。
[0074]再者,在本发明的另一个【具体实施方式】中,集群系统中确定主控节点的装置还包括同步信息转发单元(图未示出),用于当备选链表没有主控节点或备份节点失效时,主控节点按照备选链表的顺序将同步信息发送给主控节点的下一个备份节点,备份节点对同步信息进行存储,并按照备选链表的顺序将同步信息转发给备份节点的下一个备份节点,直到备选链表尾部的备份节点存储同步信息为止;或者当备选链表有主控节点或备份节点失效时,在删除备选链表失效的节点后,更新备选链表,并将更新后的备选链表的同步信息转发给失效的主控节点或备份节点的下一个备份节点。
[0075]如上参照附图以示例的方式描述了根据本发明的集群系统中确定主控节点的方法及装置。但是,本领域技术人员应当理解,对于上述本发明所提出的集群系统中确定主控节点的方法及装置,还可以在不脱离本
【发明内容】
的基础上做出各种改进。因此,本发明的保护范围应当由所附的权利要求书的内容确定。
【权利要求】
1.一种集群系统中确定主控节点的方法,包括: 根据节点的ID的大小将节点排序生成备选链表; 将所述备选链表头部的节点确定为主控节点; 将所述备选链表中除了所述主控节点外的其它节点确定为备份节点; 当所述备选链表的主控节点和/或备份节点失效时,更新所述备选链表,并根据更新前的备选链表的主控节点和备份节点确定更新后的备选链表的主控节点。
2.如权利要求1所述的集群系统中确定主控节点的方法,其中,当所述备选链表的主控节点失效时,将所述失效的主控节点连接到所述备选链表的尾部后更新所述备选链表,并将更新前的所述备选链表中失效的主控节点的下一个备选节点确定为更新后的备选链表的主控节点。
3.如权利要求1所述的集群系统中确定主控节点的方法,其中,当所述备选链表的备份节点失效时,将所述失效的备份节点连接到所述备选链表的尾部后更新所述备选链表;并将更新前的所述备选链表的主控节点确定为更新后的备选链表的主控节点。
4.如权利要求1所述的集群系统中确定主控节点的方法,其中,当所述备选链表的主控节点和备份节点全部失效时,判断更新后的备选链表的主控节点是否冲突; 如果更新后的备选链表的主控节点冲突,则将所述失效的主控节点连接到所述备选链表的尾部后更新所述备选链表,并将更新前的所述备选链表中失效的主控节点的下一个备选节点确定为更新后的备选链表的主控节点; 如果更新后的备选链表中的主控节点不冲突,则将更新前的所述备选链表的主控节点确定为更新后的备选链表的主控节点。
5.如权利要求1所述的集群系统中确定主控节点的方法,其中,当所述备选链表没有主控节点或备份节点失效时,所述主控节点按照所述备选链表的顺序将同步信息发送给所述主控节点的下一个备份节点,所述备份节点对所述同步信息进行存储,并按照所述备选链表的顺序将所述同步信息转发给所述备份节点的下一个备份节点,直到所述备选链表尾部的备份节点存储所述同步信息为止; 当所述备选链表有主控节点或备份节点失效时,在删除所述备选链表失效的主控节点或备份节点后,更新所述备选链表,并将更新后的备选链表的同步信息转发给所述失效的主控节点或备份节点的下一个备份节点。
6.一种集群系统中确定主控节点的装置,包括: 备选链表生成单元,用于根据节点的ID的大小将节点排序生成备选链表; 主控节点确定单元,用于将所述备选链表头部的节点确定为主控节点; 备份节点确定单元,用于将所述备选链表中除了所述主控节点外的其它节点确定为备份节点; 备选链表更新单元,用于当所述备选链表的主控节点和/或备份节点失效时,更新所述备选链表,并根据更新前的所述备选链表的主控节点和备份节点确定更新后的备选链表的主控节点。
7.如权利要求6所述的集群系统中确定主控节点的装置,其中,所述备选链表更新单元包括主控节点排列单元,用于当所述备选链表的主控节点失效时,则将所述失效的主控节点连接到所述备选链表的尾部后更新所述备选链表,并将更新前的所述备选链表中失效的主控节点的下一个备选节点确定为更新后的备选链表的主控节点。
8.如权利要求6所述的集群系统中确定主控节点的装置,其中,所述备选链表更新单元包括备份节点排列单元,用于当所述备选链表的备份节点失效时,则将所述失效的备份节点连接到所述备选链表的尾部后更新所述备选链表;并将更新前的所述备选链表的主控节点确定为更新后的备选链表中的主控节点。
9.如权利要求6所述的集群系统中确定主控节点的装置,其中,所述备选链表更新单元包括主节点冲突判断单元,用于当所述备选链表的主控节点和备份节点全部失效时,判断更新后的备选链表的主控节点是否冲突; 如果更新后的备选链表的主控节点冲突,则将所述失效的主控节点连接到所述备选链表的尾部后更新所述备选链表,并将更新前的所述备选链表中失效的主控节点的下一个备选节点确定为更新后的备选链表的主控节点; 如果更新后的备选链表中的主控节点不冲突,则将更新前的所述备选链表的主控节点确定为更新后的备选链表的主控节点。
10.如权利要求6所述的集群系统中确定主控节点的装置,其中,还包括: 同步信息转发单元,用于当所述备选链表没有主控节点或备份节点失效时,所述主控节点按照所述备选链表的顺序将同步信息发送给所述主控节点的下一个备份节点,所述备份节点对所述同步信息进行存储,并按照所述备选链表的顺序将所述同步信息转发给所述备份节点的下一个备份节点,直到所述备选链表尾部的备份节点存储所述同步信息为止;或者, 当所述备选链表有主控节点或备份节点失效时,在删除所述备选链表失效的主控节点或备份节点后,更新所述备选链表,并将更新后的备选链表的同步信息转发给所述失效的主控节点或备份节点的下一个备份节点。
【文档编号】H04L12/24GK103580915SQ201310447229
【公开日】2014年2月12日 申请日期:2013年9月26日 优先权日:2013年9月26日
【发明者】高洋, 杨涛 申请人:东软集团股份有限公司