云计算平台中快速部署和更新虚拟环境系统及其方法技术领域
本发明涉及云计算技术,具体涉及云计算平台中快速部署和更新虚拟环境系统及其方法。
背景技术
随着云计算的不断普及,用户对云计算产品的需求越来越丰富,从单一地获取虚拟硬件设施,即虚拟机、虚拟存储、虚拟网络,到获取在虚拟硬件上配置了完整软件系统的虚拟环境。虚拟环境由虚拟硬件以及在虚拟硬件上安装的软件系统组成,软件系统则包含了一系列互相关联的软件包。用户可以使用虚拟环境承载个人网站,建立Hadoop集群进行科学实验,对开发中的分布式系统进行测试。
虚拟环境可以按需供给,用户不需要时,可随时销毁停止付费,而且扩容方便,与传统的实体环境相比有很大优势。然而虚拟环境的部署和更新仍然很复杂,用户需具备一定的专业知识来处理软硬件问题。当用户需要多次部署相同环境时,每次都要重复相同的操作。
但是上述现有技术仍然存在着以下缺陷:配置虚拟环境的方法复杂,如配置文件格式复杂、软件包配置复杂以及用户需要手工定义工作流描述部署过程等;软件包配置的重用性差,即在一种虚拟环境配置中起作用的软件包配置定义在另一个虚拟环境中需要重新定义;部署之后的环境没有更新能力,用户需要手工操作虚拟资源和软件进行更新;部署速度慢,主要是由于虚拟硬件尤其是虚拟机的生成需要一定时间。
发明内容
发明目的:本发明的目的在于解决现有技术中存在的不足,提供一种云计算平台中快速部署和更新虚拟环境系统及其方法,本发明使用简洁的配置描述格式、方便的软件包注册机制、以及操作排序机制和硬件资源池机制,使得在云计算平台中部署虚拟环境更加快捷高效,本发明中的模型差异算法为虚拟环境提供了更新能力,满足了用户更改、升级虚拟环境的需求。
技术方案:本发明所述的一种云计算平台中快速部署和更新虚拟环境系统,包括依次连接的配置输入模块、配置解析模块、模型差异计算模块和操作执行模块,
所述配置输入模块接收用户输入的配置文件并传入配置解析模块;
所述配置解析模块验证所接收配置文件的合法性和解析用户描述,检测不符合格式要求的描述并返回错误信息,并解析合法文本内容生成相应模型;
所述模型差异计算模块计算两个模型之间的差异,输出从模型A转换到模型B所需的最少操作集合,模型A可以为空,用于计算首次部署虚拟环境时需要的操作集合;并且,模型差异计算模块与配置解析模块之间设置有模型存储模块,所述模型存储模块存储配置解析模块生成的模型,该模型用于更新时进行的模型差异计算;
所述操作执行模块执行模型差异计算模块输出的所有操作集合,本模块包括有三个子模块:操作排序模块,以及分别与操作排序模块连接的硬件操作执行模块和软件操作执行模块;
所述硬件操作执行模块的另一端分别连接有相互联通的云计算平台和硬件资源池模块;所述软件操作执行模块的另一端连接有自动化软件配置管理工具,自动化软件配置管理工具上还连接有软件包注册模块。
进一步的,所述云计算平台和自动化软件配置管理工具上均设有编程接口;
所述硬件资源池模块用于设定资源池容量,维护池中虚拟机资源,在设定硬件资源池最大和最小容量后该模块调用云计算平台提供的编程接口发出指令生成虚拟机直至达到最大容量,由于虚拟机有不同配置类型,容量是一组键值对,例如(Type1:[10,20],Type2:[10,30],Type3:[5,15]),该键值对表示Type1类型的虚拟机的数量保持在10到20之间,Type2类型的虚拟机的数量保持在10到30之间,Type3类型的虚拟保持在5到15之间。
所述操作执行模块在创建虚拟机时优先使用硬件资源池中虚拟机,删除虚拟机时将虚拟机放入资源池而不是立即销毁虚拟机,除非当前资源池容量已经达到预先设定的最大值;
所述软件包注册模块在自动化软件配置管理工具上注册新的软件包;
所述操作排序模块根据操作对象在模型所表示的图形上的拓扑序进行反向排序形成工作流,硬件操作执行模块执行对虚拟机的增加、删除、修改操作,软件操作执行模块于执行对软件的增加、删除和修改操作。
本发明还公开了一种云计算平台中快速部署和更新虚拟环境系统的方法,包括以下步骤:
(1)用户按照虚拟环境配置描述规约描述所需虚拟环境,形成配置文件;其中,虚拟环境包括虚拟机硬件资源和软件系统,以及相互之间的关系,并且该配置文件只描述期望得到的虚拟环境的各组成部分和关联关系;
(2)解析上述所得的配置文件生成模型,模型由顶点和边形成有向图,顶点表示虚拟机和软件包,边表示顶点之间的关系,有向图整体表示所需虚拟环境;
(3)进行模型差异计算得到部署或更新时需要执行的操作集合,并对该操作集合进行排序形成工作流,其中,所述操作集合中的操作包括对顶点和边的增加、删除和修改;在首次部署时使用空模型作为旧模型,后续更新时使用前一次配置作为旧模型,用户最新提交的配置文件解析成的模型是新模型;
(4)生成硬件资源池,在实际部署前创建虚拟机硬件资源,减少部署和更新时等待创建虚拟硬件所需的时间;并使用该硬件资源池和云计算平台提供的编程接口执行硬件相关操作;
(5)将部署和更新所涉及的软件在自动化软件配置管理工具上注册为软件包,注册后的软件包中包括有安装文件、安装方法、卸载方法和配置修改方法,且该软件包用于本次部署和后续更新以及其他部署和更新;
(6)使用自动化软件配置管理工具提供的编程接口和已注册的软件包执行软件相关操作,对软件进行安装、卸载和修改;
(7)按照步骤(3)所得工作流顺序,执行所述硬件相关操作和所述软件相关操作后获得虚拟环境;
(8)修改配置文件并再次提交可以重复上述过程更新已部署的虚拟环境。
进一步的,所述步骤(1)中配置文件的描述规约包括:
使用kindOf关键词声明虚拟机类型和软件包类型,在语句末尾使用with关键词添加属性描述具体配置;
使用hostOn关键词声明某软件包安装于某虚拟机;
使用depengOn关键词声明软件包与软件包之间的依赖关系,在语句末尾使用at关键词声明所涉及的软件包配置项,未指定配置项的使用缺省配置项。
进一步的,所述步骤(2)中,边表示的关系包括软件包与虚拟机之间的hostOn、软件包与软件包之间的dependOn关系;
所述各个顶点和边的属性集为:顶点的属性表示虚拟机的名字、配置类型以及软件包的名字、类型、版本和具体配置;边的属性表示仅用于软件包与软件包之间的dependOn关系以及该dependOn关系所涉及的具体配置,软件包与虚拟机之间的hostOn关系不带属性。
进一步的,所述步骤(3)中,进行模型差异计算输出从模型A转换到模型B所需的操作集合,其具体计算过程包括:
设定四个集合,匹配集合M、新增集合N、删除集合D和修改集合C,集合M表示完全一致不需要进行操作,集合N表示需要创建新的虚拟机或安装新的软件包,集合D表示删除虚拟机或软件包,集合C表示修改软件包的配置或将虚拟机的类型进行更改,且修改虚拟机的类型由删除原虚拟机和创建新虚拟机组成;
对比模型A和模型B,利用顶点的名字匹配各顶点,利用边的起始点、终止点和属性集匹配各边,将所有匹配的对放入集合M;
扫描所有模型A中不存在但在模型B中存在的顶点和边,放入集合N,即这些顶点和边需要新建;
扫描所有模型A中存在但在模型B中不存在的顶点和边,放入集合D,即这些顶点和边需要删除;
扫描M集合中所有匹配的对,将任何有属性更改的对放入集合C并标明修改之处,即这些顶点和边的属性需要修改;
扫描集合M和集合C中初始点是软件包、终止点是虚拟机的边,如果该虚拟机处于集合N、D或C中,即该虚拟机已经不是原来的那台,则说明软件包从原来所处的虚拟机上移动了新创建的虚拟机上,应将该软件包顶点和该边放入集合N,表示在新创建的虚拟机上安装该软件包;
最后,为集合N中元素生成新建操作,为集合D中元素生成删除操作,为集合C中元素生成修改操作,忽略集合M中元素。
进一步的,所述步骤(3)中,所述工作流具体是指,将操作集合中的操作按照操作对象在模型有向图上的拓扑序即依赖关系进行反向排序:从拓扑序最大、依赖关系最深的对象开始依次执行到拓扑序最小、依赖关系最浅的对象,保证操作对象的依赖对象会先于本操作对象被创建。
进一步的,所述步骤(4)中,生成硬件资源池后设定资源池容量的最大值和最小值,调用云计算平台提供的编程接口发出指令生成虚拟机直至达到最大容量,硬件资源池中的虚拟机在部署和更新时被优先使用,其中,硬件资源池容量的最大值和最小值是一组键值对,表示不同虚拟机配置类型所对应的容量;
在执行硬件相关操作时,若需新建硬件资源,优先使用硬件资源池中的资源,硬件资源池中资源无法满足执行操作时,向云计算平台提供的编程接口发出指令创建资源;若需删除资源,优先将资源放入硬件资源池中,除非硬件资源池中相应类型资源数量以达最大值,这种情况下将销毁该资源;使用过硬件资源池中的资源后,若资源池中相应资源的数量少于规定的最小值,则会向云计算平台提供的编程接口发出指令创建一定量资源满足最小值。
有益效果:与现有技术相比,本发明具有以下优点:
(1)本发明简单高效,用户根据配置格式描述所需硬件资源、软件包、软件包与硬件关系以及软件包与软件包之间的关系,即可生成所需虚拟环境;
(2)用户编写的配置文件可以在配置相同环境时重复使用;
(3)本发明具有更新虚拟环境的能力,用户无需手动更改现有软硬件,而是直接描述期望得到的更新后的虚拟环境的各组成部分和关联,系统自动计算需要做出的更改操作并执行;同时,用户无需手动指定部署和更新的工作流,系统根据模型有向图计算依赖关系,按照合法的顺序依次执行操作;
(4)本发明中的硬件资源池加速了部署和更新过程,无需等待新的虚拟机被创建,而是直接从资源池中选用,更新虚拟环境时删除的虚拟机也会进入资源池以备后续使用;
(5)本发明中用户注册的软件包可以在配置其他环境时重复使用,并且该软件包的注册使用了现有的自动化软件配置管理工具,用户需要自行定义的部分大大减少,提高了效率和精度。
综上所述,本发明从多个方面极大的简化用户在部署虚拟环境时的工作,提高了对虚拟环境的更新能能力,加速了部署和更新过程,提高了配置的复用能力,具有广阔的应用推广前景。
附图说明
图1为本发明的模块结构示意图;
图2为本发明中配置解析模块的示意图;
图3为本发明中软件包注册模块与自动化软件配置管理工具之间的关系示意图;
图4为实施例中的模型示意图;
图5为实施例中转换后的模型示意图;
图6为实施例中硬件资源池使用流程示意图;
图7为本发明的流程示意图;
图8为本发明的简略流程示意图。
具体实施方式
下面对本发明技术方案进行详细说明,但是本发明的保护范围不局限于所述实施例。
如图1至图3所示,本发明的一种云计算平台中快速部署和更新虚拟环境系统,包括依次连接的配置输入模块、配置解析模块、模型差异计算模块和操作执行模块,配置输入模块接收用户输入的配置文件并传入配置解析模块;配置解析模块验证所接收配置文件的合法性和解析用户描述,检测不符合格式要求的描述并返回错误信息,并通过解析器解析合法文本内容生成相应模型;模型差异计算模块计算两个模型之间的差异,输出从模型A转换到模型B所需的最少操作集合,模型A可以为空,用于计算首次部署虚拟环境时需要的操作集合;并且,模型差异计算模块与配置解析模块之间设置有模型存储模块,该模型存储模块存储配置解析模块生成的模型,这些模型用于更新时进行的模型差异计算;操作执行模块执行模型差异计算模块输出的所有操作集合,本模块包括有三个子模块:操作排序模块,以及分别与操作排序模块连接的硬件操作执行模块和软件操作执行模块;硬件操作执行模块的另一端分别连接有相互联通的云计算平台和硬件资源池模块;软件操作执行模块的另一端连接有自动化软件配置管理工具,自动化软件配置管理工具上还连接有软件包注册模块。
上述软件包注册模块用于注册新的软件包,且与自动化软件配置管理工具紧密相关。用户需要上传安装文件,使用自动化软件配置管理工具提供的编程接口定义安装方法、卸载方法、配置修改方法。注册的软件包可以在当前虚拟环境部署中使用,也可以在其他部署中使用。默认提供的常用软件包如Apache、Mysql、PostgreSQL、Hadoop、OpenSSL、HAProxy,已经可以满足用户的基本需求如部署个人网站、计算集群、软件测试环境等,用户若有需求安装自定义软件包,只需根据自动化软件配置管理工具提供的编程接口进行自定义即可,自定义好的软件包可以在日后的部署中重复使用。
上述云计算平台和自动化软件配置管理工具上均设有编程接口;硬件资源池模块设定资源池容量且维护池中虚拟机资源;操作执行模块在创建虚拟机时优先使用硬件资源池中虚拟机,删除虚拟机时将虚拟机放入资源池而不是立即销毁虚拟机,除非当前资源池容量已经达到预先设定的最大值;操作排序模块根据操作对象在模型所表示的图形上的拓扑序进行反向排序形成工作流,硬件操作执行模块执行对虚拟机的增加、删除、修改操作,软件操作执行模块于执行对软件的增加、删除和修改操作。
在本实施例中,配置输入模块能够提供多种用户输入方式:提供本地命令行方式使得用户可以运行本地程序并将配置文件作为参数传入;提供RESTful API方式使得用户可以将文件以POST请求的方式提交;提供网页端图形界面方式使得用户可以使用网页上的上传功能选择配置文件进行上传,或者直接在网页端的编辑器内输入配置文件内容提交。并且该配置输入模块接受的配置文件内容需符合一定格式要求,具体包括:
使用kindOf关键词声明虚拟机类型和软件包类型,还可在语句末尾使用with关键词添加属性描述具体配置;使用hostOn关键词声明某软件包安装于某虚拟机;使用depengOn关键词声明软件包与软件包之间的依赖关系,例如可在语句末尾使用at关键词声明所涉及的软件包配置项,未指定配置项的使用缺省配置项。例如,可以给出以下例配置文件:
server1 kindOf Type1
server2 kindOf Type2
web1 kindOf Web
db1 kindOf Mysql with port=3306
web1 hostOn server1
db1 hostOn server2
web1 dependOn db1 at dbconnection
本实施例中的虚拟环境如图4所示,用户定义类型为Type1的虚拟机server1和类型为Type2的虚拟机server2各一台,此处的Type1和Type2代表不同的硬件配置(例如,4核CPU+8G内存+20G硬盘或者8核CPU+16G内存+128G硬盘,是由云计算平台提供的);用户定义类型为Web的软件包web1和类型为Mysql监听端口为3306的软件包db1,其中,web1是一个用于运行网站的软件包,db1是用来运行数据库的软件包,由系统默认提供,或用户手动注册;用户希望将web1安装在虚拟机server1上,db1安装在虚拟机server2上,并且web1是依赖于db1的,即配置web1时需要将配置中dbconnection的值修改为db1所提供的数据库服务地址,上述工作由软件操作执行模块完成。
上述虚拟环境在部署完成后可以进行更新,例如更新为图5所示的虚拟环境时,模型差异计算模块会计算从图4到图5的模型差异,计算完成后的M集合为{server2,db1,(web1,db1),(db1,server2)},N集合为{server3,server4,h1,web1,web2,(h1,server3),(web1,server1),(web2,server4),(h1,web1),(h1,web2),(web2,db1)},D集合为空,C集合为{server1},其所表示的操作集合为:
将server1从Type1转换为Type2,创建类型为Type2的虚拟机server3和server4,在server3上安装HAProxy类型软件包h1,在server1上安装Web类型软件包web1,在server4上安装Web类型软件包web2,修改h1配置使其依赖于web1和web2,修改web2配置使其依赖于db1。
本实施例中,操作执行模块接收模型差异计算模块生成的操作集合后,调用操作排序模块并根据操作对象在模型形成的图中的拓扑序进行反向排序并输出,按照排序结果,依次调用硬件操作执行模块执行虚拟机相关的操作以及软件操作执行模块执行软件包相关的操作。
而硬件操作执行模块与硬件资源池模块紧密关联,如图6(a)所示,在新增虚拟机时,首先使用资源池中的可用资源,只有在没有可用资源时才调用云计算平台提供的编程接口发出指令生成新的虚拟机,如图6(b)所示,在删除虚拟机时,将虚拟机放入资源池空闲位置,只有在资源池已达最大限制容量时才真正销毁该虚拟机。软件操作执行模块软件包注册模块以及自动化软件配置管理工具紧密相关,在安装、删除、修改软件包时利用自动化软件配置管理工具已有的功能进行实施。
如图7和图8所示,上述云计算平台中快速部署和更新虚拟环境系统的方法,包括以下步骤:
(1)用户按照虚拟环境配置描述规约描述所需虚拟环境,形成配置文件;其中,虚拟环境包括虚拟机硬件资源和软件系统,以及相互之间的关系,并且该配置文件只描述期望得到的虚拟环境的各组成部分和关联关系;
(2)解析上述所得的配置文件生成模型,模型由顶点和边形成有向图,顶点表示虚拟机和软件包,边表示顶点之间的关系,有向图整体表示所需虚拟环境;
(3)进行模型差异计算得到部署或更新时需要执行的操作集合,并对该操作集合进行排序形成工作流,其中,所述操作集合中的操作包括对顶点和边的增加、删除和修改;在首次部署时使用空模型作为旧模型,后续更新时使用前一次配置作为旧模型,用户最新提交的配置文件解析成的模型是新模型;
(4)生成硬件资源池,在实际部署前创建虚拟机硬件资源,减少部署和更新时等待创建虚拟硬件所需的时间;并使用该硬件资源池和云计算平台提供的编程接口执行硬件相关操作;
(5)将部署和更新所涉及的软件在自动化软件配置管理工具上注册为软件包,注册后的软件包中包括有安装文件、安装方法、卸载方法和配置修改方法,且该软件包用于本次部署和后续更新以及其他部署和更新;
(6)使用自动化软件配置管理工具提供的编程接口和已注册的软件包执行软件相关操作,对软件进行安装、卸载和修改;
(7)按照步骤(3)所得工作流顺序,执行所述硬件相关操作和所述软件相关操作后获得虚拟环境;
(8)修改配置文件并再次提交可以重复上述过程更新已部署的虚拟环境。
所述步骤(1)中配置文件的描述规约包括:
使用kindOf关键词声明虚拟机类型和软件包类型,在语句末尾使用with关键词添加属性描述具体配置;
使用hostOn关键词声明某软件包安装于某虚拟机;
使用depengOn关键词声明软件包与软件包之间的依赖关系,在语句末尾使用at关键词声明所涉及的软件包配置项,未指定配置项的使用缺省配置项。
所述步骤(2)中,边表示的关系包括软件包与虚拟机之间的hostOn、软件包与软件包之间的dependOn关系;
所述各个顶点和边的属性集为:顶点的属性表示虚拟机的名字、配置类型以及软件包的名字、类型、版本和具体配置;边的属性表示仅用于软件包与软件包之间的dependOn关系以及该dependOn关系所涉及的具体配置,软件包与虚拟机之间的hostOn关系不带属性。
所述步骤(3)中,进行模型差异计算输出从模型A转换到模型B所需的操作集合,其具体计算过程包括:
设定四个集合,匹配集合M、新增集合N、删除集合D和修改集合C,集合M表示完全一致不需要进行操作,集合N表示需要创建新的虚拟机或安装新的软件包,集合D表示删除虚拟机或软件包,集合C表示修改软件包的配置或将虚拟机的类型进行更改,且修改虚拟机的类型由删除原虚拟机和创建新虚拟机组成;
对比模型A和模型B,利用顶点的名字匹配各顶点,利用边的起始点、终止点和属性集匹配各边,将所有匹配的对放入集合M;
扫描所有模型A中不存在但在模型B中存在的顶点和边,放入集合N,即这些顶点和边需要新建;
扫描所有模型A中存在但在模型B中不存在的顶点和边,放入集合D,即这些顶点和边需要删除;
扫描M集合中所有匹配的对,将任何有属性更改的对放入集合C并标明修改之处,即这些顶点和边的属性需要修改;
扫描集合M和集合C中初始点是软件包、终止点是虚拟机的边,如果该虚拟机处于集合N、D或C中,即该虚拟机已经不是原来的那台,则说明软件包从原来所处的虚拟机上移动了新创建的虚拟机上,应将该软件包顶点和该边放入集合N,表示在新创建的虚拟机上安装该软件包;
最后,为集合N中元素生成新建操作,为集合D中元素生成删除操作,为集合C中元素生成修改操作,忽略集合M中元素。
所述步骤(3)中,所述工作流具体是指,将操作集合中的操作按照操作对象在模型有向图上的拓扑序即依赖关系进行反向排序:从拓扑序最大、依赖关系最深的对象开始依次执行到拓扑序最小、依赖关系最浅的对象,保证操作对象的依赖对象会先于本操作对象被创建。
所述步骤(4)中,生成硬件资源池后设定资源池容量的最大值和最小值,调用云计算平台提供的编程接口发出指令生成虚拟机直至达到最大容量,硬件资源池中的虚拟机在部署和更新时被优先使用,其中,硬件资源池容量的最大值和最小值是一组键值对,表示不同虚拟机配置类型所对应的容量;
在执行硬件相关操作时,若需新建硬件资源,优先使用硬件资源池中的资源,硬件资源池中资源无法满足执行操作时,向云计算平台提供的编程接口发出指令创建资源;若需删除资源,优先将资源放入硬件资源池中,除非硬件资源池中相应类型资源数量以达最大值,这种情况下将销毁该资源;使用过硬件资源池中的资源后,若资源池中相应资源的数量少于规定的最小值,则会向云计算平台提供的编程接口发出指令创建一定量资源满足最小值。
上述云计算平台中快速部署和更新虚拟环境系统的方法,如图7所示,简而言之即是:编写虚拟环境的配置文件,提交配置文件,解析配置文件生成模型,查询模型存储数据库,若是首次部署,则在进行模型差异计算时使用空模型与当前模型进行比较,若不是首次部署即这是一次更新操作,则在进行模型差异计算时使用距离当前最近的旧模型与当前模型进行比较,对模型差异算法输出的操作集合按照拓扑序进行反向排序形成工作流,按照该顺序执行模型差异算法输出的操作,部署、更新相应硬件和软件,最终获得所需的虚拟环境。