对虚拟机进行管理的方法及系统转让专利

申请号 : CN201380000525.9

文献号 : CN103502939B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 余祥成淑敏李宁宋哲炫朱星

申请人 : 华为技术有限公司

摘要 :

本发明提供一种对虚拟机进行管理的方法及系统。所述方法包括:由云服务器基于获取的部署指令,利用预设的各应用的描述信息,将相应的应用及用于获取相应应用的运行信息的第一获取模块部署到至少一个虚拟机上;所述云服务器获取在每一个所述虚拟机上运行的所述应用的运行信息;所述云服务器对获取的每一个所述运行信息进行分析,并基于分析结果对运行相应的应用的虚拟机进行策略控制。通过本发明提供的方法和系统可以解决现有的云服务器无法对虚拟机进行管理的问题;同时,能够实时对各虚拟机进行策略控制,以便虚拟机改变应用的运行情况或运行环境。

权利要求 :

1.一种对虚拟机进行管理的方法,应用于由云服务器及与所述云服务器通信连接的包含至少一个虚拟机的计算机设备所构成的系统中,其特征在于,至少包括:所述云服务器基于获取的部署指令,利用预设的各应用的描述信息,将相应的应用及用于获取相应应用的运行信息的第一获取模块部署到至少一个所述虚拟机上;

所述云服务器通过所述第一获取模块获取在每一个所述虚拟机上运行的所述应用的运行信息,所述应用的运行信息是指反映应用的运行情况的信息;

所述云服务器对获取的每一个所述运行信息进行分析,并基于分析结果对运行相应应用的虚拟机进行策略控制。

2.根据权利要求1所述的对虚拟机进行管理的方法,其特征在于,所述云服务器部署所述应用和第一获取模块包括:所述云服务器基于预设的各应用的描述信息,向至少一个所述虚拟机部署至少一个所述应用及所述第一获取模块。

3.根据权利要求1所述的对虚拟机进行管理的方法,其特征在于,所述云服务器获取在每一个所述虚拟机上运行的所述应用的运行信息包括:由所述虚拟机基于轮询机制向每一个第一获取模块发出用于获取应用的运行信息的指令,以便各第一获取模块获取相应应用的运行信息,再将获取的所有运行信息发送至所述云服务器。

4.根据权利要求3所述的对虚拟机进行管理的方法,其特征在于,所述云服务器获取在每一个所述虚拟机上运行的所述应用的运行信息还包括:各所述第一获取模块在运行之前向其所在的虚拟机进行注册,以便所述虚拟机利用第一获取模块的注册信息,轮询已注册的各第一获取模块,进而取得相应应用的运行信息。

5.根据权利要求1所述的对虚拟机进行管理的方法,其特征在于,所述云服务器基于分析结果对运行相应应用的虚拟机进行策略控制包括:所述云服务器从获取的多个运行信息中识别来自不同虚拟机的同一应用的运行信息;

以及

所述云服务器分析来自多个虚拟机的同一应用的所述运行信息,并基于分析结果对至少一个虚拟机进行策略控制。

6.根据权利要求1或5所述的对虚拟机进行管理的方法,其特征在于,所述云服务器基于分析结果对运行相应应用的虚拟机进行策略控制包括:所述云服务器基于分析结果,向运行相应应用的虚拟机发送用于改变所述应用及相应的第一获取模块运行的指令。

7.根据权利要求6所述的对虚拟机进行管理的方法,其特征在于,所述用于改变所述应用及相应的第一获取模块运行的指令至少包括以下一种:启动指令、暂停指令和停止指令。

8.根据权利要求1或5所述的对虚拟机进行管理的方法,其特征在于,所述云服务器基于分析结果对运行相应应用的虚拟机进行策略控制包括:所述云服务器基于分析结果,生成部署指令,以便通过重新执行部署的步骤,向未运行所述应用的虚拟机部署所述应用及相应的第一获取模块。

9.根据权利要求1所述的对虚拟机进行管理的方法,其特征在于,所述方法还包括:所述虚拟机监控所述第一获取模块获取的运行信息,并判断所述运行信息对应的应用是否临近或超出预设的相应应用正常运行的范围,若临近或超出预设的相应应用正常运行的范围,则将所述运行信息提供给所述云服务器;若未临近或超出预设的相应应用正常运行的范围,则继续监控。

10.根据权利要求1所述的对虚拟机进行管理的方法,其特征在于,所述方法还包括:在所述虚拟机将获取的各应用的运行信息发送给所述云服务器,所述云服务器基于获取的所述各应用的运行信息进行分析并执行相应的策略控制的同时,所述虚拟机和所述云服务器之间还保持通信。

11.根据权利要求10所述的对虚拟机进行管理的方法,其特征在于,所述虚拟机和所述云服务器之间保持通信的方式包括:基于心跳机制保持所述虚拟机与所述云服务器之间的通信。

12.一种对虚拟机进行管理的系统,所述系统包括云服务器及与所述云服务器通信连接的包含至少一个虚拟机的计算机设备,其特征在于,所述云服务器包括:

部署模块,用于基于获取的部署指令,利用预设的各应用的描述信息,将相应的应用及用于获取相应应用的运行信息的第一获取模块部署到至少一个所述虚拟机上;

