虚拟化管理软件比较(Eucalyptus, OpenNebula, OpenStack, OpenQRM, XenServer, Oracle VM, CloudStack, ConVirt)

转自:http://www.osedu.net/article/linux/2011-06-24/242.htmlhtml


最近笼统地学习和试用了几款比较有名的虚拟化管理软件。学习的内容包括Eucalyptus, OpenNebula, OpenStack, OpenQRM, XenServer, Oracle VM, CloudStack, ConVirt。借这一系列文章,对过去一个月的学习内容做一个阶段性的总结。前端

(1)受权协议、许可证管理、购买价格等方面的比较mysql

  受权协议 许可证管理 商业模式
Eucalyptus 社区版采用GPLv3受权协议

企业版使用自定义的商业受权协议linux

社区版不须要安装许可证

企业版须要在云控制器(CLC)节点上安装许可证算法

社区版无偿使用

企业版按处理器核心总数收费,用户购买的许可证针对特定版本永久有效。sql

OpenStack Apache 2.0受权协议 不须要许可证 无偿使用
OpenNebula Apache 2.0受权协议 不须要许可证 社区版无偿使用

企业版将社区版从新打包,提供补丁等程序的访问权限,使得用户可以更容易的安装、配置和管理,以订阅的模式提供服务。数据库

企业版按物理服务器总数收费,每台物理服务器器的服务价格为250欧元每一年。django

OpenQRM 社区版使用GPLv2受权协议

企业版使用自定义的商业受权协议编程

不须要许可证 社区版无偿使用

企业版将社区版从新打包,提供补丁等程序的访问权限,使得用户可以更容易的安装、配置和管理,以订阅的模式提供服务。基本、标准和高级服务的价格分别为480、960、1920欧元每个月。浏览器

XenServer Citrix XenServer系列产品均使用自定义的商业受权协议

基于XenServer的Xen Cloud Platform使用GPLv2受权协议

无论是XenServer仍是Xen Cloud Platform都须要在每台服务器安装许可证

许可证每一年更新一次

XenServer免费版本和开源版本的Xen Cloud Platform能够无偿使用

XenServer高级版、企业版和白金版按物理服务器数量收费,分别是1000、2500和5000美圆。购买的许可证针对特定版本永久有效

Oracle VM Oracle VM Server是基于Xen开发的,使用GPLv2协议发布,从Oracle的网站能够下载到源代码,可是Oracle并不宣传这一点。

Oracle VM Manager使用自定义的商业受权协议。

Oracle VM VirtualBox的二进制版本使用自定义的商业受权协议,源代码使用GPLv2受权协议。

不须要许可证 无偿使用,能够购买技术支持。技术支持的费用为每台物理服务器8184人民币每一年。
CloudStack 社区版采用GPLv3受权协议企业版使用自定义的商业受权协议 社区版不须要安装许可证

企业版须要在管理服务器上安装许可证

社区版无偿使用企业版提供加强功能和技术支持,收费模式不详。
ConVirt 社区版使用GPLv2受权协议

企业版使用自定义的商业受权协议

社区版不须要安装许可证

企业版须要在管理服务器上安装许可证

社区版无偿使用

企业版提供加强功能和技术支持,按物理服务器数量收费,每一个节点费用1090美圆。购买的许可证针对特定版本永久有效。

(2)项目历史与运营团队、社区规模和活跃程度、沟通交流等方面的比较

  项目历史与运营团队 社区规模和活跃程度 沟通交流
Eucalyptus 最初是UCSB的HPC研究项目,2009年初成立公司来支持该项目的商业化运营。现任CEO是曾担任MySQL CEO的Marten Mickos,现任工程部门SVP的Tim Cramerc曾担任 Sun公司NetBeans和OpenSolaris项目的执行总监。整个管理团队对开放源代码项目的管理和运营方面具备丰富的经验。 在同类开放源代码项目当中,Eucalyptus的社区规模最大,活跃程度也最高。主要缘由是该项目起源于大学研究项目,次要缘由是管理团队对开放源代码理念的高度认同。Ubuntu 10.04服务器版选择Eucalyptus做为UEC的基础构架,大大地促进了Eucalyptu的推广。 社区发表在论坛上的问题一般在48小时内获得回应,经过技术支持电子邮件提出的问题一般在24小时内获得回应。

 

Eucalyptus在北京和深圳设有办事处,在中国有工程师提供支持团队。

OpenStack OpenStack是服务器托管公司RackSpace与NASA共同发起的开放源代码项目。在开放源代码项目的管理和运营方面,RackSpace和NASA显然缺少足够的经验。针对OpenStack项目的批评集中在(1)RackSpace对项目有过于强烈的控制欲,(2)OpenStack项目的运做对于社区成员来讲基本上是不透明的,(3)OpenStack项目对同类开放源代码项目的攻击性过強。 社区规模较小,主要参与者为支持/参与该项目的公司人员。有几个公开的邮件列表,流量很小。因为该项目比较新,在网络上能够参考的安装与配置方面的文章很少。Ubuntu 11.04服务器版同时支持Eucalyptus和OpenStack做为UEC的基础构架,将有助于OpenStack的推广。 经过邮件列表进行技术方面的沟通,一般在48小时内获得回应。商务方面的邮件沟通,没有获得回应。
OpenNebula 2005年启动的研究性项目,2008年初发布第一个开放源代码版本,2010年初大力推动开源社区的建设。 社区规模较小,主要参与者为支持/参与该项目的公司人员,以及少许的用户。有几个公开的邮件列表,流量比OpenStack项目的流量稍大。在网络上搜索到一些中文版安装和配置方面的文章,基本上是以讹传讹,缺少可操做性。英文版的相关文章也很少,可操做的更少。 经过邮件列表进行技术方面的沟通,一般在48小时内获得回应。
OpenQRM 起源于集群管理方面的软件,2006年公开源代码,2008年免费发布,目前版本为4.8。

