CN105934929A - 一种集群脑裂后仲裁处理方法、仲裁存储装置以及系统 - Google Patents

一种集群脑裂后仲裁处理方法、仲裁存储装置以及系统 Download PDF

Info

Publication number
CN105934929A
CN105934929A CN201580000286.6A CN201580000286A CN105934929A CN 105934929 A CN105934929 A CN 105934929A CN 201580000286 A CN201580000286 A CN 201580000286A CN 105934929 A CN105934929 A CN 105934929A
Authority
CN
China
Prior art keywords
arbitration
main
node
arbitration node
storage device
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
Application number
CN201580000286.6A
Other languages
English (en)
Other versions
CN105934929B (zh
Inventor
冯锐
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN105934929A publication Critical patent/CN105934929A/zh
Application granted granted Critical
Publication of CN105934929B publication Critical patent/CN105934929B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/04Network management architectures or arrangements
    • H04L41/044Network management architectures or arrangements comprising hierarchical management structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/0757Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/142Reconfiguring to eliminate the error
    • G06F11/1425Reconfiguring to eliminate the error by reconfiguration of node membership
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2046Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant where the redundant components share persistent storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5072Grid computing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/0654Management of faults, events, alarms or notifications using network fault recovery
    • H04L41/0659Management of faults, events, alarms or notifications using network fault recovery by isolating or reconfiguring faulty entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/06Management of faults, events, alarms or notifications
    • H04L41/0654Management of faults, events, alarms or notifications using network fault recovery
    • H04L41/0659Management of faults, events, alarms or notifications using network fault recovery by isolating or reconfiguring faulty entities
    • H04L41/0661Management of faults, events, alarms or notifications using network fault recovery by isolating or reconfiguring faulty entities by reconfiguring faulty entities
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols 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]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/28Timers or timing mechanisms used in protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/40Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass for recovering from a failure of a protocol instance or entity, e.g. service redundancy protocols, protocol state redundancy or protocol service redirection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/18Error detection or correction of the data by redundancy in hardware using passive fault-masking of the redundant circuits
    • G06F11/187Voting techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/505Clust

Abstract

本发明实施例公开了一种集群脑裂后仲裁处理方法、仲裁处理装置和系统。其中,该方法包括:在检测周期内,接收集群中的仲裁节点发送的抢主请求,每个抢主请求中包括仲裁节点标识;根据预先记录的主仲裁节点的标识,判断接收到的抢主请求中是否包括主仲裁节点发送的抢主请求;当包括主仲裁节点发送的抢主请求时,维持预先记录的主仲裁节点的标识;当不包括主仲裁节点发送的抢主请求时,在检测周期之后,将预先记录的主仲裁节点的标识修改为最先到达仲裁存储装置的抢主请求对应仲裁节点的标识;向所述记录的标识对应的仲裁节点发送抢主成功响应消息,响应消息用于通知记录标识对应的仲裁节点抢主成功。

Description

