主机节点状态确定方法、装置、主机节点及存储介质与流程

文档序号:16775361发布日期:2019-02-01 18:41阅读:176来源:国知局
主机节点状态确定方法、装置、主机节点及存储介质与流程

本发明涉及主机集群技术领域,具体而言,涉及一种主机节点状态确定方法、装置、主机节点及存储介质。



背景技术:

在同一个主机集群中的多个主机节点可以同时挂载同一个共享文件系统,当该主机集群中的任意一个主机节点对挂载的文件系统中的指定文件进行操作时,挂载包括该指定文件的其他主机节点均能感知到该操作的操作结果。主机节点在挂载文件系统时,首先会周期性地将本主机节点的节点心跳记录写入存储设备,当成功写入的次数达到预设门限值时,认为本主机节点心跳稳定,同时,本主机节点还会周期性地从存储设备读取该主机集群中除本主机节点之外的其他主机节点的节点心跳记录,若两个周期读取到的节点心跳记录的值不同,则认为该主机节点处于活动状态,若两个周期读取到的节点心跳记录的值相同,则认为该主机节点处于死亡状态,但是,如果该主机节点出现短暂的存储链路故障或其他异常时,单纯地依据两个周期的节点心跳记录不同就判定主机节点处于死亡状态会导致挂载文件系统的主机节点认为该主机节点死亡而不会向该主机节点发送加入主机集群请求,当其他主机节点在挂载时又发现该主机节点处于活动状态,因而向该主机节点发送加入主机集群请求,最终使得整个主机集群中不同主机节点感知到主机集群中的成员主机节点的状态是不一致的,最终引发集群混乱、服务器宕机甚至存储数据丢失等致命问题。



技术实现要素:

本发明实施例的目的在于提供一种主机节点状态确定方法、装置、主机节点及存储介质,通过节点心跳记录及挂载签名确定真正处于死亡状态的主机节点,对于真正处于死亡状态的主机节点不发送申请加入主机集群的请求,对于暂时无法写入心跳的节点,通过延长预设稳定周期实现准确判断主机节点的状态,以此保证主机节点在挂载文件系统时主机集群中的各主机节点感知到的成员主机节点的状态是一致的,从而避免了由该状态不一致引发集群混乱、服务器宕机甚至存储数据丢失等致命问题。

为了实现上述目的,本发明实施例采用的技术方案如下:

第一方面,本发明实施例提供了一种主机节点状态确定方法,应用于主机集群中的第一主机节点,第一主机节点与第二主机节点通信连接,第一主机节点、第二主机节点均与存储设备访问连接,所述方法包括:按照预设检测周期从存储设备获取第二主机节点的本检测周期节点心跳记录及第二主机节点的本检测周期挂载签名;依据第二主机节点的本检测周期节点心跳记录的前后一致性,以及基于本检测周期挂载签名所指示的挂载状态,判断第二主机节点处于的状态,其中,所述状态包括活动状态、故障状态及待定状态。

第二方面,本发明实施例还提供了一种主机节点状态确定装置,所述装置包括获取模块和判断模块。其中,获取模块用于按照预设检测周期从存储设备获取第二主机节点的本检测周期节点心跳记录及第二主机节点的本检测周期挂载签名;判断模块用于依据第二主机节点的本检测周期节点心跳记录的前后一致性,以及基于本检测周期挂载签名所指示的挂载状态,判断第二主机节点处于的状态,其中,所述状态包括活动状态、故障状态及待定状态。

第三方面,本发明实施例还提供了一种主机节点,所述主机节点包括:一个或多个处理器;存储器,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现上述的主机节点状态确定方法。

第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述主机节点状态确定方法。

