本帖最后由 pig2 于 2014-3-14 13:27 编辑
最近总是想做一篇关于开源虚拟化云管理平台方面的总结。我只是试图能尽力概括更多的技术,但限于本人的严重低水平,知识面窄等短板,如有错误,还请广大坛友多多批评指正。
本贴内容包括Eucalyptus,OpenNebula, OpenStack, OpenQRM, XenServer,Oracle VM, CloudStack, ConVirt。希望能借这一系列文章,以释我们的一些疑惑!
目前开源的虚拟化云计算管理平台有: Eucalyptus OpenNebula OpenStack OpenQRM XenServer Oracle VM CloudStack ConVirt Xen KVM等
强烈建议读者只需熟练或精通掌握上诉中的两种即可,贪多嚼不烂啊!
1.授权协议、许可证管理、购买价格等方面的比较 Eucalyptus 社区版采用GPLv3授权协议 企业版使用自定义的商业授权协议 社区版不需要安装许可证 企业版需要在云控制器(CLC)节点上安装许可证 社区版免费使用 企业版按处理器核心总数收费,用户购买的许可证针对特定版本永久有效。
OpenStack Apache 2.0授权协议 不需要许可证 免费使用
OpenNebula Apache 2.0授权协议 不需要许可证 社区版免费使用 企业版将社区版重新打包,提供补丁等程序的访问权限,使得用户能够更容易的安装、配置和管理,以订阅的模式提供服务。 企业版按物理服务器总数收费,每台物理服务器器的服务价格为250欧元每年。
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小时内得到回应。
OpenStack OpenStack是服务器托管公司RackSpace与NASA共同发起的开放源代码项目。在开放源代码项目的管理和运营方面,RackSpace和NASA显然缺乏足够的经验。针对OpenStack项目的批评集中在
(1)RackSpace对项目有过于强烈的控制欲, (2)OpenStack项目的运作对于社区成员来说基本上是不透明的, (3)OpenStack项目对同类开放源代码项目的攻击性过強。
社区规模较小,主要参与者为支持/参与该项目的公司人员。有几个公开的邮件列表,流量很小。由于该项目比较新,在网络上可以参考的安装与配置方面的文章不多。Ubuntu 11.04服务器版同时支持Eucalyptus和OpenStack作为UEC的基础构架,将有助于OpenStack的推广。
OpenNebula 2005年启动的研究性项目,2008年初发布第一个开放源代码版本,2010年初大力推进开源社区的建设。 社区规模较小,主要参与者为支持/参与该项目的公司人员,以及少量的用户。有几个公开的邮件列表,流量比OpenStack项目的流量稍大。在网络上搜索到一些中文版安装和配置方面的文章,基本上是以讹传讹,缺乏可操作性。英文版的相关文章也不多,可操作的更少。 通过邮件列表进行技术方面的沟通,通常在48小时内得到回应。
OpenQRM 起源于集群管理方面的软件,2006年公开源代码,2008年免费发布,目前版本为4.8。 项目的运营团队较小,似乎只有MattRechenburg一个人。有一些零星的用户,基本上没有形成社区。虽然功能还在不断更新,但是用户文档的日期是2008年的。相关论坛的活跃程度比OpenStack和OpenNebula更差。在论坛发布的问题,大约有50%左右没有得到回应。通过电子邮件进行商务沟通,反应迅速,在24小时以内得到回应。
XenServer Citrix公司的产品,与Xen项目的发展基本同步。 围绕Xen CloudPlatform有一些开放源代码的项目,用于替代XenCentor提供基于桌面或者是浏览器的管理功能。
Oracle VM Oracle公司的产品,用户量较小。Oracle VM仅仅是Oracle用户生态系统中的一部分,不是Oracle的关键业务。 有一定数量的用户,但是没有形成社区。在网络上缺少与Oracle相关的讨论与交流。OracleVM团队有一个博客网站,但是最近两篇文章的日期分别是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不是一个文件系统,不能够保证数据的实时性。从这个方面来考虑,OpenStackObject 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兼容的云管理接口。 要注意的是,OracleVM 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兼容或者是类似的接口,比较适合提供公有云服务。
|