一种集群脑裂后仲裁处理方法、仲裁存储装置以及系统 技术领域
本发明涉及云计算技术领域,更具体地,涉及一种集群脑裂后仲裁处理方法、仲裁存储装置以及系统。
背景技术
集群由两个或两个以上的计算机组成,每个计算机都称为集群中的一个节点(Node)。由于网络存在故障(如:网络中某一个交换机存在故障),一个集群可能分裂为两个或多个节点组(Node Group),这种现象叫做脑裂(Brain Split)。当集群发生脑裂后,分裂的两个或者多个节点组中的每一个节点组都无法通过心跳信息或者租约信息检测到对方的存在,会认为其他节点组的节点发生了故障,这样在同一时间段,这些节点组中的节点可能会发起对某一共享存储资源(如:存储磁盘)的访问,这样就会导致数据访问错误的发生。此时,集群的管理软件通常会采用一定算法来仲裁由哪一个节点组胜出,并延续原有集群的工作,失败的节点组中的节点则需要重启,并执行重新加入集群的操作。
现有技术中采用如下方式来解决上述问题:使用仲裁(Quorum)节点投票算法,即从集群中的所有节点中选择一部分节点并设置作为仲裁节点,当脑裂发生时,集群中存活的仲裁节点的个数为N个,当脑裂发生且原集群分裂为两个节点组时,节点组内的节点是可以通过检测其他节点的心跳信息或租约信息来判断自己与其他节点的连通性,根据检测,确定包含n个仲裁节点的节点群构成第一节点组,包含N-n个仲裁节点的另一部分节点群构成第二节点组,这两个节点组中的每个仲裁节点能够检测自身所在节点组中的仲裁节点的数目,当检测自身的节点组中仲裁节点的数目超过Round(N/2)+1时(其中,Round(*)为取整函数),就认为自身所在节点组就成为发生脑裂 后集群的主要部分(即脑裂发生后,经过仲裁确定的主节点组),该节点组就延续集群的工作,另一个节点组中的节点检测自身的节点组中的仲裁节点的数目小于Round(N/2)+1时,则执行节点重启,并重新加入继续工作的节点组所构成的集群。
在完成本发明的过程中,发现现有技术存在如下问题:当集群分裂为三个或三个以上的节点组时,由于每个节点组中仲裁节点的个数都无法超过Round(N/2)+1(N为集群中存活的仲裁节点的总个数,且N为正整数),因此,也就无法仲裁确定主节点组来延续集群的工作。
发明内容
鉴于此,本发明实施例提供了一种集群脑裂后仲裁处理方法、仲裁存储装置以及系统,能够有效地实现在脑裂发生后的集群仲裁的处理,从而促使集群服务的快速恢复。
第一方面,提供了一种集群脑裂后仲裁处理方法,应用于集群和仲裁存储装置构成的系统,其中,所述集群包括至少两个仲裁节点,所述仲裁存储装置预先记录所述集群中至少两个仲裁节点中的任意一个作为初始主仲裁节点,所述方法包括:在所述集群发生脑裂后,所述仲裁存储装置接收所述至少两个仲裁节点发送的抢主请求;所述仲裁存储装置启动抢主检测周期;所述仲裁存储装置确定在所述抢主检测周期内是否接收到所述初始主仲裁节点发送的抢主请求;如在所述抢主检测周期内接收到所述初始主仲裁节点发送的抢主请求,所述仲裁存储装置设置所述初始主仲裁节点为抢主成功的仲裁节点;所述仲裁存储装置向所述抢主成功的仲裁节点发送抢主成功响应消息。
结合第一方面,在第一种可能的实现方式中,如确定在所述抢主检测周期内未接收到所述初始主仲裁节点发送的抢主请求,所述仲裁存储装置将在 所述抢主检测周期结束后接收到的第一个抢主请求的发送方仲裁节点设置为抢主成功的仲裁节点,并向所述抢主成功的仲裁节点发送抢主成功响应消息。
结合第一方面以及第一种可能的实现方式,在第二种可能的实现方式中,在启动抢主检测周期之后,所述仲裁存储装置确定在所述抢主检测周期内是否接收到所述初始主仲裁节点发送的抢主请求具体包括:在所述抢主检测周期内,所述仲裁存储装置缓存在所述抢主检测周期内接收到的全部抢主请求,所述仲裁存储装置确定所述缓存的全部抢主请求的发送方仲裁节点是否包含所述初始主仲裁节点;或者,在所述抢主检测周期内,所述仲裁存储装置依次确定在所述抢主检测周期内接收到的每个抢主请求的发送方仲裁节点是否是所述初始主仲裁节点。
结合第一方面的第二种可能的实现方式中,在第三种可能的实现方式中,在所述仲裁存储装置确定所述缓存的全部抢主请求的发送方仲裁节点不包含所述初始主仲裁节点后,所述方法还包括:所述仲裁存储装置向所述缓存的全部抢主请求的发送方仲裁节点分别发送抢主失败响应消息,以使得所述缓存的全部抢主请求的发送方仲裁节点再次向所述仲裁存储装置发送新的抢主请求。
结合第一方面的第二种可能的实现方式中,在第四种可能的实现方式中,在所述仲裁存储装置依次确定在所述抢主检测周期内接收到的每个抢主请求的发送方仲裁装置不包含所述初始主仲裁节点后,所述方法还包括:所述仲裁存储装置向在所述抢主检测周期内接收到的每个抢主请求的发送方仲裁装置发送抢主失败响应消息,以使得在所述抢主检测周期内接收到的每个抢主请求的发送方仲裁装置再次向所述仲裁存储装置发送新的抢主请求。
结合第一方面以及之前的所有的可能的实现方式中,在第五种可能的实现方式中,在所述仲裁存储装置向所述抢主成功的仲裁节点发送抢主成功响应消息之后,所述方法还包括:所述仲裁存储装置接收所述抢主成功的仲裁节点发送的第一权限控制消息,所述第一权限控制消息包括:在所述集群的至少两个仲裁节点中,与所述抢主成功的仲裁节点不相连通的第一类仲裁节点的标识;所述仲裁存储装置向所述第一类仲裁节点发送拒绝访问通知消息,以指示所述第一类仲裁节点执行节点重启操作。
结合第一方面以及之前的所有的可能的实现方式中,在第六种可能的实现方式中,在所述仲裁存储装置向所述抢主成功的仲裁节点发送抢主成功响应消息之后,所述方法还包括:所述仲裁存储装置接收所述抢主成功的仲裁节点发送的第二权限控制消息,所述第二权限控制消息包括:在所述至少两个仲裁节点中,与所述抢主成功的仲裁节点相连通的第二类仲裁节点的标识;所述仲裁存储装置向所述第二类仲裁节点发送抢主失败通知消息,以指示所述第二类仲裁节点停止向所述仲裁存储装置发送抢主请求。
结合第一方面以及第一方面的第一种至第四种可能的实现方式中,在第七种可能的实现方式中,在所述仲裁存储装置向所述抢主成功的仲裁节点发送抢主成功响应消息之后,所述方法还包括:所述仲裁存储装置接收所述抢主成功的仲裁节点发送的权限控制消息,所述权限控制消息包括:所述至少两个仲裁节点中除所述抢主成功的仲裁节点之外的其他仲裁节点的标识,以及所述至少两个仲裁节点中除所述抢主成功的仲裁节点之外的其他仲裁节点对所述仲裁存储装置的访问权限,所述访问权限包括:允许或者拒绝;所述仲裁存储装置根据所述权限控制消息,向所述至少两个仲裁节点中除所述抢主成功的仲裁节点之外的其他仲裁节点发送通知消息。
结合第一方面的第七种可能的实现方式,在第八种可能的实现方式中, 对于所述访问权限为拒绝的第一类仲裁节点,所述仲裁存储装置根据所述权限控制消息,向除所述抢主成功的仲裁节点之外的其他仲裁节点发送通知消息具体包括:所述仲裁存储装置向所述第一类仲裁节点发送拒绝访问通知消息,以指示所述第一类仲裁节点执行节点重启操作。
结合第一方面第七种可能的实现方式以及第八种可能的实现方式中,在第九种可能的实现方式中,对于所述访问权限为允许的第二类仲裁节点,所述仲裁存储装置根据所述权限控制消息,向除所述抢主成功的仲裁节点之外的其他仲裁节点发送通知消息具体包括:所述仲裁存储装置向所述第二类仲裁节点发送抢主失败通知消息,以指示所述第二类仲裁节点停止向所述仲裁存储装置发送抢主请求。
结合第一方面的第五种以及第八种可能的实现方式中,在第十种可能的实现方式中,在所述仲裁存储装置向所述第一类仲裁节点发送拒绝访问通知消息之后,所述方法还包括:所述仲裁存储装置向所述第一类仲裁节点发送修改防火墙策略为拒绝的通知消息,所述修改防火墙策略为拒绝的通知消息用于通知所述第一类仲裁节点修改所述第一类仲裁节点的防火墙中的防火墙策略为拒绝,以屏蔽所述第一类仲裁节点向所述仲裁存储装置发送的抢主请求。
结合第一方面的第十种可能的实现方式中,在第十一种可能的实现方式中,在所述第一类仲裁节点执行重启操作并重新加入所述集群之后,所述方法还包括:所述仲裁存储装置向所述第一类仲裁节点发送修改防火墙策略为允许的通知消息,所述修改防火墙策略为允许的通知消息用于指示所述第一类仲裁节点修改所述第一类仲裁节点的防火墙中的防火墙策略为允许,以允许所述第一类仲裁节点向所述仲裁存储装置发送抢主请求。
第二方面,提供一种用于集群中仲裁处理的仲裁存储装置,应用于集群和仲裁存储装置构成的系统,其中,所述集群包括至少两个仲裁节点,所述仲裁存储装置预先配置所述集群中至少两个仲裁节点中的任意一个作为初始主仲裁节点,所述仲裁存储装置包括:接收单元,用于在所述集群发生脑裂后,接收所述至少两个仲裁节点的抢主请求;启动单元,用于启动抢主检测周期;判断单元,用于确定在所述抢主检测周期内是否接收到所述初始主仲裁节点发送的抢主请求;执行单元,用于在所述抢主检测周期内接收到所述初始主仲裁节点发送的抢主请求,所述仲裁存储装置设置所述初始主仲裁节点为抢主成功的仲裁节点;发送单元,用于向所述抢主成功的仲裁节点发送抢主成功响应消息。
结合第二方面,在第一种可能的实现方式中,所述执行单元,还用于当确定在所述抢主检测周期内未接收到所述初始主仲裁节点发送的抢主请求,将在所述抢主检测周期结束后接收到的第一个抢主请求的发送方仲裁节点设置为抢主成功的仲裁节点;所述发送单元,还用于向所述抢主成功的仲裁节点发送抢主成功响应消息。
结合第二方面以及第一种可能的实现方式,在第二种可能的实现方式中,所述判断单元,具体用于缓存在所述抢主检测周期内接收到的全部抢主请求,确定所述缓存的全部抢主请求的发送方仲裁节点是否包含所述初始主仲裁节点;或者,在所述抢主检测周期内,依次确定在所述抢主检测周期内接收到的每个抢主请求的发送方仲裁节点是否是所述初始主仲裁节点。
结合第二方面的第二种可能的实现方式,在第三种可能的实现方式中,所述执行单元,还用于当所述判断单元确定所述缓存的全部抢主请求的发送方仲裁节点不包含所述初始主仲裁节点后,生成抢主失败响应消息;所述发送单元,还用于向所述缓存的全部抢主请求的发送方仲裁节点分别发送所述 抢主失败响应消息,以使得所述缓存的全部抢主请求的发送方仲裁节点再次向所述仲裁存储装置发送新的抢主请求。
结合第二方面的第二种可能的实现方式,在第四种可能的实现方式中,所述执行单元,还用于当确定在所述抢主检测周期内接收到的每个抢主请求的发送方仲裁节点不包含所述初始主仲裁节点后,生成抢主失败响应消息;所述发送单元,还用于向在所述抢主检测周期内接收到的每个抢主请求的发送方仲裁节点发送所述抢主失败响应消息,以使得在所述抢主检测周期内接收到的每个抢主请求的发送方仲裁节点再次向所述仲裁存储装置发送新的抢主请求。
结合第二方面以及第一至第四种可能的实现方式,在第五种可能的实现方式中,所述接收单元,还用于在所述发送单元向所述抢主成功的仲裁节点发送抢主成功响应消息之后,接收所述抢主成功的仲裁节点发送的第一权限控制消息,所述第一权限控制消息包括:在所述集群的至少两个仲裁节点中,与所述抢主成功的仲裁节点不相连通的第一类仲裁节点的标识;所述执行单元,还用于根据所述抢主成功的仲裁节点发送的第一权限控制消息生成拒绝访问通知消息;所述发送单元,还用于向所述第一类仲裁节点发送所述拒绝访问通知消息,以指示所述第一类仲裁节点执行节点重启操作。
结合第二方面以及第一至第五种可能的实现方式,在第六种可能的实现方式中,所述接收单元,还用于在所述发送单元向所述抢主成功的仲裁节点发送抢主成功响应消息之后,接收所述抢主成功的仲裁节点发送的第二权限控制消息,所述第二权限控制消息包括:在所述至少两个仲裁节点中,与所述抢主成功的仲裁节点相连通的第二类仲裁节点的标识;所述执行单元,还用于根据所述抢主成功的仲裁节点发送的第二权限控制消息生成抢主失败通知消息;所述发送单元,还用于向所述第二类仲裁节点发送所述抢主失败 通知消息,以指示所述第二类仲裁节点停止向所述仲裁存储装置发送抢主请求。
结合第二方面以及第一至第四种可能的实现方式,在第七种可能的实现方式中,所述接收单元,还用于在所述发送单元向所述抢主成功的仲裁节点发送抢主成功响应消息之后,接收所述抢主成功的仲裁节点发送的权限控制消息,所述权限控制消息包括:所述至少两个仲裁节点中除所述抢主成功的仲裁节点之外的其他仲裁节点的标识,以及所述至少两个仲裁节点中除所述抢主成功的仲裁节点之外的其他仲裁节点对所述仲裁存储装置的访问权限,所述访问权限包括:允许或者拒绝;所述执行单元,还用于根据所述权限控制消息生成通知消息;所述发送单元,还用于向所述至少两个仲裁节点中除所述抢主成功的仲裁节点之外的其他仲裁节点发送所述通知消息。
结合第二方面第七种可能的实现方式,在第八种可能的实现方式中,所述执行单元,具体用于针对访问权限为拒绝的第一类仲裁节点生成拒绝访问通知消息;所述发送单元,具体用于向所述访问权限为拒绝的第一类仲裁节点发送拒绝访问通知消息,以指示所述第一类仲裁节点执行节点重启操作。
结合第二方面第七种以及第八种可能的实现方式,在第九种可能的实现方式中,所述执行单元,具体用于针对所述访问权限为允许的第二类仲裁节点生成抢主失败通知消息,以指示第二类仲裁节点停止向仲裁存储装置发送抢主请求;所述发送单元,具体用于向所述访问权限为允许的第二类仲裁节点发送抢主失败通知消息。
结合第二方面第五种以及第八种可能的实现方式中,在第十种可能的实现方式中,所述执行单元,还用于在发送单元向第一类仲裁节点发送拒绝访问通知消息之后,针对第一类仲裁节点生成修改防火墙策略为拒绝的通知消 息,所述修改防火墙策略为拒绝的通知消息用于通知第一类仲裁节点修改第一类仲裁节点的防火墙中的防火墙策略为拒绝,以屏蔽第一类仲裁节点向仲裁存储装置发送的抢主请求;所述发送单元,还用于向所述第一类仲裁节点发送所述修改防火墙策略为拒绝的通知消息。
结合第二方面第十种可能的实现方式中,在第十一种可能的实现方式中,所述执行单元,还用于在所述第一类仲裁节点执行重启操作并重新加入所述集群之后,针对所述第一类仲裁节点生成修改防火墙策略为允许的通知消息,所述修改防火墙策略为允许的通知消息用于指示所述第一类仲裁节点修改所述第一类仲裁节点的防火墙中的防火墙策略为允许,以允许所述第一类仲裁节点向所述仲裁存储装置发送抢主请求;所述发送单元,还用于向所述第一类仲裁节点发送修改防火墙策略为允许的通知消息。
第三方面,提供一种存储装置,所述存储装置包括:处理器,存储器,通信接口和总线,其中,所述处理器、所述存储器和所述通信接口通过所述总线通信;所述通信接口用于与集群中至少两个仲裁节点通信;所述存储器用于存放程序;当所述存储装置运行时,所述处理器用于执行所述存储器存储的所述程序,以执行第一方面以及各种可能的实现方式中任一所述的方法。
第四方面,提供一种集群脑裂后仲裁处理的系统,所述系统包括:包括集群和如第二方面以及各种可能的实现方式任一所述的仲裁存储装置,其中,所述集群包括至少两个仲裁节点,所述仲裁存储装置预先记录所述集群中至少两个仲裁节点中的任意一个作为初始主仲裁节点。
本发明实施例设置了仲裁存储装置,由仲裁存储装置预先记录集群中至少两个仲裁节点中的任意一个作为初始主仲裁节点,在集群脑裂发生后,仲 裁存储装置启动抢主检测周期,确定在抢主检测周期内接收到初始主仲裁节点发送的抢主请求,仲裁存储装置确定初始主仲裁节点为抢主成功的仲裁节点;并向抢主成功的仲裁节点发送抢主成功响应消息。上述方案中,当仲裁存储装置在抢主检测周期内接收到初始主仲裁节点的抢主请求后,则会维持该初始主仲裁节点作为新的主仲裁节点,这样能够避免在集群恢复的过程中因为主仲裁节点的切换而导致集群业务发生切换的问题,从而维持业务的连续性。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例集群和存储装置所构成的集群系统的架构示意图。
图2A-2C是本发明的对脑裂后仲裁处理的方法实施例一的示意图。
图3是本发明的对脑裂后仲裁处理的方法实施例二的示意图。
图4是本发明的仲裁存储装置实施例一的示意性框图。
图5是本发明的仲裁存储装置实施例二的示意性框图。
图6是本发明节点的实施例一的示意性框图。
图7是本发明节点的实施例二的示意性框图。
图8是本发明的脑裂仲裁处理的系统实施例的示意性框图。
图9是本发明的对脑裂后仲裁处理的方法实施例三的示意图。
图10是本发明的仲裁存储装置实施例三的示意性框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行 清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
一般的,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、组件、数据结构、以及其他类型的结构。此外,本领域的技术人员可以明白,各实施例可以用其他计算机系统配置来实施,包括手持式设备、多处理器系统、基于微处理器或可编程消费电子产品、小型计算机、大型计算机以及类似计算设备。各实施例还能在任务由通过通信网络连接的远程处理设备来执行的分布式计算环境中实现。在分布式计算环境中,程序模块可位于本地和远程存储器存储设备中。
各实施例可被实现为计算机实现的过程、计算系统、或者诸如计算机程序产品或计算机系统执行示例过程的指令的计算机程序的计算机存储介质。例如:计算机可读存储介质可经由易失性计算机存储器、非易失性存储器、硬盘驱动器、闪存驱动器、软盘或紧致盘和类似介质中的一个或多个来实现。
贯穿本说明书,术语“集群(Cluster)”是一组相互独立的、通过高速网络互联的计算机,它们构成了一个群,并以单一系统的模式加以管理。集群中的每台计算机被称为一个“节点”。
贯穿本说明书,术语“节点(Node)”一般指在联网环境中执行一个或多个软件程序的计算设备,“节点”还可以被实现为被视作网络中的服务器的一个或多个计算设备上执行的虚拟节点(软件程序)。具体实现中,节点可以为物理机(Physical Machine)或者安装在物理机上的虚拟机(Virtual Machine)。
贯穿本说明书,术语“脑裂(Brain Split)”指的是由于网络存在故障,一个集群分裂为两个或多个节点组(Node Group),这种现象叫做脑裂。
贯穿本说明书,术语“脑裂仲裁”一般指的是在集群发生脑裂之后,原集群分裂为若干个由节点构成的节点组,集群的管理软件通常会采用一定算 法来决定由这若干个节点组中哪一个节点组作为主节点组,这种确定主节点组的过程叫做脑裂仲裁的过程。
贯穿本说明书,术语“主节点组(Master Node Group)”指的是脑裂发生后,通过脑裂仲裁方法确定由脑裂后的某一个节点组来延续原有集群的工作,该节点组被称为主节点组。
贯穿本说明书,术语“仲裁节点(Quorum Node)”:当发生脑裂使得集群分裂为多个节点组(具体可以为:网络分区)时,通常由集群中一些具有特殊功能的节点参与表决进行脑裂仲裁,判断哪个节点组可以存活下来继续提供集群服务,而其他节点组则被判定为故障,不能继续提供集群服务,这些参与脑裂仲裁的节点就称为仲裁节点。通常在集群中只有少数节点是仲裁节点,这可由系统预先配置决定。
贯穿本说明书,术语“主仲裁节点(Master Quorum Node)”指的集群中多个仲裁节点中的一个,用来确定其所在的节点组作为主节点组。当集群发生脑裂而导致集群分裂为多个节点组时,由整个系统确定出主仲裁节点,并由该主仲裁节点所位于节点组作为主节点组,以延续原有集群的工作。确定了主仲裁节点后,通过心跳(Heart beat)或者租约(Lease)等方式检测出与该主仲裁节点在网络上相连通的节点,这些节点所构成的节点组就作为集群脑裂后的主节点组,用来延续集群的服务。
贯穿本说明书,术语“抢主请求”指的是当检测该集群发生脑裂后,由集群中的仲裁节点产生的,向仲裁存储装置发送的用来争夺作为主仲裁节点的请求,该请求一般包含该仲裁节点的标识。该标识可以为IP地址,或者该仲裁节点在集群中的编号等标记方式。
贯穿本说明书,术语“仲裁存储装置”即指的是在选主的过程中,承担仲裁功能,并最终确定主仲裁节点的存储装置。其中,仲裁存储装置在执行仲裁功能时,包含通过接收仲裁节点发送的抢主请求,从中确定主仲裁节点的过程。之所以命名为仲裁存储装置,是因为在现有的应用场景下,是采用 存储盘作为仲裁装置来确定主仲裁节点。对于本领域技术人员,可以理解的是,其他的承担仲裁功能的非存储用途的装置,也处于术语“仲裁存储装置”的解释范围内。
贯穿本说明书,术语“防火墙(Firewall)”一般指的是一项协助确保信息安全的设备,会依照特定的规则,允许或是限制传输的数据通过。在具体实现中,防火墙可能是一台专属的硬件或是架设在一般硬件上的一套软件。
贯穿本说明书,术语“IO访问请求”一般指的是存储设备所接收到的对该存储设备上所存储的数据进行读、或者写的请求。
贯穿本说明书,术语“连通”指的是网络上的连通性,集群中的节点可以通过心跳检测或者租约检测来判断其他节点和自身的连通性。当集群发生脑裂后,原集群分裂为若干个节点组,位于同一个节点组中的节点,通过心跳检测或租约检测检测到对方的存在,这样就表示两者相连通;位于不同节点组的节点,通过心跳检测或租约检测检测不到对方的存在,这样就表示两者不相连通。
本发明实施例的系统架构
在介绍本发明实施例之前,先整体介绍一下集群节点和存储装置所构成的集群系统架构示意图,如图1所示。该系统包括:
集群100,由N个节点组成(N≥1,且N为整数),每一个节点可以部署在物理节点(如:服务器)上,也可以部署在虚拟节点(如:虚拟机)上,负责接收应用或者客户端发送的数据访问请求,并将该数据访问请求转换成对存储装置的IO访问请求。
存储装置资源池200,有M(M≥1,且M为整数)个存储装置构成,每个存储装置可以理解为包含了存储管理软件和存储介质的存储设备。存储装置资源池200中的M个存储装置的连接方式是多种多样的,图1所示的M个存储装置是环型结构的连接方式(这里仅示意举例),实际应用中,还 可以有星型结构、总线结构、分布式结构、树型结构、网状结构、蜂窝状结构等,对此,本发明的实施例不加以赘述。在上述存储装置资源池200中,可设置至少一个存储装置作为仲裁存储装置,该仲裁存储装置用于保存集群的主仲裁节点的标识,该标识可以为IP地址,或者是该仲裁节点在集群中的编号等。
集群100中的节点和存储装置资源池200中的存储装置,可直接相连或者通过网络(图1未示)相连。由于上述这些连接方式属于本领域的公知常识,对此,本发明的实施例不加以赘述。
在集群100中所包含的N个节点中,可设置P(P≧2,P为整数,P<N)个节点作为仲裁节点,这些仲裁节点通过管理员或者其他系统从节点中选择并加以配置。当集群发生脑裂时,这P个仲裁节点分别向仲裁存储装置发送抢主请求,仲裁存储装置将获得抢主成功的仲裁节点的标识记录下来,并向该标识对应的仲裁节点发送抢主成功响应消息,该响应消息用于通知记录标识对应的仲裁节点抢主成功。
本发明的方法实施例
图2A-2C示出了在集群脑裂发生后,通过仲裁存储装置实现脑裂仲裁的方法实施例一,该方法实施例应用于如图1所示的集群和仲裁存储装置构成的系统。参看图2A,该方法包括:
201、仲裁存储装置预先记录集群中的主仲裁节点的标识;
具体实现中,当集群建立后,仲裁存储装置会在其自身或者第三方存储设备上设定一块存储空间,用于记录主仲裁节点的标识,以及该主仲裁节点的状态。其中,初始状态下记录主仲裁节点的标识为空(NULL),记录主仲裁节点的状态为空(NULL)或者故障。在集群开始正常运行之前,主仲裁节点可以通过管理员初始设置指定。当集群开始正常运行后,初始设置的主仲裁节点会定期地向仲裁存储装置发送刷新报文,该刷新报文包括自身的标 识,该标识具体可以为IP地址,或者该主仲裁节点在集群中的编号等。仲裁存储装置也会设定一个刷新报文检测周期,用来检测主仲裁节点是否发送了刷新报文。在某一刷新报文检测周期中,仲裁存储装置根据不同的情况做如下的处理:
A、若在某一刷新报文的检测周期内,未接收到刷新报文,则修改记录的节点的状态为故障。在某一刷新报文的检测周期中,未接收到该刷新报文,仲裁存储装置则会认定主仲裁节点发生了故障,于是将记录中的主仲裁节点的状态修改为故障。
B、若第一次接收到主仲裁节点发送的刷新报文时,仲裁存储装置会记录该主仲裁节点的标识,并在记录中将该主仲裁节点的状态修改为“正常”。
C、非第一次接收到主仲裁节点发送的刷新报文后,又分为如下两种情况:
C1、检测该刷新报文携带的标识和记录节点的标识相同,且记录的主仲裁节点的状态为正常时,表明当前集群中的主仲裁节点正常,该仲裁存储装置不会对记录的标识做任何操作。
C2、检测该刷新报文携带的标识和记录的节点的标识相同,但是记录的主仲裁节点的状态为空或者故障时,则修改记录中的节点的状态为正常。这种情况,存在于两种应用场景,一种场景是集群重启,此时所有的节点重启,在集群重启后的刷新报文检测周期内,原主仲裁节点未能发送刷新报文,于是记录的主仲裁节点的状态被修改为故障。另一种场景是,原主仲裁节点发送的刷新报文丢失,仲裁存储装置在检测周期内,未能接收到刷新报文,则将记录的主仲裁节点的状态修改为故障。
203、当集群发生脑裂后,分裂后的各个节点组中的仲裁节点检测到脑裂发生后,会分别产生抢主请求,并发送给仲裁存储装置。
具体实现中,每个仲裁节点上设定一个抢主机制,即仲裁节点检测到脑裂发生后,会产生抢主请求,并将抢主请求发送给仲裁存储装置。该抢主请 求中包括该仲裁节点的标识,仲裁节点的标识可以有多种实现方式,如:该仲裁节点的IP地址(如:10.11.201.12),或该仲裁节点在集群中的唯一标识(如:编号0010)或其他的实现方式,对此,本发明的实施例不加以限制。
需要说明的是,检测到脑裂发生后,产生并发送抢主请求的仲裁节点是当前存活的仲裁节点,对于那些存在故障(如:宕机)的仲裁节点,则无法产生并发送抢主请求。在具体实现中,发送抢主请求的仲裁节点可能是集群中所有的仲裁节点,也可能是部分的仲裁节点。
具体实现中,各个仲裁节点可通过租约检测或者心跳检测的方式检测脑裂的发生,需要说明的是,租约检测和心跳检测还可以用来检测节点之间的连通性:
(1)基于租约(Lease)的检测方法
在该方法中,集群中的每一个节点会定期向租约管理器(Lease Manager)申请租约;租约管理器为每个节点都维护一个有关该节点所持有租约的记录,其中记录该节点何时获取了该租约。每当租约管理器接收到来自各节点的租约请求时,就更新该记录,以反映该节点获取租约的最新信息。如果租约管理器在指定的周期(租约期,Lease Duration)内都没有收到某个节点的续租请求,则会主动探测该节点的状态(例如:通过Ping方式来检测该节点是否发生故障或者该节点的网络连接状态是否发生故障),如果连续数次都探测不到该节点的状态(比如:对于Ping数据包,无响应),则认为该节点已经出现故障,并将该节点发生故障的通知发送给集群中的其他节点。仲裁节点若收到某一个节点组的所有节点均发生故障的通知,则会判定集群发生了脑裂。
(2)基于心跳(Heart Beat)的检测方法
在该方法中,系统会按照某种拓扑结构在各个节点中构成一个心跳环,通过这个心跳环,会在各个节点之间发送心跳信息(发送心跳信息的周期通常都比租约期要短很多),当这些节点的心跳信息汇集到一起时,通常会在 集群的仲裁节点上进行汇总,识别出是否丢失了来自某个节点的心跳信息。为了避免误判,通常会重复几次检测,如果有连续数次都没有收到来自某个节点的心跳信息,则判定该节点可能故障(此时也可以主动进行探测,进一步确认该节点是否故障),并将该节点发生故障的通知发送给集群中的其他节点。仲裁节点若收到某一个节点组的所有节点均发生故障的通知,则会判定集群发生了脑裂。
205、仲裁存储装置在某一刷新报文检测周期内,接收到集群中的仲裁节点发送的抢主请求,则根据预先记录的主仲裁节点的标识,判断在接收到抢主请求中,是否包含该标识对应的主仲裁节点发送的抢主请求,若是,则执行步骤207;若否,则执行步骤209。
具体实现中,仲裁存储装置所接收到的抢主请求,可能是集群中所有的仲裁节点发送的抢主请求,也可能是集群中部分的仲裁节点发送的抢主请求。
在判断抢主请求中是否包含记录的主仲裁节点的抢主请求,是在这一刷新报文的检测周期内来判断。抢主请求中会携带发出该抢主请求的仲裁节点的标识,仲裁存储装置利用预先记录的主仲裁节点的标识分别和各个抢主请求中携带的标识进行比较,如果两者相同,则说明这些抢主请求中包括主仲裁节点的抢主请求,此时,则执行步骤207;如果比较后,发现各个抢主请求中携带的标识均与预先存储的主仲裁节点的标识不同,则说明这些抢主请求中不包含主仲裁节点的抢主请求,此时,则执行步骤209。
207、当接收到的抢主请求中包括该主仲裁节点发送的抢主请求时,该仲裁存储装置则维持预先记录的主仲裁节点的标识,执行步骤213。
具体实现中,在刷新报文检测周期内,步骤207中采用的是原主仲裁节点优先的处理策略,即设定在仲裁存储装置的刷新报文检测周期内,如果原主仲裁节点的抢主请求到达仲裁存储装置后,则优先以原主仲裁节点作为新的主仲裁节点。由于在实际应用中,主仲裁节点一般作为集群中的管理节点, 承担了管理集群的功能,如果频繁地切换管理节点会导致业务的中断,并且管理节点的切换还会带来业务数据和/或状态数据的备份和拷贝,这样会给集群的处理资源带来较大的冲击,因此,采用优先以原主仲裁节点作为新的主仲裁节点,能够有效地避免上述问题的发生。
209、当接收到的抢主请求中不包括该主仲裁节点发送的抢主请求时,作为响应,仲裁存储装置向发送抢主请求的各个仲裁节点发送响应消息,通知各仲裁节点继续发送抢主请求,并执行步骤211。
需要说明的是,该步骤并非必选步骤。在具体实现中,仲裁存储装置可以不必发送响应消息,而预先在仲裁节点设定抢主请求周期发送机制,在仲裁节点未接收到仲裁存储装置发送的通知消息之前,各仲裁节点会周期性地发送抢主请求。
当然,为了提高脑裂仲裁的效率,增加了由仲裁存储装置向各仲裁节点发送响应消息,使得各仲裁节点能够及时获知脑裂仲裁的进展,以便当抢主成功后,减少对无效抢主请求的处理。
211、在该刷新报文检测周期之后,集群中的各仲裁节点会继续向仲裁存储装置发送抢主请求,仲裁存储装置将预先记录的主仲裁节点的标识修改为最先接收到的抢主请求对应的仲裁节点的标识,执行步骤213。
在具体实现中,当刷新报文检测周期结束后,仲裁存储装置就采用先到先得的方式确定主仲裁节点,即仲裁存储装置将最先接收到抢主请求对应的仲裁节点设置为新的主仲裁节点,这样便于快速地确定主仲裁节点,进而快速地确定脑裂发生后的主节点组,以便延续集群的正常工作。
其中,最先接收到抢主请求,指的是该刷新报文检测周期之后,仲裁存储装置接收到的第一个到达该仲裁存储装置的抢主请求。这会存在两种实现可能,第一种是,各仲裁节点在该刷新报文检测周期结束之前就已经发送了该抢主请求,抢主请求在检测周期之后到达仲裁存储装置;第二种是,各仲裁节点在该刷新报文检测周期结束后发送抢主请求,抢主请求在检测周期之 后到达仲裁存储装置。对于上面两种可能,本发明的实施例均不加以限定。
213、仲裁存储装置向记录的标识对应的仲裁节点发送抢主成功响应,该抢主成功响应用于通知该仲裁节点抢主成功。
具体实现中,接收到抢主成功响应的仲裁节点被选择作为主仲裁节点,该主仲裁节点所在的节点组作为主节点组,用来延续集群的工作。
215、仲裁存储装置向除确定的主仲裁节点以外的其他仲裁节点发送通知消息。
具体实现中,对于和主仲裁节点连通类型不同的仲裁节点,仲裁存储装置发送的通知消息的类型是不同的,对于和主仲裁节点位于不同节点组的仲裁节点(即和主仲裁节点不相连通的仲裁节点),仲裁存储装置会发送拒绝访问通知消息,使得这些仲裁节点重启,并执行重新加入集群的操作;对于和主仲裁节点位于相同节点组的仲裁节点(即和主仲裁节点相连通的仲裁节点),仲裁存储装置会发送抢主失败通知消息,使得这些仲裁节点停止发送抢主请求。如下存在两种实现方式:
方式一:采用分开发送的方式,参看图2B,该方式包括如下步骤:
2151、仲裁存储装置接收记录的主仲裁节点发送的第一权限控制消息,该第一权限控制消息包括:在集群所包含的至少两个仲裁节点中,与确定的主仲裁节点不相连通的第一类仲裁节点的标识;
具体实现中,主仲裁节点,通过心跳检测或者租约检测出和集群中的其他仲裁节点的连通性,对于和该主仲裁节点不相连通的仲裁节点,生成第一权限控制消息,并将该第一权限控制消息发送给仲裁存储装置。
第一类仲裁节点,指的是物理上或逻辑上无法和主仲裁节点进行通信的仲裁节点,也即第一类仲裁节点和主仲裁节点不相连通,在实际场景下,第一类仲裁节点和主仲裁节点位于不同的节点组。
2152、仲裁存储装置向第一类仲裁节点发送拒绝访问通知消息,该拒绝访问通知消息用于指示第一类仲裁节点执行节点重启操作。
作为举例,具体实现中,拒绝访问通知消息可采用如下特定的报文格式(如表一),其中包括:节点标识,以及仲裁存储装置的访问权限。其中节点的标识采用节点的IP地址作为举例,实际中,还有其他的表示方式,本发明的所有实施例不加以限制。当仲裁节点收到该拒绝访问通知消息之后,执行节点重启操作。
节点标识 仲裁存储装置访问权限
10.11.207.198 拒绝
表一
由于第一类仲裁节点是和主仲裁节点不相连通的仲裁节点,如,物理上,两者无物理连接通路,或者逻辑上,两者之间的交换机发生故障等。在实现中,第一类仲裁节点是和主仲裁节点位于不同的节点组,由于主仲裁节点所位于的节点组是作为脑裂仲裁中的主节点组,因此,第一类仲裁节点就属于其他节点组,这一类节点组中的主仲裁节点需要重启,并执行重新加入集群的操作。
2153、仲裁存储装置接收主仲裁节点发送的第二权限控制消息,该第二权限控制消息包括:在集群的至少两个仲裁节点中,与该主仲裁节点相连通的第二类仲裁节点的标识。
具体实现中,主仲裁节点通过心跳检测或者租约检测出和其他仲裁节点的连通性,对于和该主仲裁节点相连通的仲裁节点,生成第二权限控制消息,并将该第二权限控制消息发送给仲裁存储装置。
第二类仲裁节点则是能够和主仲裁节点进行通信的仲裁节点,也即第二类仲裁节点和主仲裁节点相连通,在实际场景下,第二类仲裁节点和主仲裁节点位于同一个节点组。
2154、仲裁存储装置向第二类仲裁节点发送抢主失败通知消息,该抢主失败通知消息用于指示第二类仲裁节点停止向仲裁存储装置发送抢主请求。
作为举例,具体实现中,抢主失败通知消息采用如下特定的报文格式(见 表二),该报文格式包括:节点的标识,以及抢主请求的发送权限。其中节点的标识采用节点的IP地址作为举例,实际中,还有其他的表示方式,对此,本发明的实施例不加以限制。当仲裁节点收到该抢主失败通知消息之后,停止向仲裁存储装置发送抢主请求。
节点的标识 抢主请求的发送权限
10.11.207.196 拒绝
表二
针对方式一,在具体的实现方式中,步骤2151-步骤2152,步骤2153-步骤2154的执行顺序并没有明确的限制,可以按照2151-2154的顺序执行,也可以按照先执行2153-2154,再执行2151-2152的顺序进行,对此,本发明的实施例均不加以限定。
方式二:采用集中发送的方式
和上述的方式一的区别在于,主仲裁节点生成权限控制消息,该消息中包括除主仲裁节点之外其他的仲裁节点的标识,以及这些仲裁节点对仲裁存储装置的访问权限,其中,访问权限包括:允许或拒绝,主仲裁节点将上述权限控制消息发送给仲裁存储装置,仲裁存储装置根据上述标识以及标识对应的访问权限,分别生成针对第一类仲裁节点的拒绝访问通知消息,以及生成针对第二类仲裁节点的抢主失败通知消息,其中,第一类仲裁节点是和主仲裁节点不相连通的仲裁节点,第二类仲裁节点是和主仲裁节点相连通的仲裁节点,是否相连通是通过心跳检测或者租约检测来判断的。第一类仲裁节点接收到拒绝访问通知消息之后,会执行节点重启以及重新加入集群的操作,第二类仲裁节点在接收到抢主失败通知消息之后,会停止向仲裁存储装置发送抢主请求。
具体可以包括如下步骤,参看图2C,该方式包括如下步骤:
2155、仲裁存储装置接收主仲裁节点发送的权限控制消息,该权限控制 消息包括:集群中至少两个仲裁节点中除主仲裁节点之外的其他仲裁节点的标识,以及集群中至少两个仲裁节点中除主仲裁节点之外的其他仲裁节点对仲裁存储装置的访问权限,该访问权限包括:允许或者拒绝。
作为举例,主仲裁节点生成权限控制消息,该权限控制消息采用如表三所示的格式:
节点的标识 节点对仲裁存储装置的访问权限
10.11.207.196 允许
10.11.207.198 拒绝
表三
主仲裁节点将上述权限控制消息发送给仲裁存储装置。
2156、仲裁存储装置根据权限控制消息,向集群中至少两个仲裁节点中除主仲裁节点之外的其他仲裁节点发送通知消息。
21561、对于访问权限为拒绝的第一类仲裁节点,仲裁存储装置向第一类仲裁节点发送拒绝访问通知消息,该拒绝访问通知消息用于指示第一类仲裁节点执行节点重启操作。
具体实现中,可采用如步骤2052中的表一所示的报文格式。其他类似,不再赘述。
第一类仲裁节点,指的是物理上或逻辑上无法和主仲裁节点进行通信的仲裁节点,也即第一类仲裁节点和主仲裁节点不相连通,在实际场景下,第一类仲裁节点和主仲裁节点位于不同的节点组。
21562、对于访问权限为允许的第二类仲裁节点,仲裁存储装置向第二类仲裁节点发送抢主失败通知消息,抢主失败通知消息用于指示第二类仲裁节点停止向仲裁存储装置发送抢主请求。
具体实现中,可采用如步骤2054中的表二所示的报文格式。其他类似,不再赘述。
第二类仲裁节点则是能够和主仲裁节点进行通信的仲裁节点,也即 第二类仲裁节点和主仲裁节点相连通,在实际场景下,第二类仲裁节点和主仲裁节点位于同一个节点组。
通过上述两种实现方式,使得集群中除主仲裁节点之外的其他仲裁节点能够根据仲裁存储装置发送的消息,进行相应的处理,具体的,和主仲裁节点不相连通的仲裁节点(脑裂之后其他节点组的仲裁节点),会进行重启操作;和主仲裁节点相连通的仲裁节点(脑裂之后主节点组的仲裁节点),则停止发送抢主请求。上述的处理,能够使得在确定主仲裁节点之后,其他仲裁节点快速的从脑裂抢主的状态中恢复,以便有效地实现集群正常业务的快速恢复。
2157、在仲裁存储装置向第一类仲裁节点发送拒绝访问通知消息之后,还会向第一类仲裁节点发送修改防火墙策略的通知消息,该通知消息用于通知第一类仲裁节点修改自身所对应防火墙的防火墙策略,以屏蔽第一类仲裁节点向仲裁存储装置所发送的抢主请求。
具体实现中,对于和主仲裁节点处于不同节点组的仲裁节点,即第一类仲裁节点,为了避免这些仲裁节点继续向仲裁存储装置发送抢主请求,仲裁存储装置向这些仲裁节点发送修改防火墙策略的通知消息,这些仲裁节点接收到该通知消息后,会修改自身对应防火墙的防火墙策略,以屏蔽这些仲裁节点向仲裁存储装置所发送的抢主请求。
需要说明的是,第一类仲裁节点在重启之前,还会向仲裁存储装置发送抢主请求,设定该步骤,能够有效地屏蔽这些仲裁节点所发送的抢主请求,避免仲裁存储装置将处理能力浪费在这些无效的抢主请求上。
上述方案能够有效解决现有技术中的存在的集群脑裂发生后,无法仲裁确定主节点组的问题。
在集群脑裂后仲裁处理结束之后,集群中除上述仲裁节点之外的其他节点,会根据心跳检测或者租约检测的方式判断与主仲裁节点的连通性,当判断与主仲裁节点相连通时,表明该节点和主仲裁节点位于相同的节点组,该 节点维持继续工作的状态;当判断与主仲裁节点不相连通时,表明该节点和主仲裁节点位于不同的节点组,该节点则触发自身重启,并执行重新加入主仲裁节点所在的节点组的过程。
与之相对应的,本发明还提供一种集群脑裂仲裁的方法实施例二,对于获得抢主成功的仲裁节点,其处理过程包括如下步骤:
301、仲裁节点接收仲裁存储装置发送的抢主成功响应消息,该抢主成功响应消息用于通知该仲裁节点抢主成功;
303、获得抢主成功的仲裁节点确定集群中至少两个仲裁节点中除该仲裁节点之外的其他仲裁节点的访问权限,其中,访问权限包括:允许或者拒绝;
305、获得抢主成功的仲裁节点向仲裁存储装置发送权限控制消息,该权限控制消息包括:集群中至少两个仲裁节点中除该仲裁节点之外的其他仲裁节点的标识,以及该标识对应的仲裁节点对所述仲裁存储装置的访问权限。
上述实施例的处理过程,可参考上一个实施例中步骤205中的描述,对此,本实施例不加赘述。
本发明的设备实施例
参看图4,本发明还提供一种用于集群中仲裁处理的仲裁存储装置400,应用于集群和仲裁存储装置400构成的系统,其中,该集群包括至少两个仲裁节点,仲裁存储装置400预先记录集群中主仲裁节点的标识,主仲裁节点为至少两个仲裁节点中的一个,该仲裁存储装置400包括:
接收单元401,用于在检测周期内,接收集群中的仲裁节点发送的抢主请求,每个抢主请求中包括仲裁节点的标识;
判断单元402,用于根据主仲裁节点的标识,判断接收单元401所接收的抢主请求中是否包括主仲裁节点发送的抢主请求;
执行单元403,用于当接收到的抢主请求中包括主仲裁节点发送的抢主请求时,维持记录的节点的标识;或当接收到的抢主请求中不包括主仲裁节点发送的抢主请求时,在第一刷新报文检测周期之后,将记录记录的标识修改为最先到达仲裁存储装置的抢主请求对应仲裁节点的标识;
发送单元404,用于向记录的标识对应的仲裁节点发送抢主成功响应消息,该响应消息用于通知所述记录标识对应的仲裁节点抢主成功。
进一步的,在该仲裁存储装置400中,执行单元403,还用于当接收到的抢主请求不包括主仲裁节点发送的抢主请求时,生成响应消息,该响应消息用于通知发送抢主请求的仲裁节点继续发送抢主请求,并触发发送单元404;
发送单元404,还用于向发送抢主请求的仲裁节点发送响应消息。
进一步的,在该仲裁存储装置400中,接收单元401,还用于在发送单元404向记录的标识对应的仲裁节点发送抢主成功响应消息之后,接收记录标识对应的仲裁节点发送的第一权限控制消息,该第一权限控制消息包括:在集群所包含的至少两个仲裁节点中,与记录标识对应的仲裁节点不相连通的第一类仲裁节点的标识;
执行单元403,还用于根据第一权限控制消息生成拒绝访问通知消息,并触发发送单元404,拒绝访问通知消息用于指示第一类仲裁节点执行节点重启操作;
发送单元404,还用于向第一类仲裁节点发送拒绝访问通知消息。
进一步的,在该仲裁存储装置400中,接收单元401,还用于在发送单元404向记录的标识对应的仲裁节点发送抢主成功响应消息之后,接收记录标识对应的仲裁节点发送的第二权限控制消息,第二权限控制消息包括:在集群的至少两个仲裁节点中,与记录标识对应的仲裁节点相连通的第二类仲裁节点的标识;
执行单元403,还用于根据第二权限控制消息生成抢主失败通知消息, 并触发发送单元404,抢主失败通知消息用于指示第二类仲裁节点停止向仲裁存储装置400发送抢主请求;
发送单元404,还用于向第二类仲裁节点发送抢主失败通知消息。
进一步的,在该仲裁存储装置400中,接收单元401,还用于在发送单元404向记录的标识对应的仲裁节点发送抢主成功响应消息之后,接收记录标识对应的仲裁节点发送的权限控制消息,权限控制消息包括:集群中至少两个仲裁节点中除所述记录标识对应的仲裁节点之外的其他仲裁节点的标识,以及至少两个仲裁节点中除所述记录标识对应的仲裁节点之外的其他仲裁节点对仲裁存储装置400的访问权限,所述访问权限包括:允许或者拒绝;
执行单元403,还用于根据权限控制消息生成通知消息,并触发发送单元404;
发送单元404,还用于向至少两个仲裁节点中除记录标识对应的仲裁节点之外的其他仲裁节点发送通知消息。
进一步的,在仲裁存储装置400中,执行单元403,具体用于针对访问权限为拒绝的第一类仲裁节点生成拒绝访问通知消息,拒绝访问通知消息用于指示第一类仲裁节点执行节点重启操作;
发送单元404,具体用于向第一类仲裁节点发送拒绝访问通知消息。
进一步的,在仲裁存储装置400中,执行单元403,具体用于针对所述访问权限为允许的第二类仲裁节点生成抢主失败通知消息,抢主失败通知消息用于指示第二类仲裁节点停止向仲裁存储装置400发送抢主请求;
发送单元404,具体用于向第二类仲裁节点发送抢主失败通知消息。
进一步的,在该仲裁存储装置400中,执行单元403,还用于在发送单元404向第一类仲裁节点发送拒绝访问通知消息之后,针对第一类仲裁节点生成修改防火墙策略的通知消息,修改防火墙策略的通知消息用于通知第一类仲裁节点修改第一类仲裁节点的防火墙对应的防火墙策略,以屏蔽第一类仲裁节点向仲裁存储装置400发送的抢主请求;
发送单元404,还用于向第一类仲裁节点发送修改防火墙策略的通知消息。
参看图5,本发明还提供一种仲裁存储装置的实施例二,该仲裁存储装置500包括:
处理器501,存储器502,通信接口503和总线504,其中,处理器501、存储器502和通信接口503通过总线504通信;
通信接口503用于与集群中至少两个仲裁节点通信;
存储器502用于存放程序;
当该仲裁存储装置500运行时,处理器501用于执行存储器502存储的程序,以执行脑裂仲裁的方法实施例一的方法流程。
参看图6,本发明还提供一种仲裁节点的实施例一,该仲裁节点600包括:
接收单元601,用于接收仲裁存储装置发送的抢主成功响应消息,响应消息用于通知节点抢主成功;
确定单元602,用于确定集群中至少两个仲裁节点中除仲裁节点600之外的其他仲裁节点的访问权限,访问权限包括:允许或者拒绝;
发送单元603,用于向仲裁存储装置发送权限控制消息,该权限控制消息包括:集群中至少两个仲裁节点中除仲裁节点600之外的其他仲裁节点的标识,以及标识对应的仲裁节点对仲裁存储装置的访问权限。
参看图7,本发明还提供一种仲裁节点的实施例二,该节点700包括:
处理器701,存储器702,通信接口703和总线704,其中,处理器701、存储器702和通信接口703通过总线704通信;
通信接口703用于与集群中其他仲裁节点以及仲裁存储装置通信;
存储器702用于存放程序;
当仲裁节点700运行时,处理器701用于执行存储器702存储的所述程序,以执行如集群脑裂仲裁的方法实施例二的方法流程。
参看图8,本发明还提供一种集群脑裂后仲裁处理系统,该系统800包括:
包括集群810和仲裁装置实施例一或者实施例二任一所示的仲裁存储装置820,其中,该集群810包括至少两个仲裁节点811,这至少两个仲裁节点中包含一个主仲裁节点8111,仲裁存储装置820预先记录集群中主仲裁节点8111的标识。
本发明的方法实施例三
图9示出了在集群脑裂发生后,通过仲裁存储装置实现脑裂仲裁的方法实施例三,该方法实施例应用于如图1所示的集群和仲裁存储装置构成的系统。其中,该集群包括至少两个仲裁节点。参看图9,该方法包括:
901、预先记录集群中至少两个仲裁节点中的任意一个作为初始主仲裁节点。
本步骤的具体实现过程和方法实施例一中步骤201的实现过程类似,在此不再赘述。
903、当集群发生脑裂后,分裂后的各个节点组中的仲裁节点检测到脑裂发生后,会分别产生抢主请求,并发送给仲裁存储装置。
本步骤的具体实现和方法实施例一中步骤203类似,在此不再赘述。
905、仲裁存储装置启动抢主检测周期,执行步骤907。
抢主检测周期可以是由仲裁存储装置设定的一个时间段,也可以是由第三方设备设置。
具体实现中,对于步骤903和步骤905的执行的先后顺序通过两种实现方式加以说明:
实现方式一:仲裁存储装置接收到第一个抢主请求后,立即就启动抢主检测周期,其中,第一个抢主请求为脑裂发生之后,仲裁存储装置接收到的第一个抢主请求。
实现方式二:仲裁存储装置接收到指定数目个(一个或者多个)抢主请求后,确定指定数目个抢主请求的发送方仲裁节点是否包含初始主仲裁节点;若否,仲裁存储装置向指定数目个抢主请求的发送方仲裁节点发送抢主失败响应消息,并启动抢主检测周期;若是,则仲裁存储装置设置初始主仲裁节点作为抢主成功的仲裁节点。
需要说明的是,作为实施方式一的进一步拓展,另一种较优的实现方式中,在所述仲裁存储装置接收第一抢主请求后,在启动抢主检测周期之前,所述方法还包括:仲裁存储装置确定第一抢主请求的发送方仲裁节点是初始主仲裁节点,设置初始主仲裁节点作为抢主成功的仲裁节点,向抢主成功的仲裁节点发送抢主成功响应消息。
907、仲裁存储装置确定在抢主检测周期内,所接收到的抢主请求中是否包含初始主仲裁节点发送的抢主请求;若是,则执行步骤909;若否,则执行步骤911。
具体实现中,仲裁存储装置通过将预先存储的初始主仲裁节点的标识和接收到抢主请求中的标识进行比较,来判断所接收到的抢主请求中是否包含初始主仲裁节点发送的抢主请求。
具体实现过程中,仲裁存储装置确定在抢主检测周期内,所接收到的抢主请求中是否包含初始主仲裁节点发送的抢主请求存在两种实现方式:
方式1:仲裁存储装置缓存在抢主检测周期内接收到的全部抢主请求,仲裁存储装置确定缓存的全部抢主请求的发送方仲裁节点是否包含初始主仲裁节点。
需要说明的是,仲裁存储装置存在存储装置,用来缓存发送抢主请求的发送方仲裁节点的标识,将初始主仲裁节点的标识和发送抢主请求的发送方仲裁节点的标识进行比较,确定是否包含初始主仲裁节点。
方式2:仲裁存储装置依次确定在抢主检测周期内接收到的每个抢主请求的发送方仲裁节点是否是初始主仲裁节点。
具体实现中,仲裁存储装置所接收到的抢主请求,可能是集群中所有的仲裁节点发送的抢主请求,也可能是集群中部分的仲裁节点发送的抢主请求。
抢主请求中会携带发出该抢主请求的仲裁节点的标识,仲裁存储装置利用初始主仲裁节点的标识分别和各个抢主请求中携带的标识进行比较,如果两者相同,则说明这些抢主请求中包括初始主仲裁节点的抢主请求,此时,则执行步骤909;如果比较后,发现各个抢主请求中携带的标识均与初始主仲裁节点的标识不同,则说明这些抢主请求中不包含初始主仲裁节点的抢主请求,此时,则执行步骤911。
909、当接收到的抢主请求中包括初始主仲裁节点发送的抢主请求时,该仲裁存储装置则确定初始主仲裁节点为抢主成功的仲裁节点,执行步骤915。
具体实现中,确定初始主仲裁节点为抢主成功的仲裁节点,即维持预先记录的初始主仲裁节点的标识不改变。
在抢主检测周期内,步骤909中采用的是初始主仲裁节点优先的处理策略,即设定在仲裁存储装置的抢主检测周期内,如果初始主仲裁节点的抢主请求到达仲裁存储装置后,则优先以初始主仲裁节点作为抢主成功的仲裁节点,即新的主仲裁节点。由于在实际应用中,主仲裁节点一般作为集群中的管理节点,承担了管理集群的功能,如果频繁地切换管理节点会导致业务的中断,并且管理节点的切换还会带来业务数据和/或状态数据的备份和拷贝,这样会给集群的处理资源带来较大的冲击,因此,采用优先以初始主仲裁节点作为新的主仲裁节点,能够有效地避免上述问题的发生。
911、当接收到的抢主请求中不包括初始主仲裁节点发送的抢主请求时,作为响应,仲裁存储装置向发送抢主请求的各个仲裁节点发送抢主失败响应消息,通知发送抢主请求的各仲裁节点继续发送抢主请求,并执行步骤913。
具体实现中,针对步骤907中“仲裁存储装置确定在抢主检测周期内是 否接收到初始主仲裁节点发送的抢主请求”存在两种实现方式,这里仲裁存储装置向发送抢主请求的各个仲裁节点发送抢主失败响应消息也包含两种方式:
方式1:仲裁存储装置向缓存的全部抢主请求的发送方仲裁节点分别发送抢主失败响应消息,以使得缓存的全部抢主请求的发送方仲裁节点再次向仲裁存储装置发送新的抢主请求。
方式2:仲裁存储装置向在抢主检测周期内接收到的每个抢主请求的发送方仲裁节点发送抢主失败响应消息,以使得在抢主检测周期内接收到的每个抢主请求的发送方仲裁节点再次向仲裁存储装置发送新的抢主请求。
需要说明的是,该步骤并非必选步骤。在具体实现中,仲裁存储装置可以不必发送响应消息,而预先在仲裁节点设定抢主请求周期发送机制,在仲裁节点未接收到仲裁存储装置发送的通知消息之前,各仲裁节点会周期性地发送抢主请求。
当然,为了提高脑裂仲裁的效率,增加了由仲裁存储装置向各仲裁节点发送响应消息,使得各仲裁节点能够及时获知脑裂仲裁的进展,以便当抢主成功后,减少对无效抢主请求的处理。
913、在抢主检测周期之后,集群中的各仲裁节点会继续向仲裁存储装置发送抢主请求,仲裁存储装置确定在抢主检测周期之后接收到的第一个抢主请求对应的发送方仲裁节点作为抢主成功的仲裁节点,并执行步骤915。
在具体实现中,仲裁存储装置将初始主仲裁节点的标识修改为在抢主检测周期之后接收到的第一个抢主请求对应的仲裁节点的标识。
当抢主检测周期结束后,仲裁存储装置就采用“先到先得”的方式确定主仲裁节点,即仲裁存储装置将抢主检测周期结束后接收到第一个抢主请求对应的仲裁节点设置为新的主仲裁节点,这样便于快速地确定抢主成功的仲裁节点,进而快速地确定脑裂发生后的主节点组,以便延续集群的正常工作。
其中,在抢主检测周期结束后接收到第一个抢主请求,会存在两种实现 方式,第一种是,各仲裁节点在该抢主检测周期结束之前就已经发送了该抢主请求,抢主请求在检测周期之后到达仲裁存储装置;第二种是,各仲裁节点在该抢主检测周期结束后发送抢主请求,抢主请求在抢主检测周期之后到达仲裁存储装置。对于上面两种可能,本发明的实施例均不加以限定。
915、仲裁存储装置向抢主成功的仲裁节点发送抢主成功响应消息。
具体实现中,接收到抢主成功响应的仲裁节点被选择作为主仲裁节点,该主仲裁节点所在的节点组作为主节点组,用来延续集群的工作。
917、仲裁存储装置向除抢主成功的仲裁节点以外的其他仲裁节点发送通知消息。
具体实现中,对于和抢主成功的仲裁节点连通类型不同的仲裁节点,仲裁存储装置发送的通知消息的类型是不同的,对于和抢主成功的仲裁节点位于不同节点组的仲裁节点(即和抢主成功的仲裁节点不相连通的仲裁节点),仲裁存储装置会发送拒绝访问通知消息,使得这些仲裁节点重启,并执行重新加入集群的操作;对于和抢主成功的仲裁节点位于相同节点组的仲裁节点(即和抢主成功的仲裁节点相连通的仲裁节点),仲裁存储装置会发送抢主失败通知消息,使得这些仲裁节点停止发送抢主请求。
如下存在两种实现方式,即方式一:采用分开发送的方式(和方法实施例一中的图2B以及对应文字所描述的实现方式相类似),方式二:采用集中发送的方式(和方法实施例一中的图2C以及对应文字所描述的实现方式相类似),在此不再赘述。
具体实现中,对于和抢主成功的仲裁节点处于不同节点组的仲裁节点,即第一类仲裁节点,为了避免这些仲裁节点继续向仲裁存储装置发送抢主请求,仲裁存储装置向这些仲裁节点发送修改防火墙策略的通知消息,这些仲裁节点接收到该通知消息后,会修改自身对应防火墙的防火墙策略,以屏蔽这些仲裁节点向仲裁存储装置所发送的抢主请求。
需要说明的是,在第一类仲裁节点执行重启操作并重新加入集群之后, 该方法实施例还包括:仲裁存储装置向第一类仲裁节点发送修改防火墙策略为允许的通知消息,该修改防火墙策略为允许的通知消息用于指示第一类仲裁节点修改第一类仲裁节点的防火墙中的防火墙策略为允许,以允许第一类仲裁节点向仲裁存储装置发送抢主请求。
需要说明的是,第一类仲裁节点在重启之前,还会向仲裁存储装置发送抢主请求,设定该步骤,能够有效地屏蔽这些仲裁节点所发送的抢主请求,避免仲裁存储装置将处理能力浪费在这些无效的抢主请求上。
上述方案能够有效解决现有技术中的存在的集群脑裂发生后,无法仲裁确定主节点组的问题。
在集群脑裂后仲裁处理结束之后,集群中除上述仲裁节点之外的其他节点,会根据心跳检测或者租约检测的方式判断与抢主成功的仲裁节点的连通性,当判断与抢主成功的仲裁节点相连通时,表明该节点和抢主成功的仲裁节点位于相同的节点组,该节点维持继续工作的状态;当判断与抢主成功的仲裁节点不相连通时,表明该节点和抢主成功的仲裁节点位于不同的节点组,该节点则触发自身重启,并执行重新加入抢主成功的仲裁节点所在的节点组的过程。
本发明的设备实施例三
参看图10,本发明还提供一种用于集群中仲裁处理的仲裁存储装置的实施例三,应用于集群和仲裁存储装置1000构成的系统,其中,该集群包括至少两个仲裁节点,仲裁存储装置1000预先配置集群中至少两个仲裁节点中的任意一个作为初始主仲裁节点,该仲裁存储装置1000包括:
接收单元1001,用于在集群发生脑裂后,接收所述至少两个仲裁节点的抢主请求;
启动单元1002,用于启动抢主检测周期;
判断单元1003,用于确定在抢主检测周期内是否接收到初始主仲裁节点 发送的抢主请求;
执行单元1004,用于在抢主检测周期内接收到初始主仲裁节点发送的抢主请求,仲裁存储装置设置初始主仲裁节点为抢主成功的仲裁节点;
发送单元1005,用于向抢主成功的仲裁节点发送抢主成功响应消息。
具体的,提供了两种实现方式:
(1)实现方式一:仲裁存储装置接收到第一个抢主请求后,立即就启动抢主检测周期,其中,第一个抢主请求为脑裂发生之后,仲裁存储装置接收到的第一个抢主请求。
(2)实现方式二:仲裁存储装置接收到指定数目个(一个或者多个)抢主请求后,确定指定数目个抢主请求的发送方仲裁节点是否包含初始主仲裁节点;若否,仲裁存储装置向指定数目个抢主请求的发送方仲裁节点发送抢主失败响应消息,并启动抢主检测周期;若是,则仲裁存储装置设置初始主仲裁节点作为抢主成功的仲裁节点。
进一步的,在该仲裁存储装置1000中,执行单元1004,还用于当确定在所述抢主检测周期内未接收到所述初始主仲裁节点发送的抢主请求,将在所述抢主检测周期结束后接收到的第一个抢主请求的发送方仲裁节点设置为抢主成功的仲裁节点;发送单元1005,还用于向所述抢主成功的仲裁节点发送抢主成功响应消息。
进一步的,判断单元1003,具体用于缓存在抢主检测周期内接收到的全部抢主请求,确定缓存的全部抢主请求的发送方仲裁节点是否包含初始主仲裁节点;或者,在抢主检测周期内,依次确定在抢主检测周期内接收到的每个抢主请求的发送方仲裁节点是否是初始主仲裁节点。
进一步的,执行单元1004,还用于当判断单元1003确定缓存的全部抢主请求的发送方仲裁节点不包含初始主仲裁节点后,生成抢主失败响应消息;发送单元1005,还用于向缓存的全部抢主请求的发送方仲裁节点分别发送抢主失败响应消息,以使得缓存的全部抢主请求的发送方仲裁节点再次向 仲裁存储装置发送新的抢主请求。
进一步的,执行单元1004,还用于当所述判断单元1003确定缓存的全部抢主请求的发送方仲裁节点不包含初始主仲裁节点后,生成抢主失败响应消息;发送单元1005,还用于向缓存的全部抢主请求的发送方仲裁节点分别发送抢主失败响应消息,以使得缓存的全部抢主请求的发送方仲裁节点再次向仲裁存储装置发送新的抢主请求。
进一步的,执行单元1004,还用于当确定在抢主检测周期内接收到的每个抢主请求的发送方仲裁节点不包含初始主仲裁节点后,生成抢主失败响应消息;发送单元1005,还用于向在抢主检测周期内接收到的每个抢主请求的发送方仲裁节点发送抢主失败响应消息,以使得在抢主检测周期内接收到的每个抢主请求的发送方仲裁节点再次向仲裁存储装置发送新的抢主请求。
进一步的,接收单元1001,还用于在发送单元向所述抢主成功的仲裁节点发送抢主成功响应消息之后,接收抢主成功的仲裁节点发送的第一权限控制消息,第一权限控制消息包括:在集群的至少两个仲裁节点中,与抢主成功的仲裁节点不相连通的第一类仲裁节点的标识;执行单元1004,还用于根据抢主成功的仲裁节点发送的第一权限控制消息生成拒绝访问通知消息;发送单元1005,还用于向第一类仲裁节点发送所述拒绝访问通知消息,以指示第一类仲裁节点执行节点重启操作。
进一步的,接收单元1001,还用于在发送单元向抢主成功的仲裁节点发送抢主成功响应消息之后,接收抢主成功的仲裁节点发送的第二权限控制消息,第二权限控制消息包括:在至少两个仲裁节点中,与抢主成功的仲裁节点相连通的第二类仲裁节点的标识;执行单元1004,还用于根据抢主成功的仲裁节点发送的第二权限控制消息生成抢主失败通知消息;发送单元1005,还用于向第二类仲裁节点发送抢主失败通知消息,以指示第二类仲裁节点停止向仲裁存储装置发送抢主请求。
进一步的,接收单元1001,还用于在发送单元1005向抢主成功的仲裁 节点发送抢主成功响应消息之后,接收抢主成功的仲裁节点发送的权限控制消息,权限控制消息包括:至少两个仲裁节点中除抢主成功的仲裁节点之外的其他仲裁节点的标识,以及至少两个仲裁节点中除抢主成功的仲裁节点之外的其他仲裁节点对仲裁存储装置的访问权限,访问权限包括:允许或者拒绝;执行单元1004,还用于根据权限控制消息生成通知消息;发送单元1005,还用于向至少两个仲裁节点中除抢主成功的仲裁节点之外的其他仲裁节点发送通知消息。
进一步的,执行单元1004,具体用于针对访问权限为拒绝的第一类仲裁节点生成拒绝访问通知消息;发送单元1005,具体用于向访问权限为拒绝的第一类仲裁节点发送拒绝访问通知消息,以指示第一类仲裁节点执行节点重启操作。
进一步的,执行单元1004,具体用于针对访问权限为允许的第二类仲裁节点生成抢主失败通知消息,以指示第二类仲裁节点停止向仲裁存储装置发送抢主请求;发送单元1005,具体用于向访问权限为允许的第二类仲裁节点发送抢主失败通知消息。
进一步的,执行单元1004,还用于在发送单元向第一类仲裁节点发送拒绝访问通知消息之后,针对第一类仲裁节点生成修改防火墙策略为拒绝的通知消息,修改防火墙策略为拒绝的通知消息用于通知第一类仲裁节点修改第一类仲裁节点的防火墙中的防火墙策略为拒绝,以屏蔽第一类仲裁节点向仲裁存储装置发送的抢主请求;发送单元1005,还用于向第一类仲裁节点发送修改防火墙策略为拒绝的通知消息。
进一步的,执行单元1004,还用于在第一类仲裁节点执行重启操作并重新加入所述集群之后,针对第一类仲裁节点生成修改防火墙策略为允许的通知消息,修改防火墙策略为允许的通知消息用于指示第一类仲裁节点修改第一类仲裁节点的防火墙中的防火墙策略为允许,以允许第一类仲裁节点向仲裁存储装置发送抢主请求;发送单元1005,还用于向第一类仲裁节点发送修 改防火墙策略为允许的通知消息。
参看图5,本发明还提供一种仲裁存储装置的实施例二,该仲裁存储装置500包括:
处理器501,存储器502,通信接口503和总线504,其中,处理器501、存储器502和通信接口503通过总线504通信;
通信接口503用于与集群中至少两个仲裁节点通信;
存储器502用于存放程序;
当该仲裁存储装置500运行时,处理器501用于执行存储器502存储的程序,以执行脑裂仲裁的方法实施例三或者方法实施例四的方法流程。
参看图8,本发明还提供一种集群脑裂后仲裁处理系统,该系统800包括:集群810和仲裁存储装置实施例三所示的仲裁存储装置820,其中,该集群810包括至少两个仲裁节点811,集群中包含的至少两个仲裁节点811和仲裁存储装置820通信连接,仲裁存储装置820预先记录所述集群中至少两个仲裁节点811中的任意一个作为初始主仲裁节点8111。
本发明的所有实施例,均是以存在一个仲裁存储装置为例进行说明,对于存在N(N≧3,N为奇数)个仲裁存储装置,集群中的至少两个仲裁节点会分别向N个仲裁存储装置中的每一个仲裁存储装置发送抢主请求,能够获得Round(N/2)+1个仲裁存储装置所发送抢主成功通知消息的仲裁节点,则会被认为抢主成功的仲裁节点,由该抢主成功的仲裁节点所在节点组为主节点组,其他的仲裁节点中能够和该抢主成功的仲裁节点通信的仲裁节点,则会接收到抢主失败通知消息,并停止向仲裁存储装置发送抢主请求;对于不能和抢主成功的仲裁节点通信的仲裁节点,则会接收到拒绝访问通知消息,该拒绝访问通知消息用于指示这些仲裁节点执行节点重启操作。由于具体的处理过程和存在单个仲裁存储装置的处理过程类似,本发明的实施例不再加以赘述。
应理解,本发明中的具体的例子只是为了帮助本领域技术人员更好地理 解本发明实施例,而非限制本发明实施例的范围。
还应理解,在本发明的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
还应理解,在本发明实施例中,术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系。例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的装置和单元的具体工作过程,以及方法的具体流程,可以参考前述系统实施例中的相应描述,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作 为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