第二获取模块,用于通过所述虚拟机上的所述第一获取模块,获取由所述部署模块部署在每一个所述虚拟机上的所述应用的运行信息,所述应用的运行信息是指反映应用的运行情况的信息;

策略控制模块,用于对所述第二获取模块获取的每一个所述运行信息进行分析,并基于分析结果对运行相应应用的虚拟机进行策略控制。

13.根据权利要求12所述的对虚拟机进行管理的系统,其特征在于,所述部署模块进一步用于基于预设的各应用的描述信息,向至少一个所述虚拟机部署至少一个所述应用及所述第一获取模块。

14.根据权利要求12所述的对虚拟机进行管理的系统,其特征在于,所述策略控制模块包括:识别子模块,用于从所述第二获取模块获取的多个运行信息中识别来自不同虚拟机的同一应用的运行信息。

15.根据权利要求12或14所述的对虚拟机进行管理的系统,其特征在于,所述策略控制模块具体用于基于分析结果,向运行相应应用的虚拟机发送用于改变所述应用及相应的第一获取模块运行的指令。

16.根据权利要求15所述的对虚拟机进行管理的系统,其特征在于,所述用于改变所述应用及相应的第一获取模块运行的指令至少包括以下一种:启动指令、暂停指令和停止指令。

17.根据权利要求12或14所述的对虚拟机进行管理的系统,其特征在于,所述策略控制模块具体用于基于分析结果,向所述部署模块发出所述部署指令,以便所述部署模块基于所述部署指令在未运行相应应用的虚拟机上部署所述应用及相应的第一获取模块。

说明书 :

对虚拟机进行管理的方法及系统

技术领域

[0001] 本发明涉及云计算技术,特别是涉及一种对虚拟机进行管理的方法及系统。

背景技术

[0002] 虚拟机是指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。目前,虚拟机广泛支持的操作系统包括:Red Hat Enterprise Linux、Windows Server2003/2008、OpenSolaris、openSUSE Linux和Ubuntu Linux等。能够运行在虚拟机上的软件包括:Apache、MySQL、Hadoop、Condor、Open MPI、WebSphere和Oracle的WebLogic等。鉴于如此多的应用均可在虚拟机上运行,同时一个物理的计算机设备能够运行多个虚拟机,使得网络应用的开发者更倾向于在虚拟机上配置各种网络应用。
[0003] 与此同时,随着云技术的发展,云服务器通过管理和调配物理的计算机设备中的应用的运行(如,使应用的负载均衡、为应用自动扩容等),能够提高计算机设备的运行效率,降低计算机设备的配置要求。然而,这些技术无法直接管理和调配在虚拟机上的应用,主要是因为虚拟机上所运行的各种应用由该虚拟机上的操作系统来负责管理和调配,远程的云服务器只能对虚拟机所在的物理计算机设备进行管理和调配,或者通过物理计算机设备对虚拟机的运行信息进行粗略的管理和调配。
[0004] 这样的缺点在于,云服务器由于无法得到虚拟机中运行的应用的运行信息,而不能基于虚拟机上运行的应用对虚拟机进行策略控制。

发明内容

