一种基于控制节点的屏蔽信息写入方法及装置与流程

文档序号:15261871发布日期:2018-08-24 21:52阅读:278来源:国知局

本发明涉及一种虚拟机技术领域,尤其涉及一种基于控制节点的屏蔽信息写入方法及装置。



背景技术:

目前,随着容器技术和openstack的发展,出现了将openstack服务运行在容器中的项目kolla。由于openstack本身(包括通过kolla部署的openstack服务)不提供服务和虚拟机高可用的功能,一台计算节点的宕机、网络断开都会导致虚拟机不可用,计算节点进程的出错退出会导致计算服务的中断。这点往往难以满足用户的需求,因此作为一个能在生产环境中正常使用的openstack产品,应该提供虚拟机高可用的功能。

现在市面上实现服务高可用的方法一般有haproxy、lvs、nginx、keepalived等工具相结合。对于服务守护进程的监控、重启,一般有pacemaker和corosync或hearbeat相结合的方式,近期由于docker容器化服务的出现,已经有docker自身的容器自动重启功能实现。但docker并不提供避免脑裂的功能,因此基于docker的传统服务(未针对高可用优化过的服务)仍然要由pacemaker主动屏蔽失效的服务节点及服务,以避免脑裂,影响后端共享存储的数据完整性。

尽管在服务高可用方便已经有许多成熟的商用产品,但目前仍然未看到有商业化的虚拟机自动疏散实现。



技术实现要素:

为了克服现有技术的不足,本发明的目的之一在于提供一种基于控制节点的屏蔽信息写入方法。

本发明的目的之二在于提供一种基于控制节点的屏蔽信息写入装置。

本发明的目的之三在于提供一种基于计算节点的屏蔽方法。

本发明的目的之四在于提供一种基于计算节点的屏蔽装置。

本发明的目的之一采用如下技术方案实现:

一种基于控制节点的屏蔽信息写入方法,包括以下步骤:

状态读取步骤:读取共享存储装置上各个计算节点状态信息,所述计算节点状态信息包括节点状态信息、进程状态信息以及节点性能信息;

判断步骤:根据计算节点状态信息,判断所述计算节点是否出现故障;如果是,则执行屏蔽写入步骤;

屏蔽写入步骤:在共享存储装置中写入与计算节点对应的屏蔽信息;

自动疏散步骤:调用openstack疏散接口进行虚拟机自动疏散。

进一步地,所述屏蔽信息存储于共享存储装置中的持久存储中。

本发明的目的之二采用如下技术方案实现:

一种基于控制节点的屏蔽信息写入装置,包括以下模块:

状态读取模块:用于读取共享存储装置上各个计算节点状态信息,所述计算节点状态信息包括节点状态信息、进程状态信息以及节点性能信息;

判断模块:用于根据计算节点状态信息,判断所述待监控虚拟机是否出现故障;如果是,则执行屏蔽写入模块;

屏蔽写入模块:用于在共享存储装置中写入与计算节点对应的屏蔽信息;

自动疏散模块:用于调用openstack疏散接口进行虚拟机自动疏散。

本发明的目的之三采用如下技术方案实现:

一种基于计算节点的屏蔽方法,所述计算节点包括看门狗装置,包括以下步骤:

信息读取步骤:读取到共享存装置中存储有屏蔽信息时,停止写入看门狗装置;

重启步骤:检测到看门狗装置没有信息写入时,配置关闭或者重启计算节点物理机。进一步地,在节点重启步骤之后还包括以下步骤:判断共享存储装置中是否还有屏蔽信息,如果是,则拒绝启动计算节点上的服务操作。

进一步地,所述openstack虚拟机采用kolla搭建完成。

进一步地,所述计算节点在共享存储装置处设置有对应的存储节点,在存储节点内写入与计算节点对应的唯一id以及持续写入心跳信息;所述控制节点监控共享存储装置中的每个存储节点。

进一步地,所述看门狗装置为看门狗电路或者虚拟看门狗模块。

进一步地,每个计算节点上均运行pacemakerremote服务,并持续监控共享存储装中存储节点的状态。

本发明的目的之四采用如下技术方案实现:

一种基于计算节点的屏蔽装置,包括以下模块:

信息读取模块:用于读取到共享存装置中存储有屏蔽信息时,停止写入看门狗装置;

节点重启模块:用于检测到看门狗装置没有信息写入时,根据看门狗装置的配置关闭或者重启计算节点。

相比现有技术,本发明的有益效果在于:

本发明的基于控制节点的屏蔽信息写入方法通过在共享存储装置中设置屏蔽信息从而通过看门狗装置来实现故障节点的自我屏蔽,并使用以共享存储为后端的共享存储心跳机制保证节点重启之后服务被正确屏蔽,避免出现脑裂的情况。

附图说明

图1为本发明的基于openstack虚拟机的自动疏散方法的流程图;

图2为本发明的基于openstack虚拟机的自动疏散系统的架构图;

图3为本发明的共享存储装置和屏蔽故障节点机制示意图;