相对现有技术,本发明实施例提供的一种主机节点状态确定方法、装置、主机节点及存储介质,首先,第一主机节点接收到挂载文件系统命令时进行挂载文件系统时,按照预设检测周期从存储设备获取第二主机节点的本检测周期节点心跳记录及第二主机节点的本检测周期挂载签名;然后,第一主机节点依据第二主机节点的本检测周期节点心跳记录的前后一致性,以及基于本检测周期挂载签名所指示的挂载状态,判断第二主机节点是处于活动状态、还是处于死亡状态、还是处于待定状态,最终,第一主机节点在发送申请加入主机集群请求时,将真正处于死亡状态的主机节点剔除掉,只向处于活动状态的周期个数达到第二门限值的第二主机节点发送申请加入主机集群请求,以加入主机集群,最终成功挂载共享文件系统。与现有技术相比,本发明实施例通过节点心跳记录及挂载签名确定真正处于死亡状态的主机节点,对于真正处于死亡状态的主机节点不发送申请加入主机集群的请求,对于暂时无法写入节点心跳记录的主机节点,通过延长预设稳定周期实现准确判断主机节点的状态,以此保证主机节点在挂载文件系统时主机集群中的各主机节点感知到的成员主机节点的状态是一致的,从而避免了由该状态不一致引发集群混乱、服务器宕机甚至存储数据丢失等致命问题。

为使本发明的上述目的、特征和优点能更明显易懂,下文特举实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1示出了本发明实施例提供的主机节点状态确定方法的应用场景图。

图2示出了本发明实施例提供的主机节点的方框示意图。

图3示出了本发明实施例提供的主机节点状态确定方法流程图。

图4为图3示出的步骤s102的子步骤流程图。

图5为图4示出的步骤s1023的子步骤流程图。

图6示出了本发明实施例提供的主机节点状态确定装置的方框示意图。

图7示出本发明实施例提供的主机节点状态确定装置200中判定模块的方框示意图。

图标:100、500、600-主机节点;101-存储器;102-通信接口;103-处理器;104-总线;200-主机节点状态确定装置;201-获取模块;202-判断模块;2021-活动状态判定单元;2022-死亡状态判定单元;2023-待定状态判定单元;300-客户端;400-存储设备。

具体实施方式

下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本发明的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

请参照图1,图1示出了本发明实施例提供的主机节点状态确定方法的应用场景图,主机集群与客户端300通信连接,主机集群中包括多个主机节点,用户通过客户端300向主机节点发送文件系统加载命令,该多个主机节点可以是主机节点100、主机节点500,主机节点600等,其中第一主机节点可以是主机节点中的任意一个主机节点,除第一主机节点之外的其他主机节点可以是第二主机节点,也就是说第一主机节点可以是主机节点100、主机节点500,主机节点600等中的任意一个。

为了便于描述,在本发明实施例中,确定主机节点100为第一主机节点,除第一主机节点之外的其余主机节点,例如主机节点500,主机节点600等均为第二主机节点。主机节点100、主机节点500,主机节点600等主机节点之间通信连接,主机节点100、主机节点500,主机节点600等均与存储设备400访问连接。用户通过客户端300发送文件系统加载命令至主机节点100,主机节点100收到文件系统加载命令进行加载时周期性从存储设备400分别获取主机节点500、主机节点600等主机节点的节点心跳记录及挂载签名,并根据主机节点500、主机节点600等主机节点的节点心跳记录及挂载签名判断主机节点500、主机节点600等主机节点是处于活动状态、还是处于死亡状态、还是处于待定状态。

请参照图2,图2示出了本发明实施例提供的主机节点100的方框示意图。主机节点100可以是,但不限于个人电脑(personalcomputer,pc)、服务器等等。主机节点100的操作系统可以是,但不限于,windows系统、linux系统等。所述主机节点100包括存储器101、通信接口102、处理器103和总线104,所述存储器101、通信接口102和处理器103通过总线104连接,处理器103用于执行存储器101中存储的可执行模块,例如计算机程序。

其中,存储器101可能包含高速随机存取存储器(ram:randomaccessmemory),也可能还包括非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器。通过至少一个通信接口102(可以是有线或者无线)实现该主机节点100与至少一个其他主机节点、以及存储设备400之间的通信连接。

总线104可以是isa总线、pci总线或eisa总线等。图2中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。

其中,存储器101用于存储程序,例如图6所示的主机节点状态确定装置200。该主机节点状态确定装置200包括至少一个可以软件或固件(firmware)的形式存储于所述存储器101中或固化在所述主机节点100的操作系统(operatingsystem,os)中的软件功能模块。所述处理器103在接收到执行指令后,执行所述程序以实现本发明上述实施例揭示的主机节点状态确定方法。

