CN1645862A - 一种集群中主控节点自适应选举算法 - Google Patents
一种集群中主控节点自适应选举算法 Download PDFInfo
- Publication number
- CN1645862A CN1645862A CN 200510018232 CN200510018232A CN1645862A CN 1645862 A CN1645862 A CN 1645862A CN 200510018232 CN200510018232 CN 200510018232 CN 200510018232 A CN200510018232 A CN 200510018232A CN 1645862 A CN1645862 A CN 1645862A
- Authority
- CN
- China
- Prior art keywords
- main controlled
- finger
- node
- controlled node
- cluster
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Computer And Data Communications (AREA)
Abstract
一种集群中主控节点自适应选举算法,运用猜拳模块和心跳检测模块,基于随机产生的整数猜拳值唯一选出一个主控节点,在主控节点因为某些原因而脱离集群时,新的集群可以自动选举出新的主控节点。本发明应用于电信系统中高可靠性的集群中,使得集群内部完全自主产生主控节点,具有独立性,不需要通过配置文件来确定主控节点,避免了人为的干预。
Description
技术领域
本发明属于计算机集群技术领域,具体涉及一种集群中选取主控节点的算法,并保证主控节点的高可用性。
背景技术
在集群中,一般选择一个节点来作为主控节点(需要做出说明的是,主控节点是一个集群内的特殊功能实体,控制集群内的所有节点),目前来看,一般采用的办法是通过配置文件来指定某个节点作为主控节点,当主控节点故障的时候,再根据每个节点在配置文件中定义的权值的大小来选择新的节点作为主控的节点。从目前的集群的这种方式来看,需要人为的干预对集群的各个节点作为主控节点的顺序进行定义。
在专利《基于多TCP连接映像的高可用系统》(公开号:1423197)中的选举子模块(该专利的说明书的7/13页),描述了如何选举一个主服务器的办法:
系统初启时此子模块通过配置文件决定谁是主服务器。具体方法如下:服务器初启,读配置文件,发现自己被配置为主服务器,这时候不是立即把自己推举为主服务器,而是监听心跳信息的接收端口一段时间(至少要大于心跳信息的间隔时间,这样才能保证收到已启动的服务器的心跳信息),根据接收到的心跳信息判断系统中是否已经存在一个主服务器,如果存在,则不推举自己为主服务器,以避免冲突;如果不存在,才将自己推举为主服务器。这样处理避免了对开机先后次序的约束。
在以后的过程中,此子模块还每隔一段时间(可以设置)就检查当前系统中服务器的状态;当发现主服务器失效时,则重新从处于激活的备份服务器中选举出一个新的主服务器;当发现某个备份服务器失效时,则将该服务器从记录服务器的链表中删除。选举机制:根据各个服务器的id号来判断谁来担当主服务器,其基本思想就是看谁的id号最小。其中,id号在每个服务器的配置文件中给出。当系统初启后一段时间,每个服务器的状态信息(hostlist_head)都建立起来了,其中保存这每个服务器的id号,而且hostlist_head在每个服务器上都是相同的。当某个服务器失效时,其他服务器将从各自的hostlist_head中删除此失效服务器,因此,对每个仍然处于激活状态的服务器来说都有一个由所有处于激活状态服务器的id号组成了集合,那么在这个相同的集合中找一个最小id,其结果必然相同,这就保证了选举的一致性。选举结果出来后,每个服务器将这个结果与自己的id号相比较,如果与自己的id号相同,则启动IP抢占线程,将系统对外的虚拟IP地址抢过来绑定在自己的外部网卡上,同时也要把内部局域网的网关地址抢过来绑定在自己的内部网卡上。
通过以上的内容,我们发现该模块选举主服务器的方法需要通过配置文件来干预,在主服务器故障之后,也是通过配置文件指定的各个备份服务器的id的值来选出新的主服务器。显然,这个方法有如下几个问题:
1.需要人为的干预,也就是说需要人来指定主控节点。
2.需要配置文件。
发明内容
本发明针对目前的需要通过配置文件指定主控节点不具有灵活性的方法,提出了一种集群中主控节点自适应选举算法,使得集群内部完全自主产生主控节点,具有独立性,不需要通过配置文件来确定主控节点,避免了人为的干预,保证集群中任何时候都有一个主控节点,在主控节点故障的时候,可以自动重新进行随机的选择一个节点作为主控节点。
本发明的技术方案是:一种集群中主控节点自适应选举算法,其特征在于:每个节点均有猜拳模块和心跳检测模块,初始态各节点猜拳模块启动:首先每个节点随机产生一个整数作为猜拳值,然后将这个猜拳值向集群内进行公布,每个节点将会收到其他节点猜拳值,并与自己的猜拳值进行比较;比较规则是,如果自己的猜拳值比其他的节点的猜拳值小,则自己退出猜拳,如果比所有的其他节点的猜拳值大,则向集群公布自己为主控节点,如果有其他节点的猜拳值与自己的相同,则重新进行新一轮的猜拳,直到选出主控节点为止;在集群进入具有主控节点的稳态之后,心跳检测模块启动,集群中的非主控节点定时向主控节点发送探测包,主控节点在接收到此探测包后返回回应包,如果非主控节点在某段时间内(可以设置)接收不到主控节点的回应包则表明主控节点宕机,在新的集群中重新启动猜拳模块来选出新的主控节点。
如上所述的集群中主控节点自适应选举算法,其特征在于猜拳模块采用TCP/IP中的UDP(用户报文协议)组播技术将猜拳值向集群内进行公布。
本发明的原理是采用已有的心跳检测技术与本发明特有的猜拳算法在集群中产生主控节点。
猜拳算法主要是在一个集群中选出一个节点作为主控节点,在集群进入具有主控节点的稳态之后,心跳检测模块开始启动,定时检测主控节点的存活状态,如果发现主控节点故障,集群内的其他节点开始再次启动猜拳模块,重新选择出新的主控节点。主要方法是:集群中的节点启动,判断自己是否是主控节点,如果是,则无需进行猜拳,否则便向集群内询问是否存在主控节点,如果收到集群内的主控节点回应消息则主控节点存在,也不需要进行猜拳,否则表明集群中不存在主控节点,则各个节点进行猜拳,首先每个节点随机产生一个整数作为猜拳值,然后将这个猜拳值向集群内进行公布(采用UDP的组播技术),每个节点将会收到其他节点猜拳值,并与自己的猜拳值进行比较,在这里我们采用了如下的规则,如果自己的猜拳值比其他的节点的猜拳值小,则自己推出猜拳,如果比所有的其他节点的猜拳值大,则向集群公布自己为主控节点,如果有其他节点的猜拳值与自己的相同,则重新进行新一轮的猜拳,直到选出主控节点为止。
心跳检测技术主要是在集群中检测主控节点是否存活,他在猜拳模块选出主控节点之后启动,通过周期性的发送/回应探测包来检测主控节点是否存活,如果发现主控节点宕机,将会启动猜拳算法,重新在集群中选出新的主控节点。主要方法是:集群中的非主控节点的节点定时向主控节点发送探测包,主控节点在接收到此探测包后返回回应包,如果非主控节点在某段时间内(可以设置)接收不到主控节点的回应包则表明主控节点宕机,在新的集群中重新启动猜拳算法来选出新的主控节点。
本发明所述的算法,具有以下优点:
1.能够自动随机的选出集群中的主控节点,而不是需要通过配置文件指定。
2.主控节点宕机之后,集群中其他节点可以检测到并自动重新选出新的主控节点;
3.此算法使得集群具有伸缩性,集群中加入或者减少节点,集群可以做到自动适应。
附图说明
图1为猜拳模块的工作流程图
图2为集群竞选主控节点的示意图
图3为拥有主控节点的集群心跳检测示意图
具体的实施方式
图1描述了猜拳模块的工作流程。
步骤10,模块开始初始化。
步骤11,看自己是否是主控节点,默认的初始状态是非主控节点。如果是主控节点,则跳转到步骤12;否则,跳转到步骤14。
步骤12,如果自身是主控节点,判断是否能够接收到集群内其他非主控节点发来的询问是否存在主控节点的消息。如果收到集群内其他非主控节点的询问主控节点的消息后,则转到步骤13;否则跳转到12。
步骤13,收到询问消息之后,主控节点向询问者回复我是主控节点的消息。
步骤14,如果自身是非主控节点,则向集群内的所有成员询问是否存在主控节点,这里采用了UDP的多播特性,我们规定一个多播地址为集群的邮箱,节点发往该邮箱的消息将会被集群内的所有成员收到。
步骤15,本节点是否能够收到主控节点的回复消息,这里也采用了UDP的点对点的特性,每个节点是从我们规定为邮箱的多播地址上收取消息,如果集群中存在主控节点,我们规定,主控节点在收到如此的消息之后需要点到点的向询问着发送我是的主控节点的回复消息。如果本节点收到主控节点的回复消息,则跳转到步骤16;否则跳转到步骤17。
步骤16,本节点接收到主控节点的回复消息之后,接收主控节点的控制。
步骤17,接收不到主控节点的回复消息之后,节点将会进入猜拳流程,随机产生一个整数,作为猜拳用的拳值,向集群内进行公布。
步骤18,是否能够接收到集群内其他节点猜拳的拳值,如果接收到了,则跳转到步骤110,否则,则跳转到步骤19。
步骤19,如果没有收到集群内其他节点的消息,则本节点成为主控节点。
步骤110,主控节点定时向集群内的其他节点发送我是主控节点的消息,主要是向集群内的其他节点报告自己的存活状态。
步骤111,如果接收到集群内其他节点的猜拳的拳值,则与本节点的参与猜拳的拳值进行比较。
步骤112,如果本节点的拳值比接收到的拳值要小,则跳转到步骤112;否则,跳转到步骤17。
步骤113,因为本节点的拳值比接收到的其他节点的拳值要小,则本节点退出集群中主控节点的竞选。
步骤114,第一次接收到主控节点的组播消息,表明集群已经存在或者已产生主控节点。
步骤115,启动对主控节点存活状态监测的定时器,我们可以规定某段时间内,如果接收不到主控节点的消息,则表明主控节点死亡。
步骤116,对接收的消息的消息类型进行判断。
步骤117,如果接收到超持消息,则表明主控节点死亡,新的集群没有主控节点,需要再次通过猜拳的方式进行主控节点的竞选,于是跳转到步骤17。
步骤118,接收到主控节点的消息,表明主控节点是存活的状态,则取消上一次的定时器,并跳转到步骤115。
图2描述了一个实际例子的主控节点竞选示意图。
图中有4个节点,都是非主控节点,此图描述了本模块在竞选中的消息接收与发送的方向。需要做出说明的是,这里的邮箱是一个多播的IP地址,各个节点通过向这个IP地址发送、接收消息来达到消息的交互。
图3描述了一个实际例子的检测主控节点的示意图。
这里,节点1成为了主控节点,他周期性了向邮箱发送心跳消息,其他非主控节点则通过邮箱接收此心跳消息,如果在规定的时间内接收不到主控节点的心跳消息,则进入新的主控节点的竞选流程。
虽然通过实施例子描述了本发明,本领域普通技术人员知道,本发明有许多变形和变化而不脱离本发明的精神,希望所附的权利要求包括这些变形和变化而不脱离本发明的精神。
Claims (2)
1、一种集群中主控节点自适应选举算法,其特征在于:每个节点均有猜拳模块和心跳检测模块,初始态各节点猜拳模块启动:首先每个节点随机产生一个整数作为猜拳值,然后将这个猜拳值向集群内进行公布,每个节点将会收到其他节点猜拳值,并与自己的猜拳值进行比较;比较规则是,如果自己的猜拳值比其他的节点的猜拳值小,则自己退出猜拳,如果比所有的其他节点的猜拳值大,则向集群公布自己为主控节点,如果有其他节点的猜拳值与自己的相同,则重新进行新一轮的猜拳,直到选出主控节点为止;在集群进入具有主控节点的稳态之后,心跳检测模块启动,集群中的非主控节点定时向主控节点发送探测包,主控节点在接收到此探测包后返回回应包,如果非主控节点在某段时间内接收不到主控节点的回应包则表明主控节点宕机,在新的集群中重新启动猜拳模块来选出新的主控节点。
2、如上所述的集群中主控节点自适应选举算法,其特征在于猜拳模块采用TCP/IP中的UDP组播技术将猜拳值向集群内进行公布。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100182320A CN100420251C (zh) | 2005-02-01 | 2005-02-01 | 一种集群中主控节点自适应选举算法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005100182320A CN100420251C (zh) | 2005-02-01 | 2005-02-01 | 一种集群中主控节点自适应选举算法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1645862A true CN1645862A (zh) | 2005-07-27 |
CN100420251C CN100420251C (zh) | 2008-09-17 |
Family
ID=34875701
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005100182320A Expired - Fee Related CN100420251C (zh) | 2005-02-01 | 2005-02-01 | 一种集群中主控节点自适应选举算法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100420251C (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100396049C (zh) * | 2006-05-26 | 2008-06-18 | 北京交通大学 | 一种应用于ad hoc网络的基于节点类型的群首选举方法 |
CN102291250A (zh) * | 2011-04-25 | 2011-12-21 | 程旭 | 维护云计算中网络拓扑的方法及装置 |
CN102340793A (zh) * | 2010-07-23 | 2012-02-01 | 中兴通讯股份有限公司 | 临时核心网的选取方法、基站及集群通信系统 |
CN101197651B (zh) * | 2007-12-19 | 2012-07-04 | 华为技术有限公司 | 板间通信的方法、设备、主控板和接口板 |
CN102833289A (zh) * | 2011-06-16 | 2012-12-19 | 宁波速腾电子有限公司 | 一种分布式云计算资源组织和任务分配方法 |
CN102843259A (zh) * | 2012-08-21 | 2012-12-26 | 武汉达梦数据库有限公司 | 集群内中间件自管理热备方法及系统 |
CN103475742A (zh) * | 2013-09-30 | 2013-12-25 | 北京华胜天成科技股份有限公司 | 云计算环境中主控节点确定的方法及系统 |
CN103580915A (zh) * | 2013-09-26 | 2014-02-12 | 东软集团股份有限公司 | 集群系统中确定主控节点的方法及装置 |
CN104917792A (zh) * | 2014-03-12 | 2015-09-16 | 上海宝信软件股份有限公司 | 民主自治的集群管理方法和系统 |
CN105306566A (zh) * | 2015-10-22 | 2016-02-03 | 创新科存储技术(深圳)有限公司 | 一种云存储系统中选举主控节点的方法及系统 |
WO2017214805A1 (zh) * | 2016-06-13 | 2017-12-21 | 深圳天珑无线科技有限公司 | 分布式网络的心跳方法及节点 |
CN111884888A (zh) * | 2020-07-27 | 2020-11-03 | 宁波奥克斯电气股份有限公司 | 裁判机选举方法、装置、智能设备和计算机可读存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU6882998A (en) * | 1997-03-31 | 1998-10-22 | Broadband Associates | Method and system for providing a presentation on a network |
US7130305B2 (en) * | 2001-07-02 | 2006-10-31 | Stonesoft Oy | Processing of data packets within a network element cluster |
US6950855B2 (en) * | 2002-01-18 | 2005-09-27 | International Business Machines Corporation | Master node selection in clustered node configurations |
CN1423197A (zh) * | 2002-12-16 | 2003-06-11 | 华中科技大学 | 基于多tcp连接映像的高可用系统 |
US7185096B2 (en) * | 2003-05-27 | 2007-02-27 | Sun Microsystems, Inc. | System and method for cluster-sensitive sticky load balancing |
-
2005
- 2005-02-01 CN CNB2005100182320A patent/CN100420251C/zh not_active Expired - Fee Related
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100396049C (zh) * | 2006-05-26 | 2008-06-18 | 北京交通大学 | 一种应用于ad hoc网络的基于节点类型的群首选举方法 |
CN101197651B (zh) * | 2007-12-19 | 2012-07-04 | 华为技术有限公司 | 板间通信的方法、设备、主控板和接口板 |
CN102340793A (zh) * | 2010-07-23 | 2012-02-01 | 中兴通讯股份有限公司 | 临时核心网的选取方法、基站及集群通信系统 |
CN102291250A (zh) * | 2011-04-25 | 2011-12-21 | 程旭 | 维护云计算中网络拓扑的方法及装置 |
CN102833289B (zh) * | 2011-06-16 | 2016-02-17 | 浙江速腾电子有限公司 | 一种分布式云计算资源组织和任务分配方法 |
CN102833289A (zh) * | 2011-06-16 | 2012-12-19 | 宁波速腾电子有限公司 | 一种分布式云计算资源组织和任务分配方法 |
CN102843259A (zh) * | 2012-08-21 | 2012-12-26 | 武汉达梦数据库有限公司 | 集群内中间件自管理热备方法及系统 |
CN103580915A (zh) * | 2013-09-26 | 2014-02-12 | 东软集团股份有限公司 | 集群系统中确定主控节点的方法及装置 |
CN103580915B (zh) * | 2013-09-26 | 2017-01-11 | 东软集团股份有限公司 | 集群系统中确定主控节点的方法及装置 |
CN103475742B (zh) * | 2013-09-30 | 2017-02-01 | 北京华胜天成科技股份有限公司 | 云计算环境中主控节点确定的方法及系统 |
CN103475742A (zh) * | 2013-09-30 | 2013-12-25 | 北京华胜天成科技股份有限公司 | 云计算环境中主控节点确定的方法及系统 |
CN104917792A (zh) * | 2014-03-12 | 2015-09-16 | 上海宝信软件股份有限公司 | 民主自治的集群管理方法和系统 |
CN104917792B (zh) * | 2014-03-12 | 2018-10-30 | 上海宝信软件股份有限公司 | 民主自治的集群管理方法和系统 |
CN105306566A (zh) * | 2015-10-22 | 2016-02-03 | 创新科存储技术(深圳)有限公司 | 一种云存储系统中选举主控节点的方法及系统 |
WO2017214805A1 (zh) * | 2016-06-13 | 2017-12-21 | 深圳天珑无线科技有限公司 | 分布式网络的心跳方法及节点 |
CN111884888A (zh) * | 2020-07-27 | 2020-11-03 | 宁波奥克斯电气股份有限公司 | 裁判机选举方法、装置、智能设备和计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN100420251C (zh) | 2008-09-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1645862A (zh) | 一种集群中主控节点自适应选举算法 | |
CN105164991B (zh) | 冗余网络协议系统 | |
US6934875B2 (en) | Connection cache for highly available TCP systems with fail over connections | |
CA2547880C (en) | Improved distributed kernel operating system | |
KR100812374B1 (ko) | 클러스터 시스템에서 프로토콜 네트워크 장애 관리 시스템및 방법 | |
US20060159090A1 (en) | Data distribution apparatus and method | |
US20030046394A1 (en) | System and method for an application space server cluster | |
US20050174972A1 (en) | Reliable message distribution in an ad hoc mesh network | |
US20020087912A1 (en) | Highly available TCP systems with fail over connections | |
CN1791064A (zh) | 具备自动建立机制的堆叠管理器协议 | |
CN1467958A (zh) | 用于搜索外部网中的域名系统服务器的装置及方法 | |
CN1949767A (zh) | 一种基于虚拟路由器冗余协议的主备路由设备切换方法 | |
CN1897553A (zh) | 在网络中维持用于装置的永久唯一标识符的方法和系统 | |
CN101150521A (zh) | 多对多可靠组播拥塞控制方法 | |
CN101729231B (zh) | 分布式控制系统中工业以太网 | |
JP7315679B2 (ja) | メッシュネットワーク | |
CN103001868A (zh) | 用于虚拟路由器冗余协议备份组同步arp表项的方法和装置 | |
CN1859304A (zh) | 一种邻居发现的实现方法 | |
CN1889579A (zh) | 提高路由信息协议路由收敛速度的方法及装置 | |
CN1529459A (zh) | 面向高端交换机的主备倒换实现方法 | |
CN101035058A (zh) | 虚拟路由器冗余协议报文传输方法及装置 | |
CN102047643A (zh) | 用于在服务器故障的事件中能使客户端应用更快恢复的方法 | |
CN105721328B (zh) | 一种vrrp负载均衡的方法、装置和路由器 | |
CN1992672A (zh) | 一种防止由于地址老化时间不一致导致网络中断的方法 | |
US20070260676A1 (en) | Method Of Selecting One Server Out Of A Server Set |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C19 | Lapse of patent right due to non-payment of the annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |