一种虚拟机防脑裂的管理方法及主服务器与流程

文档序号:20009116发布日期:2020-02-22 03:53阅读:856来源:国知局
一种虚拟机防脑裂的管理方法及主服务器与流程

本发明涉及云计算领域,尤其涉及一种虚拟机防脑裂的管理方法、主服务器、云计算系统及计算机可读介质。



背景技术:

虚拟机高可用(highavailability,ha)技术,可以保证在出现物理机故障或者网络故障时,虚拟机能够自动迁移到其他节点上,该功能在云环境下很有价值,越来越多的云平台都提供虚拟机ha功能。云平台网络分为3个平面,如图1所示,分别是管理平面、业务平面、存储平面。管理平面主要用于云平台内部,用于虚拟机或物理机的管理使用的网络,业务平面主要是虚拟机提供服务使用的网络,存储平面主要是虚拟机访问后端存储使用的网络,3个网络直接都是相互隔离的。当计算节点上的3个网络平面中,管理平面和业务平面都异常,但存储平面正常的情况下容易发生虚拟机脑裂。如图2所示,这种情况下虚拟机业务已经中断,按照正常逻辑需要将虚拟机在其他计算节点上面恢复。例如计算节点1故障,虚拟机在计算节点2上启动,虚拟机启动后,由于计算节点1上面的虚拟机还是能够通过存储网络对volume进行读写,此时就出现了虚拟机脑裂,虚拟机脑裂会带来很严重的问题,由于两个虚拟机都在对同一个卷做读写,会导致用户的数据被覆盖,业务异常。但是在提供虚拟机ha功能时,需要解决网络故障引起的虚拟机脑裂问题。

现有技术中,为了避免虚拟机ha过程中导致的脑裂情况,需要引入锁,通过为每个虚拟机加锁来避免脑裂,锁服务的运行示意图如图3所示。

在系统中引入一套全局的锁服务,如scsi-3协议中的perseistentreservations机制,虚拟机在启动前向锁服务申请一把锁,申请到锁以后,运行过程中一直持有这把锁,当发生故障时,在新的计算节点上恢复虚拟机时也需要先申请锁,如果申请到了,则把虚拟机恢复,如果申请锁失败,则不启动虚拟机。

引入锁服务的方法在一定程度上也能够避免虚拟机脑裂,但是可能存在由于锁服务异常导致的系统异常。在正常情况下,如果出现锁服务异常,会导致新创建的虚拟机因无法申请到锁而无法启动;虚拟机在运行过程中,锁服务异常会导致虚拟机被错误关闭;在恢复过程中,如果出现锁服务异常,会导致申请锁失败。



技术实现要素:

针对现有技术的以上缺陷或改进需求,本发明提出了一种虚拟机防脑裂的管理方法、主服务器、云计算系统及计算机可读介质,能够解决现有技术中由于锁服务异常导致的系统异常问题。

根据本发明的一个方面,本发明提供了一种虚拟机防脑裂的管理方法,包括步骤:

当主服务器检测到第一服务器上的第一虚拟机无法正常工作,在第二服务器上创建第二虚拟机,并使第二虚拟机获得第一虚拟机对应的存储卷的访问权限;

主服务器发送指令给第二服务器,使第二服务器读取第一虚拟机对应的存储卷中的状态信息,根据该状态信息确定是否启动第二虚拟机。

作为本发明的进一步改进,在主服务器检测到第一服务器上的第一虚拟机无法正常工作前,该方法还包括步骤:

主服务器创建存储卷,为该存储卷分配状态信息存储空间;

主服务器在第一服务器上创建第一虚拟机,将第一虚拟机的状态信息写入该状态信息存储空间;

主服务器发送指令给第一服务器,使第一服务器启动第一虚拟机,定期更新状态信息。

作为本发明的进一步改进,该方法还包括步骤:

第一虚拟机启动后当第一服务器检测到第一服务器连接的业务平面无法正常工作,关闭第一虚拟机。

作为本发明的进一步改进,根据状态信息确定是否启动第二虚拟机具体是:

若根据状态信息确定存储卷对应的第一虚拟机仍在运行,则不启动第二虚拟机;

若根据状态信息确定存储卷对应的第一虚拟机未运行,则启动第二虚拟机。

作为本发明的进一步改进,确定不启动第二虚拟机后,该方法还包括步骤:

间隔预设时间后,第二服务器重新读取存储卷中的状态信息,根据状态信息确定是否启动第二虚拟机。

