欢迎光临小豌豆知识网!
当前位置:首页 > 电学技术 > 电通讯技术> 一种基于分布式故障监控的方法和虚拟机高可用系统独创技术20559字

一种基于分布式故障监控的方法和虚拟机高可用系统

2021-02-28 05:02:50

一种基于分布式故障监控的方法和虚拟机高可用系统

  技术领域

  本发明涉及网络故障监控领域,尤其涉及一种基于分布式故障监控的方法和虚拟机高可用系统。

  背景技术

  随着传统的应用变得越来越复杂,需要支持更多用户,提供更强计算能力,保证稳定性,增强安全性,为了支撑这些不断增长的需求,企业不得不购买各类硬件设备和软件,最困难的是,还需组建一个完整的团队来维护这些设备或软件的正常运作,这些维护工作主要包括安装、配置、测试、运行、升级以及保证系统的安全等。整个维护流程完整运行下来,会发现开销变得非常巨大,而且费用会随着应用的规模的增加而不断提高。然而,传统模式下的资源利用率并不高,造成了极大的浪费,于是云计算应运而生。

  随着越来越多传统IT架构下的用户转入云计算,企业应用云已经是大势所趋,而传统集中式应用系统的非中断运行几乎完全依赖于服务器的高可用性。如果云服务要求7X24小时不宕机,则无法满足需求或满足的成本会非常高。因此,虚拟机高可用功能也是众多云用户所急需的。现有的主流虚拟机高可用的方案只是基于管理网络层面对物理机进行故障检测,当管理网络心跳中断时,便会触发高可用动作,目前的云计算场景下,管理网、存储网、业务网是独立基于不同的硬件独立部署的,倘若只有管理网心跳中断,并不会影响到虚拟机的正常运行,业务也没有感知到中断,此时若触发HA动作,反而会产生业务中断,导致不必要的损失。

  发明内容

  本发明的目的在于提供一种基于分布式故障监控的方法和虚拟机高可用系统,从而解决现有技术中存在的前述问题。

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

  一种基于分布式故障监控的方法,包括物理机故障检测、虚拟机生命周期事件检测和运行进程检测;

  物理机的检测包括以下步骤:

  S101、检测所述常驻进程所在节点的自身网络状态,若自身网络状态不正常,则停止检测;若自身网络状态正常,则开始检测所述非维护态节点;

  S02、获取所述非维护态节点的信息,检测所述非维护态节点中是否有检测任务运行,若所述非维护态节点中没有所述检测任务,则新建所述检测任务;否则,所述常驻进程所在节点开始执行所述非维护节点的检测任务;

  S103、所述检测任务设置有预设最大时长,若所述检测任务的执行时间超过所述预设最大时长,则更换常驻进程所在的节点对所述非维护态节点执行所述检测任务;若未超过所述预设最大时长,则跳过所述非维护节点,开始下一个所述非维护节点的检测;

  S104、若被检测的所述非维护态节点的检测结果为状态正常,则停止运行对应所述非维护态节点的检测任务,开始执行下一个所述非维护态节点的检测任务;否则,获取所述检测任务对应的所述非维护态节点信息,生成故障通知并发送;

  S105、重复步骤S102ˉS104,当所有所述非维护态节点的所述检测任务全部执行一遍,则结束一轮所述物理机的检测周期;

  虚拟机的生命周期事件检测包括以下步骤:

  S201、建立与所述节点虚拟化软件之间的连接,查询所述节点上的虚拟机信息,并监听所述虚拟机的生命周期;

  S202、所检测到的虚拟机存在异常的生命周期事件时,获取所述事件对应的所述虚拟机信息;

  S203、将步骤S202中检测到的异常事件详情和对应的所述虚拟机信息作为故障信息,发送故障通知;

  运行进程的检测包括以下步骤:

  S301、由常驻进程获取所有待检测的运行进程的信息;

  S302、遍历检查所有待检测的运行进程,若所有待检测的运行进程均正常运行,则检测周期结束;若待检测的运行进程的运行存在异常,则尝试拉起异常退出的进程,并检测拉起结果;

  S303、若步骤S302中检测到所述进程拉起成功,则结束所述运行进程的检测;而检测到所述进程拉起失败,则收集所述运行进程对应的节点信息和所述运行进程的信息,形成故障信息,发送故障通知。

  优选的,将所述检测任务进行同步,当所述检测任务所在的所述非维护态节点已经完成检测时,执行其他检测任务的常驻进程所在节点同步已检测信息,避免对同一个所述非维护态节点进行重复检测。

  一种基于分布式故障监控的虚拟机高可用系统,包括故障检测模块、故障通知处理模块和故障恢复模块;所述故障检测模块的输出端与所述故障通知处理模块的输入端向连接;所述故障通知处理模块和所述故障恢复模块之间进行数据交互;

  所述故障检测模块通过读取每一个节点的网络配置信息,检测物理机的网络状态,并向所述故障通知处理模块发送网络状态异常的节点信息;调用接口接收虚拟机生命周期事件,并向所述故障通知处理模块发送生命周期事件异常的虚拟机信息;通过常驻进程监听预设的特定进程的运行状态,并向所述故障通知处理模块发送无法自行恢复的预设的特定进程对应的节点信息;

  所述故障通知处理模块接收所述故障检测模块发送的所述故障通知,进行存储;并传输给所述故障恢复模块;接收所述故障恢复模块返回的故障处理结果;

  所述故障恢复模块接收所述故障通知处理模块传输的故障通知,并根据不同的故障情况,判断故障节点的隔离级别,并触发不同的故障恢复任务,将故障恢复结果发送给所述故障通知处理模块。

  优选的,所述故障检测模块同时针对所述管理网络层、存储网络层和业务网络层的网络状态进行检测。

  优选的,所述故障检测模块中的检测结果与所述故障恢复模块的反应动作的动作关系为:

  当所述管理网络层的网络中断、所述存储网络层和所述业务网络层的网络正常时,所述故障恢复模块向所述故障通知处理模块发送故障信息;

  当所述存储网络层的网络中断、所述管理网络层和所述业务网络层的网络正常时,维护并隔离对应的故障节点,并疏散所述故障节点的所有所述虚拟机;

  当所述业务网络层的网络中断、所述存储网络层和所述管理网络层的网络正常时,维护所述故障节点,并将所述故障节点中的所述虚拟机迁移至正常节点;

  当所述管理网络层和所述业务网络层的网络中断,所述存储网络层的网络正常时,维护并隔离对应的故障节点,并疏散所述故障节点的所有所述虚拟机;

  当所述管理网络层、所述存储网络层和所述业务网络层的网络中断时,维护并隔离对应的故障节点,并疏散所述故障节点的所有所述虚拟机。

  优选的,对虚拟机的生命周期事件的处理过程为:监听宿主机上的所有虚拟机的生命周期事件,并获取所述虚拟机中生命周期事件异常的虚拟机信息;针对所述虚拟机信息恢复指定的虚拟机。

  优选的,对运行进程的故障的恢复过程为:周期性检查进程列表中的所有进程的运行状态,针对异常进程尝试重启,若所述异常进程重启后恢复正常,则处理完毕;若所述异常进程并没有完成重启,则对所述异常进程对应的所述故障节点进行隔离。

  本发明的有益效果是:本发明公开了一种基于分布式故障监控的方法和虚拟机高可用系统,从物理机的管理网络层、存储网络层和业务网络层多个层面监控物理机故障,并检测虚拟机生命周期的异常和运行进程的运行状态;并及时针对不同的故障组合执行不同的反应动作,将中断的虚拟机及时恢复;本发明实现了从多个维度检测云平台的状态,避免因为不同层面的状态不正常的而触发相同的HA操作,导致非预期的业务中断,根据不同的故障执行不同的隔离恢复操作,避免因为恢复业务的动作而引入非预期的故障,避免因为恢复故障虚拟机业务而造成其他虚拟机的中断,提高云平台的稳定性和可靠性;本发明通过对云平台依赖的相关进程进行检测,降低因为非云平台组件故障而导致业务不可用问题的排查难度;本发明实现了分布式故障检测,所有计算节点均是故障检测的执行单元,避免了因为单节点故障而造成高可用系统的不可用。

  附图说明

  图1是分布式故障监控构成流程图;

  图2是虚拟机高可用系统的工作原理图;

  图3是物理机故障处理树状图;

  图4是故障监控流程图;

  图5是虚拟机故障恢复流程图;

  图6是进程异常恢复流程图;

  图7是物理机故障恢复操作矩阵图。

  具体实施方式

  为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不用于限定本发明。

  一种基于分布式故障监控的方法,如图1所示,包括物理机的故障检测、虚拟机的生命周期事件检测和对云平台依赖的相关运行进程的检测;

  所述物理机的故障检测的步骤如下:

  S101、检测所述常驻进程所在节点的自身网络状态,若自身网络状态不正常,则停止检测;若自身网络状态正常,则开始检测所述非维护态节点;

  S02、获取所述非维护态节点的信息,检测所述非维护态节点中是否有检测任务运行,若所述非维护态节点中没有所述检测任务,则新建所述检测任务;否则,所述常驻进程所在节点开始执行所述非维护节点的检测任务;

  S103、所述检测任务设置有预设最大时长,若所述检测任务的执行时间超过所述预设最大时长,则更换常驻进程所在的节点对所述非维护态节点执行所述检测任务;若未超过所述预设最大时长,则跳过所述非维护节点,开始下一个所述非维护节点的检测;

  S104、若被检测的所述非维护态节点的检测结果为状态正常,则停止运行对应所述非维护态节点的检测任务,开始执行下一个所述非维护态节点的检测任务;否则,获取所述检测任务对应的所述非维护态节点信息,生成故障通知并发送;

  S105、重复步骤S102ˉS104,当所有所述非维护态节点的所述检测任务全部执行一遍,则结束一轮所述物理机的检测周期;

  上述步骤中针对每一个所述检测任务进行同步,当所述检测任务所在的所述非维护态节点已经完成检测时,执行其他检测任务的常驻进程所在节点同步已检测信息,避免对同一个所述非维护态节点进行重复检测,造成计算资源的浪费。

  虚拟机的生命周期事件检测的步骤如下:

  S201、预先设定可能出现的故障所对应的所述虚拟机的生命周期事件,

  S202、建立所述物理机的节点与服务器libvirt的连接,查询所有所述节点的虚拟机信息,监听所述虚拟机的生命周期事件;

  S203、若步骤S202中监听到步骤S201中预先设定的所述虚拟机的生命周期事件,则获取所述虚拟机信息形成故障信息,发送故障通知;否则,常驻后台,实时监听所述虚拟机的生命周期事件检测。

  对云平台依赖的运行进程的检测步骤如下:

  S301、所述云平台依赖的运行进程为待检测进程,通过常驻进程遍历检测所有所述待检测进程,获取所述待检测进程的进程信息;

  S302、检测所述待检测进程的运行状态,若所有的所述待检测进程均正常运行,则结束本次检测周期;否则,针对运行异常的所述待检测进程,尝试拉起中断的所述待检测进程,若所有运行异常的所述待检测进程均成功拉起,则结束本次检测进程;否则收集拉起失败的所述待检测进程的进程信息和对应的节点信息形成故障信息,发送故障通知。

  利用上述基于分布式故障监控的方法的虚拟机高可用系统,包括故障检测模块、故障通知处理模块和故障恢复模块;所述故障检测模块通过读取所述节点的网络信息,检测所述物理机的网络状态,并收集所述网络状态异常的节点信息作为故障信息,向所述故障通知处理模块发送故障通知;通过调用libvirt接口,监听虚拟机的生命周期事件,获取出现故障的所述虚拟机对应的所述节点的节点信息作为故障信息,向所述故障通知处理模块发送故障通知;监听云平台依赖的进程,收集中断的所述进程的进程信息和对应的所述节点的节点信息,形成故障信息,向所述故障通知处理模块发送故障通知。所述网络状态包括管理网络层、存储网络层和业务网络层的网络状态。

  所述故障通知处理模块接收所述故障检测模块发送的所述故障通知,存储所述故障信息,并将所述故障信息传递给所述故障恢复模块;并接收所述故障恢复模块返回的故障恢复结果,结合所述故障信息更新故障处理后的节点信息。

  所述故障恢复模块接收所述故障通知处理模块发送的所述故障信息,根据所述故障信息判断故障场景;并根据不同的所述故障场景,判断存在故障的所述节点的隔离级别,避免发生虚拟机脑裂现象,并触发不同的故障恢复任务;返回所述故障恢复结果给所述通知处理模块;并检查是否有未处理完成的通知,重新尝试恢复流程。

  所述虚拟机高可用系统的工作原理如图2所示,所述故障检测模块中包括、instance monitor、process monitor和host monitor三部分,所述instance monitor运行于计算节点中,调用livirt接口检测所述虚拟机的生命周期事件;所述process monitor运行于计算节点中,检测云平台依赖的关键进程的运行状态;所述host monitor运行于计算节点中,检测所述物理机的所有计算节点是否存在异常;将所述故障检测模块中检测到的故障信息传递至所述故障通知处理模块中,所述故障通知处理模块采用HA-API运行于控制节点中,提供服务接口,将通过RPC向所述故障恢复模块发送的处理API请求;所述故障恢复模块通过HA-Engine对所述处理API请求进行处理,所述HA-Engine运行于控制节点中,通过异步方式执行恢复工作流,处理所述故障通知处理模块的发送的故障通知;

  所述物理机网络状态的故障处理规则如图3所示,若所述计算节点中的所述存储网络层的网络中断时,无论所述管理网络层和所述业务网络层的网络状态是否正常,所述计算节点均不可能再次成功运行虚拟机,此时需将所述计算节点隔离出节点集群并关机,以及疏散所述计算节点中的所述虚拟机迁移至其他网络状态正常的计算节点中;若所述计算节点中的所述存储网络层和所述管理网络层的网络均正常,所述业务网络层的网络中断时,所述虚拟机不能对外提供服务,但所述虚拟机是可以正常运行的,此时需将所述计算节点隔离出节点集群,并将所述计算节点中的所述虚拟机迁移至其他网络状态正常的计算节点中;若所述计算节点中的所述存储网络层和所述业务网络层的网络正常,所述管理网络层的网络中断时,此时只需要向管理员发送邮件将故障信息进行通知,不对所述虚拟机进行任何其他操作;若所述计算节点中的只有所述存储网络层的网络正常,所述业务网络层和所述管理网络层的网络中断时,所述计算节点中的所述虚拟机无法迁移至其他节点中,此时调用疏散接口,疏散所述计算节点中的所述虚拟机。

  实施例

  所述故障检测模块的工作流程图如图4所示,首先启动周期性检查任务以及建立与宿主机libvirtAPI的长连接;其次对节点状态、虚拟机状态和进程的运行状态进行检测;对上述检测处的故障进行隔离;根据故障节点信息恢复受到影响的虚拟机;

  所述故障恢复模块中虚拟机的故障恢复流程如图5所示,通过监听宿主机上所述虚拟机的生命周期事件,获取发生故障事件的虚拟机信息,从而恢复指定的虚拟机;

  所述故障恢复模块中对于云平台依赖的关键进程的恢复流程如图6所示,所述关键进程共同统计于进程列表中,周期性检查所述进程列表中的所有进程的运行状态,针对中断的进程尝试重启,所述进程重启成功后,则结束所述进程的恢复;所述进程重启失败后,对所述进程运行的故障节点进行隔离。

  所述物理机的网络状态故障与恢复操作的对应规则如图7所示:

  所述管理网络层网络中断、所述存储网络层和所述业务网络层网络正常时,只对管理员发送通知;所述存储网络层网络中断、所述管理网络层和所述业务网络层网络正常时,将其对应的计算节点隔离出集群,并将所述计算节点中的虚拟机疏散至其他网络状态正常的节点中;所述业务网络层网络中断、所述存储网络层和所述管理网络层的网络正常时,将对应的所述计算节点中的所述虚拟机疏散至其他网络状态正常的节点中;所述管理网络层和所述业务网络层网络中断、所述存储网络层网络正常时,将其对应的计算节点隔离出集群,并将所述计算节点中的虚拟机疏散至其他网络状态正常的节点中;所述管理网络层、所述存储网络层和所述业务网络层的网络状态均中断时,将其对应的计算节点隔离出集群,并将所述计算节点中的虚拟机疏散至其他网络状态正常的节点中。

  通过采用本发明公开的上述技术方案,得到了如下有益的效果:

  本发明公开了一种基于分布式故障监控的方法和虚拟机高可用系统,从物理机的管理网络层、存储网络层和业务网络层多个层面监控物理机故障,并检测虚拟机生命周期的异常和运行进程的运行状态;并及时针对不同的故障组合执行不同的反应动作,将中断的虚拟机及时恢复;本发明实现了从多个维度检测云平台中物理机的状态,避免因为某一网络层面的状态不正常的而触发HA操作,导致非预期的业务中断,根据不同的故障执行不同的隔离恢复操作,避免因为恢复业务的动作而引入非预期的故障,避免因为恢复故障虚拟机业务而造成其他虚拟机的中断,提高云平台的稳定性和可靠性;本发明通过对云平台依赖的相关进程进行检测,降低因为非云平台组件故障而导致业务不可用问题的排查难度;本发明实现了分布式故障检测,所有计算节点均是故障检测的执行单元,避免了因为单节点故障而造成高可用系统的不可用。

  以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。

《一种基于分布式故障监控的方法和虚拟机高可用系统.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式(或pdf格式)