项目的运营团队较小,彷佛只有Matt Rechenburg一我的。

有一些零星的用户,基本上没有造成社区。虽然功能还在不断更新,可是用户文档的日期是2008年的。相关论坛的活跃程度比OpenStack和OpenNebula更差。 在论坛发布的问题,大约有50%左右没有获得回应。经过电子邮件进行商务沟通,反应迅速,在24小时之内获得回应。
XenServer Citrix公司的产品,与Xen项目的发展基本同步。 围绕Xen Cloud Platform有一些开放源代码的项目,用于替代XenCentor提供基于桌面或者是浏览器的管理功能。 初期商务沟通的速度比较快。
Oracle VM Oracle公司的产品,用户量较小。Oracle VM仅仅是Oracle用户生态系统中的一部分,不是Oracle的关键业务。 有必定数量的用户,可是没有造成社区。在网络上缺乏与Oracle相关的讨论与交流。Oracle VM团队有一个博客网站,可是最近两篇文章的日期分别是2010年11月和2008年1 月。产品下载的速度很慢。 初期商务沟通的速度比较快。在技术方面的沟通,Oracle在国内没有相应的技术人员提供支持。
CloudStack 源于2008年成立的VMOps公司,2010年五月启用cloud.com域名,2010年6 月共同启动OpenStack项目。 用户数量较少,论坛不是很活跃。官方文档很是完备,按照文档操做至少可以顺利地完成安装和配置过程。网络上能够搜索到一些可操做的安装和配置文档(得益于CloudStack的安装和配置比较简单)。 商务沟通比较困难,经过社区论坛和电子邮件提出的问题都没有获得回应。
ConVirt 起源于2006年发起的XenMan项目,与Xen项目的发展基本同步。目前的版本为ConVirt 2.0。现任CEO和工程部门EVP均来自Oracle。 用户规模与Eucalyptus至关,论坛的活跃程度很高。官方文档很是完备,按照文档操做至少可以顺利地完成安装和配置过程。在网络上搜索到的中英文的安装配置教程也基本可用。 商务沟通很是顺畅,社区发表在论坛上的问题一般在48小时内获得回应,经过技术支持电子邮件提出的问题一般在24小时内获得回应。

(3)综合评估

总的来讲,虚拟化管理软件的用户还不是不少。大部分虚拟化管理软件的社区规模较小,活跃程度也不高。除了Eucalyptus积极地鼓励社区用户参与项目的开发与测试以外,其余项目选择开放源代码只是一种营销策略。若是排除技术和价格方面的因素,最值得选择的软件无疑是Eucalyptus和ConVirt。这两个项目拥有最大和最活跃的用户社区,其开发/运营团队与潜在客户之间的沟通最为顺畅。XenServer也是一个值得考虑的对象,可是XenServer社区版要求对每台物理服务器都要每一年更新一次许可证。对于拥有大量物理服务器的公司来讲,管理和维护成千上百个许可证将是一个使人头疼的问题。

架构篇:

(1)系统构架比较

  系统构架
Eucalyptus Eucalyptus是一个与Amazon EC2兼容的IaaS系统。Eucalyptus包括云控制器(CLC)、Walrus、集群控制器(CC)、存储控制器(SC)和节点控制器(NC)。CLC是整个Eucalyptu系统的核心,负责高层次的资源调度,例如向CC请求计算资源。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)所提供的弹性块设备来完成。

OpenStack OpenStack是一个与Amazon EC2兼容的IaaS系统。OpenStack包括OpenStack Compute和OpenStack Object Storage两个部分。

OpenStack Compute又包含Web前端、计算服务、存储服务、身份认证服务、存储块设备(卷)服务、网络服务、任务调度等多个模块。OpenStack Compute的不一样模块之间不共享任何信息,经过消息传递进行通信。所以,不一样的模块能够运行在不一样的服务器上,也能够运行在同一台服务器上。

OpenStack Object Store能够利用通用服务器搭建可扩展的海量数据仓库,而且经过冗余来保证数据的安全性。同一份数据的在多台服务器上都有副本,将出现故障的服务器从集群中撤除不会影响数据的完整性,加入新的服务器后系统会自动地在新的服务器上为相应的文件建立新的副本。从功能上讲,OpenStack Object Store同时具有Eucalyptus中的Walrus服务和弹性块设备(SC)服务。不过OpenStack Object Store不是一个文件系统,不可以保证数据的实时性。从这个方面来考虑,OpenStack Object Store更适合用于存储须要长期保存的静态数据,例如操做系统映像文件和多媒体数据。

OpenStack经过Agent的方式来管理计算资源。在每个计算节点上,都须要运行nova-network服务和nova-compute服务。这些服务启动以后,就能够经过消息队列来与云控制器进行交互。

