CN109995835A - 主节点选举方法、装置和分布式存储*** - Google Patents
主节点选举方法、装置和分布式存储*** Download PDFInfo
- Publication number
- CN109995835A CN109995835A CN201711498417.5A CN201711498417A CN109995835A CN 109995835 A CN109995835 A CN 109995835A CN 201711498417 A CN201711498417 A CN 201711498417A CN 109995835 A CN109995835 A CN 109995835A
- Authority
- CN
- China
- Prior art keywords
- node
- election
- message
- cluster
- nodes
- 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.)
- Pending
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1044—Group management mechanisms
- H04L67/1051—Group master selection mechanisms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Theoretical Computer Science (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供了一种主节点选举方法、装置和分布式存储***,属于网络存储技术领域。本发明实施例提供的主节点选举方法、装置和分布式存储***,分布式存储***集群中的每个节点具有一个唯一对应的数字编号,发起选举时,根据每个节点的数字编号的大小,确定集群的主节点。该方法不需要集群文件***提供加锁文件,不依赖于集群文件***的稳定,独立性强。当发起选举的节点接收到达到设定数量的选举响应消息时,才能成为主节点。当单台设备断开网络连接时,单台设备无法成为主节点,不会出现集群中IP地址冲突的现象。
Description
技术领域
本发明涉及网络存储设备技术领域,具体而言,涉及一种主节点选举方法、装置和分布式存储***。
背景技术
集群(Cluster)是由多个节点构成的一种松散耦合的计算节点集合,协同起来对外提供服务。集群NAS(Network Attached Storage,网络附加存储)是指协同多个节点(即通常所称的NAS机头)提供高性能、高可用或高负载均衡的NAS(NFS/CIFS)服务。集群NAS是一种横向扩展(Scale-out)存储架构,具有容量和性能线性扩展的优势。
集群NAS***主要包括集群文件***、高可用NAS集群和负载集群三个逻辑部分。集群NAS***基于标准的NFS/CIFS/HTTP/FTP等协议来提供数据访问服务。多个物理节点(物理主机)通过CTDB构建成高可用NAS集群,也可称为CTDB集群。CTDB全称为samba CTDB,是一个集群TDB数据库,可以被Samba或者其他的应用使用来存储数据,例如,用于存放包括samba或其他应用所需的临时文件。该数据库为整个CTDB集群提供连续的数据信息,用以保障集群的业务连续。
上述物理节点与负载集群之间采用NFS/Samba/Httpd/vsftpd等软件接口连接,负载集群采用LVS***来实现负载,对外使用单一的IP地址提供服务。图1示出了集群NAS***的***总体架构,如图1所示,集群NAS***在逻辑上由三个独立的逻辑集群构成,实际构建部署中这三个逻辑集群可以位于同一个物理集群上。如此,即可有效提高每个物理节点的利用效率,更为重要的是能够大大节约成本。
在由多个物理节点组成的CTDB集群中,会选举出一个主节点(recmaster)。该主节点由集群中的所有节点通过选举产生,负责IP地址的分布计算,通知各个从节点释放IP地址或取得IP地址。
在现有的主节点选举方案中,CTDB集群依赖于存储节点提供一个lock卷作为共享存储,在该lock卷中创建有一个加锁文件(lockfile)。所有节点在试图成为recmaster之前,都需要先对该lockfile文件进行加锁操作,加锁成功后,才可以进入选举阶段,在所有节点中选举出一个节点,作为recmaster。recmaster仲裁出来后,就可以完成对集群里虚IP的分布情况进行均衡分配,保证集群内部虚IP分配的尽量均衡以及实现虚IP的接管,保证客户端业务连续性以及各个节点的业务尽量均衡。
由于上述方案需要使用分布式lock卷,采用文件加锁的方式完成recmaster仲裁,因此需要依赖后端分布式文件***的稳定。另外,由于存储节点提供的共享存储通常是副本类型的卷,当CTDB集群中的单台设备断网时,容易构造裂脑的情况。
例如,集群中包含有三个节点,节点A、节点B、和节点C,lock卷提供三副本的卷,然后三个节点(或者说三台设备)组成CTDB集群,如果节点A与其它节点断开连接,则可能出现节点A访问的只是节点A的存储空间,然后也加锁成功,节点A成为recmaster,节点B和节点C也仲裁出一个recmaster。此时,由节点A组成一个小集群,由节点B和节点C组成另一个小集群,从而可能导致两个小集群之间出现IP地址冲突,通常称为裂脑。
发明内容
针对上述现有技术中存在的问题,本发明提供了一种主节点选举方法、装置和分布式存储***。
第一方面,本发明实施例提供了一种主节点选举方法,应用于集群中的第一节点;所述集群的每个节点具有一个唯一对应的数字编号;所述方法包括:
向集群中除第一节点之外的其它节点发送选举提议消息;所述选举提议消息提议第一节点作为主节点,并携带有第一节点的数字编号,以使其它节点根据所述第一节点的数字编号与自身的数字编号的比较结果,确定是否响应所述选举提议消息;
接收其它节点返回的选举响应消息,并对接收到的选举响应消息进行计数;
当接收到的选举响应消息的数量达到设定的数量时,确定第一节点为集群的主节点,向其它节点发送选举成功消息。
结合第一方面,本发明实施例提供了第一方面的第一种可能的实施方式,其中,所述接收到的选举响应消息的数量达到设定的数量包括:接收到所有其它节点的选举响应消息;或者,在第一预设时间内,接收到的选举响应消息的数量达到集群中所有节点的半数;所述接收到的选举响应消息的数量包括所述第一节点。
结合第一方面,本发明实施例提供了第一方面的第二种可能的实施方式,其中,所述方法还包括:
当接收到第二节点的选举提议消息时,提取所述选举提议消息携带的第二节点的数字编号;
判断是否响应过除第一节点和第二节点之外的其它节点的选举提议消息;
如果是,根据响应过的第三节点的数字编号与所述第二节点的数字编号的大小,确定是否响应所述第二节点的选举提议消息;
如果否,根据所述第二节点的数字编号与所述第一节点的数字编号的大小,确定是否响应所述第二节点的选举提议消息。
结合第一方面的第三种可能的实施方式,本发明实施例提供了第一方面的第四种可能的实施方式,其中,所述方法还包括:根据响应过的第三节点的数字编号与所述第二节点的数字编号的大小,确定是否响应所述第二节点的选举提议消息的步骤,包括:
判断所述第三节点的数字编号是否大于所述第二节点的数字编号;
如果是,向所述第二节点发送选举响应消息;
根据所述第二节点的数字编号与所述第一节点的数字编号的大小,确定是否响应所述第二节点的选举提议消息的步骤,包括:
判断所述第二节点的数字编号是否大于所述第一节点的数字编号;
如果是,执行向集群中除第一节点之外的其它节点发送选举提议消息的步骤;
如果否,向所述第二节点发送选举响应消息。
结合第一方面的第二种可能的实施方式,本发明实施例提供了第一方面的第三种可能的实施方式,其中,向所述第二节点发送选举响应消息之后,所述方法还包括:
判断在第二预设时间内,是否接收到所述第二节点返回的选举成功消息;
如果是,执行向集群中除第一节点之外的其它节点发送选举提议消息的步骤。
结合第一方面的第二种可能的实施方式,本发明实施例提供了第一方面的第五种可能的实施方式,其中,所述第二节点的选举提议消息中携带有用于标示选举轮数的版本号;所述方法还包括:
当接收到第二节点的选举提议消息时,比较所述选举提议消息的版本号与所述第一节点的本地版本号的大小;
如果所述选举提议消息的版本号等于所述第一节点的本地版本号,执行提取所述选举提议消息携带的第二节点的数字编号的步骤;
如果所述选举提议消息的版本号大于所述第一节点的本地版本号,则根据所述选举提议消息的版本号,更新所述第一节点的本地版本号,执行提取所述选举提议消息携带的第二节点的数字编号的步骤;
如果所述选举提议消息的版本号小于所述第一节点的本地版本号,则判断所述第一节点的本地版本号是否为偶数;
如果是,判断第一节点的本地节点列表中是否包含所述第二节点;
如果第一节点的本地节点列表中不包含所述第二节点,则提升本地版本号,执行向集群中除第一节点之外的其它节点发送选举提议消息的步骤,重新发起选举。
结合第一方面的第五种可能的实施方式,本发明实施例提供了第一方面的第六种可能的实施方式,其中,所述方法还包括:
当接收到其它节点的选举响应消息时,判断所述选举响应消息的版本号是否大于所述第一节点的本地版本号;
如果是,根据所述选举响应消息的版本号,更新本地版本号,执行向集群中除第一节点之外的其它节点发送选举提议消息的步骤,重新发起选举;
如果否,执行对接收到的选举响应消息进行计数的步骤。
结合第一方面的第五种可能的实施方式,本发明实施例提供了第一方面的第七种可能的实施方式,其中,所述方法还包括:
当接收到其它节点的选举成功消息时,判断所述选举成功消息的版本号是否等于所述第一节点的本地版本号加一;
如果是,根据所述选举成功消息的版本号,更新本地版本号;
如果否,执行向集群中除第一节点之外的其它节点发送选举提议消息的步骤,重新发起选举。
第二方面,本发明实施例还提供了一种主节点选举装置,应用于集群中的第一节点;所述集群的每个节点具有一个唯一对应的数字编号;所述装置包括:
提议消息发送模块,用于向集群中除第一节点之外的其它节点发送选举提议消息;所述选举提议消息提议第一节点作为主节点,并携带有第一节点的数字编号,以使其它节点根据所述第一节点的数字编号与自身的数字编号的比较结果,确定是否响应所述选举提议消息;
响应消息接收模块,用于接收其它节点返回的选举响应消息,并对接收到的选举响应消息进行计数;
成功消息发送模块,用于当接收到的选举响应消息的数量达到设定的数量时,确定第一节点为集群的主节点,向其它节点发送选举成功消息。
第三方面,本发明实施例还提供了一种分布式存储***,包括多个相互连接的节点,所述节点包括:
提议消息发送模块,用于向集群中除第一节点之外的其它节点发送选举提议消息;所述选举提议消息提议第一节点作为主节点,并携带有第一节点的数字编号,以使其它节点根据所述第一节点的数字编号与自身的数字编号的比较结果,确定是否响应所述选举提议消息;
响应消息接收模块,用于接收其它节点返回的选举响应消息,并对接收到的选举响应消息进行计数;
成功消息发送模块,用于当接收到的选举响应消息的数量达到设定的数量时,确定第一节点为集群的主节点,向其它节点发送选举成功消息。
本发明实施例带来了以下有益效果:
本发明实施例提供的主节点选举方法、装置和分布式存储***,分布式存储***集群中的每个节点具有一个唯一对应的数字编号,发起选举时,根据每个节点的数字编号的大小,确定集群的主节点。该方法不需要集群文件***提供加锁文件,不依赖于集群文件***的稳定,独立性强。当发起选举的节点接收到达到设定数量的选举响应消息时,才能成为主节点。当单台设备断开网络连接时,单台设备无法成为主节点,不会出现集群中IP地址冲突的现象。
本发明的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为集群NAS***的***总体架构图;
图2为本发明较佳实施例所提供的主节点选举方法的一种流程图;
图3为本发明较佳实施例所提供的主节点选举方法的另一种流程图;
图4为本发明较佳实施例所提供的主节点选举方法的又一种流程图;
图5为本发明较佳实施例所提供的主节点选举装置的一种结构框图;
图6为本发明较佳实施例所提供的主节点选举装置的另一种结构框图。
图标:
51-提议消息发送模块;52-响应消息接收模块;53-成功消息发送模块;61-提议消息处理模块;62-定时事件模块;63-成功消息处理模块。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
针对现有的集群中选举主节点通常采用文件加锁的方式,需要依赖分布式集群文件***的稳定,且容易发生IP地址冲突的问题,本发明实施例提供了一种主节点选举方法、装置和分布式存储***,根据集群中每个节点的数字编号的大小,确定集群的主节点,不需要集群文件***提供加锁文件,不依赖于集群文件***的稳定,独立性强;且当单台设备断开网络连接时,不会出现集群中IP地址冲突的现象。
图2示出了本发明较佳实施例提供的主节点选举方法的流程图。该主节点选举方法可以应用于集群中的任一节点设备。为了便于描述和与其它节点进行区分,以下称第一节点。该集群可以是,但不限于如图1所示的集群NAS***。在集群NAS***中,多个存储节点,或称物理节点组成CTDB集群。集群包括nodes文件中加载的所有节点。每个节点通常根据配置文件/etc/ctdb/nodes配置文件加载到内存里,每个节点对应一个数字编号(pnn)。例如,节点的pnn可以从0开始,然后1,2,3,4…。
选举集群的主节点时,可以仅依据节点的数字编号进行选举,每个节点都可以发起提议,提议自己为主节点,收到其它节点的提议时,若处于选举阶段,也可以接受来自数字编号更小或更大的节点的提议,以便快速收敛,达到快速选举的目的。
如图2所示,应用于第一节点的主节点选举方法,包括如下步骤:
步骤S202,向集群中除第一节点之外的其它节点发送选举提议消息。
当第一节点检测到集群中不存在主节点,或主节点异常,或存在其它需要重新发起选举的情况时,根据本地内存中的记录,找到目前集群中可以参与选举的所有节点。向集群中除第一节点之外的其它节点发送选举提议消息。该选举提议消息提议第一节点作为主节点,并携带有第一节点的数字编号,以使其它节点根据第一节点的数字编号与自身的数字编号的比较结果,确定是否响应该选举提议消息。
其它节点接收到第一节点发送的选举提议消息时,比较第一节点的数字编号与自身的数字编号的大小,根据预设规则,确定是否响应该选举提议消息。例如,预设规则可以是响应来自数字编号更小的节点的提议,或者是响应来自数字编号更大的节点的提议。以下均以预设规则为响应来自数字编号更小的节点的提议为例进行说明。当其他节点确定发出选举提议消息的第一节点的数字编号小于自身的数字编号时,会响应该选举提议消息,向第一节点发送选举响应消息。
步骤S204,接收其它节点返回的选举响应消息,并对接收到的选举响应消息进行计数。
步骤S206,当接收到的选举响应消息的数量达到设定的数量时,确定第一节点为集群的主节点,向其它节点发送选举成功消息。
其中,设定的数量可以根据实际需要进行调整,接收到的选举响应消息的数量达到设定的数量,可以但不限于如下两种情况,接收到所有其它节点的选举响应消息,或者,接收到的选举响应消息的数量达到集群中所有节点的半数;在统计接收到的选举响应消息的数量时,默认第一节点同意自身的选举提议,接收到的选举响应消息的数量包括第一节点。
例如,当第一节点接收到所有其它节点的选举响应消息时,即接收到的选举响应消息的数量,等于本地内存中记录的集群中所有其它节点的总数时,则认为选举成功,向其它节点发送选举成功消息,并更新对应的本地内存中的记录。或者,在第一预设时间内,接收到的选举响应消息的数量达到集群中所有节点的半数。第一预设时间可以根据实际需要进行调整,如果在第一预设时间内,没有接受到所有其它节点的响应,则判断接收到的选举响应信息的数量是否已经大于集群中所有节点数量的半数;接收到的选举响应信息的数量包括第一节点。如果否,则重新触发新一轮选举。如果是,则认为选举成功,向其它节点发送选举成功消息,通知其他节点选举成功,以使其它节点停止正在进行的选举阶段。
应当理解的是,也可以在接收到的选举响应消息的数量达到集群中所有节点数量的半数时,认为选举成功,停止计时和计数,向其它节点发送选举成功消息,以停止正在进行的选举阶段。
如果选举成功,第一节点即成为集群的主节点,可以正常启动接管流程,负责IP地址的均衡分配等业务。
该主节点选举方法,根据每个节点的数字编号的大小,确定集群的主节点,不需要集群文件***提供加锁文件,不依赖于集群文件***的稳定,独立性强。由于当发起选举的节点接收到达到设定数量的选举响应消息时,才能成为主节点,因此,当单台设备断开网络连接时,单台设备无法成为主节点,不会出现集群中IP地址冲突的现象,即不会出现裂脑现象。
在上述实施例所记载的方法的基础上,如果第一节点接收到来自其它节点的选举提议消息,其处理过程如图3所示,包括:
步骤S302,当接收到第二节点的选举提议消息时,提取选举提议消息携带的第二节点的数字编号。
步骤S304,判断是否响应过除第一节点和第二节点之外的其它节点的选举提议消息;如果是,执行步骤S306,;如果否,执行步骤S308。
步骤S306,根据响应过的第三节点的数字编号与第二节点的数字编号的大小,确定是否响应第二节点的选举提议消息。
如果第三节点的数字编号大于第二节点的数字编号,则根据响应编号更小的数字节点的预设规则,向第二节点发送选举响应消息。如果第三节点的数字编号小于第二节点的数字编号,则根据预设规则,丢弃该选举提议消息,不响应第二节点的选举提议消息。
步骤S308,根据第二节点的数字编号与所述第一节点的数字编号的大小,确定是否响应所述第二节点的选举提议消息。
如果第二节点的数字编号大于第一节点的数字编号,不响应第二节点的选举提议消息,执行向集群中除第一节点之外的其它节点发送选举提议消息的步骤,重新发起选举,之后可以参照图2中步骤S202至步骤S206执行,在此不再赘述。如果第二节点的数字编号小于第一节点的数字编号,则向第二节点发送选举响应消息。
在向第二节点发送选举响应消息之后,判断在第二预设时间内,是否接收到第二节点返回的选举成功消息。如果是,则选举成功,第二节点成为集群的主节点。如果否,执行向集群中除第一节点之外的其它节点发送选举提议消息,重新发起选举。
其中,第二预设时间可以根据实际需要进行调整,第二预设时间可以与上述第一预设时间一致。也可以根据实际需要,设定第二预设时间大于第一预设时间,以避免在节点离线,或者其他网络异常的情况下,可能导致投票选举后等待选举成功时超时然后反复发起选举,最终导致几分钟甚至更长的时间内一直无法选举出主节点的情况发生。
开始选举时,即节点在发送选举提议消息时,需要取消以前的定时事件,重新启动新的定时事件,以便在选举超时时执行超时后的处理。发送选举响应消息后,也需要取消可能的定时事件,重新启动新的定时任务,以便在超时未收到选举成功消息时,重新发起选举。在发送选举成功消息以及收到选举成功消息时,都要取消对应的定时事件,避免引起新的重新选举。
为了保证各个节点在传递消息时处于同一轮选举中,还可以在选举消息中增加版本号,版本号也可以采用数字,偶数表示稳定状态,奇数表示在选举状态。每个节点在发送选举提议消息、选举响应消息和选举成功消息时,都携带用于标示选举轮数的版本号。
在本实施例中,当第一节点接收到第二节点的选举提议消息时,可以采用如图4所示的方法执行,包括:
步骤S402,接收到第二节点的选举提议消息。
步骤S404,比较选举提议消息的版本号与第一节点的本地版本号的大小;如果选举提议消息的版本号大于第一节点的本地版本号,执行步骤S406;如果选举提议消息的版本号等于第一节点的本地版本号,执行步骤S408;如果选举提议消息的版本号小于第一节点的本地版本号,执行步骤S412。
步骤S406,更新第一节点的本地版本号。
步骤S408,提取选举提议消息携带的第二节点的数字编号。
步骤S410,根据第二节点的数字编号的大小,确定是否响应第二节点的选举提议消息。具体可以通过执行步骤S302~步骤S308的步骤,来确定是否响应第二节点的选举提议消息。
步骤S412,判断第一节点的本地版本号是否为偶数;如果是,执行步骤S414;如果否,执行步骤S416。
步骤S414,判断第一节点的本地节点列表中是否包含第二节点;如果是,执行步骤S416;如果否,执行步骤S418。
步骤S416,忽略该选举提议消息。
步骤S418,提升本地版本号,执行向集群中除第一节点之外的其它节点发送选举提议消息的步骤,重新发起选举。
如果选举提议消息的版本号小于第一节点的本地版本号,且第一节点的本地版本号为奇数时,说明第一节点正处于选举阶段,可以忽略版本号较低的选举提议消息。
如果选举提议消息的版本号小于第一节点的本地版本号,当第一节点的本地版本号是偶数,且第二节点不在第一节点的内存记录的本地节点列表中时,则说明有可能是新的节点加入了集群,重新发起选举。当第一节点的本地版本号是偶数,且第二节点已经存在于第一节点的内存记录的本地节点列表中时,则说明该选举提议消息是个旧消息,可以直接忽略。
同理,当第一节点接收到其它节点的选举响应消息时,判断选举响应消息的版本号是否大于第一节点的本地版本号;如果是,根据选举响应消息的版本号,更新本地版本号,执行向集群中除第一节点之外的其它节点发送选举提议消息的步骤,重新发起选举;如果否,执行对接收到的选举响应消息进行计数的步骤。选举成功后,如果第一节点成为集群的主节点,则第一节点将本地版本号加一,然后向其它节点发送选举成功消息。
当第一节点接收到其它节点的选举成功消息时,判断选举成功消息的版本号是否等于第一节点的本地版本号加一;
如果是,根据所述选举成功消息的版本号,更新本地版本号;
如果否,执行向集群中除第一节点之外的其它节点发送选举提议消息的步骤,重新发起选举。
本发明实施例基于paxos算法,获得超过一半的选票的节点成为集群的主节点,负责整个集群中IP地址的分发和接管,从而保持整个集群可靠的运行,用户的读写不受影响。由于需要超过一半的选票才能仲裁为集群的主节点,所以单台设备断网时,也就不会出现裂脑的情况。
此外,由于不依赖于后端的分布式集群文件***,也就是该集群可以完全独立的作为一个分布式机头集群,用户可以灵活的根据实际应用和环境来部署,后端承接业务的可以是单机的NAS或者IP SAN应用,也可以是分布式文件***组成的存储***,也可以是分布式块存储。若环境许可,也可以将机头和存储设备合一,部署更灵活。
与上述方法实施例相对应地,本发明实施例还提供了一种主节点选举装置,应用于集群中的第一节点。集群的每个节点具有一个唯一对应的数字编号。如图5所示,该装置包括:
提议消息发送模块51,用于向集群中除第一节点之外的其它节点发送选举提议消息;该选举提议消息提议第一节点作为主节点,并携带有第一节点的数字编号,以使其它节点根据第一节点的数字编号与自身的数字编号的比较结果,确定是否响应选举提议消息;
响应消息接收模块52,用于接收其它节点返回的选举响应消息,并对接收到的选举响应消息进行计数;
成功消息发送模块53,用于当接收到的选举响应消息的数量达到设定的数量时,确定第一节点为集群的主节点,向其它节点发送选举成功消息。
其中,成功消息发送模块53,还可以用于:当接收到所有其它节点的选举响应消息时;或者,在第一预设时间内,接收到的选举响应消息的数量达到集群中所有节点的半数;所述接收到的选举响应消息的数量包括所述第一节点。
在一可选的实施例中,如图6所示,所述装置还可以包括:
提议消息处理模块61,用于当接收到第二节点的选举提议消息时,提取选举提议消息携带的第二节点的数字编号;判断是否响应过除第一节点和第二节点之外的其它节点的选举提议消息;如果是,根据响应过的第三节点的数字编号与所述第二节点的数字编号的大小,确定是否响应第二节点的选举提议消息;如果否,根据第二节点的数字编号与所述第一节点的数字编号的大小,确定是否响应第二节点的选举提议消息;
定时事件模块62,用于判断在第二预设时间内,是否接收到第二节点返回的选举成功消息;如果否,执行向集群中除第一节点之外的其它节点发送选举提议消息的步骤。
其中,提议消息处理模块61,还可以用于:当接收到第二节点的选举提议消息时,比较选举提议消息的版本号与第一节点的本地版本号的大小;如果选举提议消息的版本号等于第一节点的本地版本号,执行提取选举提议消息携带的第二节点的数字编号的步骤;如果选举提议消息的版本号大于第一节点的本地版本号,则根据选举提议消息的版本号,更新第一节点的本地版本号,执行提取选举提议消息携带的第二节点的数字编号的步骤;如果选举提议消息的版本号小于第一节点的本地版本号,则判断第一节点的本地版本号是否为偶数;如果是,判断第一节点的本地节点列表中是否包含第二节点;如果第一节点的本地节点列表中不包含第二节点,则提升本地版本号,执行向集群中除第一节点之外的其它节点发送选举提议消息的步骤,重新发起选举。
响应消息接收模块52,还可以用于当接收到其它节点的选举响应消息时,判断选举响应消息的版本号是否大于第一节点的本地版本号;如果是,根据选举响应消息的版本号,更新本地版本号,执行向集群中除第一节点之外的其它节点发送选举提议消息的步骤,重新发起选举;如果否,执行对接收到的选举响应消息进行计数的步骤。
可选地,所述装置还可以包括:
成功消息处理模块63,用于当接收到其它节点的选举成功消息时,判断选举成功消息的版本号是否等于所述第一节点的本地版本号加一;如果是,根据选举成功消息的版本号,更新本地版本号;如果否,执行向集群中除第一节点之外的其它节点发送选举提议消息的步骤,重新发起选举。
本发明实施例提供的主节点选举装置,发起选举时,根据每个节点的数字编号的大小,确定集群的主节点。该方法不需要集群文件***提供加锁文件,不依赖于集群文件***的稳定,独立性强。当发起选举的节点接收到达到设定数量的选举响应消息时,才能成为主节点。当单台设备断开网络连接时,单台设备无法成为主节点,不会出现集群中IP地址冲突的现象。
本发明实施例还提供了一种分布式存储***,包括多个相互连接的节点,每个节点为一个存储设备,所有存储设备组成CTDB集群。存储设备中设置有上述的主节点选举装置。分布式存储***的各个节点通过执行上述的主节点选举方法,确定集群的主节点,负责整个集群中IP地址的分发和接管,保持整个集群的可靠运行。其它节点作为从节点,提供与主节点相同的数据存取能力。
本发明实施例提供的主节点选举方法、主节点选举装置和分布式存储***具有相同的技术特征,所以也能解决相同的技术问题,达到相同的技术效果。
需要说明的是,在本发明所提供的实施例中,应该理解到,所揭露***和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明提供的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (10)
1.一种主节点选举方法,其特征在于,应用于集群中的第一节点;所述集群的每个节点具有一个唯一对应的数字编号;所述方法包括:
向集群中除第一节点之外的其它节点发送选举提议消息;所述选举提议消息提议第一节点作为主节点,并携带有第一节点的数字编号,以使其它节点根据所述第一节点的数字编号与自身的数字编号的比较结果,确定是否响应所述选举提议消息;
接收其它节点返回的选举响应消息,并对接收到的选举响应消息进行计数;
当接收到的选举响应消息的数量达到设定的数量时,确定第一节点为集群的主节点,向其它节点发送选举成功消息。
2.根据权利要求1所述的方法,其特征在于,所述接收到的选举响应消息的数量达到设定的数量包括:接收到所有其它节点的选举响应消息;或者,在第一预设时间内,接收到的选举响应消息的数量达到集群中所有节点的半数;所述接收到的选举响应消息的数量包括所述第一节点。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当接收到第二节点的选举提议消息时,提取所述选举提议消息携带的第二节点的数字编号;
判断是否响应过除第一节点和第二节点之外的其它节点的选举提议消息;
如果是,根据响应过的第三节点的数字编号与所述第二节点的数字编号的大小,确定是否响应所述第二节点的选举提议消息;
如果否,根据所述第二节点的数字编号与所述第一节点的数字编号的大小,确定是否响应所述第二节点的选举提议消息。
4.根据权利要求3所述的方法,其特征在于,根据响应过的第三节点的数字编号与所述第二节点的数字编号的大小,确定是否响应所述第二节点的选举提议消息的步骤,包括:
判断所述第三节点的数字编号是否大于所述第二节点的数字编号;
如果是,向所述第二节点发送选举响应消息;
根据所述第二节点的数字编号与所述第一节点的数字编号的大小,确定是否响应所述第二节点的选举提议消息的步骤,包括:
判断所述第二节点的数字编号是否大于所述第一节点的数字编号;
如果是,执行向集群中除第一节点之外的其它节点发送选举提议消息的步骤;
如果否,向所述第二节点发送选举响应消息。
5.根据权利要求4所述的方法,其特征在于,向所述第二节点发送选举响应消息之后,所述方法还包括:
判断在第二预设时间内,是否接收到所述第二节点返回的选举成功消息;
如果否,执行向集群中除第一节点之外的其它节点发送选举提议消息的步骤。
6.根据权利要求3所述的方法,其特征在于,所述第二节点的选举提议消息中携带有用于标示选举轮数的版本号;所述方法还包括:
当接收到第二节点的选举提议消息时,比较所述选举提议消息的版本号与所述第一节点的本地版本号的大小;
如果所述选举提议消息的版本号等于所述第一节点的本地版本号,执行提取所述选举提议消息携带的第二节点的数字编号的步骤;
如果所述选举提议消息的版本号大于所述第一节点的本地版本号,则根据所述选举提议消息的版本号,更新所述第一节点的本地版本号,执行提取所述选举提议消息携带的第二节点的数字编号的步骤;
如果所述选举提议消息的版本号小于所述第一节点的本地版本号,则判断所述第一节点的本地版本号是否为偶数;
如果是,判断第一节点的本地节点列表中是否包含所述第二节点;
如果第一节点的本地节点列表中不包含所述第二节点,则提升本地版本号,执行向集群中除第一节点之外的其它节点发送选举提议消息的步骤,重新发起选举。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
当接收到其它节点的选举响应消息时,判断所述选举响应消息的版本号是否大于所述第一节点的本地版本号;
如果是,根据所述选举响应消息的版本号,更新本地版本号,执行向集群中除第一节点之外的其它节点发送选举提议消息的步骤,重新发起选举;
如果否,执行对接收到的选举响应消息进行计数的步骤。
8.根据权利要求6所述的方法,其特征在于,所述方法还包括:
当接收到其它节点的选举成功消息时,判断所述选举成功消息的版本号是否等于所述第一节点的本地版本号加一;
如果是,根据所述选举成功消息的版本号,更新本地版本号;
如果否,执行向集群中除第一节点之外的其它节点发送选举提议消息的步骤,重新发起选举。
9.一种主节点选举装置,其特征在于,应用于集群中的第一节点;所述集群的每个节点具有一个唯一对应的数字编号;所述装置包括:
提议消息发送模块,用于向集群中除第一节点之外的其它节点发送选举提议消息;所述选举提议消息提议第一节点作为主节点,并携带有第一节点的数字编号,以使其它节点根据所述第一节点的数字编号与自身的数字编号的比较结果,确定是否响应所述选举提议消息;
响应消息接收模块,用于接收其它节点返回的选举响应消息,并对接收到的选举响应消息进行计数;
成功消息发送模块,用于当接收到的选举响应消息的数量达到设定的数量时,确定第一节点为集群的主节点,向其它节点发送选举成功消息。
10.一种分布式存储***,其特征在于,包括多个相互连接的节点,所述节点包括:
提议消息发送模块,用于向集群中除第一节点之外的其它节点发送选举提议消息;所述选举提议消息提议第一节点作为主节点,并携带有第一节点的数字编号,以使其它节点根据所述第一节点的数字编号与自身的数字编号的比较结果,确定是否响应所述选举提议消息;
响应消息接收模块,用于接收其它节点返回的选举响应消息,并对接收到的选举响应消息进行计数;
成功消息发送模块,用于当接收到的选举响应消息的数量达到设定的数量时,确定第一节点为集群的主节点,向其它节点发送选举成功消息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711498417.5A CN109995835A (zh) | 2017-12-29 | 2017-12-29 | 主节点选举方法、装置和分布式存储*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711498417.5A CN109995835A (zh) | 2017-12-29 | 2017-12-29 | 主节点选举方法、装置和分布式存储*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109995835A true CN109995835A (zh) | 2019-07-09 |
Family
ID=67111716
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711498417.5A Pending CN109995835A (zh) | 2017-12-29 | 2017-12-29 | 主节点选举方法、装置和分布式存储*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109995835A (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110417882A (zh) * | 2019-07-22 | 2019-11-05 | 卓尔智联(武汉)研究院有限公司 | 主节点的确定方法、装置和存储介质 |
CN110545224A (zh) * | 2019-09-06 | 2019-12-06 | 杭州涂鸦信息技术有限公司 | 设备群组同步控制方法及可读存储介质、计算机设备 |
CN111162942A (zh) * | 2019-12-27 | 2020-05-15 | 杭州涂鸦信息技术有限公司 | 一种集群选举方法及*** |
CN111538763A (zh) * | 2020-04-24 | 2020-08-14 | 咪咕文化科技有限公司 | 一种确定集群中主节点的方法、电子设备和存储介质 |
CN113242296A (zh) * | 2021-05-08 | 2021-08-10 | 山东英信计算机技术有限公司 | 一种集群中主节点选举方法、***及介质 |
CN113297236A (zh) * | 2020-11-10 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 分布式一致性***中主节点的选举方法、装置及*** |
CN113572820A (zh) * | 2021-07-01 | 2021-10-29 | 西安震有信通科技有限公司 | 一种集群构建方法、装置、终端设备及存储介质 |
CN113641692A (zh) * | 2021-08-18 | 2021-11-12 | 福建天晴数码有限公司 | 一种实现分布式集群节点参选的方案及*** |
WO2022033290A1 (zh) * | 2020-08-12 | 2022-02-17 | 百果园技术(新加坡)有限公司 | 强一致存储***、数据强一致存储方法、服务器及介质 |
CN114448866A (zh) * | 2021-12-23 | 2022-05-06 | 东莞市李群自动化技术有限公司 | 网络域的管控方法、网络***、设备及存储介质 |
CN113297236B (zh) * | 2020-11-10 | 2024-07-30 | 阿里巴巴集团控股有限公司 | 分布式一致性***中主节点的选举方法、装置及*** |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7697490B2 (en) * | 2004-12-01 | 2010-04-13 | Telefonaktiebolaget L M Ericsson (Publ) | Cluster of terminals and ad-hoc network for cluster-based multi-party conferencing |
CN102929696A (zh) * | 2012-09-28 | 2013-02-13 | 北京搜狐新媒体信息技术有限公司 | 一种分布式***中心节点构建、提交、监控方法及装置 |
CN103118084A (zh) * | 2013-01-21 | 2013-05-22 | 浪潮(北京)电子信息产业有限公司 | 一种主节点的选举方法及节点 |
CN103491168A (zh) * | 2013-09-24 | 2014-01-01 | 浪潮电子信息产业股份有限公司 | 一种集群选举设计方法 |
CN103780615A (zh) * | 2014-01-20 | 2014-05-07 | 五八同城信息技术有限公司 | 一种在多个服务器间客户端会话数据共享方法 |
CN105338028A (zh) * | 2014-07-30 | 2016-02-17 | 浙江宇视科技有限公司 | 一种分布式服务器集群中主从节点选举方法及装置 |
CN106331098A (zh) * | 2016-08-23 | 2017-01-11 | 东方网力科技股份有限公司 | 一种服务器集群*** |
CN107046474A (zh) * | 2016-12-20 | 2017-08-15 | 东软集团股份有限公司 | 一种服务集群 |
CN107404511A (zh) * | 2016-03-31 | 2017-11-28 | 阿里巴巴集团控股有限公司 | 集群中服务器的替换方法及设备 |
-
2017
- 2017-12-29 CN CN201711498417.5A patent/CN109995835A/zh active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7697490B2 (en) * | 2004-12-01 | 2010-04-13 | Telefonaktiebolaget L M Ericsson (Publ) | Cluster of terminals and ad-hoc network for cluster-based multi-party conferencing |
CN102929696A (zh) * | 2012-09-28 | 2013-02-13 | 北京搜狐新媒体信息技术有限公司 | 一种分布式***中心节点构建、提交、监控方法及装置 |
CN103118084A (zh) * | 2013-01-21 | 2013-05-22 | 浪潮(北京)电子信息产业有限公司 | 一种主节点的选举方法及节点 |
CN103491168A (zh) * | 2013-09-24 | 2014-01-01 | 浪潮电子信息产业股份有限公司 | 一种集群选举设计方法 |
CN103780615A (zh) * | 2014-01-20 | 2014-05-07 | 五八同城信息技术有限公司 | 一种在多个服务器间客户端会话数据共享方法 |
CN105338028A (zh) * | 2014-07-30 | 2016-02-17 | 浙江宇视科技有限公司 | 一种分布式服务器集群中主从节点选举方法及装置 |
CN107404511A (zh) * | 2016-03-31 | 2017-11-28 | 阿里巴巴集团控股有限公司 | 集群中服务器的替换方法及设备 |
CN106331098A (zh) * | 2016-08-23 | 2017-01-11 | 东方网力科技股份有限公司 | 一种服务器集群*** |
CN107046474A (zh) * | 2016-12-20 | 2017-08-15 | 东软集团股份有限公司 | 一种服务集群 |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110417882A (zh) * | 2019-07-22 | 2019-11-05 | 卓尔智联(武汉)研究院有限公司 | 主节点的确定方法、装置和存储介质 |
CN110417882B (zh) * | 2019-07-22 | 2022-04-08 | 卓尔智联(武汉)研究院有限公司 | 主节点的确定方法、装置和存储介质 |
CN110545224A (zh) * | 2019-09-06 | 2019-12-06 | 杭州涂鸦信息技术有限公司 | 设备群组同步控制方法及可读存储介质、计算机设备 |
CN111162942A (zh) * | 2019-12-27 | 2020-05-15 | 杭州涂鸦信息技术有限公司 | 一种集群选举方法及*** |
CN111538763A (zh) * | 2020-04-24 | 2020-08-14 | 咪咕文化科技有限公司 | 一种确定集群中主节点的方法、电子设备和存储介质 |
CN111538763B (zh) * | 2020-04-24 | 2023-08-15 | 咪咕文化科技有限公司 | 一种确定集群中主节点的方法、电子设备和存储介质 |
WO2022033290A1 (zh) * | 2020-08-12 | 2022-02-17 | 百果园技术(新加坡)有限公司 | 强一致存储***、数据强一致存储方法、服务器及介质 |
CN113297236A (zh) * | 2020-11-10 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 分布式一致性***中主节点的选举方法、装置及*** |
CN113297236B (zh) * | 2020-11-10 | 2024-07-30 | 阿里巴巴集团控股有限公司 | 分布式一致性***中主节点的选举方法、装置及*** |
CN113242296B (zh) * | 2021-05-08 | 2023-05-26 | 山东英信计算机技术有限公司 | 一种集群中主节点选举方法、***及介质 |
CN113242296A (zh) * | 2021-05-08 | 2021-08-10 | 山东英信计算机技术有限公司 | 一种集群中主节点选举方法、***及介质 |
CN113572820A (zh) * | 2021-07-01 | 2021-10-29 | 西安震有信通科技有限公司 | 一种集群构建方法、装置、终端设备及存储介质 |
CN113572820B (zh) * | 2021-07-01 | 2024-02-02 | 西安震有信通科技有限公司 | 一种集群构建方法、装置、终端设备及存储介质 |
CN113641692A (zh) * | 2021-08-18 | 2021-11-12 | 福建天晴数码有限公司 | 一种实现分布式集群节点参选的方案及*** |
CN114448866A (zh) * | 2021-12-23 | 2022-05-06 | 东莞市李群自动化技术有限公司 | 网络域的管控方法、网络***、设备及存储介质 |
CN114448866B (zh) * | 2021-12-23 | 2024-04-12 | 东莞市李群自动化技术有限公司 | 网络域的管控方法、网络***、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109995835A (zh) | 主节点选举方法、装置和分布式存储*** | |
CN105068856A (zh) | 基于镜像快照的虚拟机备份***及备份方法 | |
CN105933376B (zh) | 一种数据操作方法,服务器及存储*** | |
CN104008152B (zh) | 支持海量数据访问的分布式文件***的架构方法 | |
CN107430603B (zh) | 大规模并行处理数据库的***和方法 | |
WO2016150066A1 (zh) | 一种主节点选举方法、装置及存储*** | |
CN104243527A (zh) | 数据同步方法、数据同步装置及分布式*** | |
CN105376277B (zh) | 一种数据同步方法及装置 | |
CN107169083A (zh) | 公安卡口海量车辆数据存储与检索方法及装置、电子设备 | |
CN109218100A (zh) | 分布式对象存储集群及其请求响应方法、***和存储介质 | |
CN106843745A (zh) | 容量扩展方法及装置 | |
CN106777164B (zh) | 一种数据迁移集群及数据迁移方法 | |
CN105518641B (zh) | 点对点数据复制方法、设备和***以及主节点切换方法、设备和*** | |
CN103118084A (zh) | 一种主节点的选举方法及节点 | |
CN109547512A (zh) | 一种基于NoSQL的分布式Session管理的方法及装置 | |
CN107357688A (zh) | 分布式***及其故障恢复方法和装置 | |
CN104023246B (zh) | 一种视频数据私有云存储***和视频数据私有云存储方法 | |
CN104679796A (zh) | 一种选举方法、装置及数据库镜像集群节点 | |
CN109845192B (zh) | 动态地适配网络的计算机***和方法及计算机可读介质 | |
CN110334072A (zh) | 一种分布式文件***、文件更新方法及装置 | |
CN106331047A (zh) | 一种集群设备性能同步统计方法及*** | |
CN103229480B (zh) | 分布式存储***中的数据处理方法及设备、客户端 | |
CN106063226A (zh) | 数据处理方法和装置 | |
CN101344882B (zh) | 数据查询方法、***方法及删除方法 | |
CN110417882A (zh) | 主节点的确定方法、装置和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190709 |
|
RJ01 | Rejection of invention patent application after publication |