Claims (37)

  1. 一种集群脑裂后仲裁处理的方法,其特征在于,应用于集群和仲裁存储装置构成的系统,其中,所述集群包括至少两个仲裁节点,所述仲裁存储装置预先记录所述集群中至少两个仲裁节点中的任意一个作为初始主仲裁节点,所述方法包括:
    在所述集群发生脑裂后,所述仲裁存储装置接收所述至少两个仲裁节点发送的抢主请求;
    所述仲裁存储装置启动抢主检测周期;
    所述仲裁存储装置确定在所述抢主检测周期内是否接收到所述初始主仲裁节点发送的抢主请求;
    如在所述抢主检测周期内接收到所述初始主仲裁节点发送的抢主请求,所述仲裁存储装置设置所述初始主仲裁节点为抢主成功的仲裁节点;
    所述仲裁存储装置向所述抢主成功的仲裁节点发送抢主成功响应消息。
  2. 根据权利要求1所述的方法,其特征在于,所述方法还包括:
    如确定在所述抢主检测周期内未接收到所述初始主仲裁节点发送的抢主请求,所述仲裁存储装置将在所述抢主检测周期结束后接收到的第一个抢主请求的发送方仲裁节点设置为抢主成功的仲裁节点,并向所述抢主成功的仲裁节点发送抢主成功响应消息。
  3. 根据权利要求1或2所述的方法,其特征在于,在启动抢主检测周期之后,所述仲裁存储装置确定在所述抢主检测周期内是否接收到所述初始主仲裁节点发送的抢主请求具体包括:
    在所述抢主检测周期内,所述仲裁存储装置缓存在所述抢主检测周期内接收到的全部抢主请求,所述仲裁存储装置确定所述缓存的全部抢主请求的发送方仲裁节点是否包含所述初始主仲裁节点;
    或者,
    在所述抢主检测周期内,所述仲裁存储装置依次确定在所述抢主检测周 期内接收到的每个抢主请求的发送方仲裁节点是否是所述初始主仲裁节点。
  4. 根据权利要求3所述的方法,其特征在于,在所述仲裁存储装置确定所述缓存的全部抢主请求的发送方仲裁节点不包含所述初始主仲裁节点后,所述方法还包括:
    所述仲裁存储装置向所述缓存的全部抢主请求的发送方仲裁节点分别发送抢主失败响应消息,以使得所述缓存的全部抢主请求的发送方仲裁节点再次向所述仲裁存储装置发送新的抢主请求。
  5. 根据权利要求3所述的方法,其特征在于,在所述仲裁存储装置依次确定在所述抢主检测周期内接收到的每个抢主请求的发送方仲裁装置不包含所述初始主仲裁节点后,所述方法还包括:
    所述仲裁存储装置向在所述抢主检测周期内接收到的每个抢主请求的发送方仲裁装置发送抢主失败响应消息,以使得在所述抢主检测周期内接收到的每个抢主请求的发送方仲裁装置再次向所述仲裁存储装置发送新的抢主请求。
  6. 根据权利要求1-5任一所述的方法,其特征在于,在所述仲裁存储装置向所述抢主成功的仲裁节点发送抢主成功响应消息之后,所述方法还包括:
    所述仲裁存储装置接收所述抢主成功的仲裁节点发送的第一权限控制消息,所述第一权限控制消息包括:在所述集群的至少两个仲裁节点中,与所述抢主成功的仲裁节点不相连通的第一类仲裁节点的标识;
    所述仲裁存储装置向所述第一类仲裁节点发送拒绝访问通知消息,以指示所述第一类仲裁节点执行节点重启操作。
  7. 根据权利要求1-6任一所述的方法,其特征在于,在所述仲裁存储装置向所述抢主成功的仲裁节点发送抢主成功响应消息之后,所述方法还包括:
    所述仲裁存储装置接收所述抢主成功的仲裁节点发送的第二权限控制 消息,所述第二权限控制消息包括:在所述至少两个仲裁节点中,与所述抢主成功的仲裁节点相连通的第二类仲裁节点的标识;
    所述仲裁存储装置向所述第二类仲裁节点发送抢主失败通知消息,以指示所述第二类仲裁节点停止向所述仲裁存储装置发送抢主请求。
  8. 根据权利要求1-5任一所述的方法,其特征在于,在所述仲裁存储装置向所述抢主成功的仲裁节点发送抢主成功响应消息之后,所述方法还包括:
    所述仲裁存储装置接收所述抢主成功的仲裁节点发送的权限控制消息,所述权限控制消息包括:所述至少两个仲裁节点中除所述抢主成功的仲裁节点之外的其他仲裁节点的标识,以及所述至少两个仲裁节点中除所述抢主成功的仲裁节点之外的其他仲裁节点对所述仲裁存储装置的访问权限,所述访问权限包括:允许或者拒绝;
    所述仲裁存储装置根据所述权限控制消息,向所述至少两个仲裁节点中除所述抢主成功的仲裁节点之外的其他仲裁节点发送通知消息。
  9. 根据权利要求8所述的方法,其特征在于,对于所述访问权限为拒绝的第一类仲裁节点,所述仲裁存储装置根据所述权限控制消息,向除所述抢主成功的仲裁节点之外的其他仲裁节点发送通知消息具体包括:
    所述仲裁存储装置向所述第一类仲裁节点发送拒绝访问通知消息,以指示所述第一类仲裁节点执行节点重启操作。
  10. 根据权利要求8或9所述的方法,其特征在于,对于所述访问权限为允许的第二类仲裁节点,所述仲裁存储装置根据所述权限控制消息,向除所述抢主成功的仲裁节点之外的其他仲裁节点发送通知消息具体包括:
    所述仲裁存储装置向所述第二类仲裁节点发送抢主失败通知消息,以指示所述第二类仲裁节点停止向所述仲裁存储装置发送抢主请求。
  11. 根据权利要求6或9所述的方法,其特征在于,在所述仲裁存储装置向所述第一类仲裁节点发送拒绝访问通知消息之后,所述方法还包括:
    所述仲裁存储装置向所述第一类仲裁节点发送修改防火墙策略为拒绝的通知消息,所述修改防火墙策略为拒绝的通知消息用于通知所述第一类仲裁节点修改所述第一类仲裁节点的防火墙中的防火墙策略为拒绝,以屏蔽所述第一类仲裁节点向所述仲裁存储装置发送的抢主请求。
  12. 根据权利要求11所述的方法,其特征在于,在所述第一类仲裁节点执行重启操作并重新加入所述集群之后,所述方法还包括:
    所述仲裁存储装置向所述第一类仲裁节点发送修改防火墙策略为允许的通知消息,所述修改防火墙策略为允许的通知消息用于指示所述第一类仲裁节点修改所述第一类仲裁节点的防火墙中的防火墙策略为允许,以允许所述第一类仲裁节点向所述仲裁存储装置发送抢主请求。
  13. 一种用于集群中仲裁处理的仲裁存储装置,其特征在于,应用于集群和仲裁存储装置构成的系统,其中,所述集群包括至少两个仲裁节点,所述仲裁存储装置预先配置所述集群中至少两个仲裁节点中的任意一个作为初始主仲裁节点,所述仲裁存储装置包括:
    接收单元,用于在所述集群发生脑裂后,接收所述至少两个仲裁节点的抢主请求;
    启动单元,用于启动抢主检测周期;
    判断单元,用于确定在所述抢主检测周期内是否接收到所述初始主仲裁节点发送的抢主请求;
    执行单元,用于在所述抢主检测周期内接收到所述初始主仲裁节点发送的抢主请求,所述仲裁存储装置设置所述初始主仲裁节点为抢主成功的仲裁节点;
    发送单元,用于向所述抢主成功的仲裁节点发送抢主成功响应消息。
  14. 根据权利要求13所述的仲裁存储装置,其特征在于,
    所述执行单元,还用于当确定在所述抢主检测周期内未接收到所述初始主仲裁节点发送的抢主请求,将在所述抢主检测周期结束后接收到的第一个 抢主请求的发送方仲裁节点设置为抢主成功的仲裁节点;
    所述发送单元,还用于向所述抢主成功的仲裁节点发送抢主成功响应消息。
  15. 根据权利要求13或14所述的仲裁存储装置,其特征在于,
    所述判断单元,具体用于缓存在所述抢主检测周期内接收到的全部抢主请求,确定所述缓存的全部抢主请求的发送方仲裁节点是否包含所述初始主仲裁节点;或者,在所述抢主检测周期内,依次确定在所述抢主检测周期内接收到的每个抢主请求的发送方仲裁节点是否是所述初始主仲裁节点。
  16. 根据权利要求15所述的仲裁存储装置,其特征在于,
    所述执行单元,还用于当所述判断单元确定所述缓存的全部抢主请求的发送方仲裁节点不包含所述初始主仲裁节点后,生成抢主失败响应消息;
    所述发送单元,还用于向所述缓存的全部抢主请求的发送方仲裁节点分别发送所述抢主失败响应消息,以使得所述缓存的全部抢主请求的发送方仲裁节点再次向所述仲裁存储装置发送新的抢主请求。
  17. 根据权利要求15所述的仲裁存储装置,其特征在于,
    所述执行单元,还用于当确定在所述抢主检测周期内接收到的每个抢主请求的发送方仲裁节点不包含所述初始主仲裁节点后,生成抢主失败响应消息;
    所述发送单元,还用于向在所述抢主检测周期内接收到的每个抢主请求的发送方仲裁节点发送所述抢主失败响应消息,以使得在所述抢主检测周期内接收到的每个抢主请求的发送方仲裁节点再次向所述仲裁存储装置发送新的抢主请求。
  18. 根据权利要求13-17任一所述的仲裁存储装置,其特征在于,
    所述接收单元,还用于在所述发送单元向所述抢主成功的仲裁节点发送抢主成功响应消息之后,接收所述抢主成功的仲裁节点发送的第一权限控制消息,所述第一权限控制消息包括:在所述集群的至少两个仲裁节点中,与 所述抢主成功的仲裁节点不相连通的第一类仲裁节点的标识;
    所述执行单元,还用于根据所述抢主成功的仲裁节点发送的第一权限控制消息生成拒绝访问通知消息;
    所述发送单元,还用于向所述第一类仲裁节点发送所述拒绝访问通知消息,以指示所述第一类仲裁节点执行节点重启操作。
  19. 根据权利要求13-18任一所述的仲裁存储装置,其特征在于,
    所述接收单元,还用于在所述发送单元向所述抢主成功的仲裁节点发送抢主成功响应消息之后,接收所述抢主成功的仲裁节点发送的第二权限控制消息,所述第二权限控制消息包括:在所述至少两个仲裁节点中,与所述抢主成功的仲裁节点相连通的第二类仲裁节点的标识;
    所述执行单元,还用于根据所述抢主成功的仲裁节点发送的第二权限控制消息生成抢主失败通知消息;
    所述发送单元,还用于向所述第二类仲裁节点发送所述抢主失败通知消息,以指示所述第二类仲裁节点停止向所述仲裁存储装置发送抢主请求。
  20. 根据权利要求13-17任一所述的仲裁存储装置,其特征在于,
    所述接收单元,还用于在所述发送单元向所述抢主成功的仲裁节点发送抢主成功响应消息之后,接收所述抢主成功的仲裁节点发送的权限控制消息,所述权限控制消息包括:所述至少两个仲裁节点中除所述抢主成功的仲裁节点之外的其他仲裁节点的标识,以及所述至少两个仲裁节点中除所述抢主成功的仲裁节点之外的其他仲裁节点对所述仲裁存储装置的访问权限,所述访问权限包括:允许或者拒绝;
    所述执行单元,还用于根据所述权限控制消息生成通知消息;
    所述发送单元,还用于向所述至少两个仲裁节点中除所述抢主成功的仲裁节点之外的其他仲裁节点发送所述通知消息。
  21. 根据权利要求20所述的仲裁存储装置,其特征在于,
    所述执行单元,具体用于针对访问权限为拒绝的第一类仲裁节点生成拒 绝访问通知消息;
    所述发送单元,具体用于向所述访问权限为拒绝的第一类仲裁节点发送拒绝访问通知消息,以指示所述第一类仲裁节点执行节点重启操作。
  22. 根据权利要求20或21所述的仲裁存储装置,其特征在于,
    所述执行单元,具体用于针对所述访问权限为允许的第二类仲裁节点生成抢主失败通知消息,以指示第二类仲裁节点停止向仲裁存储装置发送抢主请求;
    所述发送单元,具体用于向所述访问权限为允许的第二类仲裁节点发送抢主失败通知消息。
  23. 根据权利要求18或21所述的仲裁存储装置,其特征在于,
    所述执行单元,还用于在发送单元向第一类仲裁节点发送拒绝访问通知消息之后,针对第一类仲裁节点生成修改防火墙策略为拒绝的通知消息,所述修改防火墙策略为拒绝的通知消息用于通知第一类仲裁节点修改第一类仲裁节点的防火墙中的防火墙策略为拒绝,以屏蔽第一类仲裁节点向仲裁存储装置发送的抢主请求;
    所述发送单元,还用于向所述第一类仲裁节点发送所述修改防火墙策略为拒绝的通知消息。
  24. 根据权利要求23所述的仲裁存储装置,其特征在于,
    所述执行单元,还用于在所述第一类仲裁节点执行重启操作并重新加入所述集群之后,针对所述第一类仲裁节点生成修改防火墙策略为允许的通知消息,所述修改防火墙策略为允许的通知消息用于指示所述第一类仲裁节点修改所述第一类仲裁节点的防火墙中的防火墙策略为允许,以允许所述第一类仲裁节点向所述仲裁存储装置发送抢主请求;
    所述发送单元,还用于向所述第一类仲裁节点发送修改防火墙策略为允许的通知消息。
  25. 一种存储装置,其特征在于,所述存储装置包括:
    处理器,存储器,通信接口和总线,其中,所述处理器、所述存储器和所述通信接口通过所述总线通信;
    所述通信接口用于与集群中至少两个仲裁节点通信;
    所述存储器用于存放程序;
    当所述存储装置运行时,所述处理器用于执行所述存储器存储的所述程序,以执行所述权利要求1-12任一所述的方法。
  26. 一种集群脑裂后仲裁处理的系统,其特征在于,所述系统包括:包括集群和仲裁存储装置,其中,所述集群包括至少两个仲裁节点,所述集群中包含的至少两个仲裁节点和仲裁存储装置通信连接,所述仲裁存储装置预先记录所述集群中至少两个仲裁节点中的任意一个作为初始主仲裁节点,
    所述仲裁存储装置用于在所述集群发生脑裂后,接收所述至少两个仲裁节点的抢主请求,并启动抢主检测周期,确定在所述抢主检测周期内是否接收到所述初始主仲裁节点发送的抢主请求;在所述抢主检测周期内接收到所述初始主仲裁节点发送的抢主请求,所述仲裁存储装置设置所述初始主仲裁节点为抢主成功的仲裁节点;向所述抢主成功的仲裁节点发送抢主成功响应消息。
  27. 根据权利要求26所述的系统,其特征在于,所述仲裁存储装置还用于:当确定在所述抢主检测周期内未接收到所述初始主仲裁节点发送的抢主请求,将在所述抢主检测周期结束后接收到的第一个抢主请求的发送方仲裁节点设置为抢主成功的仲裁节点;向所述抢主成功的仲裁节点发送抢主成功响应消息。
  28. 根据权利要求26或27所述的系统,其特征在于,所述仲裁存储装置还用于:缓存在所述抢主检测周期内接收到的全部抢主请求,确定所述缓存的全部抢主请求的发送方仲裁节点是否包含所述初始主仲裁节点;或者,在所述抢主检测周期内,依次确定在所述抢主检测周期内接收到的每个抢主请求的发送方仲裁节点是否是所述初始主仲裁节点。
  29. 根据权利要求28所述的系统,其特征在于,所述仲裁存储装置还用于:当所述判断单元确定所述缓存的全部抢主请求的发送方仲裁节点不包含所述初始主仲裁节点后,生成抢主失败响应消息;向所述缓存的全部抢主请求的发送方仲裁节点分别发送所述抢主失败响应消息,以使得所述缓存的全部抢主请求的发送方仲裁节点再次向所述仲裁存储装置发送新的抢主请求。
  30. 根据权利要求28所述的系统,其特征在于,所述仲裁存储装置还用于:当确定在所述抢主检测周期内接收到的每个抢主请求的发送方仲裁节点不包含所述初始主仲裁节点后,生成抢主失败响应消息;向在所述抢主检测周期内接收到的每个抢主请求的发送方仲裁节点发送所述抢主失败响应消息,以使得在所述抢主检测周期内接收到的每个抢主请求的发送方仲裁节点再次向所述仲裁存储装置发送新的抢主请求。
  31. 根据权利要求26-30任一所述的系统,其特征在于,所述仲裁存储装置还用于:在所述发送单元向所述抢主成功的仲裁节点发送抢主成功响应消息之后,接收所述抢主成功的仲裁节点发送的第一权限控制消息,所述第一权限控制消息包括:在所述集群的至少两个仲裁节点中,与所述抢主成功的仲裁节点不相连通的第一类仲裁节点的标识;并根据所述抢主成功的仲裁节点发送的第一权限控制消息生成拒绝访问通知消息;以及向所述第一类仲裁节点发送所述拒绝访问通知消息,以指示所述第一类仲裁节点执行节点重启操作。
  32. 根据权利要求26-31任一所述的系统,其特征在于,所述仲裁存储装置还用于:在所述发送单元向所述抢主成功的仲裁节点发送抢主成功响应消息之后,接收所述抢主成功的仲裁节点发送的第二权限控制消息,所述第二权限控制消息包括:在所述至少两个仲裁节点中,与所述抢主成功的仲裁节点相连通的第二类仲裁节点的标识;并根据所述抢主成功的仲裁节点发送的第二权限控制消息生成抢主失败通知消息;以及向所述第二类仲裁节点发 送所述抢主失败通知消息,以指示所述第二类仲裁节点停止向所述仲裁存储装置发送抢主请求。
  33. 根据权利要求26-30任一所述的系统,其特征在于,所述仲裁存储装置还用于:在所述发送单元向所述抢主成功的仲裁节点发送抢主成功响应消息之后,接收所述抢主成功的仲裁节点发送的权限控制消息,所述权限控制消息包括:所述至少两个仲裁节点中除所述抢主成功的仲裁节点之外的其他仲裁节点的标识,以及所述至少两个仲裁节点中除所述抢主成功的仲裁节点之外的其他仲裁节点对所述仲裁存储装置的访问权限,所述访问权限包括:允许或者拒绝;根据所述权限控制消息生成通知消息;向所述至少两个仲裁节点中除所述抢主成功的仲裁节点之外的其他仲裁节点发送所述通知消息。
  34. 根据权利要求33所述的系统,其特征在于,所述仲裁存储装置还用于:针对访问权限为拒绝的第一类仲裁节点生成拒绝访问通知消息;向所述访问权限为拒绝的第一类仲裁节点发送拒绝访问通知消息,以指示所述第一类仲裁节点执行节点重启操作。
  35. 根据权利要求33或34所述的系统,其特征在于,所述仲裁存储装置还用于:针对所述访问权限为允许的第二类仲裁节点生成抢主失败通知消息,以指示第二类仲裁节点停止向仲裁存储装置发送抢主请求;向所述访问权限为允许的第二类仲裁节点发送抢主失败通知消息。
  36. 根据权利要求31或34所述的系统,其特征在于,所述仲裁存储装置还用于:在发送单元向第一类仲裁节点发送拒绝访问通知消息之后,针对第一类仲裁节点生成修改防火墙策略为拒绝的通知消息,所述修改防火墙策略为拒绝的通知消息用于通知第一类仲裁节点修改第一类仲裁节点的防火墙中的防火墙策略为拒绝,以屏蔽第一类仲裁节点向仲裁存储装置发送的抢主请求;以及向所述第一类仲裁节点发送所述修改防火墙策略为拒绝的通知消息。
  37. 根据权利要求36所述的系统,其特征在于,所述仲裁存储装置还用于:在所述第一类仲裁节点执行重启操作并重新加入所述集群之后,针对所述第一类仲裁节点生成修改防火墙策略为允许的通知消息,所述修改防火墙策略为允许的通知消息用于指示所述第一类仲裁节点修改所述第一类仲裁节点的防火墙中的防火墙策略为允许,以允许所述第一类仲裁节点向所述仲裁存储装置发送抢主请求;以及向所述第一类仲裁节点发送修改防火墙策略为允许的通知消息。