OpenNebula OpenNebula的构架包括三个部分:驱动层、核心层、工具层。驱动层直接与操做系统打交道,负责虚拟机的建立、启动和关闭,为虚拟机分配存储,监控物理机和虚拟机的运行情况。核心层负责对虚拟机、存储设备、虚拟网络等进行管理。工具层经过命令行界面/浏览器界面方式提供用户交互接口,经过API方式提供程序调用接口。

OpenNebula使用共享存储设备(例如NFS)来提供虚拟机映像服务,使得每个计算节点都可以访问到相同的虚拟机映像资源。当用户须要启动或者是关闭某个虚拟机时,OpenNebula经过SSH登录到计算节点,在计算节点上直接运行相对应的虚拟化管理命令。这种模式也称为无代理模式,因为不须要在计算节点上安装额外的软件(或者服务),系统的复杂度也相对下降了。

OpenQRM OpenQRM是为了管理混合虚拟化环境而开发的一个虚拟化管理框架,包括基础层(框架层)和插件。基础层(框架)的做用是管理不一样的插件,而对虚拟资源的管理(计算资源,存储资源,映像资源)都是经过插件来实现的。OpenQRM的框架相似于Java语言中的Interface,定义了一系列虚拟机资源生命周期管理的方法,例如建立、启动、关闭虚拟机等等。在个框架的基础上,OpenQRM针对不一样的虚拟化平台(Xen、KVM)实现了不一样的插件,用来管理不一样的物理和虚拟资源。当出现新的资源须要支持的时候,只须要为OpenQRM编写新的插件,就能够无缝地整合到原来的环境中去。

OpenQRM插件也是使用无代理模式工做的。当须要管理的目标节点提供SSH登陆方式时,OpenQRM插件经过SSH登录到计算节点,在计算节点上直接运行相对应的虚拟化管理命令。当须要管理的目标节点提供HTTP/HTTPS/XML-RPC远程调用接口时,OpenQRM插件经过目标节点所提供的远程调用接口实现对目标平台的管理。

OpenQRM是一个虚拟化管理平台,不提供与Amazon EC2兼容的云管理接口。

XenServer XenServer是对Xen虚拟化技术的进一步封装,在Dom0上提供一系列命令行和远程调用接口,独立的管理软件XenCenter经过远程调用这些接口来管理多台物理服务器。XenSever在标准Xen实现之上所实现的远程调用接口相似于其余虚拟化管理平台中所实现的Agent,所以XenServer是经过Agent方式工做的。因为只考虑对Xen虚拟化技术的支持,XenServer的构架相对简单。

XenServer是一个虚拟化管理平台,不提供与Amazon EC2兼容的云管理接口。管理软件XenCenter是运行在Windows操做系统上的,对于须要随时随地访问管理功能的系统管理员来讲有点不便。目前有一些第三方提供的开放源代码的基于浏览器的XenServer管理工具,可是都还处于比较早期的阶段。

Oracle VM Oracle VM包括Oracle VM Server和Oracle VM Manager两个部分。Oracle VM Server在支持Xen的Oracle Linux上(Dom0)运行一个与Xen交互的Agent,该Agent为Oracle VM Manager提供了远程调用接口。Oracle VM Manager经过一个Java应用程序来对多台Oracle VM Server上的虚拟资源进行管理和调度,同时提供基于浏览器的管理界面。因为只考虑对Xen虚拟化技术的支持,Oracle VM Server / Manager的构架相对简单。

Oracle VM是一个虚拟化管理平台,不提供与Amazon EC2兼容的云管理接口。

值得注意的是,Oracle VM Manager还经过Web Service的方式提供了虚拟机软件生命周期管理的全部接口,使得用户能够本身使用不一样的编程语言来调用这些接口来开发本身的虚拟化管理平台。不过因为Oracle在开放源代码方面的负面形象,彷佛没有看到有这方面的尝试。

CloudStack 与OpenQRM相似,CloudStack采用了“框架 + 插件”的系统构架,经过不一样的插件来提供对不一样虚拟化技术的支持。对于标准的Xen / KVM计算节点,CloudStack须要在计算节点上安装Agent与控制节点进行交互;对于XenServer / VMWare计算节点,CloudStack经过XenServer / VMWare所提供的XML-RPC远程调用接口与计算节点进行交互。

CloudStack自己是一个虚拟化管理平台,可是它经过CloudBridge提供了与Amazon EC2相兼容的云管理接口,对外提供IaaS服务。

 

ConVirt ConVirt是一个虚拟化管理平台,使用无代理模式工做。当须要管理的目标节点提供SSH登陆方式时,ConVirt经过SSH登录到计算节点,在计算节点上直接运行相对应的虚拟化管 理命令。当须要管理的目标节点提供HTTP/HTTPS/XML-RPC远程调用接口时,ConVirt插件经过目标节点所提供的远程调用接口实现对目标平台的管理。

ConVirt是一个虚拟化管理平台,不提供与Amazon EC2兼容的云管理接口。可是ConVirt 3.0提供了与Amazon EC2 / Eucalyptus的用户接口,使得ConVirt用户可以在同一个Web 管理界面下同时管理Amazon EC2 / Eucalyptus提供的虚拟计算资源。

(2)云管理平台仍是虚拟化管理平台?

在IaaS这个层面,云管理和虚拟化管理的概念很是接近,可是有一些细微的差异。

