发明内容
本发明实施例公开了一种高可用性集群管理方法及相关设备,能够提高服务的可靠性以及降低脑裂的发生概率。
本发明实施例第一方面公开了一种高可用性集群管理方法,所述高可用性集群包括至少一个主节点、至少一个备节点和集群管理装置,所述集群管理装置通过心跳链路分别与所述至少一个主节点和所述至少一个备节点进行连接通信,所述方法包括:
针对所述至少一个主节点中的每一个主节点,所述集群管理装置检测是否发生目标事件,所述目标事件为触发所述集群管理装置针对所述主节点进行切主操作的事件;
当所述集群管理装置检测到发生所述目标事件时,所述集群管理装置控制所述至少一个备节点中的一个备节点执行升主操作。
结合本发明实施例第一方面,在本发明实施例第一方面的第一种可能的实现方式中,所述针对所述至少一个主节点中的每一个主节点,所述集群管理装置检测是否发生目标事件,包括:
针对所述至少一个主节点中的每一个主节点,所述集群管理装置检测是否在预设时间间隔内未接收到所述主节点发送的心跳报文;
当所述集群管理装置在所述预设时间间隔内未接收到所述主节点发送的所述心跳报文时,则所述集群管理装置检测出发生目标事件。
结合本发明实施例第一方面,在本发明实施例第一方面的第二种可能的实现方式中,所述针对所述至少一个主节点中的每一个主节点,所述集群管理装置检测是否发生目标事件,包括:
针对所述至少一个主节点中的每一个主节点,所述集群管理装置检测是否接收到所述主节点发送的异常服务上报信息;
当所述集群管理装置接收到所述主节点发送的所述异常服务上报信息时,则所述集群管理装置检测出发生目标事件。
结合本发明实施例第一方面或第一方面的第一种至第二种中的任一种可能的实现方式,在本发明实施例第一方面的第三种可能的实现方式中,各个主节点上加载有浮动ip、Scsi-3锁以及共享卷,不同主节点对应的浮动ip不同,且不同主节点对应的Scsi-3锁不同,一个主节点通过对应的Scsi-3锁唯一访问与所述Scsi-3锁对应的共享卷。
结合本发明实施例第一方面的第三种可能的实现方式,在本发明实施例第一方面的第四种可能的实现方式中,所述高可用性集群还包括卷管理装置,用于管理各个共享卷,所述集群管理装置控制所述至少一个备节点中的一个备节点执行升主操作,包括:
所述集群管理装置通知所述至少一个备节点中的一个备节点加载所述主节点对应的浮动ip,以使得所述备节点对所述主节点对应的浮动ip进行加载,并由所述备节点检测所述浮动ip是否存在冲突;
当所述浮动ip不存在冲突时,所述集群管理装置接收所述备节点发送的查询请求,所述查询请求用于查询所述浮动ip对应的共享卷;
所述集群管理装置针对所述查询请求向所述备节点发送所述浮动ip对应的共享卷,以使所述备节点向所述卷管理装置查询所述共享卷的挂载信息,以获得第一查询结果,所述挂载信息包括所述共享卷的挂载点;
当所述第一查询结果为不存在所述共享卷的挂载点时,由所述备节点加载所述共享卷,以使所述备节点作为所述共享卷的挂载点;
由所述备节点向所述卷管理装置查询所述共享卷的加锁信息,以获得第二查询结果,所述加锁信息包括所述共享卷加载的Scsi-3锁;
当所述第二查询结果为不存在所述共享卷加载的Scsi-3锁时,由所述备节点为所述共享卷加载所述Scsi-3锁。
结合本发明实施例第一方面的第四种可能的实现方式,在本发明实施例第一方面的第五种可能的实现方式中,所述方法还包括:
当所述第一查询结果为存在所述共享卷的挂载点时,由所述备节点每隔第一时间向所述卷管理装置查询所述共享卷的挂载点;
当由所述备节点向所述卷管理装置执行第一预设次数查询后获得的查询结果均为存在所述共享卷的挂载点时,所述集群管理装置接收所述备节点发送的反馈信息;
所述集群管理装置根据所述反馈信息控制所述至少一个备节点中除所述备节点外的一个备节点执行升主操作。
结合本发明实施例第一方面的第四种可能的实现方式,在本发明实施例第一方面的第六种可能的实现方式中,所述方法还包括:
当所述第二查询结果为存在所述共享卷加载的Scsi-3锁时,由所述备节点每隔第二时间向所述卷管理装置查询所述共享卷的加锁信息;
当由所述备节点向所述卷管理装置执行第二预设次数查询后获得的查询结果均为存在所述共享卷加载的Scsi-3锁时,由所述备节点抢占所述共享卷加载的Scsi-3锁。
结合本发明实施例第一方面的第一种可能的实现方式,在本发明实施例第一方面的第七种可能的实现方式中,所述方法还包括:
当所述集群管理装置检测到在所述预设时间间隔内接收到所述主节点发送的所述心跳报文时,所述集群管理装置针对所述心跳报文向所述主节点发送心跳反馈报文。
本发明实施例第二方面公开了一种集群管理装置,用于执行高可用性集群管理方法,所述高可用性集群包括至少一个主节点、至少一个备节点和集群管理装置,所述集群管理装置通过心跳链路分别与所述至少一个主节点和所述至少一个备节点进行连接通信,所述集群管理装置包括:
检测单元,用于针对所述至少一个主节点中的每一个主节点,检测是否发生目标事件,所述目标事件为触发所述集群管理装置针对所述主节点进行切主操作的事件;
控制单元,用于当所述检测单元检测到发生所述目标事件时,控制所述至少一个备节点中的一个备节点执行升主操作。
结合本发明实施例第二方面,在本发明实施例第二方面的第一种可能的实现方式中,所述检测单元针对所述至少一个主节点中的每一个主节点,检测是否发生目标事件的方式具体为:
所述检测单元针对所述至少一个主节点中的每一个主节点,检测是否在预设时间间隔内未接收到所述主节点发送的心跳报文,当在所述预设时间间隔内未接收到所述主节点发送的所述心跳报文时,则检测出发生目标事件。
结合本发明实施例第二方面,在本发明实施例第二方面的第二种可能的实现方式中,所述检测单元针对所述至少一个主节点中的每一个主节点,检测是否发生目标事件的方式具体为:
所述检测单元针对所述至少一个主节点中的每一个主节点,检测是否接收到所述主节点发送的异常服务上报信息,当接收到所述主节点发送的所述异常服务上报信息时,则检测出发生目标事件。
结合本发明实施例第二方面或第二方面的第一种至第二种中的任一种可能的实现方式,在本发明实施例第二方面的第三种可能的实现方式中,各个主节点上加载有浮动ip、Scsi-3锁以及共享卷,不同主节点对应的浮动ip不同,且不同主节点对应的Scsi-3锁不同,一个主节点通过对应的Scsi-3锁唯一访问与所述Scsi-3锁对应的共享卷。
结合本发明实施例第二方面的第三种可能的实现方式,在本发明实施例第二方面的第四种可能的实现方式中,所述高可用性集群还包括卷管理装置,用于管理各个共享卷,所述控制单元包括:
通知子单元,用于通知所述至少一个备节点中的一个备节点加载所述主节点对应的浮动ip,以使得所述备节点对所述主节点对应的浮动ip进行加载,并由所述备节点检测所述浮动ip是否存在冲突;
第一接收子单元,用于当所述浮动ip不存在冲突时,接收所述备节点发送的查询请求,所述查询请求用于查询所述浮动ip对应的共享卷;
发送子单元,用于针对所述查询请求向所述备节点发送所述浮动ip对应的共享卷,以使所述备节点向所述卷管理装置查询所述共享卷的挂载信息,以获得第一查询结果,所述挂载信息包括所述共享卷的挂载点;当所述第一查询结果为不存在所述共享卷的挂载点时,由所述备节点加载所述共享卷,以使所述备节点作为所述共享卷的挂载点;由所述备节点向所述卷管理装置查询所述共享卷的加锁信息,以获得第二查询结果,所述加锁信息包括所述共享卷加载的Scsi-3锁;当所述第二查询结果为不存在所述共享卷加载的Scsi-3锁时,由所述备节点为所述共享卷加载所述Scsi-3锁。
结合本发明实施例第二方面的第四种可能的实现方式,在本发明实施例第二方面的第五种可能的实现方式中,所述控制单元还包括:
第二接收子单元,用于当所述第一查询结果为存在所述共享卷的挂载点时,由所述备节点每隔第一时间向所述卷管理装置查询所述共享卷的挂载点,当由所述备节点向所述卷管理装置执行第一预设次数查询后获得的查询结果均为存在所述共享卷的挂载点时,接收所述备节点发送的反馈信息;
控制子单元,用于根据所述反馈信息控制所述至少一个备节点中除所述备节点外的一个备节点执行升主操作。
结合本发明实施例第二方面的第一种可能的实现方式,在本发明实施例第二方面的第六种可能的实现方式中,所述集群管理装置还包括:
发送单元,用于当所述检测单元检测到在所述预设时间间隔内接收到所述主节点发送的所述心跳报文时,针对所述心跳报文向所述主节点发送心跳反馈报文。
本发明实施例中,高可用性集群包括至少一个主节点、至少一个备节点和集群管理装置,集群管理装置通过心跳链路分别与上述至少一个主节点和上述至少一个备节点进行连接通信,针对每一个主节点,集群管理装置可以检测是否发生目标事件,该目标事件为触发集群管理装置针对该主节点进行切主的事件,当检测到发生该目标事件时,集群管理装置控制上述至少一个备节点中的一个备节点执行升主操作。可见,本发明实施例中高可用性集群可以包括多个主节点和多个备节点,且每一个主节点可以共享多个备节点,可以通过多主对多备的模式来提高备节点的资源利用率;此外,将多个主节点与多个备节点同时连接到集群管理装置,由集群管理装置对异常情况进行判断来进行切主操作,从而可以大大降低脑裂发生的概率,进而提高服务的可靠性。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例公开了一种高可用性集群管理方法及相关设备,可以通过多主对多备的模式来提高备节点的资源利用率,将多个主节点与多个备节点同时连接到集群管理装置,由集群管理装置对异常情况进行判断来进行切主操作,从而可以大大降低脑裂发生的概率,进而提高服务的可靠性。以下分别进行详细说明。
为了更好的理解本发明实施例,下面先对本发明实施例公开的一种高可用性集群管理的网络架构进行描述。
请参阅图1,图1是本发明实施例公开的一种高可用性集群管理的网络架构示意图。如图1所示,该高可用性集群管理的网络架构可以包括至少一个主节点、至少一个备节点、集群管理装置以及卷管理装置,其中,集群管理装置通过心跳链路分别与各个主节点和各个备节点进行连接通信。本领域技术人员可以理解,虽然图1中示出了两个主节点和三个备节点,但并不构成对本发明实施例的限定,可以包括比图示更多或更少的主节点和备节点。
集群管理装置作为高可用性集群的管理中心,通过选主机制来决定若干个节点中谁是主节点,谁是备节点。并实时监控着主节点和备节点的运行状态。主节点和备节点每隔特定时间向集群管理装置发送心跳报文,其目的在于,通过心跳报文的方式告知集群管理装置当前节点运行正常,集群管理装置接收到某个节点发送的心跳报文后,会向该节点发送心跳反馈报文。集群管理装置监控到某一个主节点宕机或服务异常时,则由集群管理装置完成切主操作。集群管理装置可以集成在主节点中,也可以集成在备节点中,还可以集成在其他计算机上,本发明实施例不作限定。可以从中指定一个主的集群管理装置,其他所有的集群管理装置可以连接到该主的集群管理装置上,当主的集群管理装置服务异常时,可以由其他集群管理装置继续完成监控任务,保证服务的不间断。
主节点用于执行业务以提供服务,如NFS(Network File System,网络文件系统)服务、FTP(File Transfer Protocol,文件传输协议)服务、HTTP(Hyper Text TransferProtocol,超文本传输协议)服务等等。可以将一个主节点看作是一台计算机,主节点上可以加载有资源信息,资源信息可以包括浮动ip、Scsi-3锁、共享卷、对应的服务等。其中,共享卷可以指磁盘、硬盘等存储设备。不同主节点对应的浮动ip不同,客户端通过浮动ip可以访问对应的主节点,从而可以获取主节点上加载的资源;不同主节点对应的Scsi-3锁也不同,主节点将Scsi-3锁加载到共享卷上,可以看作是给共享卷加上一把锁,一个共享卷上只能加载一个Scsi-3锁,且一个共享卷只能被给其加载Scsi-3锁的主节点唯一访问,不能被其他主节点访问。
备节点作为主节点的备份,一直处于Standby状态,不会加载任何资源,可以将一个备节点看作是一台计算机。本发明实施例中,备节点对所有主节点都是共享的,如图1中所示的3个备节点可以被主节点1和主节点2共享,从而该高可用性集群所能承受的故障节点数目为3。当主节点宕机或服务异常时,集群管理装置可以将其中一个备节点切换为新的主节点,从而使该备节点加载原主节点上的资源,继续取代原主节点执行业务,以保证业务的连续性。
卷管理装置用于管理各个共享卷,记录了各个共享卷对应的挂载信息、加锁信息等。其中,挂载可以是指将一个设备或共享卷挂接到一个已存在的目录下,共享卷的挂载信息可以包括该共享卷的挂载点(即该共享卷挂载在哪个目录下)。加锁信息可以是指该共享卷上加载的Scsi-3锁的信息。卷管理装置可以集成在主节点中,也可以集成在备节点中,还可以集成在其他计算机上,本发明实施例不作限定。
在图1所示的高可用性集群管理的网络架构中,可以包括多个主节点和多个备节点,且每一个主节点可以共享多个备节点,可以通过多主对多备的模式来提高备节点的资源利用率;此外,将多个主节点与多个备节点同时连接到集群管理装置,由集群管理装置对异常情况进行判断来进行切主操作,从而可以大大降低脑裂发生的概率,进而提高服务的可靠性。
基于图1所示的网络构架,本发明实施例公开了一种高可用性集群管理方法。请参阅图2,图2是本发明实施例公开的一种高可用性集群管理方法的流程示意图。如图2所示,该高可用性集群管理方法可以包括以下步骤:
201、针对至少一个主节点中的每一个主节点,集群管理装置检测是否发生目标事件,该目标事件为触发集群管理装置针对该主节点进行切主操作的事件。
本发明实施例中,高可用性集群可以包括至少一个主节点、至少一个备节点以及集群管理装置,其中,集群管理装置通过心跳链路分别与各个主节点和各个备节点进行通信连接。主节点用于执行业务以向客户端提供各项服务,备节点一直处于等待状态,且备节点可以被所有的主节点所共享。
本发明实施例中,主节点和备节点是由集群管理装置来决定的,集群管理装置通过选主机制来决定谁是主节点,谁是备节点。可以将每一个主节点和每一个备节点分别看作是一台计算机,且集群管理装置可以集成在主节点中,也可以集成在备节点中,还可以集成在其他计算机中,本发明实施例不作限定。
本发明实施例中,在执行步骤201之前,图2所描述的方法还可以包括以下步骤:
21)集群管理装置每隔特定时间接收各个主节点和各个备节点发送的心跳报文;
22)集群管理装置向发送心跳报文的节点发送心跳反馈报文。
其中,主节点和备节点发送的心跳报文,用于告知集群管理装置自身运行正常。心跳反馈报文可以包括对应节点的身份和功能,如发送给主节点的心跳反馈报文告知对方为主节点,执行目标任务等,发送给备节点的心跳反馈报文告知对方为备节点,维持等待等。
本发明实施例中,每一个主节点上加载有浮动ip、Scsi-3锁以及共享卷等资源信息,不同主节点对应的浮动ip不同,客户端通过浮动ip访问主节点上的资源;不同主节点对应的Scsi-3锁也不同,一个主节点通过对应的Scsi-3锁唯一访问该Scsi-3锁对应的共享卷。当两个主节点同时对同一共享卷进行读写操作时,可能导致共享卷的数据损坏,利用Scsi-3锁对共享卷进行加锁,从而可以防止两个主节点同时访问同一个共享卷,使得共享卷只能被一个主节点唯一访问。
本发明实施例中,针对每一个主节点,集群管理装置可以检测是否发生目标事件,该目标事件用于触发集群管理装置对该主节点进行切主操作。
作为一种可选的实施方式,步骤201针对至少一个主节点中的每一个主节点,集群管理装置检测是否发生目标事件的具体实施方式可以包括以下步骤:
23)针对至少一个主节点中的每一个主节点,集群管理装置检测是否在预设时间间隔内未接收到该主节点发送的心跳报文;
24)当集群管理装置在预设时间间隔内未接收到该主节点发送的心跳报文时,集群管理装置检测出发生目标事件。
在该实施方式中,主节点每隔特定时间发送心跳报文至集群管理装置,这里的特定时间可以是1秒、2秒等等,当集群管理装置未接收到主节点的心跳报文时,可以进行预设时间的判断等待,当在预设时间间隔内未接收到该主节点发送的心跳报文,则可以确定检测出发生目标事件,此时可以认为该主节点已宕机(如死机或关机等),预设时间可以大于或等于特定时间,可以是5秒、6秒等等。
作为另一种可选的实施方式,步骤201针对至少一个主节点中的每一个主节点,集群管理装置检测是否发生目标事件的具体实施方式也可以包括以下步骤:
25)针对至少一个主节点中的每一个主节点,集群管理装置检测是否接收到该主节点发送的异常服务上报信息;
26)当集群管理装置接收到该主节点发送的异常服务上报信息时,则集群管理装置检测出发生目标事件。
在该实施方式中,当主节点服务异常时,会立即上报集群管理装置,即向集群管理装置发送异常服务上报信息,集群管理装置接收到该异常服务上报信息时,可以认定检测出发生目标事件。主节点服务异常可以包括浮动ip异常、Scsi-3锁异常、进程异常等等,本发明实施例不作限定。
202、当集群管理装置检测到发生目标事件时,集群管理装置控制至少一个备节点中的一个备节点执行升主操作。
本发明实施例中,集群管理装置当检测到发生目标事件后,可以从至少一个备节点中随机选取其中一个备节点,并控制该备节点进行升主操作。
本发明实施例中,当原主节点服务异常时,集群管理装置控制备节点进行升主,原主节点则需要降主,此时,原主节点将可以释放已加载的浮动ip、Scsi-3锁、共享卷等资源。同时,集群管理装置会通知选中的备节点去加载原主节点释放的资源。
本发明实施例中,高可用性集群还可以包括卷管理装置,用于管理各个共享卷。备节点在加载资源进行升主的过程中还会与卷管理装置进行交互,会向卷管理装置查询将要加载的共享卷的挂载信息、Scsi-3锁的信息,在确保自身可以独享资源的条件下,继续完成升主操作。
本发明实施例中,备节点的升主流程可以包括如下步骤:
1)首先检测浮动ip有无冲突;
2)向卷管理装置查询共享卷的挂载点,如果已经有挂载点,可以进行若干次的判断等待;
3)向卷管理装置查询共享卷的Scsi-3锁信息,如果有加锁信息,可以进行若干次的判断等待,如果仍旧存在加锁信息,则强行抢锁。
在图2所描述的方法中,针对每一个主节点,集群管理装置可以检测是否发生目标事件,该目标事件为触发集群管理装置针对该主节点进行切主的事件,当检测到发生该目标事件时,集群管理装置控制至少一个备节点中的一个备节点执行升主操作。通过实施图2所描述的方法,本发明实施例中高可用性集群可以包括多个主节点和多个备节点,且每一个主节点可以共享多个备节点,可以通过多主对多备的模式来提高备节点的资源利用率;此外,将多个主节点与多个备节点同时连接到集群管理装置,由集群管理装置对异常情况进行判断来进行切主操作,从而可以大大降低脑裂发生的概率,进而提高服务的可靠性。
基于图1所示的网络构架,本发明实施例公开了另一种高可用性集群管理方法。请参阅图3,图3是本发明实施例公开的另一种高可用性集群管理方法的流程示意图。如图3所示,该高可用性集群管理方法可以包括以下步骤:
301、当主节点宕机时,集群管理装置在预设时间间隔内未接收到主节点发送的心跳报文。
本发明实施例中,该主节点可以为至少一个主节点中的任意一个主节点。主节点宕机可以是主节点死机或者关机,此时主节点将不会给集群管理装置发送心跳报文,当在预设时间间隔内集群管理装置均未接收到该主节点发送的心跳报文时,则集群管理装置认为该主节点不可用,并对该主节点进行切主操作。
302、集群管理装置通知备节点加载主节点对应的浮动ip。
本发明实施例中,该备节点为至少一个备节点中的任意一个备节点。集群管理装置通知备节点加载浮动ip,以使备节点执行升主操作。
303、备节点加载主节点对应的浮动ip,并检测该浮动ip是否存在冲突,若不存在冲突,则执行步骤304。
本发明实施例中,备节点可以利用PING命令来检测,当PING通,则说明原主节点已释放该浮动ip,此时浮动ip不存在冲突,可以继续执行步骤304;当PING不通,则说明原主节点还未释放该浮动ip,此时原主节点和备节点上都加载同一浮动ip,使得该浮动ip存在冲突,则此时备节点可以进行若干次的判断等待,当不冲突,则执行后续步骤304,当若干次判断等待后仍存在冲突,则备节点释放该浮动ip,由集群管理装置重新选取另一个备节点进行升主操作。
304、备节点向集群管理装置查询该浮动ip对应的共享卷。
305、集群管理装置向备节点发送查询到的该浮动ip对应的共享卷。
本发明实施例中,当浮动ip不存在冲突时,备节点可以向集群管理装置查询该浮动ip对应的共享卷,集群管理装置中事先记录有每一个主节点加载的浮动ip,以及浮动ip与共享卷的对应关系,即每一个浮动ip对应的是哪个共享卷等。集群管理装置可以在事先存储的映射关系中查找该浮动ip对应的共享卷,获得查找结果,该查找结果中可以包括该浮动ip对应的共享卷,并向备节点反馈该浮动ip对应的共享卷。
306、备节点向卷管理装置查询该共享卷的挂载点。
本发明实施例中,卷管理装置管理着各个共享卷,可以包含各个共享卷的挂载信息和加锁信息等。备节点可以向卷管理装置查询该浮动ip对应的共享卷的挂载信息,该共享卷的挂载信息可以包括共享卷的挂载点。
307、卷管理装置查询该共享卷的挂载点,获得第一查询结果。
308、卷管理装置向备节点发送第一查询结果。
309、当第一查询结果为不存在该共享卷的挂载点时,备节点加载该共享卷。
本发明实施例中,当卷管理装置发送的第一查询结果为不存在该共享卷的挂载点,即该共享卷当前没有挂载在任何目录下时,可以认为原主节点已经释放了该共享卷,备节点可以加载该共享卷,此时该共享卷的挂载点可以是该备节点上的某个目录。
作为一种可选的实施方式,当该第一查询结果为存在该共享卷的挂载点时,图3所描述的方法还可以包括以下步骤:
31)备节点每隔第一时间向卷管理装置查询该共享卷的挂载点;
32)当备节点向卷管理装置执行第一预设次数查询后获得的查询结果均为存在该共享卷的挂载点时,备节点向集群管理装置发送反馈信息;
33)集群管理装置根据该反馈信息控制至少一个备节点中除该备节点外的一个备节点执行升主操作。
在该实施方式中,当卷管理装置发送的第一查询结果为存在该共享卷的挂载点时,可以认为原主节点还未释放该共享卷。备节点可以每隔第一时间向卷管理装置查询该共享卷的挂载点,可以执行查询操作的上限为第一预设次数,其中,第一时间可以是2秒、5秒等,第一预设次数可以是3次、5次等等,可以根据经验来设置,一般的经验值为5秒3次,即备节点向卷管理装置进行5秒*3次的查询等待。当查询结果均为存在该共享卷的挂载点时,备节点向集群管理装置发送反馈信息,该反馈信息用于告知集群管理装置加载共享卷异常,则集群管理装置根据该反馈信息重新选取另一个备节点以控制其完成升主操作,即再次执行步骤302。此时,原备节点可以释放已加载的浮动ip等信息。
310、备节点向卷管理装置查询该共享卷加载的Scsi-3锁。
本发明实施例中,当备节点加载上该共享卷后,可以进一步向卷管理装置查询该共享卷上加载的Scsi-3锁。
311、卷管理装置查询该共享卷加载的Scsi-3锁,获得第二查询结果。
312、卷管理装置向备节点发送第二查询结果。
313、当第二查询结果为不存在该共享卷加载的Scsi-3锁时,备节点为该共享卷加载Scsi-3锁。
本发明实施例中,当第二查询结果为不存在该共享卷加载的Scsi-3锁时,可以认为原主节点已释放该共享卷的Scsi-3锁,即该共享卷上当前未加锁,则此时备节点可以为该共享卷加载Scsi-3锁,以使该共享卷只能被该备节点唯一访问。
314、加载完成后,备节点升为新的主节点,并继续提供服务。
本发明实施例中,当备节点成功加载完浮动ip、共享卷以及Scsi-3锁时,备节点升为新的主节点,并代替原主节点继续执行任务以向客户端提供服务。
作为一种可选的实施方式,当第二查询结果为存在该共享卷加载的Scsi-3锁时,图3所描述的方法还可以包括以下步骤:
34)备节点每隔第二时间向卷管理装置查询该共享卷的加锁信息;
35)当备节点向卷管理装置执行第二预设次数查询后获得的查询结果均为存在该共享卷加载的Scsi-3锁时,备节点抢占该共享卷加载的Scsi-3锁。
在该实施方式中,当卷管理装置发送的第二查询结果为存在该共享卷加载的Scsi-3锁时,可以认为原主节点还未释放该共享卷的Scsi-3锁,即未给该共享卷进行解锁,此时其他节点均不能对该共享卷进行访问。备节点可以每隔第二时间向卷管理装置查询该共享卷加载的Scsi-3锁,可以执行查询操作的上限为第二预设次数,其中,第二时间可以是2秒、3秒等,第二预设次数可以为5次、10次等,一般的经验值为3秒10次,即备节点向卷管理装置进行3秒*10次的查询等待。当查询结果均为存在该共享卷的Scsi-3锁时,备节点进行强行抢锁,即抢占该共享卷加载的Scsi-3锁,当抢锁成功时,则备节点替代原主节点升为新的主节点;当抢锁失败时,备节点向集群管理装置发送反馈信息,集群管理装置根据该反馈信息重新选取另一个备节点以控制其进行升主操作。此时,备节点可以释放已加载的浮动ip和共享卷等信息。
可见,实施图3所描述的方法,本发明实施例中高可用性集群可以包括多个主节点和多个备节点,且每一个主节点可以共享多个备节点,可以通过多主对多备的模式来提高备节点的资源利用率;此外,将多个主节点与多个备节点同时连接到集群管理装置,由集群管理装置对异常情况进行判断来进行切主操作,将浮动ip、共享卷的挂载信息、加锁信息等一起构成备节点升主的条件,通过多级条件判断来大大降低脑裂发生的概率,进而提高服务的可靠性。
基于图1所示的网络构架,本发明实施例公开了又一种高可用性集群管理方法。请参阅图4,图4是本发明实施例公开的又一种高可用性集群管理方法的流程示意图。如图4所示,该高可用性集群管理方法可以包括以下步骤:
401、主节点服务异常时,向集群管理装置发送异常服务上报信息。
本发明实施例中,主节点服务异常可以包括主节点加载的浮动ip异常、主节点加载的Scsi-3锁异常、主节点上运行的进程异常等等。当主节点服务异常时,主节点通过心跳链路向集群管理装置发送异常服务上报信息。
402、集群管理装置根据该异常服务上报信息,通知备节点加载主节点对应的浮动ip。
403、备节点加载主节点对应的浮动ip,并检测该浮动ip是否存在冲突,若不存在冲突,则执行步骤404。
404、备节点向集群管理装置查询该浮动ip对应的共享卷。
405、集群管理装置向备节点发送查询到的该浮动ip对应的共享卷。
406、备节点向卷管理装置查询该共享卷的挂载点。
407、卷管理装置查询该共享卷的挂载点,获得第一查询结果。
408、卷管理装置向备节点发送第一查询结果。
409、当第一查询结果为不存在该共享卷的挂载点时,备节点加载该共享卷。
作为一种可选的实施方式,当该第一查询结果为存在该共享卷的挂载点时,图4所描述的方法还可以包括以下步骤:
41)备节点每隔第一时间向卷管理装置查询该共享卷的挂载点;
42)当备节点向卷管理装置执行第一预设次数查询后获得的查询结果均为存在该共享卷的挂载点时,备节点向集群管理装置发送反馈信息;
43)集群管理装置根据该反馈信息控制至少一个备节点中除该备节点外的一个备节点执行升主操作。
410、备节点向卷管理装置查询该共享卷加载的Scsi-3锁。
411、卷管理装置查询该共享卷加载的Scsi-3锁,获得第二查询结果。
412、卷管理装置向备节点发送第二查询结果。
413、当第二查询结果为不存在该共享卷加载的Scsi-3锁时,备节点为该共享卷加载Scsi-3锁。
作为一种可选的实施方式,当第二查询结果为存在该共享卷加载的Scsi-3锁时,图4所描述的方法还可以包括以下步骤:
44)备节点每隔第二时间向卷管理装置查询该共享卷的加锁信息;
45)当备节点向卷管理装置执行第二预设次数查询后获得的查询结果均为存在该共享卷加载的Scsi-3锁时,备节点抢占该共享卷加载的Scsi-3锁。
414、加载完成后,备节点升为新的主节点,并继续提供服务。
可见,实施图4所描述的方法,本发明实施例中高可用性集群可以包括多个主节点和多个备节点,且每一个主节点可以共享多个备节点,可以通过多主对多备的模式来提高备节点的资源利用率;此外,将多个主节点与多个备节点同时连接到集群管理装置,由集群管理装置对异常情况进行判断来进行切主操作,将浮动ip、共享卷的挂载信息、加锁信息等一起构成备节点升主的条件,通过多级条件判断来大大降低脑裂发生的概率,进而提高服务的可靠性。
基于图1所示的网络构架,本发明实施例公开了一种集群管理装置。请参阅图5,图5是本发明实施例公开的一种集群管理装置的结构示意图,可以用于执行本发明实施例公开的高可用性集群管理方法,其中,高可用性集群可以包括至少一个主节点、至少一个备节点以及集群管理装置。如图5所示,该集群管理装置可以包括:
检测单元501,用于针对至少一个主节点中的每一个主节点,检测是否发生目标事件,该目标事件为触发集群管理装置针对该主节点进行切主操作的事件。
本发明实施例中,集群管理装置通过心跳链路分别与各个主节点和各个备节点进行通信连接。主节点用于执行业务以向客户端提供各项服务,备节点一直处于等待状态,且备节点可以被所有的主节点所共享。
本发明实施例中,主节点和备节点是由集群管理装置来决定的,集群管理装置通过选主机制来决定谁是主节点,谁是备节点。可以将每一个主节点和每一个备节点分别看作是一台计算机,且集群管理装置可以集成在主节点中,也可以集成在备节点中,还可以集成在其他计算机中,本发明实施例不作限定。
本发明实施例中,集群管理装置可以每隔特定时间接收各个主节点和各个备节点发送的心跳报文,并向发送心跳报文的节点发送心跳反馈报文。其中,主节点和备节点发送的心跳报文,用于告知集群管理装置自身运行正常。心跳反馈报文可以包括对应节点的身份和功能,如发送给主节点的心跳反馈报文告知对方为主节点,执行目标任务等,发送给备节点的心跳反馈报文告知对方为备节点,维持等待等。
本发明实施例中,每一个主节点上加载有浮动ip、Scsi-3锁以及共享卷等资源信息,不同主节点对应的浮动ip不同,客户端通过浮动ip访问主节点上的资源;不同主节点对应的Scsi-3锁也不同,一个主节点通过对应的Scsi-3锁唯一访问该Scsi-3锁对应的共享卷。当两个主节点同时对同一共享卷进行读写操作时,可能导致共享卷的数据损坏,利用Scsi-3锁对共享卷进行加锁,从而可以防止两个主节点同时访问同一个共享卷,使得共享卷只能被一个主节点唯一访问。
本发明实施例中,针对每一个主节点,检测单元501可以检测是否发生目标事件,该目标事件用于触发集群管理装置对该主节点进行切主操作。
作为一种可选的实施方式,检测单元501针对至少一个主节点中的每一个主节点,检测是否发生目标事件的具体实施方式可以为:
检测单元501针对至少一个主节点中的每一个主节点,检测是否在预设时间间隔内未接收到该主节点发送的心跳报文,当在预设时间间隔内未接收到该主节点发送的心跳报文时,则检测出发生目标事件。
在该实施方式中,主节点每隔特定时间发送心跳报文至集群管理装置,这里的特定时间可以是1秒、2秒等等,当检测单元501检测到集群管理装置未接收到主节点的心跳报文时,可以进行预设时间的判断等待,当在预设时间间隔内未接收到该主节点发送的心跳报文,则可以确定检测出发生目标事件,此时可以认为该主节点已宕机(如死机或关机等),预设时间可以大于或等于特定时间,可以是5秒、6秒等等。
作为另一种可选的实施方式,检测单元501针对至少一个主节点中的每一个主节点,检测是否发生目标事件的具体实施方式也可以为:
检测单元501针对至少一个主节点中的每一个主节点,检测是否接收到该主节点发送的异常服务上报信息,当接收到该主节点发送的异常服务上报信息时,则检测出发生目标事件。
在该实施方式中,当主节点服务异常时,会立即上报集群管理装置,即向集群管理装置发送异常服务上报信息,检测单元501可以检测集群管理装置是否接收到该异常服务上报信息时,若检测到集群管理装置接收到该异常服务上报信息,可以认定检测出发生目标事件。主节点服务异常可以包括浮动ip异常、Scsi-3锁异常、进程异常等等,本发明实施例不作限定。
控制单元502,用于当检测单元501检测到发生该目标事件时,控制至少一个备节点中的一个备节点执行升主操作。
本发明实施例中,当检测单元501检测到发生目标事件后,控制单元502可以从至少一个备节点中随机选取其中一个备节点,并控制该备节点进行升主操作。
本发明实施例中,当原主节点服务异常时,控制单元502控制备节点进行升主,原主节点则需要降主,此时,原主节点将可以释放已加载的浮动ip、Scsi-3锁、共享卷等资源。同时,集群管理装置会通知选中的备节点去加载原主节点释放的资源。
本发明实施例中,高可用性集群还可以包括卷管理装置,用于管理各个共享卷。备节点在加载资源进行升主的过程中还会与卷管理装置进行交互,会向卷管理装置查询将要加载的共享卷的挂载信息、Scsi-3锁的信息,在确保自身可以独享资源的条件下,继续完成升主操作。
在图5所示的集群管理装置中,检测单元501针对每一个主节点,可以检测是否发生目标事件,该目标事件为触发集群管理装置针对该主节点进行切主的事件,当检测单元501检测到发生该目标事件时,控制单元502控制至少一个备节点中的一个备节点执行升主操作。图5所示的集群管理装置可以同时连接多个主节点与多个备节点,并对异常情况进行判断来进行切主操作,从而可以大大降低脑裂发生的概率,进而提高服务的可靠性。
基于图1所示的网络构架,本发明实施例公开了另一种集群管理装置。请参阅图6,图6是本发明实施例公开的另一种集群管理装置的结构示意图,可以用于执行本发明实施例公开的高可用性集群管理方法。其中,图6所示的集群管理装置是在图5所示的集群管理装置的基础上进一步优化得到的,如图6所示,控制单元502还可以进一步包括:
通知子单元5021,用于通知至少一个备节点中的一个备节点加载该主节点对应的浮动ip,以使得备节点对该主节点对应的浮动ip进行加载,并由备节点检测该浮动ip是否存在冲突。
第一接收子单元5022,用于当该浮动ip不存在冲突时,接收备节点发送的查询请求,该查询请求用于查询该浮动ip对应的共享卷。
发送子单元5023,用于针对该查询请求向备节点发送该浮动ip对应的共享卷,以使备节点向卷管理装置查询该共享卷的挂载信息,以获得第一查询结果,挂载信息包括该共享卷的挂载点;当第一查询结果为不存在该共享卷的挂载点时,由备节点加载该共享卷,以使备节点作为该共享卷的挂载点;以及,由备节点向卷管理装置查询该共享卷的加锁信息,以获得第二查询结果,加锁信息包括该共享卷加载的Scsi-3锁;当第二查询结果为不存在该共享卷加载的Scsi-3锁时,由备节点为该共享卷加载Scsi-3锁。
作为一种可选的实施方式,控制单元502还可以包括:
第二接收子单元5024,用于当第一查询结果为存在该共享卷的挂载点时,由备节点每隔第一时间向卷管理装置查询该共享卷的挂载点,当由备节点向卷管理装置执行第一预设次数查询后获得的查询结果均为存在该共享卷的挂载点时,接收备节点发送的反馈信息。
控制子单元5025,用于根据该反馈信息控制至少一个备节点中除该备节点外的一个备节点执行升主操作。
作为一种可选的实施方式,图6所示的终端还可以包括:
发送单元503,用于当检测单元501检测到在预设时间间隔内接收到该主节点发送的心跳报文时,针对该心跳报文向该主节点发送心跳反馈报文。
可见,图6所示的集群管理装置可以同时连接多个主节点与多个备节点,并对异常情况进行判断来进行切主操作,将浮动ip、共享卷的挂载信息、加锁信息等一起构成备节点升主的条件,通过多级条件判断来大大降低脑裂发生的概率,进而提高服务的可靠性。
基于图1所示的网络构架,本发明实施例公开了又一种集群管理装置。请参阅图7,图7是本发明实施例公开的又一种集群管理装置的结构示意图,可以用于执行本发明实施例公开的高可用性集群管理方法,其中,高可用性集群包括至少一个主节点、至少一个备节点和集群管理装置,集群管理装置通过心跳链路分别与各个主节点和各个备节点进行连接通信。如图7所示,该集群管理装置700可以包括:至少一个处理器701,例如CPU(CentralProcessing Unit,中央处理器),至少一个输入装置702,至少一个输出装置703,存储器704以及通信总线705。其中,通信总线705用于实现这些组件之间的连接通信。本领域技术人员可以理解,图7中示出的集群管理装置的结构并不构成对本发明的限定,它既可以是总线形结构,也可以是星型结构,还可以包括比图7所示的更多或更少的部件,或者组合某些部件,或者不同的部件布置。
本发明实施例中,输入装置702可以包括有线接口、无线接口等,用于接收主节点和备节点发送的心跳报文。
本发明实施例中,输出装置703也可以包括有线接口、无线接口等,用于向主节点和备节点发送心跳反馈报文。
本发明实施例中,存储器704可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器704可选的还可以是至少一个位于远离前述处理器701的存储装置。如图7所示,作为一种计算机存储介质的存储器704中可以包括操作系统、应用程序(如切主程序等)和数据(如浮动ip、浮动ip与共享卷的映射关系等)等,本发明实施例不作限定。
在图7所示的集群管理装置中,处理器701可以用于调用存储器704中存储的应用程序以执行以下操作:
针对至少一个主节点中的每一个主节点,检测是否发生目标事件,该目标事件为触发集群管理装置针对该主节点进行切主操作的事件;
当检测到发生该目标事件时,控制至少一个备节点中的一个备节点执行升主操作。
一个实施例中,处理器701针对至少一个主节点中的每一个主节点,检测是否发生目标事件的具体实施方式可以为:
针对至少一个主节点中的每一个主节点,检测输入装置702是否在预设时间间隔内未接收到该主节点发送的心跳报文;
当输入装置702在预设时间间隔内未接收到该主节点发送的心跳报文时,则检测出发生目标事件。
一个实施例中,处理器701针对至少一个主节点中的每一个主节点,检测是否发生目标事件的具体实施方式也可以为:
针对至少一个主节点中的每一个主节点,检测输入装置702是否接收到该主节点发送的异常服务上报信息;
当输入装置702接收到该主节点发送的异常服务上报信息时,则检测出发生目标事件。
本发明实施例中,各个主节点上加载有浮动ip、Scsi-3锁以及共享卷,不同主节点对应的浮动ip不同,且不同主节点对应的Scsi-3锁不同,一个主节点通过对应的Scsi-3锁唯一访问与所述Scsi-3锁对应的共享卷。
本发明实施例中,高可用性集群还包括卷管理装置,用于管理各个共享卷,处理器701控制至少一个备节点中的一个备节点执行升主操作的具体实施方式可以为:
控制输出装置703通知至少一个备节点中的一个备节点加载该主节点对应的浮动ip,以使得备节点对该主节点对应的浮动ip进行加载,并由备节点检测该浮动ip是否存在冲突;
当该浮动ip不存在冲突时,控制输入装置702接收备节点发送的查询请求,该查询请求用于查询该浮动ip对应的共享卷;
控制输出装置703针对该查询请求向备节点发送该浮动ip对应的共享卷,以使备节点向卷管理装置查询该共享卷的挂载信息,以获得第一查询结果,挂载信息包括该共享卷的挂载点;
当第一查询结果为不存在该共享卷的挂载点时,由备节点加载该共享卷,以使备节点作为该共享卷的挂载点;
以及,由备节点向卷管理装置查询该共享卷的加锁信息,以获得第二查询结果,加锁信息包括该共享卷加载的Scsi-3锁;
当第二查询结果为不存在该共享卷加载的Scsi-3锁时,由备节点为该共享卷加载Scsi-3锁。
一个实施例中,处理器701可以用于调用存储器704中存储的应用程序以执行以下操作:
当第一查询结果为存在该共享卷的挂载点时,由备节点每隔第一时间向卷管理装置查询该共享卷的挂载点;
当由备节点向卷管理装置执行第一预设次数查询后获得的查询结果均为存在该共享卷的挂载点时,控制输入装置702接收备节点发送的反馈信息;
根据该反馈信息控制至少一个备节点中除该备节点外的一个备节点执行升主操作。
一个实施例中,处理器701可以用于调用存储器704中存储的应用程序以执行以下操作:
当检测到输入装置702在预设时间间隔内接收到该主节点发送的心跳报文时,控制输出装置703针对该心跳报文向该主节点发送心跳反馈报文。
可见,图7所示的集群管理装置可以同时连接多个主节点与多个备节点,并对异常情况进行判断来进行切主操作,将浮动ip、共享卷的挂载信息、加锁信息等一起构成备节点升主的条件,通过多级条件判断来大大降低脑裂发生的概率,进而提高服务的可靠性。
具体地,本发明实施例中介绍的装置可以实施本发明结合图2、图3或图4介绍的高可用性集群管理方法实施例中的部分或全部流程。
需要说明的是,对于前述的各个方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本申请,某一些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其他实施例的相关描述。
本发明实施例的方法中的步骤可以根据实际需要进行顺序调整、合并和删减。
本发明实施例装置或设备中的单元或子单元可以根据实际需要进行合并、划分和删减。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质包括只读存储器(Read-Only Memory,ROM)、随机存储器(Random Access Memory,RAM)、可编程只读存储器(Programmable Read-only Memory,PROM)、可擦除可编程只读存储器(Erasable Programmable Read Only Memory,EPROM)、一次可编程只读存储器(One-time Programmable Read-Only Memory,OTPROM)、电子抹除式可复写只读存储器(Electrically-Erasable Programmable Read-Only Memory,EEPROM)、只读光盘(CompactDisc Read-Only Memory,CD-ROM)或其他光盘存储器、磁盘存储器、磁带存储器、或者能够用于携带或存储数据的计算机可读的任何其他介质。
以上对本发明实施例公开的高可用性集群管理方法及相关设备进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。