根据本发明的第二方面,本发明提供了一种主服务器,包括:

第二虚拟机创建模块,用于当主服务器检测到第一服务器上的第一虚拟机无法正常工作,在第二服务器上创建第二虚拟机,并使第二虚拟机获得第一虚拟机对应的存储卷的访问权限;

确定模块,用于指示第二服务器读取存储卷中的状态信息,根据状态信息确定是否启动第二虚拟机。

根据本发明的第三方面,本发明提供了一种云计算系统,包括主服务器、第一服务器和第二服务器,其特征在于,包括:

主服务器,用于当检测到第一服务器上的第一虚拟机无法正常工作,在第二服务器上创建第二虚拟机,并使得第二虚拟机获得第一虚拟机对应的存储卷的访问权限;

主服务器还用于指示第二服务器读取存储卷中的状态信息,根据状态信息确定是否启动第二虚拟机。

第二服务器,用于根据主服务器的指示读取存储卷中的状态信息,并根据状态信息确定是否启动第二虚拟机。

根据本发明的第四方面,本发明提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述任一项方法。

综上所述,总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下有益效果:

(1)发现第一虚拟机不能正常工作时,获取心跳信息进行心跳检查,当心跳检查不通过时可以禁止启动第二虚拟机,避免了第一虚拟机和第二虚拟机同时访问存储卷,避免发生脑裂。该方法不需要额外的第三方锁服务,通过存储卷的检查就能判断出是否存在脑裂,解决了现有技术中由于第三方锁服务异常导致的虚拟机无法启动或被错误关闭等问题。另外,该方法基于这种存储方式,防脑裂检测和存储卷的io路径相同,不会出现锁服务异常而导致误判的情况,可靠性高,对虚拟机脑裂的检测粒度更细,检测结果更准确。

(2)实现了故障节点上虚拟机自动隔离的机制。在每个计算节点上都会定期检查3个网络平面的情况,当检查发现管理网络和业务网络都不通,但是存储心跳还是正常的,此时该虚拟机已经无法提供服务,则判定将该虚拟机关闭,也就是自动隔离。

(3)虚拟机运行过程中卷的心跳更新可能会失败,也同时意味着数据读写失败,重试机制会使得不会由于一次心跳检测未通过而误关闭虚拟机,提高心跳检查的可靠性。

附图说明

图1是虚拟机高可用技术架构示意图;

图2是虚拟机高可用技术脑裂示意图;

图3是现有技术中防脑裂锁服务原理示意图;

图4是本发明实施例一的虚拟机防脑裂的管理方法流程示意图;

图5是本发明实施例一的虚拟机防脑裂的管理方法原理示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。

为了便于理解,示例地给出了部分与本申请相关概念的说明以供参考。如下所示:

虚拟机(virtualmachine,vm):vm指由虚拟化平台模拟出来的一台虚拟的计算机,也即逻辑上的一台计算机。在计算机中,虚拟化(virtualization)是一种资源管理技术,是将计算机的各种资源,如计算、网络、及存储等,抽象整合为资源池,打破实体结构间的资源隔离,使用户可以以更灵活的方式应用这些资源。在虚拟化场景下,一个服务器中可以运行至少一个虚拟机。vm所需要的计算资源、存储资源以及网络资源等可以由虚拟化资源管理(virtualresourcemanagement,vrm)统一管理。

存储卷:服务器集群中的服务器上运行的vm可以在存储集群中被分配有相应的存储空间,其相应的存储空间可以记为存储卷。

主服务器:服务器集群中执行控制节点管理功能的服务器,可以在其上创建ha调度器来通过管理平面管理所有的物理服务器上的vm以及vm对应的资源。

本发明实施例的一种虚拟机防脑裂的管理方法可以如图4所示,包括:

s401,当主服务器检测到第一服务器上的第一虚拟机无法正常工作,在第二服务器上创建第二虚拟机,并使得第二虚拟机获得第一虚拟机对应的存储卷的访问权限。

此即为虚拟机ha的过程,这样可以保证在出现物理机故障或者网络故障时,虚拟机能够自动迁移到其他节点上,新的虚拟机可以替代旧的虚拟机,访问旧的虚拟机对应的资源,执行操作。

s402,主服务器指示第二服务器读取存储卷中的状态信息,根据状态信息确定是否启动第二虚拟机。