虚拟化是指在同一台物理机器上提供多台虚拟机器(包括CPU、内存、存储、网络等计算资源)的能力。每一台虚拟机器都可以像普通的物理机器同样运行完整的操做系统以及执行正常的应用程序。当须要管理的物理机器数量较小时,虚拟机生命周期管理(资源配置、启动、关闭等等)能够经过手工去操做。当须要管理的物理机器数量较大时,就须要写一些脚本/程序来提升虚拟机生命周期管理的自动化程度。以管理和调度大量物理/虚拟计算资源为目的系统,属于虚拟化管理系统。这样一个系统,一般用于管理企业内部计算资源。

云计算是指经过网络访问物理/虚拟计算机并利用其计算资源的实践。一般来说,云计算提供商以虚拟机的方式向用户提供计算资源。用户无须了解虚拟机背后实际的物理资源情况,只需了解本身所可以使用的计算资源配额。所以,虚拟化技术是云计算的基础。任何一个云计算管理平台,都是构建在虚拟化管理平台的基础之上的。若是某个虚拟化管理平台仅对某个集团内部提供服务,那么这个虚拟化管理平台也能够被称为“私有云”;若是某个虚拟化管理平台对公众提供服务,那么这个虚拟化管理平台也能够被称为“公有云”。服务对象的不一样,对虚拟化管理平台的构架和功能提出了不一样的需求。

私有云服务于集团内部的不一样部门(或者应用),强调虚拟资源调度的灵活性。系统管理员须要为不一样的部门(或者应用)定制不一样的虚拟机,根据部门(或者应用)对计算资源的需求对分配给某些虚拟机的计算资源进行调整。从这个意义上来说,OpenQRM、XenServer、Oracle VM、CloudStack和ConVirt比较适合提供私有云服务。

公有云服务于公众,强调虚拟资源的标准性。经过将计算资源切割成标准化的虚拟机配置(多个系列的产品,每一个产品配置相同数量的CPU、内存、磁盘空间、网络流量配额),公有云提供商能够经过标准的服务合同(Service Level Agreement, SLA)以标准的价格出售计算资源。当用户对计算资源的需求出现改变的时候,用户只须要缩减或者是增长本身所使用的产品数量。因为Amazon EC2是目前比较成功的公有云提供商,大部分云管理平台都在某种程度上模仿Amazon EC2的构架。从这个意义上来说,Eucalyptus、OpenNebula和OpenStack提供了与Amazon EC2兼容或者是相似的接口,比较适合提供公有云服务。

公有云和私有云之间的界限,就像“内部/外部”和“部门/合做伙伴”的概念同样,并不十分明显。根据项目需求的不一样,可能会有不一样的解释。

功能篇:

(1)支持的虚拟化技术

  Xen KVM XenServer / XCP VMWare LXC openVZ
Eucalyptus Y Y   Y    
OpenStack Y Y Y Y Y  
OpenNebula Y Y   Y    
OpenQRM Y Y Y Y Y Y
XenServer Y          
Oracle VM Y          
CloudStack   Y Y Y    
ConVirt Y Y        

能够看出,Xen和KVM是目前得到最普遍的厂商虚拟化技术,紧随其后的是VMWare。须要注意的是,XenServer是对Xen的进一步封装,能够认为是一种新的虚拟化平台(用户在XenServer上不能直接执行Xend相关命令)。

(2)系统安装和配置

  前端 计算节点 备注
Eucalyptus 使用Ubuntu 10.04或者CentOS 5.5操做系统,经过apt-get install或者yum install的方式直接安装二进制包,构建一个包含CLC、 Walrus、SC、CC的前端。根据官方网站提供的文档进行操做,是比较容易实现的。 使用Ubuntu 10.04或者CentOS 5.5操做系统,经过apt-get install或者yum install的方式直接安装二进制包,构建一个提供NC服务的计算节点。根据官方网站提供的文档进行操做,是比较容易实现的。 Eucalyptus包含了一个dhcpd,若是配置很差的话,会形成必定的麻烦。另外,计算节点(NC)与集群控制器(CC)必须在一个C类子网里(例如,掩码为255.255.255.0)。若是NC和CC在一个超网里(例如,掩码为255.255.0.0),在注册服务的时候会出现一些问题。
OpenStack 在Ubuntu 10.04上利用官方网站提供的nova-install脚本进行安装,基本上没有遇到问题。 在Ubuntu 10.04上利用官方网站提供的nova-install脚本进行安装,基本上没有遇到问题。 对于一个简单的系统,安装配置比较简单。
OpenNebula 使用CentOS 5.5操做系统,配置好CentOS Karan源,启用kbs-CentOS-Testing条目。下载对应的rpm包,直接yum localinstall –nogpgcheck opennebula*.rpm,就能够直接完成安装过程。按照官方文档建立/srv/cloud/one和/srv/cloud/images目录,经过NFS共享/srv/cloud目录。建立cloud用户组和属于cloud用户组的oneadmin用户。 按照官方文档建立/srv/cloud/one和/srv/cloud/images目录,经过NFS共享/srv/cloud目录。建立cloud用户组和属于cloud用户组的oneadmin用户。

将前端服务器上oneadmin用户的ssh key拷贝到计算节点上oneadmin用户的authorized_keys中。这样前端服务器才能够经过SSH登录到计算节点上。

