一种管理虚拟机集群的实施方法、计算机设备及存储介质转让专利

申请号 : CN202210386724.9

文献号 : CN114461352B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 杨伟鹏韩帆史伟

申请人 : 广东睿江云计算股份有限公司

摘要 :

本申请涉及计算机技术领域,具体涉及一种管理虚拟机集群的实施方法、计算机设备及存储介质。该方法应用于管理中心管理虚拟机,包括:基于mosquitto服务,在虚拟机内部管理工具qemu‑agent程序上设置代理模块,使虚拟机远程接收管理指令;在管理中心设置处理模块,通过mosquitto发布命令到虚拟机上。本申请结合mosquitto提升管理过程的稳定性,实现了虚拟机远程接收管理指令功能,并且,实现了通过mosquitto发布命令到虚拟机上。通过mqtt协议代替原有SSH协议使用,大大降低故障率,避免存在数据安全隐患,同时提高运维效率,一旦出现异常,立即通知运维人员。

权利要求 :

1.一种管理虚拟机集群的实施方法,其特征在于,应用于管理中心管理虚拟机,包括以下步骤:基于mosquitto 服务,在虚拟机内部管理工具qemu‑agent程序上设置代理模块,使虚拟机远程接收管理指令;

在管理中心设置处理模块,通过mosquitto发布命令到虚拟机上;

所述管理虚拟机集群的实施方法,还包括:在所述管理中心的qemu‑agent‑command控制程序上设置处理模块;

所述在虚拟机内部管理工具qemu‑agent程序上设置代理模块,包括:在虚拟机内部系统启动并已成功运行qemu‑agent之后,检查是否存在证书文件,若无则从指定http服务下载证书文件;

获取虚拟机内部系统的用户名字,订阅mosquitto中与用户名字一致的私有主题;

订阅mosquitto中的公共主题,使用单独线程监听接收私有主题和公共主题的消息;

解析消息内容并转换格式后执行命令,将结果重新打包发送到对应主题。

2.如权利要求1所述的管理虚拟机集群的实施方法,其特征在于,所述证书文件用于加密mqtt通信网络连接和身份验证。

3.如权利要求1所述的管理虚拟机集群的实施方法,其特征在于,所述私有主题用于接收管理中心单独向所述虚拟机发布的操作命令。

4.如权利要求1所述的管理虚拟机集群的实施方法,其特征在于,所述公共主题用于接收管理中心的群发命令。

5.如权利要求1所述的管理虚拟机集群的实施方法,其特征在于,所述转换格式为转换成原有qemu‑agent程序能识别的格式。

6.如权利要求1所述的管理虚拟机集群的实施方法,其特征在于,所述在管理中心设置处理模块,包括:在管理中心创建公共主题;

根据虚拟机名字创建私有主题;

将操作命令发布到相应的公共主题和私有主题上;

解析返回结果,在界面展示给运维人员;

检查mosquitto服务的运行状态,运行状态异常时,立即通知运维人员。

7.一种计算机设备,包括:至少一个处理器,以及与所述至少一个处理器通信连接的存储器,其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器执行权利要求1至6中任一项所述的管理虚拟机集群的实施方法。

8.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,其特征在于,所述计算机指令用于使所述计算机执行权利要求1至6中任一项所述的管理虚拟机集群的实施方法。

说明书 :

一种管理虚拟机集群的实施方法、计算机设备及存储介质

技术领域

[0001] 本申请涉及计算机技术领域,具体涉及一种管理虚拟机集群的实施方法、计算机设备及存储介质。

背景技术