[0005] 本发明实施例提供一种对虚拟机进行管理的方法及系统,以便基于虚拟机上运行的应用对运行在一个或多个物理设备中的虚拟机进行策略控制。
[0006] 本发明实施例的第一方面提供一种对虚拟机进行管理的方法,应用于由云服务器及与所述云服务器通信连接的包含至少一个虚拟机的计算机设备所构成的系统中,其至少包括:所述云服务器基于获取的部署指令,利用预设的各应用的描述信息,将相应的应用及用于获取相应应用的运行信息的第一获取模块部署到至少一个所述虚拟机上;所述云服务器获取在每一个所述虚拟机上运行的所述应用的运行信息;所述云服务器对获取的每一个所述运行信息进行分析,并基于分析结果对运行相应应用的虚拟机进行策略控制。
[0007] 优选地,所述云服务器部署所述应用和第一获取模块包括:所述云服务器基于预设的各应用的描述信息,向至少一个所述虚拟机部署至少一个所述应用及所述第一获取模块。
[0008] 优选地,所述云服务器获取在每一个所述虚拟机上运行的所述应用的运行信息包括:由所述虚拟机基于轮询机制向每一个第一获取模块发出用于获取应用的运行信息的指令,以便各第一获取模块获取相应应用的运行信息,再将获取的所有运行信息发送至所述云服务器。
[0009] 优选地,所述云服务器获取在每一个所述虚拟机上运行的所述应用的运行信息还包括:各所述第一获取模块在运行之前向其所在的虚拟机进行注册,以便所述虚拟机利用第一获取模块的注册信息,轮询已注册的各第一获取模块,进而取得相应应用的运行信息。
[0010] 优选地,所述云服务器基于分析结果对运行相应应用的虚拟机进行策略控制包括:所述云服务器从获取的多个运行信息中识别来自不同虚拟机的同一应用的运行信息;以及所述云服务器分析来自多个虚拟机的同一应用的所述运行信息,并基于分析结果对至少一个虚拟机进行策略控制。
[0011] 优选地,所述云服务器基于分析结果对运行相应应用的虚拟机进行策略控制包括:所述云服务器基于分析结果,向运行相应应用的虚拟机发送用于改变所述应用及相应的第一获取模块运行的指令。
[0012] 优选地,所述用于改变所述应用及相应的第一获取模块运行的指令至少包括以下一种:启动指令、暂停指令和停止指令。
[0013] 优选地,所述云服务器基于分析结果对运行相应应用的虚拟机进行策略控制包括:所述云服务器基于分析结果,生成部署指令,以便通过重新执行部署的步骤,向未运行该应用的虚拟机部署所述应用及相应的第一获取模块。
[0014] 优选地,所述方法还包括:所述虚拟机监控所述第一获取模块获取的运行信息,并判断所述运行信息对应的应用是否临近或超出预设的相应应用正常运行的范围,若临近或超出预设的相应应用正常运行的范围,则将所述运行信息提供给所述云服务器;若未临近或超出预设的相应应用正常运行的范围,则继续监控。
[0015] 本发明实施例的第二方面提供一种对虚拟机进行管理的系统,包括:云服务器及与所述云服务器通信连接的包含至少一个虚拟机的计算机设备;
[0016] 所述云服务器中包括:部署模块,用于基于获取的部署指令,利用预设的各应用的描述信息,将相应的应用及用于获取相应应用的运行信息的第一获取模块部署到至少一个所述虚拟机上;第二获取模块,用于获取由所述部署模块部署在每一个所述虚拟机上的所述应用的运行信息;策略控制模块,用于对所述第二获取模块所获取的每一个所述运行信息进行分析,并基于分析结果对运行相应应用的虚拟机进行策略控制。
[0017] 优选地,所述部署模块进一步用于基于预设的各应用的描述信息,向至少一个所述虚拟机部署至少一个所述应用及所述第一获取模块。
[0018] 优选地,所述策略控制模块包括:识别子模块,用于从所述第二获取模块获取的多个运行信息中识别来自不同虚拟机的同一应用的运行信息。
[0019] 优选地,所述策略控制模块具体用于基于分析结果,向运行相应应用的虚拟机发送用于改变所述应用及相应的第一获取模块运行的指令。
[0020] 优选地,所述用于改变所述应用及相应的第一获取模块运行的指令至少包括以下一种:启动指令、暂停指令和停止指令。
[0021] 优选地,所述策略控制模块具体用于基于分析结果,向所述部署模块发出所述部署指令,以便所述部署模块基于所述部署指令在未运行相应应用的虚拟机上部署所述应用及相应的第一获取模块。
[0022] 根据本发明实施例提供的对虚拟机进行管理的方法及系统,所述云服务器通过部署在虚拟机上的第一获取模块获取在虚拟机中运行的各应用的运行信息,并通过对所述运行信息的分析对运行相应应用的虚拟机进行策略控制,如此,能够解决现有的云服务器无法基于虚拟机上运行的应用对虚拟机进行管理的问题;同时,能够实时对各虚拟机进行策略控制,以便虚拟机改变应用的运行情况或运行环境。

附图说明

[0023] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例。
[0024] 图1为本发明实施例提供的一种对虚拟机进行管理的方法的流程图。
[0025] 图2为本发明实施例提供的一种对虚拟机进行管理的方法中的一种优选方案的流程图。
[0026] 图3为本发明实施例提供的一种对虚拟机进行管理的系统的架构图。
[0027] 图4为本发明实施例提供的一种对虚拟机进行管理的系统的结构示意图。

具体实施方式