在CentOS 5.5 x86_64上进行安装的时候,若是按照官方网站提供的文档进行操做,先配置好必要的软件依赖关系再安装opennebula,就会出现xmlrpc-c包版本不对的错误。

网络上能够搜索到一些安装配置方面的文档和教程,可是对于熟悉Linux可是不熟悉OpenNebula的开发人员来讲,很难按照这些文档完成安装和配置过程。

OpenQRM 在Ubuntu 10.04上经过SVN下载OpenQRM源代码,进入源代码目录后依次执行make / make install / make start命令。按照官方文档的描述建立数据库,而后经过Web界面进行下一步的安装和配置。 计算节点配置好网桥和虚拟化支持以外不须要特别的安装和配置。在OpenQRM管理界面中启用相对应的插件便可经过插件对计算节点进行管理。 在Ubuntu 10.04上安装前端时,可能须要手工安装dhcp3-server。

启用插件管理虚拟资源的操做流程不够直观,而且缺少详细的文档。

XenServer 前端为基于Windows操做系统的XenCenter。在Windows XP上能够安装,须要.NET Framework Update 2的支持。安转过程很是简单,基本上不须要配置。 从Citrix的网站下载ISO,刻盘直接安装在裸机上便可。计算节点安装完毕后,在XenCenter中把新增计算资源添加到资源池便可。 每一台XenServer服务器都须要安装从Citrix得到License,而且每一年更新一次。
Oracle VM 在CentOS 5.5 x86_64上进行安装。将ISO文件mount起来后,执行runinstaller.sh便可。 从Oracle的网站下载ISO,刻盘直接安装在裸机上便可。计算节点安装完毕后,在Oracle VM Manager中把新增计算资源添加到资源池便可。 最好从Oracle的官方网站下载,不过速度很慢。经过迅雷等途径下载的文件,看起来彷佛没有问题,可是ISO刻盘后在启动操做系统安装过程当中会出现错误。

若是在Oracle VM Server上安装Oracle VM Manager,建议分区的时候把/ 分得大一点,否则的话会因为磁盘空间不够而没法安装Oracle VM Manager。

CloudStack 在CentOS 5.5和Ubuntu 10.4上,按照官方网站的安装文档顺序操做,基本没有问题。 计算节点上必须安装相应的Agent。 安装配置相对简单,可是在删除物理资源的时候存在较多的问题。
ConVirt 在CentOS 5.5和Ubuntu 10.4上,按照官方网站的安装文档顺序操做,基本没有问题。

在Ubuntu 10.04上安装企业版,须要手工sudo apt-get install libmysqlclient-dev。

在计算节点上的root用户必须容许管理节点上运行ConVirt服务的用户经过key auth方式登陆。

 

安装配置相对简单。

不一样的虚拟化管理软件有不一样的设计理念,采用不一样的系统构架,相似的概念也采用不一样的术语来表述,其学习曲线也各不相同。对于大部分用户来讲,虚拟化管理软件仍是个新生事物。即便是粗略地尝试一下利用不一样的虚拟化管理软件来安装、配置和测试一个最小规模的私有云系统,也须要花费很多的时间和精力。在这个过程中,碰见各类各样的问题都在所不免。不过,也只有亲身经验过这些形形色色的问题,才可以切身体会不一样虚拟化管理软件的优势和缺点,而且在分析、总结、概括的基础上造成本身独特的观点。

(3)用户界面

  概述 用户权限 资源池和虚拟机管理
Eucalyptus Eucalyptus提供了一个基于浏览器的简单用户界面,能够完成用户注册,下载credentials,对提供的产品类型进行简单配置等。资源池和虚拟机生命周期管理须要经过euca2ools在命令行模式下完成。

euca2ools是一组基于命令行的工具,能够与Amazon EC2/S3相兼容的Web Service进行交互。该用具能够管理基于Amazon EC二、Eucalyptus和OpenStack,OpenNebula的云计算服务。

euca2tools的主要功能包括:

– 查询可使用的域
– 管理SSH Key
– 虚拟机生命周期管理
– 安全组管理
– 管理卷和快照
– 管理虚拟机映像
– 管理IP

在Eucalyptus社区版中只有两种类型的用户:管理员,普通用户。在Eucalyptus企业版中进一步提供了用户组,属于某个用户组的用户能够管理属于该用户组的计算资源。 管理员能够经过注册或者是撤销注册某个计算节点,配置标准产品类型的计算资源(CPU、内存、存储)。普通用户只可以在标准配置的基础上建立、启动、关闭虚拟机,不可以定制化本身所须要的计算资源。

 

虚拟机映像文件(EMI)的制做,以及虚拟机生命周期管理等等操做,须要经过euca2ools在命令行模式下完成。在FireFox浏览器中,能够利用ElasticFox插件,在浏览器中启动、监控和关闭虚拟机。ElasticFox的界面不够美观,而且提供的功能很是有限。

Eucalyptus不提供console功能。用户能够经过SSH链接到本身所管理的虚拟机。

每个公开发布的虚拟机映像(EMI),都是一个模板。用户建立虚拟机实例的时候,系统根据用户选择的EMI将相应的虚拟机映像拷贝到目标计算节点上运行。Eucalyptus根据某种算法自动决定用户的虚拟机将在哪一个物理服务器上运行,用户对物理服务器的情况一无所知。