处理器103可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器103中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器103可以是通用处理器,包括中央处理器(centralprocessingunit,简称cpu)、网络处理器(networkprocessor,简称np)等;还可以是数字信号处理器(dsp)、专用集成电路(asic)、现成可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

第一实施例

请参照图3,图3示出了本发明实施例提供的主机节点状态确定方法流程图,应用于主机集群中的第一主机节点。处理方法包括以下步骤:

步骤s101,按照预设检测周期从存储设备获取第二主机节点的本检测周期节点心跳记录及第二主机节点的本检测周期挂载签名。

在本发明实施例中,预设检测周期指预先设置从存储设备400获取第二主机节点的主机节点心跳记录和挂载签名的周期,同时也是第一主机节点向存储设备400写入主机节点心跳记录和挂载签名的周期。第一主机节点可以通过执行挂载命令挂载文件系统,当第一主机节点挂载文件系统时启动心跳线程,心跳线程启动后,第一主机节点可以按照预设检测周期向存储设备400写入第一主机节点的节点心跳记录和挂载签名,同时从存储设备400中读取第二主机节点的节点心跳记录和挂载签名。节点心跳记录可以表征主机节点和存储设备400之间的访问连接是否可达,是和当前系统绝对时间相关的一个数值,因此,在主机节点和存储设备400之间的访问连接正常的情况下,主机节点在每个预设检测周期向存储设备400写入的节点心跳记录是不同且是唯一的。挂载签名可以表征主机节点是否处于挂载生命周期内,其中,挂载生命周期指从主机节点挂载文件系统开始至主机节点卸载该文件系统时止之间的时间,挂载签名在整个挂载生命周期内保持不变,在不同的挂载生命周期内挂载签名是不一样且是唯一的。例如,预设检测周期为1s,主机集群中有3个主机节点,分别为主机节点1、主机节点2、主机节点3,主机节点1为第一主机节点,主机节点2及主机节点3为第二主机节点,主机节点1在10:00:00开始挂载文件系统时启动心跳线程,当10:00:01时第一主机节点获取当前系统的绝对时间,根据该绝对时间生成主机节点1的本检测周期节点心跳记录,将主机节点1的本检测周期节点心跳记录及主机节点1的本检测周期挂载签名写入存储设备400,同时,从存储设备400中获取主机节点2的本检测周期节点心跳记录及主机节点2的本检测周期挂载签名和主机节点3的本检测周期节点心跳记录及主机节点3的挂载签名。

步骤s102,依据第二主机节点的本检测周期节点心跳记录的前后一致性,以及基于本检测周期挂载签名所指示的挂载状态,判断第二主机节点处于的状态,其中,状态包括活动状态、死亡状态及待定状态。

在本发明实施例中,每个主机节点的节点心跳记录和挂载签名均写入在存储设备400与该主机节点编号线性相关的特定地址空间,该特定地址空间称为主机节点的节点槽位,因此,从存储设备400获取主机节点的节点心跳记录和挂载签名即从存储设备400的主机节点的节点槽位获取该主机节点的节点心跳记录和挂载签名,依据节点槽位中记录的节点心跳记录和挂载签名确定的节点槽位的状态也即是对应主机节点的状态,例如,当第二主机节点的本检测周期节点心跳记录与前一个检测周期节点心跳记录不同时,判定第二主机节点的节点槽位的状态为活动状态,也即是判定第二主机节点的状态为活动状态。

在本发明实施例中,第一主机节点预先存储第二主机节点前一个检测周期节点心跳记录,首先,判断第二主机节点的本检测周期节点心跳记录与第二主机节点的前一个检测周期节点心跳记录是否相同,当不相同时,判定第二主机节点处于活动状态,当相同时,再判断第二主机节点的本检测周期挂载签名是否为预设值,若是,则判定第二主机处于死亡状态,若否,则判断第二主机处于待定状态。

请参照图4,步骤s102的还可以包括以下子步骤:

子步骤s1021,当第二主机节点的本检测周期节点心跳记录与第二主机节点的前一个检测周期节点心跳记录不同时,判定第二主机节点处于活动状态。

在本发明实施例中,第二主机节点处于活动状态意味着第二主机节点可以正常访问存储设备400,并且正确地将第二主机节点的本检测周期节点心跳记录写入存储设备400,例如,第一主机节点保存的第二主机节点的前一个检测周期节点心跳记录为289541,第一主机节点从存储设备400获取的第二主机节点的本检测周期节点心跳记录为292543,则第二主机节点的本检测周期节点心跳记录与第二主机节点的前一个检测周期节点心跳记录不同,因此,判定第二主机节点处于活动状态。

在本发明实施例中,当第二主机节点的本检测周期节点心跳记录与第二主机节点的前一个检测周期节点心跳记录相同意味着第二主机节点没有正确地将本检测周期节点心跳记录写入存储设备400,其原因可能是第二主机节点与存储设备400之间的存储链路故障、闪断、或者恰好第二主机节点将已加载的文件系统进行了卸载等,如果是闪断或者暂时性的存储链路故障,则第二主机节点有可能在后续预设检测周期中恢复正常,因此,当第二主机节点的本检测周期节点心跳记录与第二主机节点的前一个检测周期节点心跳记录相同时,不能粗暴地判定第二主机节点处于死亡状态,还需要通过子步骤s1022-s1023进一步确定第二主机节点处于的状态。

子步骤s1022,当第二主机节点的本检测周期节点心跳记录与第二主机节点的前一个检测周期节点心跳记录相同且第二主机节点的本检测周期挂载签名为预设值时,判定第二主机节点处于死亡状态。

在本发明实施例中,挂载签名设置为预设值的时机是第二主机节点卸载文件系统时,预设值可以是为表征第二主机节点挂载的文件系统已经卸载而预先约定并设置的一个数值,例如,预设值可以为0。当第二主机节点的本检测周期节点心跳记录与第二主机节点的前一个检测周期节点心跳记录相同且第二主机节点的本检测周期签名为预设值时,可以认为第二主机节点与存储设备400之间的访问连接已经解除,则判定第二主机节点处于死亡状态,对于处于死亡状态的主机节点,第一主机节点加入集群时不再需要向该主机节点发送申请加入主机集群的请求。

子步骤s1023,当第二主机节点的本检测周期节点心跳记录与第二主机节点的前一个检测周期节点心跳记录相同且第二主机节点的本检测周期挂载签名不为预设值时,判定第二主机节点处于待定状态。

在本发明实施例中,第二主机节点处于待定状态意味着还需要在后续的连续一个或者几个预设检测周期,第一主机节点继续从存储设备400获取第二主机节点的本检测周期节点心跳记录及第二主机节点的本检测周期挂载签名进一步判定之前的待定状态可以转化为活动状态或是死亡状态,因此,子步骤s1023还可以包括子步骤s10231-s10234。

请参照图5,子步骤s1023还包括以下子步骤:

子步骤s10231,记录第二主机节点连续处于待定状态的次数。

在本发明实施例中,在判定第二主机节点处于待定状态时,还需要记录第二主机节点连续处于待定状态的次数,例如,预设检测周期为1s,主机集群中有3个主机节点,分别为主机节点1、主机节点2、主机节点3,主机节点1为第一主机节点,主机节点2及主机节点3为第二主机节点,以主机节点2的判断过程为例,主机节点1在10:00:00开始挂载文件系统时启动心跳线程,在10:00:01时,判定主机节点2处于活动状态,在10:00:02时,判定主机节点2处于待定状态,此时,将主机节点2处于待定状态的次数+1即主机节点2处于待定状态的次数为1,在10:00:03时,判定主机节点2处于待定状态,此时,将主机节点2处于待定状态的次数+1即主机节点2处于待定状态的次数为2。