这样,发现第一虚拟机不能正常工作时,主服务器发送指令给第二服务器,让第二服务器获取心跳信息进行心跳检查,当心跳检查不通过时可以禁止启动第二虚拟机,避免了第一虚拟机和第二虚拟机同时访问存储卷,避免发生脑裂。该方法不需要额外的第三方锁服务,通过存储卷的检查就能判断出是否存在脑裂,解决了现有技术中由于第三方锁服务异常导致的虚拟机无法启动或被错误关闭等问题。另外,该方法基于分布式存储,防脑裂检测和存储卷的读写io路径相同,不会出现锁服务异常而导致误判的情况,可靠性高,对虚拟机脑裂的检测粒度更细,检测结果更准确。由于该方法通过存储内部的私有接口访问状态信息,还非常适用于提供私有客户端的分布式存储场景。

该方法还可以包括步骤s403,第一虚拟机启动后当第一服务器检测到第一服务器连接的业务平面无法正常工作,关闭第一虚拟机。

在主服务器定期检测虚拟机状态的同时,第一服务器也会定期检测管理平面、业务平面、存储平面的状态。在故障第一服务器上,检查本地的网络情况和存储心跳情况,如果发现业务网络异常,则将第一虚拟机关闭,实现虚拟机在原计算节点上的隔离。虚拟机被隔离后,经过一段时间,虚拟机在新的服务器上检查存储卷的心跳正常,第二虚拟机正常启动。

这样,实现了故障节点上虚拟机自动隔离的机制。在每个计算节点上都会定期检查管理平面、业务平面、存储平面3个网络平面的情况,当检查发现管理网络和业务网络都不通,但是存储心跳还是正常的,此时该虚拟机已经无法提供服务,则判定将该虚拟机关闭,也就是自动隔离。虚拟机在原计算节点上隔离以后,经过一段时间,虚拟机在新的计算节点上检查卷的心跳正常,虚拟机正常恢复。

实施例提供的虚拟机防脑裂的管理方法的原理示意图参照图5所示,结合图5说明,该管理方法包括步骤:

s601:主服务器创建存储卷并为存储卷分配状态信息存储空间。

存储卷包括两部分,状态信息存储空间和数据存储空间。在创建卷时,主服务器默认为存储卷分配一个状态信息存储空间,该状态信息存储空间类似于卷的元数据,其对用户隐藏不可见,可以通过存储内部接口进行访问,写入状态信息。可以根据状态信息判断存储卷对应的虚拟机是否运行,状态信息可以是心跳信息,也可以其他关键字段。数据存储空间就是给用户使用的存储容量,其还存储有虚拟机的操作系统。存储卷的读写都是通过存储网络到达存储设备上的。

s602,主服务器在第一服务器上创建第一虚拟机,将第一虚拟机的状态信息写入存储卷的状态信息存储空间。

下面以关键信息为心跳信息,第一虚拟机为vm1进行说明,并假设vm1创建于计算节点1即第一服务器。

主服务器读取存储卷中的操作系统,在计算节点1上创建vm1,vm1可以访问其对应的存储卷。虚拟机创建时,通过内部接口将vm1ha心跳写入vm1对应的存储卷中。如果虚拟机有多个存储卷,则每个存储卷中都写一份独立的心跳信息。心跳信息包括:写入时间、心跳周期等信息。

s603,第一服务器启动第一虚拟机,定期更新存储卷的状态信息。

虚拟机运行过程中,通过内部接口定期更新卷的心跳信息,更新周期可以设定为秒级。

s604,当主服务器检测到第一服务器上的第一虚拟机无法正常工作,在第二服务器上创建第二虚拟机,并使得第二虚拟机获得第一虚拟机对应的存储卷的访问权限。

假设第二虚拟机为vm2,并假设vm2创建于计算节点2即第二服务器。

主服务器定期检测vm1的状态。当检测到计算节点1网络发生故障,主服务器的ha调度器检测到网络异常,触发ha过程,由ha调度器选择在计算节点2恢复该虚拟机。当计算节点1中包括多个虚拟机时,选择新的计算节点上逐个恢复该多个虚拟机。

此即为虚拟机ha的过程,可以保证在出现物理机故障或者网络故障时,虚拟机能够自动迁移到其他节点上,新的虚拟机可以替代旧的虚拟机,访问旧的虚拟机对应的资源,执行操作。

s605,第二服务器读取存储卷中的状态信息,根据状态信息确定是否启动第二虚拟机。

计算节点2先读取vm2访问的存储卷的最新心跳信息,也即最开始vm1访问的存储卷,执行心跳检查。