Eucalyptus中的虚拟机实例只是原虚拟机映像(EMI)的一个副本,用户在运行的实例中对虚拟机所作的任何修改,不会被保存到原来的虚拟机映像中。若是用户将运行的虚拟机实例关闭(例如:shutdown),用户对虚拟机所做的任何修改都会丢失。若是用户须要保存本身对虚拟机所作的修改,用户能够选择使用弹性块设备来保存数据,或者将正在运行的虚拟机实例发布为新的EMI。(Amazon EC2自动地将中止运行的虚拟机实例保存为新的AMI,直到用户销毁该虚拟机实例为止。所以,用户能够shutdown本身的虚拟机实例,可是保存本身对虚拟机所做的修改,直到用户选择销毁该虚拟机实例为止。)

OpenStack OpenStack不缺省地提供基于浏览器的用户界面。系统管理员须要手工建立用户。大部分的管理操做,须要在命令行下进行。 尽管OpenStack和Eucalyptus在构架上有很大的不一样,可是所暴露给用户的界面是相似的(二者都模仿了Amazon EC2的用户接口规范)。所以,OpenStack一样可使用Eucalyptus所提供的euca2ools进行管理。

OpenStack的openstack-dashboard项目和django-nova项目提供了一个基于浏览器的用户界面,没有被集成到OpenStack安装脚本中,须要单独安装。

OpenStack将用户分红以下几个类别:

admin — 云服务管理员,拥有全部管理权限。

itsec — IT安全管理员,具备隔离有问题的虚拟机实例的权限。

projectmanager — 项目管理员,能够增长属于该项目的新用户,管理虚拟机映像,管理虚拟机生命周期。

netadmin — 网络管理员,负责IP分配,管理防火墙。

developer — 开发人员,能够登陆进入属于本项目的虚拟机,管理虚拟机生命周期

在模仿Amazon EC2的云平台(Eucalyptus, OpenStack, OpenNebula)中,OpenStack提供了颗粒度最细的用户权限管理模式。

与Eucalyptus相似,虚拟机映像文件(EMI)的制做,以及虚拟机生命周期管理等等操做,须要经过euca2ools在命令行模式下完成。一样,在FireFox浏览器中,可 以利用ElasticFox插件,在浏览器中启动、监控和关闭虚拟机。

 

OpenStack不提供虚拟机console功能。用户能够经过SSH链接到本身所管理的虚拟机。

正在开发中的openstack-dashboard,基于浏览器提供了比较完整的资源池管理功能和虚拟机生命周期管理功能。虽然界面还比较简单,可是已经处于可用的状态。

OpenStack的模板和虚拟机实例机制与Eucalyptus相似。与Eucalyptus相似,OpenStack根据某种算法自动决定用户的虚拟机将在哪一个物理服务器上运行,用户对物理服务器的情况一无所知。

OpenNebula OpenNebula不缺省地提供基于浏览器的用户界面。系统管理员须要手工建立用户。大部分的管理操做,须要在命令行下进行。

OpenNebula目前有两个基于浏览器的用户界面:SunStone和OneMC。这两个项目须要单独安装。

一样,OpenNebula提供了与Amazon EC2相兼容的Web Service接口。所以,能够经过FireFox所提供的ElasticFox插件和Eucalyptus提供的euca2ools工具集与OpenNebula云平台进行交互。

OpenNebula只有两种类型的用户:管理员,普通用户。 在早期版本中,OpenNebula管理员能够在后台经过命令行来管理资源池和虚拟机生命周期。 一样,在FireFox浏览器中,可 以利用ElasticFox插件,在浏览器中启动、监控和关闭虚拟机。

 

SunStone和OneMC这两个项目都提供了比较完整的资源池管理和虚拟机生命周期管理功能。两个项目的界面都比较简单,可是基本上处于可用的状态。SunStone没有提供虚拟机console功能,OneMC经过VNC协议提供了虚拟机console功能。

OpenNebula的模板和虚拟机实例机制与Eucalyptus相似。可是并不缺省地使用euca2ools做为工具。

与Eucalyptus相似,OpenNebula根据某种算法自动决定用户的虚拟机将在哪一个物理服务器上运行,用户对物理服务器的情况一无所知。

OpenQRM 基于浏览器的用户界面,功能比较丰富。 OpenQRM的管理界面只有两种用户:管理用户,普通用户。普通用户只有查看权限,没有管理权限。 经过启用不一样的插件,能够管理不一样的计算资源。全部的资源池和虚拟机生命周期管理操做均可以经过浏览器界面完成。

OpenQRM的novnc插件能够提供基于VNC协议的虚拟机console功能。

XenServer XenCenter是基于Windows的桌面应用,安装与操做都很是简单,界面美观,功能强大。

在参与评测的8 个软件中,XenCenter的用户界面是表现最出色的。基于Windows桌面的应用可以迅速地对用户的点击动做做出反应,从而提升用户体验的满意度。

系统管理员登陆XenCenter以后,能够结合Active Directory在用户和用户组的层面分配管理权限。

 

 

受权用户能够经过图形界面方便地进行资源池和虚拟机生命周期管理。在图形界面上能够直观地监控物理服务器和虚拟机的计算资源使用状况(CPU、内存、存储、网络活动)。

提供基于VNC的虚拟机console。

能够基于模板的部署新的虚拟机。