需要说明的是,在本发明实施例中,连续处于待定状态的次数是第二主机节点连续二个及以上的预设检测周期处于待定状态的次数,例如,预设检测周期为1s,主机集群中有3个主机节点,分别为主机节点1、主机节点2、主机节点3,主机节点1为第一主机节点,主机节点2及主机节点3为第二主机节点,以主机节点2的判断过程为例,主机节点1在10:00:00开始挂载文件系统时启动心跳线程,在10:00:01时,判定主机节点2处于活动状态,在10:00:02时,判定主机节点2处于待定状态,此时,将主机节点2处于待定状态的次数+1即主机节点2处于待定状态的次数为1,在10:00:03时,判定主机节点2处于活动状态,在10:00:04时,判定主机节点2处于待定状态,此时,因为主机节点2处于待定状态不是连续的预设检测周期,此时,需要重新统计主机节点2处于待定状态的次数,即主机节点2处于待定状态的次数为1。

子步骤s10232,当第二主机节点连续处于待定状态的次数等于第一门限值时,判定第二主机节点从待定状态转为死亡状态。

在本发明实施例中,第二主机节点连续处于待定状态的次数并不是无限制地累加,当第二主机节点如果连续处于待定状态的次数累加到第一门限值时,认为该第二主机节点不再具有转为活动状态的可能,因此,判定第二主机节点从待定状态转为死亡状态。作为一种具体实施方式,第一门限值可以是节点隔离阈值,节点隔离指当主机节点因存储链路故障或其他原因,导致该主机节点无法正常写入节点心跳记录,如果无法正常写入节点心跳记录的检测周期个数超过预设阈值时,为保证主机集群一致性,该主机节点会自动或由其他主机节点通知其离开主机集群,此过程称为节点隔离,其中的预设阈值称为节点隔离阈值,例如,节点隔离阈值可以是32,即第一门限值为32,代表第一门限值为32个预设检测周期。

子步骤s10233,当第二主机节点连续处于待定状态的次数小于第一门限值时,延长第一主机节点的预设稳定周期,并判定第二主机节点继续处于待定状态。

在本发明实施例中,预设稳定周期指第一主机节点正常向存储设备400写入节点心跳记录的检测周期的个数,当第一主机节点正常写入节点心跳记录的检测周期个数达到预设稳定周期时,可以认为该第一主机节点心跳稳定,即该第一主机节点与存储设备400的存储链路是稳定的。例如,第一主机节点的预设稳定周期为3,则第一主机节点在第一个检测周期可以正常写入第一主机节点的节点心跳记录,第一主机节点在第二个检测周期可以正常写入第一主机节点的节点心跳记录,第一主机节点在第三个检测周期不能正常写入第一主机节点的节点心跳记录,第一主机节点在第四个检测周期可以正常写入第一主机节点的节点心跳记录,此时,第一主机节点可以判断自身心跳稳定。

在本发明实施例中,在预设稳定周期内,预设稳定周期最多只延长一个检测周期,因此,当第二主机节点有一个以上时,在预设稳定周期期间,在任意一个检测周期内,第一主机节点只要检测到任意一个第二主机节点处于待定状态,预设稳定周期就会延长一个检测周期。例如,检测周期为1s,预设稳定周期为3,即3个检测周期,主机集群中有3个主机节点,分别为主机节点1、主机节点2、主机节点3,主机节点1为第一主机节点,主机节点2及主机节点3为第二主机节点,主机节点1在10:00:00开始挂载文件系统时启动心跳线程,在10:00:01时,判定主机节点2处于活动状态,主机节点3处于活动状态,在10:00:02时,判定主机节点2处于待定状态,主机节点3处于活动状态,在10:00:03时,判定主机节点2处于待定状态,主机节点3处于待定状态,此时,预设稳定周期延长一个检测周期,为4,即4个检测周期。

需要说明的是,预设稳定周期并不是一直无限延长的,当预设稳定周期延长至预设最大值时,则不再继续延长预设稳定周期,而是直接向客户端300反馈第一主机节点挂载文件系统失败,其中,预设最大值可以是节点隔离阈值的2倍。

子步骤s10234,在延长后的第一主机节点的预设稳定周期内,当第二主机节点的本检测周期节点心跳记录与第二主机节点的前一个检测周期节点心跳记录不同时,判定第二主机节点从待定状态转为活动状态。