[0002] 目前业界上管理或者控制虚拟机集群的方式,通常是使用SSH(Secure Shell,安全外壳协议)登录宿主机执行对应的qemu‑agent命令,当宿主机与管理中心不在同一网段业界通常采用三种手段来解决:
[0003] 1)搭建虚拟网络使宿主机与管理中心处于同一网段。
[0004] 2)宿主机使用独立IP暴露在外网,让管理中心直接访问。
[0005] 3)在宿主机所在网络部署一个SSH中转服务器并使用独立IP暴露在外网,管理中心使用SSH登录到SSH中转服务器后,再进一步使用SSH登录到宿主机。
[0006] 参见图1所示,现有业界管理中心管理虚拟机(Virtual Machine,简称VM)的方式有两种:
[0007] 一、通过独立IP或者VPN网络SSH登录到宿主机,在宿主机执行qemu‑agent‑command控制程序,发送需要执行的命令(重启、关机、返回状态等)到虚拟机(VM)内部的qemu‑agent进程,qemu‑agent进程接收到后执行对应操作。
[0008] 二、部署SSH中继服务器。管理中心SSH登录到SSH中继服务器,进一步再SSH登录到宿主机,在宿主机执行qemu‑agent‑command控制程序,发送需要执行的命令(重启、关机、返回状态等)到虚拟机(VM)内部的qemu‑agent进程,qemu‑agent进程接收到后执行对应操作。
[0009] 上述第一种方式存在以下问题:
[0010] (1)虚拟网络VPN搭建成本高运维成本大,qemu‑agent命令占用带宽极低,成本投入不对称。
[0011] (2)当宿主机数量过多的时候,独立IP资源消耗大。
[0012] (3)SSH协议底层是TCP协议,管理中心管理多台宿主机的通信需要维持大量TCP协议。
[0013] 上述第二种方式存在以下问题:
[0014] SSH协议在网络不佳的情况下不稳定,多级SSH跳转增加流程不确定性。
[0015] 因此,上述两种方式都最终都是通过宿主机执行qemu‑agent‑command对虚拟机(VM)进行控制,宿主机能观察到管理中心对虚拟机(VM)发出的指令,参见图2所示,当中存在数据安全隐患。

发明内容

[0016] 为了解决通过宿主机执行qemu‑agent‑command对虚拟机(VM)进行控制,宿主机能观察到管理中心对虚拟机(VM)发出的指令,存在数据安全隐患的问题,本申请构建了一种基于mosquitto管理qemu虚拟机集群的实施方法、计算机设备及存储介质,利用mqtt协议的订阅‑发布模式与QoS(Quality of Service)服务质量功能,通过mosquitto 服务与管理中心直接通信,符合低成本、服务稳定以及网络安全要求。
[0017] 本申请采用以下技术方案实现:
[0018] 一种管理虚拟机集群的实施方法,应用于管理中心管理虚拟机,包括以下步骤:
[0019] 基于mosquitto 服务,在虚拟机内部管理工具qemu‑agent程序上设置代理模块,使虚拟机远程接收管理指令;
[0020] 在管理中心设置处理模块,通过mosquitto发布命令到虚拟机上。
[0021] 可选的,所述管理虚拟机集群的实施方法中,在所述管理中心的qemu‑agent‑command控制程序上设置处理模块。
[0022] 可选的,所述在虚拟机内部管理工具qemu‑agent程序上设置代理模块,包括:
[0023] 在虚拟机内部系统启动并已成功运行qemu‑agent之后,检查是否存在证书文件,若无则从指定http服务下载证书文件;
[0024] 获取虚拟机内部系统的用户名字,订阅mosquitto中与用户名字一致的私有主题;
[0025] 订阅mosquitto中的公共主题,使用单独线程监听接收私有主题和公共主题的消息;
[0026] 解析消息内容并转换格式后执行命令,将结果重新打包发送到对应主题。
[0027] 可选的,所述证书文件用于加密mqtt通信网络连接和身份验证。
[0028] 可选的,所述私有主题用于接收管理中心单独向所述虚拟机发布的操作命令。
[0029] 可选的,所述公共主题用于接收管理中心的群发命令。
[0030] 可选的,所述转换格式为转换成原有qemu‑agent程序能识别的格式。
[0031] 可选的,所述在管理中心设置处理模块,包括:
[0032] 在管理中心创建公共主题;
[0033] 根据虚拟机名字创建私有主题;
[0034] 将操作命令发布到相应的公共主题和私有主题上;
[0035] 解析返回结果,在界面展示给运维人员;
[0036] 检查mosquitto服务的运行状态,运行状态异常时,立即通知运维人员。
[0037] 可选的,所述运维人员从管理中心的接口管理虚拟机。
[0038] 本申请还包括一种计算机设备,包括:至少一个处理器,以及与所述至少一个处理器通信连接的存储器,其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器执行所述的管理虚拟机集群的实施方法。
[0039] 本申请还包括一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使所述计算机执行所述的管理虚拟机集群的实施方法。
[0040] 本申请提供的技术方案,具有如下有益效果:
[0041] 本申请提供的管理虚拟机集群的实施方法、计算机设备及存储介质,结合mosquitto 提升管理过程的稳定性,通过为虚拟机内部管理工具qemu‑agent程序设置的代理模块,实现虚拟机(VM)远程接收管理指令功能,为管理中心的qemu‑agent‑command控制程序上设置处理模块,实现通过mosquitto发布命令到虚拟机(VM)上,通过mqtt协议代替原有SSH协议使用,大大降低故障率,避免存在数据安全隐患,同时提高运维效率,一旦出现异常,立即通知运维人员。
[0042] 本申请的这些方面或其他方面在以下实施例的描述中会更加简明易懂。应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。