图4为实施例一的基于控制节点的屏蔽信息写入方法的流程图;

图5为实施例二的基于控制节点的屏蔽信息写入装置的结构图;

图6为实施例三的基于计算节点的屏蔽方法的流程图;

图7为实施例四的基于计算节点的屏蔽装置的结构图。

具体实施方式

下面,结合附图以及具体实施方式,对本发明做进一步描述,需要说明的是,在不相冲突的前提下,以下描述的各实施例之间或各技术特征之间可以任意组合形成新的实施例。

在现有的技术中,对于自动疏散会导致出现脑裂的问题,比如故障计算节点失去相应,而虚拟机仍在运行,这时启动新的虚拟机会导致后端共享存储数据损坏,因此对于自动疏散的系统必须有故障主机屏蔽的功能。一般的故障屏蔽功能是基于ipmi来实现和心跳来实现了,一般的操作是通过ipmi等硬件设备关闭或重启故障节点,并屏蔽其上的服务再启动。

由于并非所有服务器都支持ipmi等电源管理功能,因此本文选用watchdog实现故障节点的自我屏蔽,并使用以共享存储为后端的共享存储心跳机制保证在节点重启之后服务被正确屏蔽。这种实现方式有更强的普适性,不依赖于特殊的硬件设备;在进行后续操作上简单易行能够得到比较好的效果。其中watchdog也即指的是看门狗装置。

本发明设计了一个对openstack虚拟机进行自动疏散的方案,并保证再疏散后不出现脑裂的情况。目前采用的是与kolla容器化部署openstack方案相结合的形式,将自动疏散需要的各个服务运行在容器中以实现快速部署安装的目的。

本发明方案的结构由功能划分主要有三个部分:

心跳监控模块:目前利用容器化的pacemaker和corosync服务实现控制节点的服务监控,采用pacemakerremote机制摆脱pacemaker集群节点数量限制,以期可以管理上百计算节点。

故障屏蔽模块:自动重启和关闭模块,采用pacemakerstonith机制结合watchdog实现节点的重启和关闭。由pacemakersbd(sharedblockdeath)监控共享存储装置,并写入watchdog,一旦共享存储装置连接中断或被设置为屏蔽,则终止写入watchdog,由此导致虚拟机关机或重启。

由于节点屏蔽信息是写入到共享的持久存储中,因此故障主机重启后由于屏蔽信息的存在,其上的服务会被pacemaker阻止启动。

虚拟机疏散模块:虚拟机自动疏散功能的实现是调用openstack的手动疏散web接口实现的,由pacemaker集群内部节点调用检测计算节点状态,并在其故障时关闭故障节点并调用openstack手动疏散接口进行疏散。

如图2所示,其为本发明的openstack虚拟机的方案框架图,针对该框架图进行具体说明:传统负载均衡服务可以是不同的结构,haproxy、lvs等共享存储通过自动挂载挂载到各个节点上。pacemaker内部节点有数量限制,目前为16个。在这个方案中内部节点用于监控pacemakerremote节点上的服务及其主机的状态,并在发现故障节点时屏蔽操作。在每个计算节点上运行pacemakerremote服务,并持续监控共享存储状态,当发现被屏蔽或无法访问共享存储则触发watchdog,实现故障主机重启。当一个故障主机从故障中重启恢复过来时,pacemaker会检查共享存储中对应该主机的状态,由于计算节点服务是有pacemakerremote控制的,此时pacemakerremote会拒绝启动服务。

由于openstack自身不提供虚拟机自动疏散机制和故障计算节点屏蔽等功能,在实际生产环境中一个计算节点主机的宕机、网络中断将会导致虚拟机服务的中断。该发明可以在计算节点主机失效时及时在其他计算节点上迁移和重构故障计算节点上运行的虚拟机,并正确的屏蔽故障虚拟机避免出现脑裂的情况,损坏虚拟机的后端共享存储。

本方案是openstack虚拟机自动疏散方案,是解决在生产环境中计算节点出现故障时候的虚拟机疏散和故障节点屏蔽问题的解决方案。实施的软件和硬件要求:为了达到更好的效果,作为openstack计算节点主机应支持硬件watchdog。并在操作系统中加载驱动程序。必须是由kolla搭建完成的openstack环境,所有本方案相关的软件都安装并运行于docker容器环境中。

如图1所示,整个故障虚拟机监控的屏蔽流程中的关键过程如下:控制节点循环读取共享存储上的各个计算节点状态计算节点在共享存储上写入自己的id等信息,并循环更新其上的心跳时间;并开始写入watchdog,控制节点检测到某个计算节点的心跳信息超时,此时在共享存储装置中写入屏蔽信息;计算节点读取共享存储,知道自己被屏蔽,因此停止写入watchdog;watchdog检测到没有信息写入时自动根据配置关闭或重启计算节点。计算节点重启完成,再次检测自己在共享存储中的信息,如果仍被屏蔽,则拒绝启动计算节点上面的服务,以此避免脑裂的情况。