在本发明实施例中,待定状态除了可以转化为死亡状态,在满足一定的条件时,待定状态还可以转化为活动状态,待定状态转化为活动状态可以是第二主机节点经过了短暂的链路故障或者闪断后又恢复了正常。例如,第一主机节点的预设稳定周期为3,即3个检测周期,第一门限值为31,第一主机节点在第二个检测周期,获取到的第二主机节点的本检测周期(即第二个检测周期)节点心跳记录与第二主机节点的前一个检测周期(即第一个检测周期)节点心跳记录不同,则判定第二主机处于活动状态;在第三个检测周期,获取到的第二主机节点的本检测周期(即第三个检测周期)节点心跳记录与第二主机节点的前一个检测周期(即第二个检测周期)节点心跳记录相同且本检测周期挂载签名不为预设值,则判定第二主机处于待定状态,且待定状态计数为1,小于第一门限值;在第四个检测周期,获取到的第二主机节点的本检测周期(即第四个检测周期)节点心跳记录与第二主机节点的前一个检测周期(即第三个检测周期)节点心跳记录相同且本检测周期挂载签名不为预设值,则判定第二主机处于待定状态,且待定状态计数+1,为2,小于第一门限值,将第一节点的预设稳定周期延长一个检测周期;在第五个检测周期,获取到的第二主机节点的本检测周期(即第五个检测周期)节点心跳记录与第二主机节点的前一个检测周期(即第四个检测周期)节点心跳记录不同,则判定第二主机从待定状态转化为活动状态。

子步骤s1024,当第二主机节点处于活动状态的检测周期的个数达到第二门限值时,向第二主机节点发送申请加入主机集群消息,以在第二主机节点通过申请请求时加入主机集群后挂载共享文件系统。

在本发明实施例中,第二门限值可以是延长前的预设稳定周期,也可以是依据预设稳定周期计算得到的,例如,第二门限值可以是预设稳定周期的预设倍数。

作为一种实施方式,向第二主机节点发送申请加入主机集群消息,以加入所述主机集群之前,还包括:

首先,将将处于活动状态的检测周期的个数达到第二门限值的第二主机节点加入第一主机节点的集群位图中。

在本发明实施例中,集群位图是集群位图所在的主机节点感知到的主机集群中的所有主机节点的集群状态,集群位图中的每一个bit位的值按照预设顺序代表对应编号的主机节点的集群状态,bit位的值为1表示该主机节点的集群状态为有效集群状态,即该主机节点可以接收其他主机节点发送的申请加入主机集群的请求,bit位的值为0表示该主机节点的集群状态为无效集群状态,即该主机节点不能接收其他主机节点发送的申请加入主机集群的请求,将处于活动状态的检测周期的个数达到第二门限值的第二主机节点加入第一主机节点的集群位图,也就是将第一主机节点的集群位图中与该第二主机节点对应的bit位置1,例如,主机集群中有3个主机节点,主机节点1、主机节点2和主机节点3,主机节点1为第一主机节点,主机节点1的集群位图按照bit位从低到高分别代表主机节点1、主机节点2和主机节点3的集群状态,主机节点1判定自身为有效集群状态,将倒数第一个bit位置1,判定主机节点2为无效集群状态,将倒数第二个bit位置0,判定主机节点3为有效集群状态,将倒数第三个bit位置1,此时主机节点1的集群位图为101。

其次,向集群位图中状态为有效集群状态的第二主机节点发送申请加入主机集群消息,以加入主机集群。

在本发明实施例中,根据集群位图,可以得到状态为有效集群状态的第二主机节点的编号,向对应编号的第二主机节点发送申请加入主机集群的消息,在得到所有状态为有效集群状态的第二主机节点的允许加入的响应消息后,第一主机节点加入主机集群成功,最终,第一主机节点挂载文件系统成功。

需要说明的是,子步骤s1024也可以在子步骤s1021之后执行,在子步骤s1021中判定第二主机节点处于活动状态后,如果此时第二主机节点满足处于活动状态的检测周期的个数达到第二门限值时,会继续执行子步骤s1024。