Oracle VM Oracle VM Manager提供了基于浏览器的管理界面。 Oracle VM Manager同时提供了role和group的概念。其中role定义了用户所具有的权限,属于同一个group的用户拥有该group所被授予的权限。

Oracle VM Manager提供了三种role:

user — 拥有指定资源池的虚拟机生命周期管理权限。

manager — 拥有除了用户管理以外的全部管理权限。

administrator — 拥有整个系统的管理权限。

受权用户能够经过图形界面方便地进行资源池和虚拟机生命周期管理。在图形界面上能够直观地监控物理服务器和虚拟机的计算资源使用状况(CPU、内存、存储、网络活动)。

提供基于VNC的虚拟机console。

能够基于模板的部署新的虚拟机。

CloudStack 基于浏览器的用户界面,功能丰富,美观大方。

 

 

CloudStack根据用户的role将用户分红三个类型:

admin — 全局管理员。

domain-admin — 域管理员,能够对某个域下的物理和虚拟资源进行管理。

user — 个体用户,能够管理本身名下的虚拟机资源。

CloudStack对物理资源的管理完整地模拟了一个物理机房的实际状况,按照“机房(Zones)-》机柜(Pods)-》集群(Cluster)-》服务器(Server)”的结构对物理服务器进行组织,使得管理员可以在管理界面里面的计算资源和机房里面的计算资源创建起直观的一一对应关系。

受权用户能够经过图形界面方便地进行资源池和虚拟机生命周期管理。在图形界面上能够直观地监控物理服务器和虚拟机的计算资源使用状况(CPU、内存、存储、网络活动)。

提供基于VNC的虚拟机console。

能够基于模板的部署新的虚拟机。

ConVirt 基于浏览器的用户界面,功能丰富,美观大方。 社区版能够注册多个用户,并可将用户按照用户组进行分类,可是全部的用户拥有相同的全局管理权限。企业版则提供了更细致的用户权限管理机制。除此以外,企业版还提供了对LDAP的支持。 受权用户能够经过图形界面方便地进行资源池和虚拟机生命周期管理。在图形界面上能够直观地监控物理服务器和虚拟机的计算资源使用状况(CPU、内存、存储、网络活动)。提供基于VNC的虚拟机console。

能够基于模板的部署新的虚拟机。

ConVirt的最大优势,在于其经过时程图的方式在不一样的层次上直观地展现计算资源(包括物理资源和虚拟资源)的利用状况和健康情况。在整个数据中心和资源池的层面,ConVirt实时显示资源池数量、物理服务器和虚拟机数量、虚拟机密度、存储资源使用情况、负载最高的N 台物理服务器和虚拟机。在物理服务器和虚拟机的层面,ConVirt实时显示CPU和内存使用状况,监控人员能够经过CPU和内存时程图及时地发现或者是调查系统异常状况。

在全部参与评测的虚拟化管理软件中,XenServer / XCP和ConVirt的图形用户界面是作的最好的。XenCenter的图形界面的优势在于提供了独一无二的用户体验,ConVirt的图形界面的优势在于以图形的方式直观地展现了从机房到虚拟机的健康情况。CloudStack的图形界面很是大气,可是在功能上不如ConVirt那么实用。不过按照CloudStack的目前的发展势头来看,下一个版本可能比较值得期待。

因为进行评测的时间较短,而且测试系统规模较小的缘由,暂时没法对各个软件的稳定性、健壮性、扩展性等等关键问题做出评估。

商务篇:

目前市面上形形色色的虚拟化管理软件总数不少,这一系列文章所说起的几个软件仅仅其中的几个表明。做为一个机构、或者是一家企业,在向虚拟化过渡时都不可避免地要面临软件选型的问题。本文做为这一系列文章的最后一篇,从商务和功能两个方面提出本身的一点粗浅意见。

(1)商务评估

从商务上进行软件选型,性价比一般是一个决定性的因素。在假定参与选型的软件所有知足技术要求的前提下,企业(机构)须要考虑的因素包括软件的受权协议是否友好、许可证管理的难易程度、软件和服务的价格高低、运营团队在业界的声誉、开发者社区和用户社区的规模和活跃程度、商业与技术沟通的难易程度。

受权协议/许可证管理 — 以所有开放源代码为10分,部分开放源代码(例如以企业版的形式提供某些高级功能,或者以服务的形式提供特别版本的安装包和补丁)扣1 分。商业版本须要在控制节点安装许可证不扣分,须要在全部计算节点安装许可证扣1 分,许可证须要每一年更新者扣1 分。

价格指数 — 以所有功能无偿使用为10分,以企业版的模式提供所有功能的软件,每台物理服务器每花费500美圆扣1 分。

运营团队 — 以运营团队的规模、背景、影响力评分,存在的主观因素较多。

社区因素 — 以开发者和用户社区的规模和活跃程度评分,存在的主观因素较多。

沟通交流 — 以我的与运营团队、开发者社区、用户社区之间的沟通顺畅程度评分,存在的主观因素较多。

  受权协议 

许可证管理

价格指数 运营团队 社区因素 沟通交流 总分
Eucalyptus 9 8 9 9 10 45
OpenStack 10 10 8 8 7 43
OpenNebula 9 9 7 8 9 42
OpenQRM 9 8 6 7 8 37
XenServer 7 8 9 10 9 43
Oracle VM 9 7 7 6 7 36
CloudStack 9 8 7 6 7 37
ConVirt 9 8 8 9 10 44

