logo好方法网

双控脑裂的磁盘锁仲裁方法、装置、设备及介质


技术摘要:
本说明书一个或多个实施例提供一种双控脑裂的磁盘锁仲裁方法、装置、设备及介质,应用于双控节点之间的心跳线发生通讯故障后,双控节点包括第一节点和第二节点,所述方法包括:确定待提供服务的磁盘阵列,由双控节点以非阻塞方式向所述磁盘阵列发送磁盘锁;检测磁盘阵  全部
背景技术:
脑裂现象为在高可用(High  Available,高可用性,简称HA)系统中,当联系2个节 点(亦称之为控制器、控制节点)的“心跳线”断开时,本来为一整体、动作协调的HA系统,就 分裂成为2个独立的个体。由于相互失去了联系,都以为是对方出了故障。两个节点上的HA 软件像“脑裂人”一样,争抢“共享资源”、争起“应用服务”,此时会发生严重后果:或者共享 资源被瓜分、两个节点所对应的“服务”都无法提供;或者两个节点所对应的“服务”能够提 供,但同时读写“共享存储”,导致数据损坏(常见如数据库轮询的联机日志出错)。 当前避免出现脑裂的措施包括: 1、采取冗余机制,增加两条通信路径,然而这么做的缺点是:增加两条路径通信无 疑为产品增加了成本,而且无法排除双通信同时损坏的情况,不完全可信; 2、参考IP仲裁机制,当故障后,双控同时ping参考IP,ping通参考IP则接管对端业 务,然而这么做的缺点是:IP仲裁不能保证完全可用,针对双控都可ping通参考IP时,则会 发生脑裂; 3、磁盘锁仲裁机制,当故障后,通过加锁确定后端存储的使用权;然而这么做的缺 点是:传统仲裁盘机制需要引入额外的非承载用户数据的仲裁设备,成本高,且单纯磁盘锁 的仲裁和使用不符合目前主流场景(Raid,Redundant  Arrays  of  Independent  Disks,独 立磁盘构成的有冗余能力的阵列)磁盘陈列),造成服务混乱。 因此在高可用系统出现故障时如何在避免损失用户实际数据存储量的前提下减 少脑裂后遗症,是目前业内亟需且尚未解决的问题。
技术实现要素:
有鉴于此,本说明书一个或多个实施例的目的在于提出一种双控脑裂的磁盘锁仲 裁方法、装置、设备及介质,以解决目前双控系统在出现故障时对于服务的磁盘数据读写不 可靠、提供服务混乱的问题。 基于上述目的,本说明书一个或多个实施例提供了一种双控脑裂的磁盘锁仲裁方 法,应用于双控节点之间的心跳线发生通讯故障后,所述双控节点包括第一节点和第二节 点,所述方法包括: 确定待提供服务的磁盘阵列,由双控节点以非阻塞方式向所述磁盘阵列发送磁盘 锁,所述磁盘阵列包括若干磁盘,所述若干磁盘由双控节点提供的服务确定; 检测所述磁盘阵列包括的各磁盘是否均被第一节点成功加锁; 当所述磁盘阵列的每一磁盘均成功加锁时,由第一节点接管所述服务; 当所述磁盘阵列有至少一个的磁盘未成功加锁时,由所述双控节点释放磁盘锁; 4 CN 111737063 A 说 明 书 2/11 页 当所述磁盘阵列所有磁盘均未成功加锁时,由所述第二节点接管所述服务; 所述双控节点以阻塞方式向所述磁盘阵列发送磁盘锁; 当所述第一节点先于所述第二节点对所述磁盘阵列中的一个磁盘加锁成功时,所 述第一节点顺序向所述磁盘阵列中的其它磁盘发送磁盘锁,直至所述磁盘阵列包括的所有 磁盘加锁成功,此时所述第一节点接管所述服务对应的客户端业务请求,所述第二节点放 弃所述服务对应的业务请求; 当所述第二节点先于所述第一节点对所述磁盘阵列中的一个磁盘加锁成功时,所 述第二节点顺序向所述磁盘阵列中的其它磁盘发送磁盘锁,直至所述磁盘阵列包括的所有 磁盘加锁成功,此时所述第二节点接管所述服务对应的客户端业务请求,所述第一节点放 弃所述服务对应的业务请求。 结合上述说明,在本发明实施例另一种可能的实施方式中,所述当所述第二节点 先于所述第一节点对所述磁盘阵列中的一个磁盘加锁成功时,包括: 所述第一节点以及第二节点以阻塞方式向所述磁盘阵列发送磁盘锁后,分别检测 所述磁盘阵列的磁盘是否存在磁盘锁; 当所述磁盘阵列的磁盘存在第二节点的磁盘锁时,所述第一节点释放其发送的磁 盘锁并放弃所述服务对应的业务请求。 结合上述说明,在本发明实施例另一种可能的实施方式中,所述当所述第一节点 先于第二节点对所述磁盘阵列中的一个磁盘加锁成功时,包括: 所述第一节点以及第二节点以阻塞方式向所述磁盘阵列发送磁盘锁后,分别检测 所述磁盘阵列的磁盘是否存在磁盘锁; 当所述磁盘阵列的磁盘存在第一节点的磁盘锁时,所述第二节点释放其发送的磁 盘锁并放弃所述服务对应的业务请求。 结合上述说明,在本发明实施例另一种可能的实施方式中,所述当所述第一节点 先于第二节点对所述磁盘阵列中的一个磁盘加锁成功时,包括: 所述第一节点以及第二节点以阻塞方式向所述磁盘阵列发送磁盘锁后,分别检测 所述磁盘阵列的磁盘是否存在磁盘锁; 当所述磁盘阵列的磁盘存在第二节点的磁盘锁时,所述第一节点释放其发送的磁 盘锁并放弃所述服务对应的业务请求; 当所述磁盘阵列的磁盘存在第一节点的磁盘锁时,所述第二节点释放其发送的磁 盘锁并放弃所述服务对应的业务请求。 结合上述说明,在本发明实施例另一种可能的实施方式中,所述确定待提供服务 的磁盘阵列之前,所述方法还包括: 获取客户端的业务请求,并根据所述业务请求创建对应的服务; 以服务为单位,以映射的方式从双控节点的可控磁盘划分若干磁盘作为所述服务 对应的磁盘阵列。 结合上述说明,在本发明实施例另一种可能的实施方式中,所述方法还包括: 所述第一节点或第二节点在加锁以及接管所述服务对应的客户端业务请求的过 程中,所述客户端通过查询命令确定双控节点的磁盘锁仲裁信息。 第二方面,本发明还提供了一种双控脑裂的磁盘锁仲裁装置,应用于双控节点之 5 CN 111737063 A 说 明 书 3/11 页 间的心跳线发生通讯故障后,所述双控节点包括第一节点和第二节点,所述装置包括: 服务获取模块,用于确定待提供服务的磁盘阵列,所述磁盘阵列包括若干磁盘,所 述若干磁盘由双控节点提供的服务确定; 非阻塞加锁模块,用于由双控节点以非阻塞方式向所述磁盘阵列发送磁盘锁; 检测模块,用于检测所述磁盘阵列包括的各磁盘是否均被第一节点成功加锁; 第一接管模块,用于当所述磁盘阵列的每一磁盘均成功加锁时,由第一节点接管 所述服务; 第一释放模块,用于当所述磁盘阵列有至少一个的磁盘未成功加锁时,由所述双 控节点释放磁盘锁;当所述磁盘阵列所有磁盘均未成功加锁时,由所述第二节点接管所述 服务; 阻塞加锁模块,用于所述双控节点以阻塞方式向所述磁盘阵列发送磁盘锁; 第二接管模块,用于当所述第一节点先于所述第二节点对所述磁盘阵列中的一个 磁盘加锁成功时,所述第一节点顺序向所述磁盘阵列中的其它磁盘发送磁盘锁,直至所述 磁盘阵列包括的所有磁盘加锁成功,此时所述第一节点接管所述服务对应的客户端业务请 求; 第二放弃模块,用于所述第二接管模块接管成功时所述第二节点放弃所述服务对 应的业务请求; 第三接管模块,用于当所述第二节点先于所述第一节点对所述磁盘阵列中的一个 磁盘加锁成功时,所述第二节点顺序向所述磁盘阵列中的其它磁盘发送磁盘锁,直至所述 磁盘阵列包括的所有磁盘加锁成功,此时所述第二节点接管所述服务对应的客户端业务请 求; 第三放弃模块,用于当所述第三接管模块接管成功时所述第一节点放弃所述服务 对应的业务请求。 上述的装置,所述装置还包括: 阻塞检测模块,用于所述第一节点以及第二节点以阻塞方式向所述磁盘阵列发送 磁盘锁后,分别检测所述磁盘阵列的磁盘是否存在磁盘锁; 第二释放模块,用于当所述磁盘阵列的磁盘存在第二节点的磁盘锁时,所述第一 节点释放其发送的磁盘锁并放弃所述服务对应的业务请求; 上述的装置,所述装置还包括: 阻塞检测模块,用于所述第一节点以及第二节点以阻塞方式向所述磁盘阵列发送 磁盘锁后,分别检测所述磁盘阵列的磁盘是否存在磁盘锁; 第三释放模块,用于当所述磁盘阵列的磁盘存在第一节点的磁盘锁时,所述第二 节点释放其发送的磁盘锁并放弃所述服务对应的业务请求。 第三方面,本发明还提供了一种电子设备,包括存储器、处理器及存储在存储器上 并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述的双控脑裂的磁 盘锁仲裁方法。 第四方面,本发明还提供了一种非暂态计算机可读存储介质,所述非暂态计算机 可读存储介质存储计算机指令,所述计算机指令用于使所述计算机执行上述的双控脑裂的 磁盘锁仲裁方法。 6 CN 111737063 A 说 明 书 4/11 页 从上面所述可以看出,本说明书一个或多个实施例提供的双控脑裂的磁盘锁仲裁 方法、装置、设备及介质,当双控出现通信故障后任一节点同时以非阻塞方式向提供服务的 若干磁盘发送磁盘锁,并且在磁盘锁锁定成功后直接接管该服务对应的客户端业务,而当 非阻塞方式不成功时则改以阻塞方式发送磁盘锁,不仅使得对客户端业务延时性大为降 低,而且以服务为单位进行磁盘仲裁还实现了无缝接管业务,有效防止了脑裂发生,避免了 IO级别的数据不一致的情况发生。 附图说明 为了更清楚地说明本说明书一个或多个实施例或现有技术中的技术方案,下面将 对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的 附图仅仅是本说明书一个或多个实施例,对于本领域普通技术人员来讲,在不付出创造性 劳动的前提下,还可以根据这些附图获得其他的附图。 图1为本说明书一个或多个实施例双控脑裂的磁盘锁仲裁方法的基本流程示意 图; 图2为本说明书一个或多个实施例的磁盘锁仲裁流程示意图; 图3为本说明书一个或多个实施例的双控系统结构示意图; 图4为本说明书一个或多个实施例的双控脑裂的磁盘锁仲裁装置结构示意图; 图5为本说明书的电子设备结构示意图。
下载此资料需消耗2积分,
分享到:
收藏