祁思博,黄 伟,梁洪泉
(中国电子科技集团公司第五十四研究所,河北 石家庄 050081)
近年来,建模与仿真技术正向“网络化、虚拟化、智能化、协同化、普适化、服务化”的方向发展[1],虚拟化仿真技术在建模与仿真领域得到了广泛应用。但传统的虚拟化仿真技术存在弊端,如仿真计算资源利用率较低,无法被网络上的其他用户共享[2];对于仿真任务、仿真资源的描述信息缺乏统一的描述机制,仿真应用难以分布式协作;各领域和组织建立了大量面向不同领域、层次及粒度的仿真系统,这些系统与应用耦合程度紧密,难以解决模型组合重用[3]等问题。
云计算的出现克服了以上弊端,用户可以在云平台上对虚拟资源进行集中、灵活地控制,并按需、动态地进行配给。李伯虎院士在 Cosim-Grid 基础上,在系统中引入“云计算”的概念,构建了一种基于云计算理念的网络化建模与仿真平台[4],目标是进一步提高细粒度资源的共享能力、支持多用户协同能力、加强安全机制并且提高易用性,建立了普适化仿真体系结构。但是,该平台在资源封装灵活性和云平台易用性等方面存有不足。赵正扬[2]等人设计了一种网络仿真云化平台,实现了仿真任务的调度、控制和管理的云化,但是平台功能和虚拟化仿真能力不够完善。
本文以云计算为基础,对仿真资源的虚拟化、池化以及构件化进行研究与分析,基于OpenStack[5]平台,结合中间件、Docker[6]等技术,提供一套基于云计算的虚拟化仿真平台构建方案。
云计算是以虚拟化技术为基础,以网络为载体,以用户为主体并为其提供基础架构级、平台级和软件级等服务,整合大规模分布式的计算、存储、数据及应用等资源进行协同工作的超级计算服务模式[7]。
云计算具有诸多优点,主要包括:“云”的规模大,支持用户在任意位置使用各种终端获取应用服务;以数据多副本容错、计算节点同构可互换等多种措施保障服务;用镜像执行或者提供服务的机制处理资源的异构性;支持多个不同类型应用同时运行,具有通用性,可以满足应用拓展和用户增加的高可扩展性能;节约计算成本,简化运维工作,按需提供服务[8]。
通过多种虚拟化技术,云计算实现了物理资源与特定应用环境之间的解耦,将各种物理资源转化为云计算资源池中的逻辑资源,并通过网络对其进行共享[9]。根据虚拟资源类别的不同,典型的云计算提供基础设施即服务(Infrastructure as a Service,IaaS)、平台即服务(Platform as a Service,PaaS)和软件即服务(Software as a Service,SaaS)3类服务模式。
IaaS是一种管理计算资源的模式。在这种模式下,用户无需购买服务器、路由器和交换机等网络设备,即可随时随地部署和运行存储、处理、网络以及其他基本的计算资源[10]。
PaaS是一种将服务平台或开发环境作为服务的交付模式。在这种模式中,云端将软件开发平台作为一种服务,用户可以控制部署的应用程序以及运行应用程序的托管环境配置。
SaaS是一种软件的交付模式。在这种模式中,云端集中式托管软件应用及其相关的数据,用户只需要使用终端访问互联网,不需要安装软件,即可使用软件的全部功能。
云计算技术的出现与成熟为集中、灵活地管理提供了技术基础。通过应用云化,将传统应用搬到云计算平台,基于虚拟化技术构建资源池,借助云平台管理实现资源的自动调度、应用的自由迁移和多租户管理等。对于仿真应用的云化升级,随之而来的便利是,无论何时何地用户仅需通过浏览器,登录仿真应用的云化平台,就能进行仿真功能的操作和仿真资源的管理,并根据仿真任务需求,按需获取不同模式的服务。
虚拟化技术是提高仿真资源利用率、降低仿真服务成本的有效方法。面向云计算的仿真资源虚拟化,通过在物理基础设施与业务应用需求之间引入一个逻辑层,对二者进行解耦来隐藏底层基础设施的异构性,将分布、异构的仿真资源虚拟化为同构的虚拟仿真资源,做到资源成池,以实现地理分散、形态异构的仿真资源被快速准确地发现与选择,最大化仿真资源与仿真能力的全局流通性。如图1所示。
图1 面向云计算的仿真资源虚拟化
一般而言,常规仿真资源具有软件属性,仿真计算资源具有硬件属性,软硬件的差别导致二者采用了不同虚拟化技术。对于常规仿真资源的虚拟化,采用基于语义的仿真资源虚拟化方法,提供仿真资源的含义及正确使用方式,为协作的实体解决由各种差异所引起的语义冲突。对于仿真计算资源的虚拟化,采用典型虚拟化技术,提供不同粒度的虚拟化计算资源,为匹配各种规模的常规仿真资源做支撑。
语义Web服务框架OWL-S是一种用来描述语义Web服务资源的特殊领域本体,使用OWL-S描述虚拟资源可以实现资源发现、资源分配及资源监控等操作,使资源的管理和操作更加智能,从而满足资源管理在灵活性、可扩展性和层次性等方面的需求[11]。OWL-S包括服务配置、服务模型和服务访问3个组件。其中,服务配置用于对资源信息的描述,实现仿真资源在语法层面的虚拟化;服务模型用于描述资源的具体实现细节;服务访问用于对资源访问进行描述,提供资源正确的使用方式,三者实现仿真资源在语义层面的虚拟化[12]。
仿真计算资源的虚拟化,按照实现层次划分为硬件级虚拟化和系统级虚拟化。硬件级虚拟化,是在计算资源硬件和操作系统之间增加虚拟层,称为Hypervisor或者虚拟机监视器(Virtual Machine Monitor,VMM),可允许多个操作系统和应用共享一套基础物理硬件,虚拟机运行在虚拟层上,拥有独立的虚拟化硬件资源和操作系统,与其他虚拟机完全隔离。系统级虚拟化,是在一个主机操作系统上增加虚拟层,将系统划分成多个互相隔离的容器,是内核轻量级的操作系统层虚拟化技术,主要由Namespace,Cgroups两大机制来保证实现,可允许多个容器共享一个主机系统,容器运行在虚拟层上,拥有独立的命名空间和进程资源,并通过命名空间与其他容器隔离。
虚拟化仿真利用资源池技术来为上层提供服务,通过对虚拟化常规仿真资源和仿真计算资源进行池化,支撑仿真资源的发现、调度与回收。虚拟资源池的构建与维护过程是虚拟资源调度的基础,负责管理分布式虚拟资源的使用过程,识别虚拟资源,查找和分配虚拟资源,监测虚拟资源的运行情况等,并提供统一的资源访问接口。虚拟资源池构建与维护的整个生命周期,如图2所示。
图2 虚拟资源池构建与维护过程
资源感知:对仿真资源进行感知和发现,实时监测虚拟仿真资源的状态,以确保资源池中数据的实时更新。
资源描述:对感知到的虚拟仿真资源按其分类进行统一描述,屏蔽底层资源的异构特性,并为资源调度过程提供统一的资源访问接口。
资源注册:向资源池中注册新发现的虚拟仿真资源,使新发现的资源成为可管理对象。虚拟资源的注册信息包括资源的属性信息,如链路类型、链路协议和链路带宽等。
资源发现:根据资源请求,从虚拟资源池中查找满足资源请求条件的可用资源集合。
资源分配:依据约束条件从资源发现过程提供的候选资源集合中选择最佳匹配的虚拟资源,为资源请求指派合适的资源。
资源预留:为资源请求预留相关资源,要求在指定时间段内把资源预留给指定的业务。
资源回收:当业务生命周期结束后,释放所用资源,由资源池回收,等待下一次分配。
OpenStack是一组用于构建和管理云计算管理平台的软件工具,由美国国家航空航天局(NASA)和Rackspace合作研发,于2010年7月正式对外公开。以Apache许可证授权,旨在为公共及私有云的建设与管理提供软件的开源项目。OpenStack既是一个社区,也是一个项目和一个开源软件,它提供了一个部署云的操作平台或工具集,宗旨在于帮助组织运行为虚拟计算或存储提供服务的云,为公有云、私有云提供可扩展、灵活的云计算。
OpenStack开源云平台主要提供计算、存储及网络等资源,整体项目根据资源的服务类型不同,拆分为不同的逻辑组件进行独立开发,组件之间通过消息队列进行互相调度[13]。OpenStack核心项目包括Nova,Neutron,Cinder,Glance,Horizon,Keystone等。
Nova组件被视为云框架控制器的核心,支持各种各样的hypervisor以及裸机配置,Nova API作为管理资源池的主要接口,支撑Nova管理本地计算(CPU,MEM)资源和编排二级资源(网络和存储)的供给。
Neutron组件用来提供云计算环境中的虚拟网络功能,支持多种物理网络类型,以插件形式支持SDN插件,使用被Nova运行的hypervisor提供网络资源。
Cinder组件用来为虚拟机或容器镜像提供块(传统磁盘)存储服务。
Glance组件主要用来管理、存储镜像,支持本地存储,NFS,SWIFT,Ceph等,可以存储KVM,Docker等软件镜像。
Keystone组件作为OpenStack的认证模块,对OpenStack中租户的信息管理进行认证,任何服务请求需要经过它的验证获得服务的endpoint。
Horizon组件为用户和管理员提供了一个OpenStack组件功能相关的图形化用户界面。
面向云计算的虚拟化仿真具有“集中控制、灵活重组、协作共享”等需求,采用虚拟资源池、构件化封装及发布订阅协同等技术,结合虚实转换协议、复现粒度映射实现分布式、多模式仿真系统间的互联互通、信息处理和数据采集,在此基础上,提出基于云计算的资源层、控制层和应用层3层虚拟化仿真体系架构,如图3所示。
图3 虚拟化仿真平台体系架构
虚拟化仿真资源层主要完成各类仿真资源的虚拟化,利用OpenStack中的典型虚拟化技术对仿真计算资源进行虚拟化,形成以KVM,Docker为主的虚拟化仿真计算资源池;利用OWL-S对常规仿真资源进行语义层虚拟化,形成虚拟化常规仿真资源池,并支持“仿真元模型、仿真模型、仿真系统”3个层面仿真模型的柔性重组。
控制管理层主要完成对虚拟化仿真资源的管理控制,利用典型中间件技术对虚拟化仿真资源进行控制管理,实现仿真参数重配置、模型柔性重组、故障动态处理、仿真任务管理、状态实时监控及资源决策调度等功能,为上层的仿真应用部署提供支撑。
仿真应用层是面向用户的具体仿真实现,支持数字仿真、全虚拟化、轻量级虚拟化和仪器仪表等多模式联合仿真,支持大规模分布式协同仿真,结合仿真规划与部署、仿真协同控制、仿真评估与呈现支撑具体仿真能力的验证,进而实现大系统的虚拟化仿真应用。
云计算用镜像执行或者提供服务的机制处理资源的异构性。基于镜像技术,利用构件化封装的方法,将虚拟化仿真资源集成为具有特定仿真功能的仿真应用。一个仿真任务需要集成多个仿真应用相互配合进行工作。由于Docker能保证软件依赖环境的一致性,因此整合Docker到工作流中,在分布式集群系统中具有一定的价值[14]。对于轻量级虚拟化仿真,Docker技术允许将仿真应用的构件、软件栈等以Docker镜像或衍生脚本的形式封装,同时调度多个软件构件镜像相互配合。另外,配合Docker Compose等一些编排工具,仿真应用构件之间关系也能被封装成Docker镜像之间的编排关系。
构建流程如图4所示,仿真应用发布者编写应用构建命令,指示仿真应用镜像构建如下。
图4 基于镜像的构件化仿真应用构建流程
① 编译镜像构建阶段。依据编译环境配置,生成一份面向编译环境的Dockerfile资源文件包,利用DockerBuild命令构建编译用镜像。编译镜像构建完毕,调用DockerRun命令加载该镜像编译已挂载在该镜像中的代码。
② 运行镜像构建阶段。根据执行镜像的配置,生成另外一份用于构建软件运行镜像的 Dockerfile资源文件包,调用DockerBuild 命令构建运行镜像。
③ 重复以上阶段,直到所有构件镜像构建完毕。构件镜像的数目视构建命令中声明的容器数目而定。
④ 生成运行与编排配置。根据构建命令中容器编排设定,生成一份JSON格式的本地化安装引导文件,并在软件执行前被转换成一份yaml格式的可被Docker Compose识别的编排配置文件。
⑤ 发布应用。仿真应用的所有执行镜像会和其编排设定一起打包,并发布到仿真应用仓库中,所有Docker镜像会被上传到仿真应用仓库的Docker Repository中。
中间件提供以数据为中心的发布-订阅机制,对分布式实时系统中数据发布、传递和接收的接口和行为进行标准化,且提供丰富的QoS策略支持。面向云计算的虚拟化仿真环境,可以集成HLA[15]/DDS/SOCKET/数据库/内存共享等接口,支持多种分布式技术共存及与协议无关的通用开发接口,如图5所示。
图5 混合架构中间件技术
图5中,数据分发中间件集合了HLA,DDS,SOCKET,桥接和虚拟接口对等通信方式,完成各系统间的数据高效分发。
SOCKET套接字:SOCKET是网络通信的基本构件,具有简单、灵活且易于理解的特点,用于不同主机间虚拟机环境之间的通信。
HLA高层体系架构:HLA是应用于分布式仿真系统的通用技术框架,在时间管理和联邦管理方面具有明显优势,主要应用于数字仿真系统的联合仿真。
DDS数据分发服务:以数据为中心的发布—订阅机制,应用于业务应用系统在弹性通信网络中的高效数据分发。
桥接:将虚拟机网络配置到本地主机网络的网段中,以实现节点之间、各节点与宿主机以及跨主机之间的通信。
虚拟接口对:用于不同网络命名空间间进行通信的方式,实现同主机内,容器节点间的高效信息交互。
虚拟化仿真一般包含仿真准备、仿真实施和仿真评估3个阶段。其中,仿真准备一方面是仿真资源的准备,包括软硬件环境和知识库等;另一方面是在云环境下建立请求方与提供方的联系。仿真实施阶段包括仿真需求定义、仿真任务定义、仿真参数及中间结果存储等,云平台对仿真任务状态进行全局维护,实现数据更新和仿真任务调度,并响应用户的并发请求。评估阶段是在仿真任务结束之后,对系统更具用户需求完成仿真活动,将相关的结果反馈给用户,用户对接收数据的质量和方式这一过程进行评价,并指导各方优化升级。
对于一项具体仿真试验任务。首先,用户通过网络进入仿真平台门户,定义仿真任务和需求;然后,仿真平台按任务要求自动查找和发现虚拟仿真资源,并将这些虚拟仿真资源按需进行基于镜像的构件化集成,构造仿真应用;最后,仿真平台根据仿真应用对资源实施动态管理,进行分布式仿真组件的协同运行,完成仿真任务。相关流程如图6所示。
图6 仿真运行流程
使用华为和浪潮2台异构服务器搭建虚拟化仿真平台,浪潮服务器作为控制节点及计算节点1,用以支撑基于KVM的虚拟机构建;华为服务器作为计算节点2,用以支撑基于Docker的容器构建;服务器操作系统采用CentOS 7.2,OpenStack软件版本采用M(Mitaka)版。
所搭建的虚拟化仿真平台可支撑典型的仿真任务,利用该平台搭建了包含KVM/Docker,ONOS,OVS的软件定义网络环境,支撑SDN体制的仿真验证。仿真过程如图7所示。
图7 基于虚拟化仿真平台的仿真过程
操作过程分为3步。首先,用户通过浏览器登录虚拟化仿真平台;然后,在云环境中查找虚拟化仿真资源,并利用镜像构建仿真应用;最终,在浏览器中直接对仿真应用进行配置及仿真验证。仿真结果表明,提出的仿真平台为基于云计算的虚拟化仿真创新提供了良好的支撑。
面向云计算的虚拟化仿真平台弥补了传统虚拟化仿真技术的弊端,实现了不同虚拟化仿真之间的协作、共享以及多个仿真对物理链路和物理服务器等物理资源的复用,最大程度地提高了物理设备的资源利用效率。下一步,将融入智能化资源调度、SDN等技术,使得虚拟化仿真平台更加智能化、网络化与服务化。
随着虚拟化仿真技术的不断发展,基于云计算的虚拟化仿真将更加成熟,从而为用户提供更好的服务。