CN201580000286.6A 2014-12-31 2015-08-05 一种集群脑裂后仲裁处理方法、仲裁存储装置以及系统 Active CN105934929B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
PCT/CN2014/095892 WO2016106682A1 (zh) 2014-12-31 2014-12-31 一种集群脑裂后仲裁处理方法、仲裁存储装置以及系统
CNPCT/CN2014/095892 2014-12-31
PCT/CN2015/086147 WO2016107173A1 (zh) 2014-12-31 2015-08-05 一种集群脑裂后仲裁处理方法、仲裁存储装置以及系统

Publications (2)

Publication Number Publication Date
CN105934929A true CN105934929A (zh) 2016-09-07
CN105934929B CN105934929B (zh) 2017-07-21

Family

ID=56283956

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201580000286.6A Active CN105934929B (zh) 2014-12-31 2015-08-05 一种集群脑裂后仲裁处理方法、仲裁存储装置以及系统
CN201580000284.7A Active CN106170971B (zh) 2014-12-31 2015-08-05 一种集群脑裂后仲裁处理方法、仲裁存储装置以及系统

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201580000284.7A Active CN106170971B (zh) 2014-12-31 2015-08-05 一种集群脑裂后仲裁处理方法、仲裁存储装置以及系统

Country Status (5)