如果需要恢复某个计算节点,需要清除其上的虚拟机残余信息,再由管理人员配置共享存储上的屏蔽信息,以重新启用故障节点的服务。从而使得在整个自动疏散的过程中更为的自动化,并且能够避免出现脑裂的情况,

针对于本发明的共享存储装置与故障屏蔽节点机制进行简单说明,如图3所示,每个计算节点在共享存储中注册一个slot,并写入自己的唯一id,并持续写入心跳信息;每个控制节点都监控每个slot,由检测到心跳超时则写入屏蔽信息,通过写入屏蔽信息从而完成对计算节点的屏蔽。

上述为针对于整个方案的整体进行详细的说明,在下述具体实施例中,具体阐明对于不同实施主体具体是怎样去进行操作的。

实施例一:

本实施例针对的是控制节点的控制方法的流程设计,其主要针对的是控制节点的操作;如图4所示,本实施例提供了一种基于控制节点的屏蔽信息写入方法,包括以下步骤:

s101:读取共享存储装置上各个计算节点状态信息,所述计算节点状态信息包括节点状态信息、进程状态信息以及节点性能信息;首选需要读取各个计算节点的状态,如果该计算节点的状态是良好的,则正常运行不做任何的操作;

s102:根据计算节点状态信息,判断所述待监控虚拟机是否出现故障;如果是,则执行s3;这一步主要是为了判断获取到的计算节点的状态信息是否有异常,如果有异常则可以确定相应的待监控虚拟机出现了故障,需要对其进行屏蔽;

s103:在共享存储装置中写入屏蔽信息;在进行屏蔽的时候有几种屏蔽方式,在本实施中,创造性的选取了在共享存储装置中写入屏蔽信息的方式来达到目的,在共享存储中写入相应的屏蔽信息,使得看门狗装置在进行检测的时候,得知对应的虚拟机出现了异常,然后进行相应的关闭计算节点或者重启计算节点等操作。

s104:调用openstack疏散接口进行虚拟机自动疏散。虚拟机自动疏散功能的实现是调用openstack的手动疏散web接口实现的,由pacemaker集群内部节点调用检测计算节点状态,并在其故障时关闭故障节点并调用openstack手动疏散接口进行疏散;从而完成对虚拟机的自动疏散,在这个疏散的过程中由于屏蔽信息的存在,其可以屏蔽相应的服务节点从而避免出现脑裂,影响后端共享存储装置的数据完整性的问题。

实施例二:

如图5所示,本实施例提供了一种基于控制节点的屏蔽信息写入装置,包括以下模块:

状态读取模块:用于读取共享存储装置上各个计算节点状态,所述计算节点状态包括节点状态信息、进程状态信息以及节点性能信息;

判断模块:用于根据计算节点状态信息,判断所述待监控虚拟机是否出现故障;如果是,则执行屏蔽写入模块;

屏蔽写入模块:用于在共享存储装置中写入屏蔽信息;

自动疏散模块:用于调用openstack疏散接口进行虚拟机自动疏散。

实施例三:

如图6所示,本实施例提供了一种基于计算节点的屏蔽方法,所述计算节点包括看门狗装置,所述openstack虚拟机采用kolla搭建完成。包括以下步骤:

s301:读取到共享存装置中存储有屏蔽信息时,停止写入看门狗装置;所述计算节点在共享存储装置处设置有对应的存储节点,在存储节点内写入与计算节点对应的唯一id以及持续写入心跳信息;所述控制节点监控共享存储装置中的每个存储节点。所述看门狗装置为看门狗电路或者虚拟看门狗模块。每个计算节点上均运行pacemakerremote服务,并持续监控共享存储装中存储节点的状态。

s302:检测到看门狗装置没有信息写入时,根据看门狗装置的配置关闭或者重启虚拟机,每个计算节点与一虚拟机相对应;也即是由于在共享存储装置中写入有屏蔽信息,从而使得计算节点知道自己被屏蔽,从而使得看门狗装置中没有信息写入,watchdog检测到没有信息写入时自动根据配置关闭或重启计算节点。

s303:判断共享存储装置中是否还有屏蔽信息,如果是,则拒绝启动计算节点上的服务操作。计算节点重启完成,再次检测自己在共享存储中的信息,如果仍被屏蔽,则拒绝启动计算节点上面的服务,以此避免脑裂的情况。

如果需要恢复某个计算节点,需要清除其上的虚拟机残余信息,再由管理人员配置共享存储上的屏蔽信息,以重新启用故障节点的服务。

实施例四:

如图7所示,本实施例提供了一种基于计算节点的屏蔽装置,包括以下模块:

信息读取模块:用于读取到共享存装置中存储有屏蔽信息时,停止写入看门狗装置;

节点重启模块:用于检测到看门狗装置没有信息写入时,根据看门狗装置的配置关闭或者重启计算节点。

上述实施方式仅为本发明的优选实施方式,不能以此来限定本发明保护的范围,本领域的技术人员在本发明的基础上所做的任何非实质性的变化及替换均属于本发明所要求保护的范围。

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