[0028] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。
[0029] 实施例一
[0030] 如图1所示,本发明实施例提供一种对虚拟机进行管理的方法。其中,所述管理方法应用于由云服务器以及与所述云服务器通信连接的包含至少一个虚拟机的计算机设备所构成的系统。其中,所述虚拟机可利用通信协议与所述云服务器进行通信。
[0031] 在步骤S1中,云服务器基于获取的部署指令,利用预设的各应用的描述信息,将相应的应用及用于获取相应应用的运行信息的第一获取模块部署到至少一个虚拟机上,以便所述应用及所述第一获取模块运行在所述虚拟机上。其中,所述部署指令中包括要部署的虚拟机的名称及地址、应用的名称、应用的版本等信息。
[0032] 其中,所述应用包括任何能够运行在虚拟机上的软件,其包括但不限于:基于WEB的应用等。所述应用的描述信息包括任何能够描述所述应用的信息,其包括但不限于:所述应用的版本信息、所述应用正常运行的配置信息、所述应用与所述第一获取模块之间的配置关系、所述各应用之间的配置关系、所述应用或所述第一获取模块的存放地址等。例如,所述描述信息包括:所述应用运行所占用的虚拟机的端口,所述应用与所述第一获取模块连接的接口信息等。所述应用的运行信息包括任何能够反映所述应用运行情况的信息,其包括但不限于:所述应用当前的会话数、所述应用在运行时产生的异常情况、所述应用占用所述虚拟机的资源信息等。所述第一获取模块可以获取所述应用的一种运行信息,也可以获取所述应用的全部运行信息。
[0033] 本实施例中,所述云服务器基于预设的各应用的描述信息,向至少一个所述虚拟机部署至少一个所述应用及所述第一获取模块,以使所述应用及所述第一获取模块运行在所述虚拟机上。
[0034] 例如,WEB应用a3的描述信息a4包括:WEB应用a3与数据库a1连接的配置文件b1、WEB应用a3与第一获取模块a2之间的配置文件b2。所述云服务器基于所述描述信息a4,将WEB应用a3、第一获取模块a2和数据库a1远程安装在虚拟机A中后,按照配置文件b1和配置文件b2分别将WEB应用a3与数据库a1、WEB应用a3与第一获取模块a2进行连接,以便WEB应用a3可以正常运行,同时所述第一获取模块a2能够获取WEB应用a3的运行信息。
[0035] 其中,所述第一获取模块获取所述应用的运行信息的方式包括但不限于:1)从所述虚拟机的任务管理器中获取所述应用的运行信息;2)通过所述应用提供的接口获取所述应用的运行信息等。
[0036] 在步骤S2中,所述云服务器获取在每一个所述虚拟机上运行的所述应用的运行信息。其中,运行在所述虚拟机上的应用可以是一个或多个,优选地,所述云服务器获取运行在虚拟机上的每一个所述应用的运行信息。
[0037] 所述云服务器获取在每一个所述虚拟机上运行的应用的运行信息的方式包括但不限于:
[0038] 1)由所述虚拟机中的各所述第一获取模块直接将获取的相应应用的运行信息发送至所述云服务器。例如,所述虚拟机上运行有:应用c1、用于获取所述应用c1的运行信息的第一获取模块d1、应用c2及用于获取所述应用c2的运行信息的第一获取模块d2。则第一获取模块d1和d2基于预设的时间间隔,按照预设的所述云服务器的地址,分别将各自获取的应用的运行信息发送至所述云服务器。
[0039] 2)由所述虚拟机基于轮询机制向每一个第一获取模块发出用于获取应用的运行信息的指令,以便各第一获取模块获取相应应用的运行信息,再将获取的所有运行信息发送至所述云服务器。
[0040] 具体地,所述虚拟机在所述云服务器的部署指令下,安装、运行各应用及所述第一获取模块时,记录各应用及第一获取模块的名称、版本号、安装地址、运行地址等信息,并基于轮询机制,通过记录的信息发出用于获取应用的运行信息的指令,以便获取所有的运行信息。
[0041] 优选地,各所述第一获取模块在运行之前向其所在的虚拟机进行注册,以便所述虚拟机利用第一获取模块的注册信息,轮询已注册的各第一获取模块,进而取得相应应用的运行信息。其中,所述注册信息包括但不限于所述第一获取模块的版本号、所述第一获取模块的名称、所述第一获取模块的运行地址等。例如,部署在虚拟机上的第一获取模块在启动运行时,先按照预存储的虚拟机的注册端口向所在虚拟机发出包含所述注册信息的注册请求,所述虚拟机将所述注册信息添加到所维护的动态链表中,以供基于轮询机制向所述第一获取模块发出用于获取运行信息的指令。
[0042] 在步骤S3中,所述云服务器对获取的每一个所述运行信息进行分析,并基于分析结果对运行相应应用的虚拟机进行策略控制。其中,所述分析结果包括但不限于:应用处于正常运行、应用处于异常运行、应用临近异常运行、无法获取应用的一个或全部运行信息等。所述策略控制的方式包括任何能够基于所获取的应用的运行信息,更改所述应用的运行环境或运行情况的方式。所述策略控制的类型包括但不限于以下至少一种:负载均衡的控制,自动扩/减容的控制,及动态迁移的控制等。
[0043] 其中,所述云服务器对获取的每一个所述运行信息进行分析的方式包括但不限于:
[0044] 1)所述云服务器将获取的运行信息与预存的相应应用的运行信息进行比较分析,以得到分析结果。例如,所述云服务器获取的运行信息包括:来自虚拟机M2的应用m2的当前会话数为150,预设的应用m2的最大会话数为200,则所述云服务器分析得到所获取的应用m2的当前会话数已临近最大会话数。
[0045] 2)所述云服务器基于预设的各应用的分析规则对获取的运行信息进行分析,以得到分析结果。
[0046] 例如,针对应用m2预设一个评价公式为 其中最大会话数为300,权值1为2,权值2为3,当评价值在1-3之间时为正常运行。假设所述云服务器获取的运行信息包括:来自虚拟机M2的应用m2的当前会话数为150,应用m2占用虚拟机M2的资源比例为30%,则所述云服务器按照预设的应用m2的上述分析规则,得到来自虚拟机M2的应用m2的运行情况的评价值为1.9,得出虚拟机M2中的应用m2的运行结果为正常运行。
[0047] 其中,所述云服务器基于分析结果对运行相应应用的虚拟机进行策略控制,其方式包括但不限于:
[0048] 1)所述云服务器基于所述分析结果,向运行相应应用的虚拟机发送用于改变所述应用及相应的第一获取模块运行的指令。其中,所述指令包括但不限于:启动指令、暂停指令、或停止指令等。
[0049] 具体地,如果所述云服务器得到的分析结果为无法获取某个应用的运行信息或确定需要改变某个应用的运行状态,则向运行相应应用的虚拟机发送用于改变所述应用或相应的第一获取模块运行的指令。
[0050] 2)所述云服务器基于所述分析结果,生成部署指令,以便重新执行步骤S1向未运行该应用的虚拟机部署所述应用及相应的第一获取模块。
[0051] 具体地,如果所述云服务器得到的分析结果为某个应用已满负荷运行,则生成部署指令,以便所述云服务器向所述部署指令指定的未运行所述应用的虚拟机部署所述应用及第一获取模块。
[0052] 优选地,所述步骤S3包括步骤S31和步骤S32。
[0053] 在步骤S31中,所述云服务器从获取的多个运行信息中识别来自不同虚拟机的同一应用的运行信息。
[0054] 具体地,所述云服务器从获取的多个运行信息中提取能够标识应用及虚拟机的标识信息,再根据所述标识信息识别运行在不同虚拟机中的同一应用。其中,所述标识信息包括但不限于:应用的名称、应用的版本号、虚拟机的名称、虚拟机地址等。
[0055] 例如,所述云服务器获取到的多个运行信息包括:来自虚拟机N1的应用C1的运行信息c1、来自虚拟机N2的应用C2的运行信息c2、来自虚拟机N3的应用C1的运行信息c3。所述云服务器提取每一个运行信息中的应用名称及虚拟机的名称,并将每一个应用名称及虚拟机名称进行循环比对,识别出运行信息c1和运行信息c3中的应用名称相同、虚拟机的名称不同,则所述云服务器基于该识别结果确定运行信息c1和运行信息c3为来自不同虚拟机的同一应用的运行信息。
[0056] 在步骤S32中,所述云服务器分析来自多个虚拟机的同一应用的所述运行信息,并基于分析结果对至少一个虚拟机进行策略控制。
[0057] 其中,所述云服务器对至少一个虚拟机进行策略控制的方式包括但不限于:
[0058] 1)基于分析结果对运行该应用的至少一个虚拟机进行策略控制。
[0059] 例如,获取的各虚拟机中的应用的运行信息包括:虚拟机M1中的应用A当前的会话数300、虚拟机M2中的应用A当前的会话数400、虚拟机M3中的应用A当前的会话数200以及虚拟机M3中的应用B当前的会话数250。所述云服务器基于各运行信息中的应用的标识信息确定虚拟机M1、虚拟机M2和虚拟机M3运行同一应用A,并基于所述应用A分别在虚拟机M1、虚拟机M2和虚拟机M3中的运行信息来管理所述虚拟机M1、M2、M3中所述应用A的运行。比如,所述云服务器将虚拟机M2中的应用A的当前会话数400与预设的应用A的最大会话数450进行比较,确定不再向虚拟机M2中的应用A分配新的用户访问请求,转而将新的用户访问请求分配给虚拟机M1或虚拟机M3中的应用A,以此来均衡虚拟机M1、M2和M3的负载。
[0060] 2)基于分析结果,通过重新执行步骤S1向未运行该应用的虚拟机部署所述应用及相应的第一获取模块。
[0061] 需要说明的是,本领域技术人员应该理解,上述步骤S1、步骤S2和步骤S3之间并非一定按顺序的连续执行,事实上,所述云服务器可以利用多线程技术一边获取各应用的运行信息,一边基于所获取的各应用的运行信息对各应用进行策略控制,同时,还可以执行步骤S1来部署新的应用,并获取新的应用的运行信息。
[0062] 通过本实施例提供的对虚拟机进行管理的方法,所述云服务器通过在虚拟机中部署的第一获取模块来获取在虚拟机中运行的各应用的运行信息,并通过对所述运行信息的分析对运行相应应用的虚拟机进行策略控制,如此,能够解决现有的云服务器无法基于虚拟机上运行的应用对虚拟机进行管理的问题;同时,能够实时对各虚拟机进行策略控制,以供虚拟机改变应用的运行情况或运行环境。进一步,所述云服务器还可以通过对获取的各运行信息进行识别,来确定不同虚拟机上运行的同一应用的运行情况,然后对各虚拟机进行策略控制,使得同一应用在各虚拟机上的都能正常运行。
[0063] 实施例二
[0064] 与实施例一不同的是,本实施例中步骤S2还包括:所述虚拟机监控所述第一获取模块获取的运行信息,并判断所述运行信息对应的应用是否临近或超出预设的相应应用正常运行的范围,若确实临近或超出预设的相应应用正常运行的范围,则将所述运行信息提供给所述云服务器;若并未临近或超出预设的相应应用正常运行的范围,则继续监控。
[0065] 例如,所述第一获取模块获取的运行信息包括:应用d1的当前会话数为30、应用d2的当前CPU占用70%。所述虚拟机将预设的应用d1能够承受的最大会话数500与所获取的应用d1的会话数30取差值,并将所述差值与预设的临界阈值5进行比较,确定所述差值大于所述临界阈值,即所述应用d1运行正常,继续监控所述应用d1的当前会话数;同时,基于预设的应用d2能够占用的CPU的最大比例不得超过50%,确定所述应用d2运行异常,将所述应用d2的运行信息提供给所述云服务器。
[0066] 具体地,本方案的工作过程如图2所示。
[0067] 在步骤S10中,所述云服务器基于获取的部署指令,利用预设的各应用的描述信息,将相应的应用及用于获取相应应用的运行信息的第一获取模块部署到至少一个所述虚拟机上,以便所述应用及所述第一获取模块运行在所述虚拟机上。
[0068] 在步骤S20中,所述虚拟机基于来自所述第一获取模块的注册请求,对所部署的每一个第一获取模块进行注册;
[0069] 在步骤S30中,所述虚拟机基于轮询机制向已注册的每一个第一获取模块发出用于获取运行信息的指令,以便各第一获取模块获取相应应用的运行信息;
[0070] 在步骤S40中,所述虚拟机监控所述第一获取模块获取的运行信息,并判断所述运行信息对应的应用是否临近或超出预设的相应应用正常运行的范围,若确实临近或超出预设的相应应用正常运行的范围,则执行步骤S60,若并未临近或超出预设的相应应用正常运行的范围,则执行步骤S50。
[0071] 在步骤S50中,所述虚拟机继续监控所述第一获取模块获取的运行信息。
[0072] 在步骤S60中,所述虚拟机将所述运行信息提供给所述云服务器。
[0073] 在步骤S70中,所述云服务器对获取的每一个所述运行信息进行分析,并基于分析结果对运行相应应用的虚拟机进行策略控制。
[0074] 需要说明的是,本实施例仅为本发明的一个实施例,事实上,所述虚拟机可以按照实施例一中描述的其他方式将所述第一获取模块获取的运行信息发送至所述云服务器,所述云服务器在接收到各虚拟机所发送的各应用的运行信息后,利用实施例一中所描述的方案对各应用进行分析,并基于分析结果进行相应的策略控制。
[0075] 本实施例中,每一个第一获取模块通过注册的方式把各自的信息告知所在的虚拟机,以便虚拟机利用轮询机制向已注册的第一获取模块发出轮询指令,由此能够有针对性的管理虚拟机上运行的应用,而不必获取一些临时运行的应用的运行信息,以提高管理效率,减少垃圾信息产生;另外,所述虚拟机在获取到各应用的运行信息时,先基于各所述运行信息甄别相应的应用是否临近或超出预设的所述应用正常运行的范围,能够分担云服务器的负担。
[0076] 实施例三
[0077] 与实施例一、二不同的是,在所述虚拟机将获取的各应用的运行信息发送给所述云服务器,所述云服务器基于所获取的各应用的运行信息进行分析并执行相应的策略控制的同时,所述虚拟机和所述云服务器之间还保持通信,以便所述虚拟机和云服务器能够及时得知彼此是否处于通信状态。
[0078] 具体地,所述虚拟机与所述云服务器之间保持通信的方式包括但不限于:基于心跳机制保持所述虚拟机与所述云服务器之间的通信。
[0079] 例如,所述虚拟机基于心跳机制每隔15分钟与所述云服务器进行一次通信,当所述云服务器在20分钟时间内未收到来自所述虚拟机的心跳信息,则确定所述虚拟机异常,并将所述异常信息通过与所述云服务器连接的显示器予以显示,以便技术人员对所述虚拟机进行处理。
[0080] 本实施例中,所述虚拟机与所述云服务器通过定期通信来确保彼此的通信连接,有利于当所述虚拟机所在物理设备异常或网络异常时,所述云服务器及时报警或按照应急预案予以及时处理,以确保各应用能够稳定运行。
[0081] 实施例四
[0082] 本发明还提供一种对虚拟机进行管理的系统。其中,所述系统包括云服务器1以及与所述云服务器1通信连接的包含至少一个虚拟机2的计算机设备,如图3所示。其中,所述虚拟机2可利用通信协议与所述云服务器1进行通信。所述云服务器1至少包括:部署模块11、第二获取模块12、策略控制模块13。如图4所示。
[0083] 所述部署模块11用于基于获取的部署指令,利用预设的各应用的描述信息,将相应的应用及用于获取相应应用的运行信息的第一获取模块部署到至少一个所述虚拟机2上,以便所述应用及所述第一获取模块运行在所述虚拟机2上。其中,所述部署指令中至少包括所要部署的虚拟机的名称及地址、应用的名称、应用的版本等信息。
[0084] 其中,所述应用包括任何能够运行在虚拟机上的软件,其包括但不限于:基于WEB的应用等。所述应用的描述信息包括任何能够描述所述应用的信息,其包括但不限于:所述应用的版本信息、所述应用正常运行的配置信息、所述应用与所述第一获取模块之间的配置关系、所述各应用之间的配置关系、所述应用或所述第一获取模块的存放地址等。例如,所述描述信息包括:所述应用运行所占用的虚拟机2的端口,所述应用与所述第一获取模块连接的接口信息等。所述应用的运行信息包括任何能够反映所述应用运行时的情况的信息,其包括但不限于:所述应用当前的会话数、所述应用在运行时产生的异常情况、所述应用占用所述虚拟机2的资源信息等。所述第一获取模块可以获取所述应用的一种运行信息,也可以获取所述应用的全部运行信息。
[0085] 本实施例中,所述部署模块11基于预设的各应用的描述信息,向至少一个所述虚拟机2部署至少一个所述应用及所述第一获取模块,以使所述应用及所述第一获取模块运行在所述虚拟机2上。
[0086] 例如,WEB应用a3的描述信息a4包括:WEB应用a3与数据库a1连接的配置文件b1、WEB应用a3与第一获取模块a2之间的配置文件b2。所述部署模块11基于所述描述信息a4,将WEB应用a3、第一获取模块a2和数据库a1远程安装在虚拟机A中后,按照配置文件b1和配置文件b2分别将WEB应用a3与数据库a1、WEB应用a3与第一获取模块a2进行连接,以便WEB应用a3可以正常运行,同时所述第一获取模块a2能够获取WEB应用a3的运行信息。
[0087] 其中,所述第一获取模块获取所述应用的运行信息的方式包括但不限于:1)从所述虚拟机2的任务管理器中获取所述应用的运行信息;2)通过所述应用提供的接口获取所述应用的运行信息等。
[0088] 所述第二获取模块12用于获取由所述部署模块11部署在每一个所述虚拟机2上的所述应用的运行信息。其中,运行在所述虚拟机2上的应用可以是一个或多个,优选地,所述第二获取模块12获取运行在虚拟机2上的每一个所述应用的运行信息。
[0089] 所述第二获取模块12获取在每一个所述虚拟机2上运行的应用的运行信息的方式包括但不限于:
[0090] 1)由所述虚拟机2中的各所述第一获取模块直接将获取的相应应用的运行信息发送至所述第二获取模块12。例如,所述虚拟机2上运行有:应用c1、用于获取所述应用c1的运行信息的第一获取模块d1、应用c2及用于获取所述应用c2的运行信息的第一获取模块d2。则第一获取模块d1和d2基于预设的时间间隔,按照预设的所述第二获取模块的地址,分别将各自所获取的应用的运行信息发送至所述第二获取模块12。
[0091] 2)由所述虚拟机2基于轮询机制向每一个第一获取模块发出用于获取运行信息的指令,以便各第一获取模块获取相应应用的运行信息,再将获取的所有运行信息发送至所述第二获取模块12。
[0092] 具体地,所述虚拟机2在所述部署模块11的部署指令下,安装、运行各应用及所述第一获取模块时,记录各应用及第一获取模块的名称、版本号、安装地址、运行地址等信息,并基于轮询机制,通过所记录的信息发出用于获取应用的运行信息的指令,以便获取所有的运行信息。
[0093] 优选地,各所述第一获取模块在运行之前向其所在的虚拟机2进行注册,以便所述虚拟机2利用第一获取模块的注册信息,轮询已注册的各第一获取模块,进而取得相应应用的运行信息。其中,所述注册信息包括但不限于所述第一获取模块的版本号、所述第一获取模块的名称、所述第一获取模块的运行地址等。例如,部署在虚拟机2上的第一获取模块在启动运行时,先按照预存储的虚拟机的注册端口向所在虚拟机2发出包含所述注册信息的注册请求,所述虚拟机2将所述注册信息添加到所维护的动态链表中,以供基于轮询机制向所述第一获取模块发出用于获取运行信息的指令。
[0094] 所述策略控制模块13用于对所述第二获取模块12获取的每一个所述运行信息进行分析,并基于分析结果对运行相应应用的虚拟机2进行策略控制。其中,所述分析结果包括但不限于:应用处于正常运行、应用处于异常运行、应用临近异常运行、无法获取应用的一个或全部运行信息等。所述策略控制的方式包括任何能够基于所获取的应用的运行信息,更改所述应用的运行环境或运行情况的策略。所述策略控制的类型包括但不限于以下至少一种:负载均衡的控制,自动扩/减容的控制,及动态迁移的控制等。
[0095] 其中,所述策略控制模块13对获取的每一个所述运行信息进行分析的方式包括但不限于:
[0096] 1)所述策略控制模块13将获取的运行信息与预存的相应应用的运行信息进行比较分析,以得到分析结果。例如,所述策略控制模块13获取的运行信息包括:来自虚拟机M2的应用m2的当前会话数为150,预设的应用m2的最大会话数为200,则所述策略控制模块13分析得到所获取的应用m2的当前会话数已临近最大会话数。
[0097] 2)所述策略控制模块13基于预设的各应用的分析规则对获取的运行信息进行分析,以得到分析结果。
[0098] 例如,针对应用m2预设一个评价公式为 其中最大会话数为300,权值1为2,权值2为3,当评价值在1-3之间时为正常运行。假设所述策略控制模块13获取的运行信息包括:来自虚拟机M2的应用m2的当前会话数为150,应用m2占用虚拟机M2的资源比例为30%,则所述策略控制模块13按照预设的应用m2的上述分析规则,得到来自虚拟机M2的应用m2的运行情况的评价值为1.9,得出虚拟机M2中的应用m2的运行结果为正常运行。
[0099] 其中,所述策略控制模块13基于分析结果对运行相应应用的虚拟机2进行策略控制,其方式包括但不限于:
[0100] 1)所述策略控制模块13基于所述分析结果,向运行相应应用的虚拟机2发送用于改变所述应用及相应的第一获取模块运行的指令。其中,所述指令包括但不限于:启动指令、暂停指令、或停止指令等。
[0101] 具体地,如果所述策略控制模块13得到的分析结果为无法获取某个应用的运行信息或确定需要改变某个应用的运行状态,则向运行相应应用的虚拟机2发送用于改变所述应用或相应的第一获取模块运行的指令。
[0102] 2)所述策略控制模块13基于分析结果,向所述部署模块11发出所述部署指令,以便所述部署模块11基于所述部署指令在未运行相应应用的虚拟机2上部署所述应用及相应的第一获取模块。
[0103] 具体地,如果所述策略控制模块13得到的分析结果为某个应用已满负荷运行,则向所述部署模块11发出所述部署指令,并由所述部署模块11向指定的未运行所述应用的虚拟机2部署所述应用及第一获取模块。
[0104] 优选地,所述策略控制模块13还包括识别子模块131。
[0105] 所述识别子模块131用于从所述第二获取模块12获取的多个运行信息中识别来自不同虚拟机2的同一应用的运行信息。
[0106] 具体地,所述识别子模块131从所述第二获取模块12获取的多个运行信息中提取能够标识应用及虚拟机的标识信息,再根据所述标识信息识别运行在不同虚拟机中的同一应用。其中,所述标识信息包括但不限于:应用的名称、应用的版本号、虚拟机的名称、虚拟机地址等。
[0107] 例如,所述识别子模块131获取到的多个运行信息包括:来自虚拟机N1的应用C1的运行信息c1、来自虚拟机N2的应用C2的运行信息c2、来自虚拟机N3的应用C1的运行信息c3。所述识别子模块131提取每一个运行信息中的应用名称及虚拟机的名称,并将每一个应用名称及虚拟机名称进行循环比对,识别出运行信息c1和运行信息c3中的应用名称相同、虚拟机的名称不同,基于该识别结果确定运行信息c1和运行信息c3为来自不同虚拟机的同一应用的运行信息。
[0108] 相应的,所述策略控制模块13用于分析来自多个虚拟机的同一应用的所述运行信息,并基于分析结果对至少一个虚拟机进行策略控制。
[0109] 其中,所述策略控制模块13对至少一个虚拟机进行策略控制的方式包括但不限于:
[0110] 1)基于分析结果对运行该应用的至少一个虚拟机进行策略控制。
[0111] 例如,获取的各虚拟机中的应用的运行信息包括:虚拟机M1中的应用A当前的会话数300、虚拟机M2中的应用A当前的会话数400、虚拟机M3中的应用A当前的会话数200以及虚拟机M3中的应用B当前的会话数250。所述策略控制模块13基于各运行信息中的应用的标识信息确定虚拟机M1、虚拟机M2和虚拟机M3运行同一应用A,并基于所述应用A分别在虚拟机M1、虚拟机M2和虚拟机M3中的运行信息来管理所述虚拟机M1、M2、M3中的所述应用A的运行。比如,所述策略控制模块13根据虚拟机M2中的应用A的当前会话数400与预设的应用A的最大会话数450进行比较,确定不再向虚拟机M2中的应用A分配新的用户访问请求,转而将新的用户访问请求分配给虚拟机M1或虚拟机M3中的应用A,以此来均衡虚拟机M1、M2和M3的负载。
[0112] 2)基于分析结果,指示部署模块11向未运行该应用的虚拟机部署所述应用及相应的第一获取模块。
[0113] 需要说明的是,所述第二获取模块12在获取当前各虚拟机所提供的运行信息,并由所述策略控制模块13对所获取的某一个应用的运行信息进行策略控制的同时,所述部署模块11还可以基于所述策略控制模块13输出的部署指令向指定虚拟机部署新的应用,并获取新的应用的运行信息。
[0114] 综上所述,本发明实施例提供的对虚拟机进行管理的方法及系统,所述云服务器通过在虚拟机中部署的第一获取模块来获取在虚拟机中运行的各应用的运行信息,并通过对所述运行信息的分析对运行相应应用的虚拟机进行策略控制,如此,能够解决现有的云服务器无法基于虚拟机上运行的应用对虚拟机进行管理的问题;同时,能够实时对各虚拟机进行策略控制,以供虚拟机改变应用的运行情况或运行环境。
[0115] 另外,所述虚拟机在获取到各应用的运行信息时,先基于各所述运行信息甄别相应的应用是否临近或超出预设的所述应用正常运行的范围,能够分担云服务器的负担。
[0116] 所述云服务器还通过对所获取的各运行信息进行识别,来确定不同虚拟机上运行的同一应用的运行情况,然后对各虚拟机进行策略控制,使得同一应用在各虚拟机上的都能正常运行。
[0117] 再有,每一个第一获取模块通过注册的方式把各自的信息告知所在的虚拟机,以便虚拟机利用轮询机制向已注册的第一获取模块发出轮询指令,由此能够有针对性的管理虚拟机上运行的应用,而不必获取一些临时运行的应用的运行信息,以提高管理效率,减少垃圾信息产生。
[0118] 此外,所述虚拟机与所述云服务器通过定期通信来确保彼此的通信连接,有利于当所述虚拟机所在物理设备异常或网络异常时,所述云服务器及时报警或按照应急预案予以及时处理,以确保各应用能够稳定运行。
[0119] 本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
[0120] 最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
[0121] 上述实施例仅示例性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。