如果心跳检查通过,即t1<t2-t3,t1为获取的最新心跳时间,t2为当前时间,t3为预设时间阈值,则表明该存储卷上已经没有运行的虚拟机,可以正常启动vm2。如果心跳检查不通过,即t1>t2-t3,则表明当前这个卷上还有虚拟机在运行,不能启动vm2。

可以在心跳检查不通过时,则等待一段时间后重试,等待时间大于心跳更新的时间。虚拟机运行过程中卷的心跳更新可能会失败,也意味着数据读写失败,重试机制会使得不会由于一次心跳检查未通过误关闭虚拟机,提高心跳检查的可靠性。

这样,通过定期更新心跳信息,发现vm1不能正常工作时,获取心跳信息进行心跳检查,当心跳检查不通过时禁止启动vm2,避免了vm1和vm2同时访问存储卷,避免发生脑裂。

一个优选实施例提供的虚拟机防脑裂的管理方法,还包括步骤s606,

s606,第一虚拟机启动后当第一服务器检测到业务平面无法正常工作,关闭第一虚拟机。

在第一虚拟机启动后主服务器定期检测虚拟机状态的同时,计算节点1也会定期检测管理平面、业务平面、存储平面的状态。在故障计算节点1上,检查本地的网络情况和存储心跳情况,如果发现业务网络异常,则将vm1关闭,实现虚拟机在原计算节点上的隔离。虚拟机被隔离后,经过一段时间,虚拟机在新的计算节点2上检查卷的心跳正常,vm2正常启动。

应当理解的是,虽然上述各个步骤按照序号的依次显示,但是这些步骤并不是必然按照序号指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其他的顺序执行。

本发明实施例的一种主服务器,即图1中控制节点,其上有ha调度器,来实现云计算系统中其他各个服务器的管理,包括:

第二虚拟机创建模块,用于在主服务器检测到第一服务器上的第一虚拟机无法正常工作时,在第二服务器上创建第二虚拟机,并使第二虚拟机获得第一虚拟机对应的存储卷的访问权限;

确定模块,用于主服务器发送指令给第二服务器,让第二服务器读取存储卷中的状态信息,根据该状态信息确定是否在第二服务器上启动第二虚拟机。

在一个优选实施例中,主服务器还包括:

存储卷创建模块,用于主服务器为创建存储卷,为存储卷分配状态信息存储空间;第一虚拟机创建模块,用于主服务器在第一服务器上创建第一虚拟机,将第一虚拟机的状态信息写入状态信息存储空间;状态信息更新模块,用于指示第一服务器启动第一虚拟机,定期更新状态信息。

主服务器还可以包括:

关闭模块,用来当第一服务器检测到业务平面无法正常工作,关闭第一虚拟机。

本发明实施例提供的一种云计算系统,包括主服务器、第一服务器和第二服务器;

其中,主服务器用于当检测到第一服务器上的第一虚拟机无法正常工作,在第二服务器上创建第二虚拟机,并使得第二虚拟机获得第一虚拟机对应的存储卷的访问权限;主服务器还用于指示第二服务器读取存储卷中的状态信息,根据状态信息确定是否启动第二虚拟机;

第二服务器用于根据主服务器的指示读取存储卷中的状态信息,并根据状态信息确定是否启动第二虚拟机。

主服务器实现原理和技术效果与上述方法类似,此处不再赘述。

为了实现上述实施例,本发明实施例还提出一种电子设备,包括:处理器和存储器;其中,存储器和处理器之间直接或间接地电性连接,以实现数据的传输或交互;存储器中存储有计算机程序,计算机程序被处理器执行时可以实现上述任一方法实施例的技术方案。存储器中存储有上述虚拟机防脑裂的管理方法的计算机程序,包括至少一个可以软件或固件的形式存储于存储器中的软件功能模块,处理器通过运行存储在存储器内的软件程序以及模块,从而执行各种功能应用以及数据处理。

处理器可以是一种集成电路芯片,具有信号的处理能力。处理器在接收到执行指令后,执行程序。可选的,上述存储器内的软件程序以及模块还可包括操作系统,其可包括各种用于管理系统任务(例如内存管理、存储设备控制、电源管理等)的软件组件和/或驱动,并可与各种硬件或软件组件相互通信,从而提供其他软件组件的运行环境。

本实施例提供的电子设备,可以用于执行上述任一方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。

本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行以实现上述任一方法实施例的技术方案。

本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

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