本发明涉及一种基于虚拟化技术的虚拟数据中心资源提供方法,属于计算机应用技术领域。
背景技术:
在云计算时代下,随着社会对于计算需求的不断扩大,数据中心的规模也在迅速变大。在庞大的数据通信量的背后,数据中心本身的资源平均利用率却非常低下,大部分设备都空闲,给数据中心增加了巨大的能耗负担。所以目前,数据中心使用虚拟化技术,可以有效降低数据中心能耗,提高数据中心的资源利用率。而虚拟数据中心的提出是一种在云计算服务的基础上形成的提供可快速自动化部署、实时响应、即时租用、按需分配和动态资源扩展的弹性式自助式服务的业务类型。在这种新趋势下,每个租户的资源请求可抽象为一组虚拟机(virtualmachine,简称vm)构成的虚拟数据中心(virtualdatacenter,简称vdc),每个虚拟机对应一定的资源(包括cpu、内存以及硬盘等),同时为了传递数据和中间文件,虚拟机之间也需要建立具有带宽保障的通信链路,以满足虚拟机之间通信的需求。由于虚拟机放置与虚拟机间通信带宽以及路由选择的紧耦合,使得把虚拟数据中心映射到底层物理网络的这个过程变得非常复杂。在虚拟数据中心映射过程中,需要考虑的主要因素包括可靠性、物理计算资源使用情况、网络带宽消耗以及物理设施的能耗。当前的虚拟数据中心映射的主要趋势是在虚拟数据中心的创建过程中,尽可能地使虚拟机均匀分配到各个物理服务器上,从而达到虚拟机之间的影响最低,并实现底层物理设施的负载均衡的情况。但是,对于虚拟数据中心的映射如果仅仅是做成简单的负载均衡并不能满足和适用于所有的应用场景,比如在对通信带宽有高需求的应用场景下,这种直接将各个虚拟机打散并随机负载到各个服务器上的做法无疑会加重网络通信的负担,各个虚拟机之间的数据通信会转变为计算节点之间的网络通信,这样产生的后果是在物理的链路当中产生大量的网络流量,占用极大的网络带宽,从而导致网络资源消耗过高。并且,这种分散式的映射方式会导致一种大量服务器以低负载状态投入生产的情况,从而产生极大的能源浪费,违反了云计算绿色节能的理念。
技术实现要素:
为了克服上述不足,本发明实现了一种基于虚拟化技术的虚拟数据中心资源提供方法。在某个物理服务器上最大可能的部署该虚拟数据中心中的多个虚拟机,使虚拟机之间的链路消耗最小化。在进行虚拟数据中心映射时,从能耗和带宽消耗的角度来看,虚拟数据中心中所有的虚拟机要尽可能整合,占用尽可能少的物理服务器,这样节省了服务器间的带宽消耗,且其他不用的物理服务器就可以关闭从而到达节能的目标。该方法实现了对于底层物理资源的管理和网络的虚拟化,用户可以利用本项发明提供的前端页面实现如下功能:简单快速的生成虚拟数据中心的模板并向系统提交;修改目前已有的虚拟数据中心的配置;删除目前已有的虚拟数据中心。从而使初学者能够简单方便地使用基于虚拟化的网络资源,并在其上部署sdn交换机与控制器,快速的搭建出一套虚拟数据中心环境。
本发明的技术方案:
一种基于虚拟化技术的虚拟数据中心资源提供方法,分为用户交互层、逻辑控制层和资源供给层;
用户交互层负责接收用户请求、对于虚拟网络的网络拓扑创建请求的接受以及网络拓扑信息的展示;用户由前端进行登录,并提交对于底层网络部署的相关操作,并将数据发送到服务器端;前端由flex和actionscript语言实现,flex负责网页的构造和美化,actionscript负责网页功能的实现与服务器端交互;
逻辑控制层是管控层,负责接受、处理用户交互层发送的数据以及与数据库进行交互;逻辑控制层用java语言实现代码逻辑,同时应用spring框架的依赖注入及声明式事务来管理逻辑控制层的对象的初始化和进行事务管理;其中,数据库负责存储逻辑控制层接收到的虚拟数据中心的网络拓扑的相关信息,以供用户交互层查询使用;用户交互层和逻辑控制层通过blazeds访问远程服务接口实现通信,blazeds是一个基于服务器的java远程调用和web消息传递,使得逻辑控制层的java应用程序和运行在浏览器上的flex应用程序相互通信;而逻辑控制层通过mybatis和spring框架对数据库进行存取,mybatis和spring之间通过mybatis-spring进行整合,使用mybatis-spring类库中的类,spring加载必要的mybatis工厂类和session类;通过mybatis-spring类库将mybatis数据映射器和注入sqlsession映射bean中,实现逻辑控制层对数据库的操作;
逻辑控制层还负责与资源供给层通信,逻辑控制层通过向资源供给层的openstack的restapi接口发送http请求进行交互;资源供给层通过运行的各种config脚本进行请求的接受和处理,并完成对资源的管理,并将返回结果以http请求的方式返回给逻辑控制层模拟数据流量的转发和交换。
a.上传虚拟数据中心网络拓扑
a1.根据用户确定创建的虚拟数据中心网络拓扑,创建虚拟机、交换机和控制器的组件;并且设置各个组件的配额,主要包括虚拟机的cpu数量,内存的大小,交换机的种类,控制器的版本;
a2.创建链路,根据所需网络拓扑连接虚拟机、交换机和控制器,其中,控制器只能连接交换机,控制器和虚拟机之间不存在连接链路,并且在创建链路的过程中需要对链路的带宽配额进行设置;
a3.数据传递,在flex语言下建立虚拟机、交换机、控制器、网络链路对象,并且用配额参数来填充其属性,之后通过使用remoteobject远程调用触发函数的方法进行对象的传递,将所需要的数据以对象的形式传递给逻辑控制层;
b.采集和创建虚拟数据中心网络拓扑
b1.逻辑控制层的remoteobject函数被调用,此时逻辑控制层获取到了以对象方式传递过来的数据;
b2.逻辑控制层确定采集的数据中心网络拓扑信息,包括控制器、交换机、虚拟机和网络链路相关信息,判断拓扑组件当中的配额信息,如虚拟机的cpu数量以及内存大小,链路的带宽大小,交换机和控制器的种类和版本;进一步在内存中建立对应的对象,用于存放数据;
b3.确定拓扑信息和配额信息后,通过vc-ace(virtualclusters-actualclustersembedding)算法,将虚拟数据中心的网络拓扑映射到物理资源当中,并得到映射算法的匹配结果;具体如下:
b31.收集网络拓扑当中的每个组件的配额信息,将其抽象成一个虚拟集群模型vc(n,b,c),其中,n表示虚拟机的集合,c表示虚拟机单机的处理性能,b表示每个虚拟机的进出口带宽总和;
b32.逻辑资源层查看物理资源的使用情况,并抽象为集合s,其中s=(vs,es,cap,cost),vs表示物理服务器节点的集合;es表示物理服务器之间的链路的集合;cap表示物理环境下的各项资源的总容量;cost表示当前物理环境下的资源实际消耗情况。
b33.vc和s一并输入到vc-ace算法中,得到映射结果:mapv:vvc→vs,表示虚拟机与物理服务器点对点映射结果;mape:evc→es,表示虚拟网络链路与真实物理网络链路的映射结果。由于vc-ace是一种聚合优先的算法,其主要功能是将同一个拓扑中的相似节点尽可能的汇聚,这样可以使得虚拟数据中心中所有的虚拟机尽可能地在物理服务器当中聚合,占用尽可能少的物理服务器数量,从而提高了资源利用率,并且此时一些未使用的服务器可以下电了,故也同时降低了总的能源消耗。
b4.向资源供给层下发资源创建指令,因为逻辑控制层和资源供给层的交互方式是通过http请求的方式实现的,所以拼接资源创建指令就是拼接http请求。不同的资源创建指令需要拼接不同的http请求,http请求拼接具体过程是:首先确定http请求类型(包括post,get,delete),在确定了http请求类型之后,再将需要请求的信息内容加入到http中,这样一条完成的http请求就拼接完成了。
b5.资源供给层在收到来自用户交互层发送来的http请求时,首先进行格式的判断,若是格式不正确则直接返回错误,不再进行下一步的操作;若格式正确,此时资源供给层解析http请求,获取请求信息的类型,并进行资源的创建,然后将需要返回的信息封装为json格式的字符串并返回给逻辑控制层。
b6.逻辑控制层在获取到来自资源供给层的返回信息后,进一步对其进行解析。由于返回的数据是json格式,所以其解析过程是在逻辑控制层的服务器中定义一个map对象用来接收并装载返回的json字符串,并且通过map对象取出json中存入的对象,最后再调用数据库的操作方法将信息更新到数据库当中。
c.展示虚拟数据中心网络拓扑
c1.用户选择需要查看的网络拓扑,此操作发生在用户交互层。
c2.用户交互层根据用户选择的网络拓扑作为参数进行remoteobject的远程触发函数的调用获取到数据中所需的拓扑信息的当前值,其结果以对象的形式返回至用户交互层,若不存在则直接返回空。
c3.用户交互层接收到返回的数据之后,从其中取出封装的对象,直接在网页上进行展示。
本发明的有益效果:本发明不仅实现了一种基于虚拟化技术的虚拟数据中心资源提供方法。并且针对能耗和资源的利用上进行了优化,在某个物理服务器上最大可能的部署该虚拟数据中心中的多个虚拟机,使虚拟机尽可能聚集。在进行虚拟数据中心映射时,从能耗和带宽消耗的角度来看,虚拟数据中心中所有的虚拟机要尽可能整合,占用尽可能少的物理服务器,这样节省了服务器间的带宽消耗,且其他不用的物理服务器就可以关闭从而到达节能的目标。
附图说明
图1是本发明的整体架构图。
图2是本发明的虚拟数据中心网络拓扑上传的流程图。
图3是本发明的虚拟数据中心网络拓扑的采集和创建流程图。
图4是本发明的虚拟数据中心网络拓扑展示流程图。
具体实施方式
以下结合附图和技术方案,进一步说明本发明的具体实施方式。
整个解决方案的架构如图1所示,整体架构主要分为三个层次,用户交互层,逻辑控制层,资源供给层。其中用户交互层负责接收用户请求,用户由前端进行登录,并提交自己对于底层网络部署的相关操作,并将数据发送到服务器端,同时,该层也主要负责对于虚拟网络的网络拓扑创建请求的接受,以及网络拓扑信息的展示。前端主要由flex,actionscript语言实现,其中flex负责网页的构造和美化,actionscript负责网页功能的实现,同时还负责与服务器端交互数据。逻辑控制层是整个平台的管控层面。逻辑控制层在接受到用户交互层发送来的数据之后通过编写好的处理逻辑对其进行处理,并与数据库模块进行交互。逻辑控制层主要用java语言实现代码逻辑,同时应用了spring框架的依赖注入及声明式事务来管理逻辑控制层的对象的初始化和进行事务管理。数据库部分主要是负责存储逻辑控制层接收到的vdc虚拟数据中心的网络拓扑的相关信息,以供用户交互层查询使用。用户交互层和逻辑控制层通过blazeds访问远程服务接口实现通信,其中blazeds是一个基于服务器的java远程调用和web消息传递技术,使得逻辑控制层的java应用程序和运行在浏览器上的flex应用程序能够相互通信。而逻辑控制层通过mybatis和spring技术对数据库进行存取操作,mybatis和spring之间通过mybatis-spring进行整合,使用mybatis-spring类库中的类,spring将会加载必要的mybatis工厂类和session类。这个类库也提供一个简单的方式来注入mybatis数据映射器和sqlsession到业务层的bean中,这样就实现了逻辑控制层对数据库的操作。同时,逻辑控制层还要负责与资源供给层通信,逻辑控制层通过向底层的openstack的restapi发送http请求进行交互。资源供给层通过运行的各种config脚本进行请求的接受和处理,并完成对资源的管理,并将返回结果以http请求的方式返回给逻辑控制层。
图2是本发明的虚拟数据中心网络拓扑上传的流程图,描述了本方法定义的虚拟数据中心网络拓扑的上传过程。第一步是用户确定所需拓扑;第二步是创建组件,其中主要包括虚拟机、交换机、控制器,本法步骤在用户交互界面的网页上进行,主要操作是用户通过拖拽将组件放置于主面板中,当所有组件都完成创建之后进行下一步。第三步是检查是否有连接链路的需求,如果是的话,则进行链路的创建,链路创建必须满足这三种情况:虚拟机与交换机,交换机与交换机,交换机与控制器,否则就是非法链路,无法进行创建。以上三步一直循环,知道没有可以创建的组件和链路为止,之后执行下一步。第四步,当所有组件和链路都已经创建完毕时,生成所有创建的组件和链路对应的flex前台对象。第五步,通过调用远程触发函数,将所有这些拓扑的数据以对象的形式传递给逻辑控制层。
图3是本发明的虚拟数据中心网络拓扑的采集和创建流程图,描述了逻辑控制层对拓扑数据的采集和根据采集结果进行分析和对资源进行创建的过程。第一步是逻辑控制层的远程触发函数呗调用,其数据处理进程被唤醒。第二步是接收来及用户交互层的数据并以对象的形式存放在服务器的本地内容当中。第三步分为两个分支,其一是逻辑资源层收集网络拓扑当中的每个组件的配额的数据,将其抽象成一个虚拟集群模型vc(n,b,c),其中n表示虚拟机的集合,c表示虚拟机单机的处理性能,b表示每个虚拟机的进出口带宽总和,逻辑资源层查看物理资源的使用情况,并将真实的物理环境中的资源也抽象为集合s,其中s=(vs,es,cap,cost),cap表示物理环境下的各项资源的总容量;cost表示当前物理环境下的资源实际消耗情况。第四步,将vc和s两个模型作为输入参数递交给网络拓扑数据处理模块,网络拓扑数据处理模块调用vc-ace算法进行虚拟数据中心资源和实际物理资源的映射进行计算。由于vc-ace是一种聚合优先的算法,其主要功能是将同一个拓扑中的相似节点尽可能的汇聚,这样可以使得虚拟数据中心中所有的虚拟机尽可能地在物理服务器当中聚合,占用尽可能少的物理服务器数量,从而提高了资源利用率,并且此时一些未使用的服务器可以下电了,故也同时降低了总的能源消耗。第五步,如果输入的参数没有任何异常,则得到计算的映射结果。mapv:vvc→vs,表示虚机与物理服务器点对点映射结果。mape:evc→es,表示虚拟网络链路与真实物理网络链路的映射结果。,否则跳回第一步。第六步,根据得到的计算结果进行下发指令的生成,因为逻辑控制层与资源供给层的交互主要是通过http请求的方式,即此时的执行下发就是在拼接http请求并发送给资源供给层。第七步,资源供给层在接收到逻辑控制层发送的http请求之后,解析http请求的内容,并进行http请求的合法性验证,若验证合法就进行下一步,否则返回错误信息给逻辑控制层,并且调回到第六步。第八步,按照http请求的内容进行资源的创建,其中的资源主要以json键值对的形式存放,资源供给层的config进程按照解析获得的键值对直接调用对应的openstack底层restapi借口下发创建命令,并且在创建完成之后将资源创建结果同样以http请求的形式返回给逻辑控制层。第九步,逻辑控制层根据返回的http请求结果进行解析,并根据解析的结果在服务器端的内存中建立对象以存放返回结果的数据,之后根据结果对数据库的表进行更新。至此,整个拓扑的创建过程完毕。
图4是本发明的虚拟数据中心网络拓扑展示流程图,描述了用户交互层进行虚拟数据中心网络拓扑展示的过程。第一步,用户选择需要查看的网络拓扑。第二步,用户交互层根据用户选择的网络拓扑作为参数,调用remoteobject远程触发函数。第三步,逻辑控制层接感应到触发函数被调用,并作出回应。第四步,逻辑控制层根据触发函数中传递过来的参数进行数据库的访问,并进行数据的查询,如果查询成功则进行下一步,否则返回第一步。第五步,逻辑控制层根据数据库返回的表项在内存中建立对应的对象,并将数据以封装好的对象的形式传递给用户交互层。第六步,用户交互层获取到数据,并解析从中获取到封装的对象。第七步,直接使用封装好的对象导入到对应的actionscript当中,进行网页上展示。