附图说明

[0043] 为了更清楚地说明本申请实施例或相关技术中的技术方案,下面将对示例性实施例或相关技术描述中所需要使用的附图作一简单地介绍,附图用来提供对本申请的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本申请,并不构成对本申请的限制。在附图中:
[0044] 图1为现有业界管理中心管理虚拟机的两种方式的逻辑原理示意图。
[0045] 图2为现有业界管理中心管理虚拟机接收命令方式的逻辑原理示意图。
[0046] 图3为本申请提供的一种管理虚拟机集群的实施方法的流程图。
[0047] 图4为本申请提供的一种管理虚拟机集群的实施方法中设置代理模块的流程图。
[0048] 图5为本申请提供的一种管理虚拟机集群的实施方法中示意mosquitto作为mqtt通信中介的逻辑原理示意图。
[0049] 图6为本申请提供的一种管理虚拟机集群的实施方法中设置处理模块的流程图。
[0050] 图7为本申请提供的一种管理虚拟机集群的实施方法中虚拟机接收命令方式的逻辑原理示意图。

具体实施方式

[0051] 为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。
[0052] 在本申请的说明书和权利要求书及上述附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如101、102等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
[0053] 下面将结合本申请示例性实施例中的附图,对本申请示例性实施例中的技术方案进行清楚、完整地描述,显然,所描述的示例性实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
[0054] 由于目前业界上管理或者控制虚拟机集群的方式,通常是使用SSH(Secure Shell,安全外壳协议)登录宿主机执行对应的qemu‑agent命令。现有业界管理中心管理虚拟机(Virtual Machine,简称VM)的两种方式中。第一种方式在通过独立IP或者VPN网络SSH登录到宿主机,在宿主机执行qemu‑agent‑command控制程序,发送需要执行的命令(重启、关机、返回状态等)到虚拟机(VM)内部的qemu‑agent进程,qemu‑agent进程接收到后执行对应操作时,存在虚拟网络VPN搭建成本高运维成本大,qemu‑agent命令占用带宽极低,成本投入不对称;当宿主机数量过多的时候,独立IP资源消耗大;以及SSH协议底层是TCP协议,管理中心管理多台宿主机的通信需要维持大量TCP协议的问题。
[0055] 第二种方式在、部署SSH中继服务器。管理中心SSH登录到SSH中继服务器,进一步再SSH登录到宿主机,在宿主机执行qemu‑agent‑command控制程序,发送需要执行的命令(重启、关机、返回状态等)到虚拟机(VM)内部的qemu‑agent进程,qemu‑agent进程接收到后执行对应操作时,存在SSH协议在网络不佳的情况下不稳定,多级SSH跳转增加流程不确定性。
[0056] 针对上述的最终都是通过宿主机执行qemu‑agent‑command对虚拟机(VM)进行控制,宿主机能观察到管理中心对虚拟机(VM)发出的指令所导致的存在数据安全隐患的问题。
[0057] 本申请提供的一种管理虚拟机集群的实施方法、计算机设备及存储介质,利用mqtt协议的订阅‑发布模式与QoS(Quality of Service)服务质量功能,通过mosquitto 服务与管理中心直接通信,符合低成本、服务稳定以及网络安全要求。
[0058] 需要特别说明的是,在本申请中:
[0059] mosquitto 作为一款实现了消息推送协议 MQTT v3.1 的开源消息服务器软件,提供轻量级的,支持可发布/可订阅的消息推送模式,使设备对设备之间的短消息通信变得简单,比如现在应用广泛的低功耗传感器,手机、嵌入式计算机、微型控制器等移动设备。
[0060] qemu作为一款开源的模拟器及虚拟机监管器(Virtual Machine Monitor, VMM)。Qemu Guest Agent简称QGA,是在虚拟机中运行的守护进程,可以管理应用程序,执行宿主机发出的命令。
[0061] qemu‑agent作为运行在虚拟机内部的一个守护程序,(qemu‑guest‑agent.service),其用于辅助qemu实现对Guest的管理。Qemu为宿主机和虚拟机提供了一个数据通道(channel),这个通道的两端分别是在虚拟机内看到的串口和在宿主机上看到的unix socket文件。宿主机与虚拟机内的QGA通讯就扩展了对虚拟机的控制能力,例如在宿主机上获取虚拟机的ip地址等。
[0062] “管理中心”是多个业务程序与组件组成的业务系统,运维人员从“管理中心”的接口管理虚拟机(VM)。
[0063] 下面结合具体实施例对本申请的技术方案作进一步的说明:
[0064] 参阅图3所示,图3为本申请提供的一种管理虚拟机集群的实施方法的流程图。本申请的一个实施例提供了一种管理虚拟机集群的实施方法,应用于管理中心管理虚拟机,包括以下步骤S10‑步骤S20。
[0065] S10、基于mosquitto 服务,在虚拟机内部管理工具qemu‑agent程序上设置代理模块,使虚拟机远程接收管理指令。
[0066] 参阅图4所示,图4为本申请提供的一种管理虚拟机集群的实施方法中设置代理模块的流程图。所述在虚拟机内部管理工具qemu‑agent程序上设置代理模块,包括:
[0067] S101、在虚拟机内部系统启动并已成功运行qemu‑agent之后,检查是否存在证书文件,若无则从指定http服务下载证书文件;
[0068] S102、获取虚拟机内部系统的用户名字,订阅mosquitto中与用户名字一致的私有主题;
[0069] S103、订阅mosquitto中的公共主题,使用单独线程监听接收私有主题和公共主题的消息;
[0070] S104、解析消息内容并转换格式后执行命令,将结果重新打包发送到对应主题。
[0071] 本申请实施例通过增加qemu agent程序网络功能,实现虚拟机(VM)远程接收管理指令功能。参阅图5所示,图5为本申请提供的一种管理虚拟机集群的实施方法中示意mosquitto作为mqtt通信中介的逻辑原理示意图。实现虚拟机(VM)远程接收管理指令功能过程如下:
[0072] 1)在虚拟机(VM)内部系统启动并已成功运行qemu agent之后,检查是否存在证书文件,若无则从指定http服务下载证书文件ca.crt、 client.csr、client.key,用于加密mqtt通信网络连接和身份验证。
[0073] 2)获取虚拟机(VM)内部系统的用户名字,订阅mosquitto中与用户名字一样的“私有主题”。“私有主题”用于接收管理中心单独向该虚拟机(VM)发布操作命令。
[0074] 3)订阅mosquitto中的“公共主题”。用于接收管理中心的群发命令。
[0075] 4)使用单独线程监听接收主题的消息。
[0076] 5)解析消息内容,转换成原有qemu agent程序能识别的格式。
[0077] 6)执行命令,并把结果重新打包发送到对应主题。
[0078] 本申请的实施例中,所述证书文件用于加密mqtt通信网络连接和身份验证。
[0079] 本申请的实施例中,所述私有主题用于接收管理中心单独向所述虚拟机发布的操作命令。
[0080] 本申请的实施例中,所述公共主题用于接收管理中心的群发命令。
[0081] 本申请的实施例中,所述转换格式为转换成原有qemu‑agent程序能识别的格式。
[0082] S20、在管理中心设置处理模块,通过mosquitto发布命令到虚拟机上。
[0083] 在本申请的实施例中,所述管理虚拟机集群的实施方法中,在所述管理中心的qemu‑agent‑command控制程序上设置处理模块。
[0084] 参阅图6所示,图6为本申请提供的一种管理虚拟机集群的实施方法中设置处理模块的流程图。所述在管理中心设置处理模块,包括:
[0085] S201、在管理中心创建公共主题;
[0086] S202、根据虚拟机名字创建私有主题;
[0087] S203、将操作命令发布到相应的公共主题和私有主题上;
[0088] S204、解析返回结果,在界面展示给运维人员;
[0089] S205、检查mosquitto服务的运行状态,运行状态异常时,立即通知运维人员。
[0090] 本申请的实施例中,所述运维人员从管理中心的接口管理虚拟机。
[0091] “管理中心”是多个业务程序与组件组成的业务系统,运维人员从“管理中心”的接口管理虚拟机(VM)。在“管理中心”中设置“处理模块”,实现通过mosquitto发布命令到虚拟机(VM)上,代替原有使用SSH的方法。
[0092] 参阅图 7所示,图7为本申请提供的一种管理虚拟机集群的实施方法中虚拟机接收命令方式的逻辑原理示意图。实现通过mosquitto发布命令到虚拟机(VM)上的过程如下:
[0093] (1)创建“公共主题”。
[0094] (2)根据虚拟机名字创建“私有主题”。
[0095] (3)把操作命令发布到相应主题上。
[0096] (4)解析返回结果,在界面展示给运维人员。
[0097] (5)检查mosquitto服务的运行状态,一旦出现异常,立即通知运维人员。
[0098] 应该理解的是,上述虽然是按照某一顺序描述的,但是这些步骤并不是必然按照上述顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,本实施例的一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
[0099] 在一个实施例中,在本申请的实施例中还提供了一种计算机设备,包括至少一个处理器,以及与所述至少一个处理器通信连接的存储器,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器执行所述的管理虚拟机集群的实施方法,该处理器执行指令时实现上述各方法实施例中的步骤:
[0100] 基于mosquitto 服务,在虚拟机内部管理工具qemu‑agent程序上设置代理模块,使虚拟机远程接收管理指令;
[0101] 在管理中心设置处理模块,通过mosquitto发布命令到虚拟机上。
[0102] 其中,所述在虚拟机内部管理工具qemu‑agent程序上设置代理模块,包括:
[0103] 在虚拟机内部系统启动并已成功运行qemu‑agent之后,检查是否存在证书文件,若无则从指定http服务下载证书文件;
[0104] 获取虚拟机内部系统的用户名字,订阅mosquitto中与用户名字一致的私有主题;
[0105] 订阅mosquitto中的公共主题,使用单独线程监听接收私有主题和公共主题的消息;
[0106] 解析消息内容并转换格式后执行命令,将结果重新打包发送到对应主题。
[0107] 其中,所述在管理中心设置处理模块,包括:
[0108] 在管理中心创建公共主题;
[0109] 根据虚拟机名字创建私有主题;
[0110] 将操作命令发布到相应的公共主题和私有主题上;
[0111] 解析返回结果,在界面展示给运维人员;
[0112] 检查mosquitto服务的运行状态,运行状态异常时,立即通知运维人员。
[0113] 在一个实施例中,提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机指令,所述计算机指令用于使所述计算机执行所述的管理虚拟机集群的实施方法,步骤为:
[0114] 基于mosquitto 服务,在虚拟机内部管理工具qemu‑agent程序上设置代理模块,使虚拟机远程接收管理指令;
[0115] 在管理中心设置处理模块,通过mosquitto发布命令到虚拟机上。
[0116] 其中,所述在虚拟机内部管理工具qemu‑agent程序上设置代理模块,包括:
[0117] 在虚拟机内部系统启动并已成功运行qemu‑agent之后,检查是否存在证书文件,若无则从指定http服务下载证书文件;
[0118] 获取虚拟机内部系统的用户名字,订阅mosquitto中与用户名字一致的私有主题;
[0119] 订阅mosquitto中的公共主题,使用单独线程监听接收私有主题和公共主题的消息;
[0120] 解析消息内容并转换格式后执行命令,将结果重新打包发送到对应主题。
[0121] 其中,所述在管理中心设置处理模块,包括:
[0122] 在管理中心创建公共主题;
[0123] 根据虚拟机名字创建私有主题;
[0124] 将操作命令发布到相应的公共主题和私有主题上;
[0125] 解析返回结果,在界面展示给运维人员;
[0126] 检查mosquitto服务的运行状态,运行状态异常时,立即通知运维人员。
[0127] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机指令表征的计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。
[0128] 非易失性存储器可包括只读存储器、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器或动态随机存取存储器等。
[0129] 综上所述,本申请提供的技术方案具有以下优点:
[0130] 本申请提供的管理虚拟机集群的实施方法、计算机设备及存储介质,结合mosquitto 提升管理过程的稳定性,通过为虚拟机内部管理工具qemu‑agent程序设置的代理模块,实现虚拟机(VM)远程接收管理指令功能,为管理中心的qemu‑agent‑command控制程序上设置处理模块,实现通过mosquitto发布命令到虚拟机(VM)上,通过mqtt协议代替原有SSH协议使用,大大降低故障率,避免存在数据安全隐患,同时提高运维效率,一旦出现异常,立即通知运维人员。
[0131] 以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本申请的保护范围之内。