一种增强双机集群可靠、可用性的方法及装置制造方法及图纸

技术编号:14995472 阅读:78 留言:0更新日期:2017-04-04 01:03
本发明专利技术涉及一种增强双机集群可靠、可用性的方法,适用于大数据集群存储,属于集群存储技术领域。本发明专利技术针对传统双机集群中,心跳信息的传递只通过网络或者串口实现,当串口和网络故障后,集群之间的心跳信息就无法传递,导致集群脑裂,互相争抢资源,从而导致数据出现不一致性。为解决此问题,设计实现一种基于集群之间的共享磁盘进行心跳信息传递的方法及装置,通过在磁盘上预留空间作为心跳盘,当心跳网络故障时通过心跳盘进行通讯,避免了脑裂的发生,增强了集群的一致性,保证了集群的高可靠性和高可用性。

【技术实现步骤摘要】

本专利技术涉及一种增强双机集群可靠、可用性的方法及装置,特别涉及一种双机存储系统使用后端共享存储时提高其可靠、可用性的方法及装置,适用于双机集群存储系统,属于集群海量数据存储

技术介绍
在现代存储领域,为了提高存储数据的可靠性和改善存储系统的输入、输出性能,人们设计了多种数据存储方案,这些数据存储方案通常是各种类型的独立磁盘冗余阵列(RedundantArraysofIndependentDisks,RAID)。通过使用特定的硬件或软件,RAID把多个物理存储设备如磁盘,联合起来,形成一个统一的逻辑存储设备对应用系统提供存储服务。为了提高应用系统的可用性,人们设计了集群方案,通过集群技术对外提供服务;此时集群内各节点服务器通过心跳网络通讯进行心跳传递。目前应用广泛的是双机应用集群,集群的通讯大多通过串口或以太网络进行,当串口或网络出现故障,没有其他的心跳机制来保障集群心跳通信,集群将处于脑裂状态,即双机都认为对方已失效,将接管对方的业务及资源,由此带来双机均操纵对方的共享磁盘空间,出现写入同一个磁盘位置或者文件,不可避免地造成数据的一致性问题,此时集群无法正常工作,集群的可靠性及可用性极大降低。下面对RAID中常用的技术术语进行解释:条带:又称为Stripe,是磁盘阵列不同磁盘上的位置相关的分块集合,是组织不同磁盘上条块的单位。条带化:又称为Striping,是指把一段连续数据分割成相同大小的数据块,把每段数据分别写入到磁盘阵列的不同磁盘上的方法。共享磁盘:后端通过光纤和以太网通道将磁盘阵列的LUN映射到节点上或者SAS通道链接JBOD上的磁盘,这些磁盘对于所有的前端节点均可见和读写。节点:传统概念中的一个控制器,为本文中提到的一个节点。XOR运算:异或运算。比较常用的RAID有RAID0、RAID1、RAID5、RAID6、RAID10、RAID50和RAID60等。其中RAID0不具有冗余能力,RAID1只是对磁盘做了镜像。其它五种阵列分别有多个磁盘组成,它们以条带的方式向阵列中的磁盘写数据,奇偶校验数据存放在阵列中的各个磁盘上。传统的阵列在数据量较小的情况得到了广泛应用。集群:一般情况下,程序运行在一个节点上,集群则是将运行在多个节点上的程序,同一时间选择某一个节点上的程序为用户提供服务,而正在服务的节点损坏或者下电维护时,将应用切换到其他节点工作,达到连续服务的目的。双机:单独一个节点运行时为单机,两个节点协调工作为双机。心跳:节点之间的用于表示自己还存活的信息传递。
技术实现思路
本专利技术的目的是为解决由于集群节点间的网络故障带来的数据不可靠、系统不可用问题,提出一种增强双机集群可靠、可用性的方法。本专利技术的思想是采用控制器和磁盘分离的方式部署双机集群系统,通过设置心跳盘来进行心跳信息传递,从而解决因为心跳网络故障而导致的节点会认为对方失效的问题。本专利技术的目的是通过以下技术方案实现的:一种增强双机集群可靠、可用性的方法,包括以下内容:在后端共享磁盘中保留一部分共享空间用于设置心跳盘;当心跳网络正常时按照原双机集群的工作模式通过心跳网络传递心跳消息;当心跳网络发生故障时启用心跳盘传递心跳消息,当心跳网络恢复后,按照原双机集群的工作模式通过心跳网络传递心跳消息,停止使用心跳盘传递心跳消息。作为优选,所述心跳盘分为两个信息区,分别存储两个节点的信息,每个信息区分为集群超级块、写超级块、消息区以及保留区四部分;集群超级块用于标识集群,包括心跳盘标记、集群名称和集群UUID;写超级块用于标识当前写入消息的条数SEQ以及最近写入消息的时间;消息区用于存储具体的消息,其为长度M的环形队列,每个消息结构体为校验码、时间戳和消息数据本身;保留区用于当消息区所在块为坏块时,从中分割出一定空间作为消息区;所述传递心跳消息通过在2个节点启用2个同样的线程:发送线程和接收线程实现,二者的工作过程如下:发送线程:首先根据本节点所在集群的信息写入集群超级块,初始化写超级块,然后间隔预设写入时间阈值T1向本节点对应的信息区写入一个消息,写前将需要发送的消息打包,即封装成所述消息结构体,然后写入消息区,写入位置由写超级块中的SEQ和消息区大小M决定,当SEQ为M的整数倍时从头覆盖写入,然后更新写超级块的SEQ值为SEQ+1;接收线程:首先读取对方节点对应的信息区的集群超级块,验证有效后,初始化已读消息个数sequence为0,然后轮询读取对方的写超级块,如果读到的写超级块SEQ大于本节点程序中的sequence,则读取对方的消息区中序号从sequence到SEQ-1的消息,并更新sequence为SEQ;对于读取到的每一条心跳信息,验证消息的校验码和时间戳,若不能通过完整性校验验证或者消息的时间戳与系统当前时间超过一定的时间差T,说明该消息无效,丢弃此消息;当经过预设读取时间间隔T2没有读取到对方有效的消息时,则判定对方节点失效,开始接管对方的资源和业务;否则,判定对方节点有效,继续读取心跳信息。作为优选,为提高心跳盘的向后兼容性,所述集群超级块还包括版本号。作为优选,为增强系统的可靠性,设置多个心跳盘,每个心跳盘占用一个磁盘的部分空间,当启用心跳盘时,首先使用第一个,当第一个失效时使用第二个,以此类推。作为优选,所述使用心跳盘的顺序为按照用户预设的顺序或按照预设的考虑了磁盘IO的算法选择。一种增强双机集群可靠、可用性的装置,基于心跳盘,包括控制模块、心跳写入模块和心跳读取模块,3个模块同时部署于2个节点上,控制模块分别与心跳写入模块和心跳读取模块相连,心跳写入模块和心跳读取模块分别与心跳盘相连;所述心跳盘分为两个信息区,分别存储两个节点的信息,每个信息区分为集群超级块、写超级块、消息区以及保留区四部分;集群超级块用于标识集群,包括心跳盘标记、集群名称和集群UUID;写超级块用于标识当前写入消息的条数SEQ以及最近写入消息的时间;消息区用于存储具体的消息,其为长度M的环形队列,每个消息结构体为校验码、时间戳和消息数据本身;保留区用于当消息区所在块为坏块时,从中分割出一定空间作为消息区;所述控制模块用于在心跳网络故障后启动心跳写入模块,向心跳盘中不断写入心跳信息,同时启动心跳读取模块,从心跳盘中不断读取心跳信息,并根据心跳读取模块读取的心跳信息判断对方本文档来自技高网
...