在本发明实施例中,通过节点心跳记录及挂载签名确定真正处于死亡状态的主机节点,对于真正处于死亡状态的主机节点不发送申请加入主机集群的请求,对于暂时无法写入节点心跳记录的节点,通过延长预设稳定周期实现准确判断主机节点的状态,与现有技术相比,具有以下有益效果:

第一,在节点心跳的判断标准的基础上增加挂载签名的判断标准,可以更准确地识别出哪些主机节点只是暂时无法写入节点心跳记录,哪些主机节点是正处于死亡状态。

第二,对于存在暂时无法写入节点心跳记录的第二主机节点,通过延长第一主机节点预设稳定周期推迟第一主机节点加入主机集群的时间,避免出现因盲目加入主机集群而导致主机集群间主机节点对主机集群成员感知的不同,从而导致的主机集群混乱、服务器宕机甚至存储数据丢失等致命问题。

第二实施例

请参照图6,图6示出了本发明实施例提供的主机节点状态确定装置200的方框示意图。主机节点状态确定装置200应用于主机节点100,其包括获取模块201和判断模块202。

获取模块201,用于按照预设检测周期从存储设备获取第二主机节点的本检测周期节点心跳记录及第二主机节点的本检测周期挂载签名。

在本发明实施例中,获取模块201用于执行步骤s101。

判断模块202,用于依据第二主机节点的本检测周期节点心跳记录的前后一致性,以及基于本检测周期挂载签名所指示的挂载状态,判断第二主机节点处于的状态,其中,状态包括活动状态、死亡状态及待定状态。

在本发明实施例中,判断模块202用于执行步骤s102。

请参照图7,图7示出主机节点状态确定装置200中判定模块202的方框示意图。判断模块202包括活动状态判定单元2021、死亡状态判定单元2022及待定状态判定单元2023。

活动状态判定单元2021,用于当第二主机节点的本检测周期节点心跳记录与所述第二主机节点的前一个检测周期的节点心跳记录不同时,判定第二主机节点处于活动状态。

在本发明实施例中,活动状态判定单元2021用于执行子步骤s1021。

死亡状态判定单元2022,用于当第二主机节点的本检测周期节点心跳记录与第二主机节点的前一个检测周期的节点心跳记录相同且第二主机节点的本检测周期挂载签名为预设值时,判定第二主机节点处于故障状态。

在本发明实施例中,死亡状态判定单元2022用于执行子步骤s1022。

待定状态判定单元2023,用于当第二主机节点的本检测周期节点心跳记录与第二主机节点的前一个检测周期的节点心跳记录相同且第二主机节点的本检测周期挂载签名不为预设值时,判定第二主机节点处于待定状态。

在本发明实施例中,待定状态判定单元2023用于执行子步骤s1023及其子步骤s10231-10234。

本发明实施例还揭示了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器103执行时实现本发明前述实施例揭示的主机节点状态确定方法。

综上所述,本发明提供的一种主机节点状态确定方法、装置、主机节点及存储介质,主机节点状态确定方法应用于主机集群中的第一主机节点,第一主机节点与第二主机节点通信连接,第一主机节点、第二主机节点均与存储设备访问连接,所述方法包括:按照预设检测周期从存储设备获取第二主机节点的本检测周期节点心跳记录及第二主机节点的本检测周期挂载签名;依据第二主机节点的本检测周期节点心跳记录的前后一致性,以及基于本检测周期挂载签名所指示的挂载状态,判断第二主机节点处于的状态,其中,状态包括活动状态、死亡状态及待定状态。与现有技术相比,本发明通过节点心跳及挂载签名确定真正处于死亡状态的主机节点,对于真正处于死亡状态的主机节点不发送申请加入主机集群的请求,对于暂时无法写入节点心跳记录的节点,通过延长预设稳定周期实现准确判断主机节点的状态,以此保证主机节点在挂载文件系统时主机集群中的各主机节点感知到的成员主机节点的状态是一致的,从而避免了由该状态不一致引发集群混乱、服务器宕机甚至存储数据丢失等致命问题。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。

所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1