(2)功能评估

从功能上进行虚拟化管理软件选型,须要考虑的因素包括该软件所支持的虚拟化技术、安装配置的难易程度、开发和使用文档的详尽程度、所提供的功能是否全面以及用户界面是否直观友好、二次开发的难易程度、是否提供物理资源和虚拟资源的监控报表等等。

虚拟化技术支持 — 仅支持一种虚拟化技术为6 分,每增长一种虚拟化技术加1 分,10分封顶。

安装配置 — 以按照官方文档进行安装配置的难易程度评分,存在的主观因素较多。

开发/使用文档 — 以官方所提供的开发与使用文档的详尽程度评分,文档详尽程度越高者得分越高。

功能与界面 — 综合评分,涵盖用户进行物理资源和虚拟资源管理、虚拟机生命周期管理、访问虚拟机资源和存储资源的难易程度,用户界面的美观易用程度,以及综合用户体验。

二次开发 — 基础得分6 分,提供与Amazon EC2相兼容的程序调用接口者加3 分,提供二次开发接口可是与Amazon EC2不兼容者加2 分。

监控报表 — 基础得分6 分,依系统所提供监控与分析功能的详尽程度加分。

  虚拟化技术支持 安装配置 开发/使用文档 功能与界面 二次开发 监控报表 总分
Eucalyptus 8 8 9 4 9 (Amazon WS) 6 44
OpenStack 10 8 8 4 9 (Amazon WS) 6 45
OpenNebula 8 8 7 4 9 (Amazon WS) 6 42
OpenQRM 10 9 5 10 6 (OS) 7 47
XenServer 6 10 10 10 8 (Plugin) 9 53
Oracle VM 6 9 8 7 8 (WS) 7 45
CloudStack 8 9 8 10 6 (OS) 8 49
ConVirt 7 10 10 10 8 (API) 10 55

(3)综合评估

从商务上考虑,Eucalyptus和ConVirt以微弱 的优点领先于其余选项。Eucalyptus是私有云管理平台的先行者。Ubuntu 10.04选择捆绑Eucalyptus做为UEC的基础构架,使得Ecualyptus比其余的私有云管理平台拥有更多的用户和更加活跃的社区。此外,Ecualyptus在中国国内有销售和技术支持人员,在沟通上比选择其余软件要更加容易。ConVirt排名第二,根本缘由在于其销售和技术支持团队与(潜在的)客户保持积极而有效的沟通。Citrix XenServer仅仅与其余两个选项并列排名第三,输在其过于严苛的许可证管理政策。的确,要给100台以上的服务器单独安装许可证而且每一年更新一次,可不是一件有意思的事情。

从功能上考虑,ConVirt与XenServer遥遥领先于其余选项。虽然ConVirt仅仅支持Xen和KVM两种虚拟化技术,可是其安装配置相对简单,文档详尽、功能齐全、界面美观、是比较容易上手的虚拟化管理软件。更重要的是,ConVirt的监控报表功能直观地展现了从数据中心到虚拟机的CPU、内存利用状况,使得用户对整个数据中心的健康情况一目了然。一样,XenServer虽然仅支持Xen一种虚拟化技术,可是在安装配置、操做文档、用户界面等方面都不亚于ConVirt。若是用户对基于Windows的界面没有强烈的抵触情绪的话,XenServer是比较值得考虑的一个选型。

综合如上考虑,对于但愿利用虚拟化管理软件提升硬件资源利用率和虚拟化管理自动化程度的企业(机构)来讲,建议使用ConVirt来管理企业(机构)的计算资源。若是网管人员不但愿深刻了解Linux操做系统,而且所管理的物理服务器数量有限的话,XenServer也是一个不错的选择。ConVirt的浏览器界面是开放源代码的,用户能够对其进行定制化,将本身所须要的其余功能添加到同一个用户界面中去。XenCenter则提供了一种插件机制,用户能够经过插件的方式讲本身的功能集成到XenCenter中。

不过,你的基础设施是否须要与Amazon EC2相兼容呢?也就是说,你的用户是否须要使用他们用于访问和操做Amazon EC2的脚本和工具来访问你的计算资源呢?若是是这样的话,你可能须要在Eucalyptus和OpenStack之间做一个选择(CloudStack和OpenNebula一样提供了与Amazon EC2兼容的操做接口,可是CloudStack在商务方面得分不高,OpenNebula在功能方面得分不高)。Eucalyptus的历史比OpenStack稍长,用户群比OpenStack要大,社区的活跃程度也比OpenStack要高。不过OpenStack的后台老板NASA比Eucalyptus要财大气粗,Ubuntu 11.04也集成了OpenStack做为其UEC的基础构架之一,代表OpenStack已经获得了社区的重视和支持。总的来讲,开放源代码的云构架,仍是一个不断发展之中的新生食物。笔者只可以建议用户亲自去安装使用每个软件,最终基于本身的经验以及需求达到一个最适合本身的选择。

虚拟化管理软件比较 -- 幻灯片

结合前段时间对不一样虚拟化管理软件的评测工做,准备了一套讲座用的幻灯片。PDF版本的文件能够从这里下载。若是有人须要ODP版本的文件,直接跟我联系吧。

相关文章
相关标签/搜索