来源:电脑知识与技术杂志 更新时间:2014-02-08
开源云平台反映了云计算领域的发展历程和市场分布,通过对Eucalyptus、Convirture、OpenNebula、CloudStack 四款开源云计算管理平台的背景、架构、功能方面的研究来分析云计算管理平台,达到在商务和功能上对云平台进行选择的目的。
云计算是并行计算(Parallel Computing)、分布式计算(Distributed Computing)和网格计算(Grid Computing)的发展,或者说是这些计算机科学概念的商业实现。它是是虚拟化(Virtualization)、公用计算(Utility Computing)、IaaS(基础设施即服务)、PaaS(平台即服务)、SaaS(软件即服务)等概念混合演进并跃升的结果。云平台是基于云计算的商业模式,目前市面上形形色色的虚拟化管理软件总数很多,作为一个机构、或者是一家企业,在向虚拟化过渡时都不可避免地要面临软件选型的问题。如何从虚拟化过渡到云计算,如何选择云计算管理平台?是否可以保障系统的稳定性、可靠性和安全性;是否可以和现在的虚拟化平台兼容;是否有完整的生命周期管理;是否便于管理。该文通过对云计算管理平台的背景、架构、功能等方面的比较研究,促进对云产品的功能定位,了解云品台的未来发展趋势。
1、背景研究
云作为一个商业平台已经改变了商业游戏的规则,这是事实,未来企业不仅需要向外延伸来建立雄厚的商业关系网,也需要整合其他系统。而对云平台的背景的研究可以了解云平台的基础是什么,最初的目的是什么,以便我们能从我们的需要选择它。
1.1 Eucalyptus
Elastic Utility Computing Architecture for Linking Your Programs To Useful Systems(Eucalyptus)是一种开源的软件基础结构,用来通过计算集群或工作站群实现弹性的、实用的云计算。它最初是美国加利福尼亚大学Santa Barbara 计算机科学学院的一个研究项目,在2008 年5 月发布1.0 版本。学院派文化浓郁。中文通常称及为“桉树”。Eucalyptus 主要是用C开发的,其中CLC 是由java 完成的,Tools 是由perl 完成的。通过libvirt免费支持KVM及Xen,Vmware收费。所有组件通过WSDL通信,兼容EC2发布对外接口。它曾经做为Ubuntu企业云(UEC)支持的虚拟化平台,由于其并不完全开源后来有被OpenStack取代的趋势。目前最新版本为Version 3.1.2。目录主架构已经开源,通过插件及服务收费获取利润。
1.2 Convirture
Convirture与Xen同步发展,对Xen支持良好。核心代码采用python与extjs开发。以易用性及管理系统表现出色。它起源于2006年发起的XenMan项目,与Xen项目的发展基本同步。目前的版本为ConVirt 2.0。现任CEO和工程部门的EVP均来自Oracle。用户规模与Eucalyptus相当,论坛的活跃程度很高。官方文档非常完备,按照文档操作至少能够顺利地完成安装和配置过程。在网络上搜索到的中英文的安装配置教程也基本可用。商务沟通非常顺畅,社区发表在论坛上的问题通常在48小时内得到回应,通过技术支持电子邮件提出的问题通常在24小时内得到回应。
1.3 OpenNebula
OpenNebula由Universidad Complutense de Madrid(马德里大学) 开发,业内评价比较高,具有移动、百度等国内大客户支持。除了支持私有云结构之外,OpenNebula 还支持混合云的概念。混合云允许私有云基础架构与公共云基础架构(比如Amazon)的集成以提供更高级别的伸缩, 混合云通过插件与Amazon EC2配合完成。OpenNebula 支持Xen、KVM/Linux 和VMware,并且依赖libvirt进行管理。它提供EC2及OCCI两套接口。通常采用简称“ONE”。
1.4 CloudStack
CloudStack最初由VMOps公司开发,后被思杰收购至于Apache 2.0协议下管理。它的创始人为美籍华人梁胜,核心代码用Java开发。与OpenStack有许多共同特性,最具有竞争关系的一个项目。思杰同时在规划研发CloudStack商业版。思杰对CloudStack与OpenStack的评价:“CloudStack和OpenStack最大的区别在于,OpenStack一开始就是开源社区,在研发者当中有很多应用,但是到现在没有成熟的商业应用;而CloudStack则相反,在开源之前,已经有接近一百家的客户在大规模商业部署了。换句话说了,这是将一个已经成熟的商品进行开源。Citrix公司认为这是两者之间最大的差异,也是Citrix将重心从OpenStack切换到CloudStack的原因。”国内天云趋势与思杰就CloudStack在中国的推广、应用进行合作。
2、云平台架构研究
经典云计算架构包括IaaS、PaaS、SaaS三层服务。云计算平台架构细分为硬件层、虚拟层、软件平台层、能力层、应用平台以及软件服务层。云平台的云计算架构虽然分了多个层次,但是每个层次之间都是松耦合关系,在一个具体的云平台中也不是每个层次的服务都使用到,而是根据具体的应用环境搭建相应的云计算架构。企业要根据自己的商业模式来选择云平台。
2.1 Eucalyptus
Eucalyptus是一个与Amazon EC2兼容的IaaS系统。Eucalyptus包括云控制器(CC)、Walrus、集群控制器(CLC)、存储控制器(SC)和节点控制器(NC)。CC是整个Eucalyptu系统的核心,负责高层次的资源调度,例如向CLC请求计算资源。Walrus是一个与Amazon S3类似的存储服务,主要用于存储虚拟机映像和用户数据。CC是一个集群的前端,负责协调一个集群内的计算资源,并且管理集群内的网络流量。SC是一个与Amazon EBS类似的存储块设备服务,可以用来存储业务数据。NC是最终的计算节点,通过调用操作系统层的虚拟化技术来启动和关闭虚拟机。在同一个集群(CC)内的所有计算节点(NC)必须在同一个子网内。在一个集群(CC)内通常需要部署一台存储服务器(SC),为该集群内的计算节点提供数据存储服务。
Eucalyptus通过Agent的方式来管理计算资源。在每一个计算节点上,都需要运行一个eucalyptus-nc的服务。该服务在集群控制器(CC)上注册后,云控制器(CLC)即可通过集群控制器(CLC)将需要运行的虚拟机映像文件(EMI)拷贝到该计算节点上运行。
Eucalyptus将虚拟机映像文件存储在Walrus上。当用户启动一个虚拟机实例的时候,Eucalyptus首先将相应的虚拟机映像(EMI)从Walrus拷贝到将要运行该实例的计算节点(NC)上。当用户关闭(或者是由于意外而重启)一个虚拟机实例的时候,对虚拟机所做的修改并不会被写回到Walrus上原来的虚拟机映像(EMI)上,所有对该虚拟机的修改都会丢失。如果用户需要保存修改过的虚拟机,就需要利用工具(euca2ools)将该虚拟机实例保存为新的虚拟机映像(EMI)。如果用户需要保存数据,则需要利用存储服务器(SC)所提供的弹性块设备来完成。
2.2 Convirture
ConVirt是一个虚拟化管理平台,使用无代理模式工作。当需要管理的目标节点提供SSH登录方式时,ConVirt通过SSH登陆到计算节点,在计算节点上直接运行相对应的虚拟化管理命令。当需要管理的目标节点提供HTTP/HTTPS/XML-RPC远程调用接口时,ConVirt插件通过目标节点所提供的远程调用接口实现对目标平台的管理。
ConVirt不提供与Amazon EC2兼容的云管理接口。但是ConVirt 3.0提供了与Amazon EC2 / Eucalyptus的用户接口,使得ConVirt用户能够在同一个Web 管理界面下同时管理Amazon EC2 / Eucalyptus提供的虚拟计算资源。
2.3 OpenNebula
OpenNebula的构架包括三个部分:驱动层、核心层、工具层。驱动层直接与操作系统打交道,负责虚拟机的创建、启动和关闭,为虚拟机分配存储,监控物理机和虚拟机的运行状况。核心层负责对虚拟机、存储设备、虚拟网络等进行管理。工具层通过命令行界面/浏览器界面方式提供用户交互接口,通过API方式提供程序调用接口。OpenNebula使用共享存储设备(例如NFS)来提供虚拟机映像服务,使得每一个计算节点都能够访问到相同的虚拟机映像资源。当用户需要启动或者是关闭某个虚拟机时,OpenNebula通过SSH登陆到计算节点,在计算节点上直接运行相对应的虚拟化管理命令。这种模式也称为无代理模式,由于不需要在计算节点上安装额外的软件(或者服务),系统的复杂度也相对降低了。
2.4 CloudStack
CloudStack采用了“框架+ 插件”的系统构架,通过不同的插件来提供对不同虚拟化技术的支持。CloudStack本身是一个虚拟化管理平台,但是它通过CloudBridge提供了与Amazon EC2相兼容的云管理接口,对外提供IaaS服务。
3、系统虚拟化技术比较
云计算是以分布式计算和虚拟化技术为基础的,虚拟化对云计算平台来说是非常重要的。对虚拟化技术的支持也是选择云平台的重要方面。
表1中可以看出,Xen和KVM是目前获得最广泛的厂商虚拟化技术,紧随其后的是VMWare。而对虚拟化技术支持达到3个及以上的云平台是Eucalyptus、OpenNebula 和CloudStack,其中Eucalyptus对VMWare的支持是要付费的,相比较而言Convirture要差一些,它只支持Xen和KVM。
4、结论
基于以上研究,给出如下参考。从商务上进行软件选型,性价比通常是一个决定性的因素。在假定参与选型的软件全部满足技术要求的前提下,企业(机构)需要考虑的因素包括软件的授权协议是否友好、许可证管理的难易程度、软件和服务的价格高低、运营团队在业界的声誉、开发者社区和用户社区的规模和活跃程度、商业与技术沟通的难易程度。以上4个云平台中Eucalyptus评定最优;从功能上进行虚拟化管理软件选型,需要考虑的因素包括该软件所支持的虚拟化技术、安装配置的难易程度、开发和使用文档的详尽程度、所提供的功能是否全面以及用户界面是否直观友好、二次开发的难易程度、是否提供物理资源和虚拟资源的监控报表等等,以上4个云平台中CloudStack评定最优。