【技术保护点】
一种增强双机集群可靠、可用性的方法,其特征在于:包括以下内容:在后端共享磁盘中保留一部分共享空间用于设置心跳盘;当心跳网络正常时按照原双机集群的工作模式通过心跳网络传递心跳消息;当心跳网络发生故障时启用心跳盘传递心跳消息,当心跳网络恢复后,按照原双机集群的工作模式通过心跳网络传递心跳消息,停止使用心跳盘传递心跳消息。

【技术特征摘要】
1.一种增强双机集群可靠、可用性的方法,其特征在于:包括以下内容:
在后端共享磁盘中保留一部分共享空间用于设置心跳盘;
当心跳网络正常时按照原双机集群的工作模式通过心跳网络传递心跳消
息;
当心跳网络发生故障时启用心跳盘传递心跳消息,当心跳网络恢复后,按
照原双机集群的工作模式通过心跳网络传递心跳消息,停止使用心跳盘传递心
跳消息。
2.根据权利要求1所述的一种增强双机集群可靠、可用性的方法,其特征
在于:所述心跳盘分为两个信息区,分别存储两个节点的信息,每个信息区分
为集群超级块、写超级块、消息区以及保留区四部分;集群超级块用于标识集
群,包括心跳盘标记、集群名称和集群UUID;写超级块用于标识当前写入消息
的条数SEQ以及最近写入消息的时间;消息区用于存储具体的消息,其为长度M
的环形队列,每个消息结构体为校验码、时间戳和消息数据本身;保留区用于
当消息区所在块为坏块时,从中分割出一定空间作为消息区;
所述传递心跳消息通过在2个节点启用2个同样的线程:发送线程和接收
线程实现,二者的工作过程如下:
发送线程:首先根据本节点所在集群的信息写入集群超级块,初始化写超
级块,然后间隔预设写入时间阈值T1向本节点对应的信息区写入一个消息,写
前将需要发送的消息打包,即封装成所述消息结构体,然后写入消息区,写入
位置由写超级块中的SEQ和消息区大小M决定,当SEQ为M的整数倍时从头覆
盖写入,然后更新写超级块的SEQ值为SEQ+1;
接收线程:首先读取对方节点对应的信息区的集群超级块,验证有效后,
初始化已读消息个数sequence为0,然后轮询读取对方的写超级块,如果读到
的写超级块SEQ大于本节点程序中的sequence,则读取对方的消息区中序号从
sequence到SEQ-1的消息,并更新sequence为SEQ;对于读取到的每一条心跳
信息,验证消息的校验码和时间戳,若不能通过完整性校验验证或者消息的时
间戳与系统当前时间超过一定的时间差T,说明该消息无效,丢弃此消息;当经
过预设读取时间间隔T2没有读取到对方有效的消息时,则判定对方节点失效,
开始接管对方的资源和业务;否则,判定对方节点有效,继续读取心跳信息。
3.根据权利要求2所述的一种增强双机集群可靠、可用性的方法,其特征
在于:为提高心跳盘的向后兼容性,所述集群超级块还包括版本号。
4.根据权利要求1-3任一所述的一种增强双机集群可靠、可用性的方法,
其特征在于:为增强系统的可靠性,设置多个心跳盘,每个心跳盘占用一个磁
盘的部分空间,当启用心跳盘时,首先使用第一个,当第一个失效时使用第二
个,以此类推。
5.根据权利要求4所述的一种增强双机集群可靠、可用性的方法,其特征
在于:所述使用心跳盘的顺序为按照用户预设的顺序或按照预设的考虑...

【专利技术属性】
技术研发人员:王道邦李艳国张恒周泽湘沈晶罗华潘兴旺段舒文于召鑫扬威
申请(专利权)人:北京同有飞骥科技股份有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1