Country Link
US (2) US10298436B2 (zh)
EP (2) EP3128720B1 (zh)
JP (2) JP6362120B2 (zh)
CN (2) CN105934929B (zh)
WO (3) WO2016106682A1 (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109428740A (zh) * 2017-08-21 2019-03-05 华为技术有限公司 设备故障恢复的方法和装置
CN111651291A (zh) * 2020-04-23 2020-09-11 国网河南省电力公司电力科学研究院 一种共享存储集群防脑裂的方法、系统、计算机存储介质
CN111835534A (zh) * 2019-04-15 2020-10-27 华为技术有限公司 一种集群控制的方法及相关设备
CN112468596A (zh) * 2020-12-02 2021-03-09 苏州浪潮智能科技有限公司 一种集群仲裁方法、装置、电子设备及可读存储介质
CN113377702A (zh) * 2021-07-06 2021-09-10 安超云软件有限公司 两节点集群启动的方法及装置、电子设备和存储介质
CN114461141A (zh) * 2021-12-30 2022-05-10 苏州浪潮智能科技有限公司 一种etcd系统、节点仲裁方法及系统
CN115190046A (zh) * 2022-04-13 2022-10-14 统信软件技术有限公司 一种服务器集群的检测方法、检测装置及计算设备

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10320702B2 (en) * 2015-09-30 2019-06-11 Veritas Technologies, LLC Input/output fencing optimization
US11075806B1 (en) 2016-06-30 2021-07-27 Juniper Networks, Inc. Hierarchical naming scheme for state propagation within network devices
CN106301900B (zh) * 2016-08-08 2019-08-23 华为技术有限公司 设备仲裁的方法和设备
CN106789193A (zh) * 2016-12-06 2017-05-31 郑州云海信息技术有限公司 一种集群投票仲裁方法及系统
US11316744B2 (en) 2016-12-21 2022-04-26 Juniper Networks, Inc. Organizing execution of distributed operating systems for network devices
US11316775B2 (en) 2016-12-21 2022-04-26 Juniper Networks, Inc. Maintaining coherency in distributed operating systems for network devices
US10887173B2 (en) 2016-12-21 2021-01-05 Juniper Networks, Inc. Communicating state information in distributed operating systems
JP7110990B2 (ja) * 2017-02-20 2022-08-02 日本電気株式会社 情報処理装置、情報処理方法および記憶媒体
US10534767B2 (en) 2017-03-14 2020-01-14 International Business Machines Corporation Disaster recovery for split storage cluster
CN107579860A (zh) * 2017-09-29 2018-01-12 新华三技术有限公司 节点选举方法及装置
US10592342B1 (en) * 2018-02-02 2020-03-17 EMC IP Holding Company LLC Environmental aware witness for active-active storage cluster nodes
CN108449200A (zh) * 2018-02-02 2018-08-24 云宏信息科技股份有限公司 一种基于控制节点的屏蔽信息写入方法及装置
CN109445942B (zh) * 2018-10-22 2021-09-17 郑州云海信息技术有限公司 一种心跳消息的处理方法及装置
US11516084B2 (en) * 2019-01-31 2022-11-29 EMC IP Holding Company LLC Device compatibility in a communication architecture
US11095742B2 (en) 2019-03-27 2021-08-17 Juniper Networks, Inc. Query proxy for delivery of dynamic system state
CN111651294B (zh) * 2020-05-13 2023-07-25 浙江华创视讯科技有限公司 一种节点异常检测方法及装置
CN112181305A (zh) * 2020-09-30 2021-01-05 北京人大金仓信息技术股份有限公司 数据库集群网络分区选择方法和装置
CN112822238B (zh) * 2020-12-29 2023-05-26 深圳市金证科技股份有限公司 一种主节点的切换方法以及计算机可读存储介质
CN113625946A (zh) * 2021-06-28 2021-11-09 苏州浪潮智能科技有限公司 一种实现存储集群仲裁的方法、系统及计算机设备
CN116737634A (zh) * 2023-07-12 2023-09-12 北京鲸鲨软件科技有限公司 一种drbd双主模式下基于仲裁的脑裂快速处理方法和装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7496782B1 (en) * 2004-06-01 2009-02-24 Network Appliance, Inc. System and method for splitting a cluster for disaster recovery
CN102308559A (zh) * 2011-07-26 2012-01-04 华为技术有限公司 一种用于集群计算机系统的投票仲裁方法及装置
CN102594596A (zh) * 2012-02-15 2012-07-18 华为技术有限公司 识别集群网络中可用分区的方法、装置及集群网络系统
CN104158707A (zh) * 2014-08-29 2014-11-19 杭州华三通信技术有限公司 一种检测并处理集群脑裂的方法和装置

Family Cites Families (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5999712A (en) * 1997-10-21 1999-12-07 Sun Microsystems, Inc. Determining cluster membership in a distributed computer system
US6487622B1 (en) * 1999-10-28 2002-11-26 Ncr Corporation Quorum arbitrator for a high availability system
US6615256B1 (en) * 1999-11-29 2003-09-02 Microsoft Corporation Quorum resource arbiter within a storage network
US6965936B1 (en) * 2000-12-06 2005-11-15 Novell, Inc. Method for detecting and resolving a partition condition in a cluster
US7277952B2 (en) * 2001-09-28 2007-10-02 Microsoft Corporation Distributed system resource protection via arbitration and ownership
US20050132154A1 (en) 2003-10-03 2005-06-16 International Business Machines Corporation Reliable leader election in storage area network
JP4820814B2 (ja) 2004-03-09 2011-11-24 スケールアウト ソフトウェア インコーポレイテッド スケラブルなソフトウェアをベースにしたクォーラムアーキテクチャ
US7313636B2 (en) 2004-06-15 2007-12-25 Lsi Corporation Methods and structure for supporting persistent reservations in a multiple-path storage environment
JP4371942B2 (ja) * 2004-08-06 2009-11-25 富士通株式会社 クラスタシステムのノード制御プログラムおよびサーバ
US7653682B2 (en) 2005-07-22 2010-01-26 Netapp, Inc. Client failure fencing mechanism for fencing network file system data in a host-cluster environment
US20070168507A1 (en) * 2005-11-15 2007-07-19 Microsoft Corporation Resource arbitration via persistent reservation
JP4505763B2 (ja) * 2007-01-31 2010-07-21 ヒューレット−パッカード デベロップメント カンパニー エル.ピー. ノードクラスタの管理
US20080225837A1 (en) 2007-03-16 2008-09-18 Novell, Inc. System and Method for Multi-Layer Distributed Switching
US7778157B1 (en) 2007-03-30 2010-08-17 Symantec Operating Corporation Port identifier management for path failover in cluster environments
US8024432B1 (en) * 2008-06-27 2011-09-20 Symantec Corporation Method and apparatus for partitioning a computer cluster through coordination point devices
KR101042908B1 (ko) * 2009-02-12 2011-06-21 엔에이치엔(주) 네트워크 분리 장애 상황에서 메이저 그룹을 결정하기 위한방법, 시스템, 및 컴퓨터 판독 가능한 기록 매체
US8145938B2 (en) 2009-06-01 2012-03-27 Novell, Inc. Fencing management in clusters
US8484510B2 (en) 2009-12-15 2013-07-09 Symantec Corporation Enhanced cluster failover management
US8443231B2 (en) * 2010-04-12 2013-05-14 Symantec Corporation Updating a list of quorum disks
US8108715B1 (en) * 2010-07-02 2012-01-31 Symantec Corporation Systems and methods for resolving split-brain scenarios in computer clusters
CN102402395B (zh) * 2010-09-16 2014-07-16 中标软件有限公司 基于仲裁磁盘的高可用系统不间断运行方法
JP2012173996A (ja) * 2011-02-22 2012-09-10 Nec Corp クラスタシステム、クラスタ管理方法、およびクラスタ管理プログラム
CN102420820B (zh) 2011-11-28 2016-06-08 杭州华三通信技术有限公司 一种集群系统中的隔离方法和装置
US8738701B2 (en) * 2012-02-28 2014-05-27 Microsoft Corporation Arbitration of disk ownership in a storage pool
CN102904946B (zh) * 2012-09-29 2015-06-10 浪潮(北京)电子信息产业有限公司 集群内节点管理方法和装置
CN103532748B (zh) * 2013-10-08 2017-01-25 北京华胜天成科技股份有限公司 一种drbd脑裂的处理方法及装置
CN103684941B (zh) * 2013-11-23 2018-01-16 广东中兴新支点技术有限公司 基于仲裁服务器的集群裂脑预防方法和装置
CN103647820B (zh) * 2013-12-09 2016-11-23 华为数字技术(苏州)有限公司 用于分布式集群系统的仲裁方法及仲裁装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7496782B1 (en) * 2004-06-01 2009-02-24 Network Appliance, Inc. System and method for splitting a cluster for disaster recovery
CN102308559A (zh) * 2011-07-26 2012-01-04 华为技术有限公司 一种用于集群计算机系统的投票仲裁方法及装置
CN102594596A (zh) * 2012-02-15 2012-07-18 华为技术有限公司 识别集群网络中可用分区的方法、装置及集群网络系统
CN104158707A (zh) * 2014-08-29 2014-11-19 杭州华三通信技术有限公司 一种检测并处理集群脑裂的方法和装置

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109428740B (zh) * 2017-08-21 2020-09-08 华为技术有限公司 设备故障恢复的方法和装置
CN109428740A (zh) * 2017-08-21 2019-03-05 华为技术有限公司 设备故障恢复的方法和装置
CN111835534A (zh) * 2019-04-15 2020-10-27 华为技术有限公司 一种集群控制的方法及相关设备
CN111651291B (zh) * 2020-04-23 2023-02-03 国网河南省电力公司电力科学研究院 一种共享存储集群防脑裂的方法、系统、计算机存储介质
CN111651291A (zh) * 2020-04-23 2020-09-11 国网河南省电力公司电力科学研究院 一种共享存储集群防脑裂的方法、系统、计算机存储介质
CN112468596A (zh) * 2020-12-02 2021-03-09 苏州浪潮智能科技有限公司 一种集群仲裁方法、装置、电子设备及可读存储介质
CN112468596B (zh) * 2020-12-02 2022-07-05 苏州浪潮智能科技有限公司 一种集群仲裁方法、装置、电子设备及可读存储介质
US11902095B2 (en) 2020-12-02 2024-02-13 Inspur Suzhou Intelligent Technology Co., Ltd. Cluster quorum method and apparatus, electronic device, and readable storage medium
CN113377702A (zh) * 2021-07-06 2021-09-10 安超云软件有限公司 两节点集群启动的方法及装置、电子设备和存储介质
CN113377702B (zh) * 2021-07-06 2024-03-22 安超云软件有限公司 两节点集群启动的方法及装置、电子设备和存储介质
CN114461141A (zh) * 2021-12-30 2022-05-10 苏州浪潮智能科技有限公司 一种etcd系统、节点仲裁方法及系统
CN114461141B (zh) * 2021-12-30 2023-08-18 苏州浪潮智能科技有限公司 一种etcd系统、节点仲裁方法及系统
CN115190046A (zh) * 2022-04-13 2022-10-14 统信软件技术有限公司 一种服务器集群的检测方法、检测装置及计算设备
CN115190046B (zh) * 2022-04-13 2024-01-23 统信软件技术有限公司 一种服务器集群的检测方法、检测装置及计算设备

Also Published As

Publication number Publication date
JP2017517817A (ja) 2017-06-29
CN106170971A (zh) 2016-11-30
US10298436B2 (en) 2019-05-21
WO2016106682A1 (zh) 2016-07-07
WO2016107173A1 (zh) 2016-07-07
JP2017525008A (ja) 2017-08-31
EP3128719B1 (en) 2018-11-28
US20170293613A1 (en) 2017-10-12
EP3128720A4 (en) 2017-06-21
WO2016107172A1 (zh) 2016-07-07
US10020980B2 (en) 2018-07-10
US20170302502A1 (en) 2017-10-19
JP6362120B2 (ja) 2018-07-25
CN105934929B (zh) 2017-07-21
EP3128719A1 (en) 2017-02-08
CN106170971B (zh) 2019-06-11
EP3128719A4 (en) 2017-06-21
EP3128720B1 (en) 2019-05-22
JP6362119B2 (ja) 2018-07-25
EP3128720A1 (en) 2017-02-08

Similar Documents

Publication Publication Date Title
CN105934929A (zh) 一种集群脑裂后仲裁处理方法、仲裁存储装置以及系统
CN102355369B (zh) 虚拟化集群系统及其处理方法和设备
CN106911728B (zh) 分布式系统中主节点的选取方法和装置
CN106170948B (zh) 一种用于双活数据中心的仲裁方法、装置及系统
CN106302569B (zh) 处理虚拟机集群的方法和计算机系统
CN103051470B (zh) 一种集群及其磁盘心跳的控制方法
CN103297456A (zh) 一种分布式系统下共享资源的访问方法及分布式系统
US9100443B2 (en) Communication protocol for virtual input/output server (VIOS) cluster communication
CN106331081B (zh) 一种信息同步方法及装置
CN109582459A (zh) 应用的托管进程进行迁移的方法及装置
CN110730095B (zh) 一种面向云计算平台的数据安全应急演练方法和系统
CN106165367B (zh) 一种存储装置的访问控制方法、存储装置以及控制系统
CN109753540A (zh) 共享资源访问方法、装置及计算机可读取存储介质
CN116095145B (zh) 一种vpc集群的数据控制方法和系统
US11153173B1 (en) Dynamically updating compute node location information in a distributed computing environment
CN110321199B (zh) 一种共用数据变更的通知方法、装置、电子设备及介质
CN114124803B (zh) 设备管理方法、装置、电子设备及存储介质
CN109688011A (zh) 一种基于OpenStack的agent选择方法及装置
CN107615872B (zh) 一种释放连接的方法、装置及系统
CN107153594B (zh) 分布式数据库系统的ha组件选主方法及其系统
RU2673019C1 (ru) Способ обеспечения доступа к разделяемому ресурсу в распределенной вычислительной системе
JP2001028595A (ja) バス管理システムおよびバス管理方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant