Total Pageviews

Thursday 29 March 2012

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

(https://cloudstack.apache.org)
最 近笼统地学习和试用了几款比较有名的虚拟化管理软件。学习的内容包括Eucalyptus, OpenNebula, OpenStack, OpenQRM, XenServer, Oracle VM, CloudStack, ConVirt。借这一系列文章,对过去一个月的学习内容作一个阶段性的总结。
(1)授权协议、许可证管理、购买价格等方面的比较
授权协议许可证管理商业模式
Eucalyptus社区版采用GPLv3授权协议

企业版使用自定义的商业授权协议
社区版不需要安装许可证

企业版需要在云控制器(CLC)节点上安装许可证
社区版免费使用

企业版按处理器核心总数收费,用户购买的许可证针对特定版本永久有效。
OpenStackApache 2.0授权协议不需要许可证免费使用
OpenNebulaApache 2.0授权协议不需要许可证社区版免费使用

企业版将社区版重新打包,提供补丁等程序的访问权限,使得用户能够更容易的安装、配置和管理,以订阅的模式提供服务。
企业版按物理服务器总数收费,每台物理服务器器的服务价格为250欧元每年。
OpenQRM社区版使用GPLv2授权协议

企业版使用自定义的商业授权协议
不需要许可证社区版免费使用

企业版将社区版重新打包,提供补丁等程序的访问权限,使得用户能够更容易的安装、配置和管理,以订阅的模式提供服务。基本、标准和高级服务的价格分别为480、960、1920欧元每月。
XenServerCitrix XenServer系列产品均使用自定义的商业授权协议

基于XenServer的Xen Cloud Platform使用GPLv2授权协议
不管是XenServer还是Xen Cloud Platform都需要在每台服务器安装许可证

许可证每年更新一次
XenServer免费版本和开源版本的Xen Cloud Platform可以免费使用

XenServer高级版、企业版和白金版按物理服务器数量收费,分别是1000、2500和5000美元。购买的许可证针对特定版本永久有效
Oracle VMOracle 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在北京和深圳设有办事处,在中国有工程师提供支持团队。
OpenStackOpenStack 是服务器托管公司RackSpace与NASA共同发起的开放源代码项目。在开放源代码项目的管理和运营方面,RackSpace和NASA显然缺乏足够 的经验。针对OpenStack项目的批评集中在(1)RackSpace对项目有过于强烈的控制欲,(2)OpenStack项目的运作对于社区成员来 说基本上是不透明的,(3)OpenStack项目对同类开放源代码项目的攻击性过強。社 区规模较小,主要参与者为支持/参与该项目的公司人员。有几个公开的邮件列表,流量很小。由于该项目比较新,在网络上可以参考的安装与配置方面的文章不 多。Ubuntu 11.04服务器版同时支持Eucalyptus和OpenStack作为UEC的基础构架,将有助于OpenStack的推广。通过邮件列表进行技术方面的沟通,通常在48小时内得到回应。商务方面的邮件沟通,没有得到回应。
OpenNebula2005年启动的研究性项目,2008年初发布第一个开放源代码版本,2010年初大力推进开源社区的建设。社区规模较小,主要参与者为支持/参与该项目的公司人员,以及少量的用户。有几个公开的邮件列表,流量比OpenStack项目的流量稍大。在网络上搜索到一些中文版安装和配置方面的文章,基本上是以讹传讹,缺乏可操作性。英文版的相关文章也不多,可操作的更少。通过邮件列表进行技术方面的沟通,通常在48小时内得到回应。
OpenQRM起源于集群管理方面的软件,2006年公开源代码,2008年免费发布,目前版本为4.8。

项目的运营团队较小,似乎只有Matt Rechenburg一个人。
有一些零星的用户,基本上没有形成社区。虽然功能还在不断更新,但是用户文档的日期是2008年的。相关论坛的活跃程度比OpenStack和OpenNebula更差。在论坛发布的问题,大约有50%左右没有得到回应。通过电子邮件进行商务沟通,反应迅速,在24小时以内得到回应。
XenServerCitrix公司的产品,与Xen项目的发展基本同步。围绕Xen Cloud Platform有一些开放源代码的项目,用于替代XenCentor提供基于桌面或者是浏览器的管理功能。初期商务沟通的速度比较快。
Oracle VMOracle公司的产品,用户量较小。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)系统构架比较
系统构架
EucalyptusEucalyptus 是一个与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)所提供的弹性块设备来完成。
OpenStackOpenStack是一个与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服务。这些服务启动之后,就可以通过消息队列来与云控制器进行交互。

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

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

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

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

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

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

Oracle VMOracle 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服务。

ConVirtConVirt 是一个虚拟化管理平台,使用无代理模式工作。当需要管理的目标节点提供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)支持的虚拟化技术
XenKVMXenServer / XCPVMWareLXCopenVZ
EucalyptusYYY
OpenStackYYYYY
OpenNebulaYYY
OpenQRMYYYYYY
XenServerY
Oracle VMY
CloudStackYYY
ConVirtYY
可以看出,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)用户界面
概述用户权限资源池和虚拟机管理
EucalyptusEucalyptus提供了一个基于浏览器的简单用户界面,可以完成用户注册,下载credentials,对提供的产品类型进行简单配置等。资源池和虚拟机生命周期管理需要通过euca2ools在命令行模式下完成。

euca2ools是一组基于命令行的工具,可以与Amazon EC2/S3相兼容的Web Service进行交互。该用具可以管理基于Amazon EC2、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自己的虚拟机实例,但是保存自己对 虚拟机所作的修改,直到用户选择销毁该虚拟机实例为止。)

OpenStackOpenStack 不缺省地提供基于浏览器的用户界面。系统管理员需要手工创建用户。大部分的管理操作,需要在命令行下进行。 尽管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根据某种算法自动决定用户的虚拟机将在哪个物理服务器上运行,用户对物理服务器的状况一无所知。

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

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功能。

XenServerXenCenter是基于Windows的桌面应用,安装与操作都非常简单,界面美观,功能强大。

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

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


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

提供基于VNC的虚拟机console。
可以基于模板的部署新的虚拟机。


Oracle VMOracle 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 分。
运营团队 — 以运营团队的规模、背景、影响力评分,存在的主观因素较多。
社区因素 — 以开发者和用户社区的规模和活跃程度评分,存在的主观因素较多。
沟通交流 — 以个人与运营团队、开发者社区、用户社区之间的沟通顺畅程度评分,存在的主观因素较多。
授权协议

许可证管理
价格指数运营团队社区因素沟通交流总分
Eucalyptus98991045
OpenStack101088743
OpenNebula9978942
OpenQRM9867837
XenServer78910943
Oracle VM9776736
CloudStack9876737
ConVirt98891044
(2)功能评估
从功能上进行虚拟化管理软件选型,需要考虑的因素包括该软件所支持的虚拟化技术、安装配置的难易程度、开发和使用文档的详尽程度、所提供的功能是否全面以及用户界面是否直观友好、二次开发的难易程度、是否提供物理资源和虚拟资源的监控报表等等。
虚拟化技术支持 — 仅支持一种虚拟化技术为6 分,每增加一种虚拟化技术加1 分,10分封顶。
安装配置 — 以按照官方文档进行安装配置的难易程度评分,存在的主观因素较多。
开发/使用文档 — 以官方所提供的开发与使用文档的详尽程度评分,文档详尽程度越高者得分越高。
功能与界面 — 综合评分,涵盖用户进行物理资源和虚拟资源管理、虚拟机生命周期管理、访问虚拟机资源和存储资源的难易程度,用户界面的美观易用程度,以及综合用户体验。
二次开发 — 基础得分6 分,提供与Amazon EC2相兼容的程序调用接口者加3 分,提供二次开发接口但是与Amazon EC2不兼容者加2 分。
监控报表 — 基础得分6 分,依系统所提供监控与分析功能的详尽程度加分。
虚拟化技术支持安装配置开发/使用文档功能与界面二次开发监控报表总分
Eucalyptus88949 (Amazon WS)644
OpenStack108849 (Amazon WS)645
OpenNebula88749 (Amazon WS)642
OpenQRM1095106 (OS)747
XenServer61010108 (Plugin)953
Oracle VM69878 (WS)745
CloudStack898106 (OS)849
ConVirt71010108 (API)1055
(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版本的文件,直接跟我联系吧。


Eucalyptus 使用者手冊


Eucalyptus企业版管理员手册-中文版

from www.qyjohn.net
------------------------------------------------------------------
 ConVirt宿主机自动部署方法概述

本文是探讨在基于RHEL/CentOS5系列linux上部署convirt宿主机,以KVM作为Hypervisor。由于一台CMS可以管理足够的宿主机,所以部署一台CMS将不是很大的问题,在以后会研究自动部署CMS。

一 分析安装包

对于安装过ConVirt的朋友一定知道,官网WIKI提供的方式是先下载convirture官方的yum源文件,然后通过连网再去下载安装 CMS和convirture-tools的相关软件,结合本地linux的yum源解决相关的软件依赖问题。一般情况下,对于部署少量的几台宿主机而 言,连网外网下载也不会有很大问题,但是若批量部署宿主机,几百台,几千台甚至更多那按照官方步骤安装的话将是一个麻烦的工作,况且连外网部署也具有一定 的安全风险。为了能够快速批量的部署宿主机,我作了多方的研究和测试。
这里我想提一点,在研究虚拟化之前,我也只是了解一些,对于怎么样去实际部署,怎么样去选择软 件,shell,python,kickstart,lvm,nfs都只是出于了解阶段,但是实际问题放在这,就要想尽办法去实现,不会的现学,不了解的 就去了解。我觉得运维最重要的是要有思路,要学会分析问题。
1.下载convirt-tools.
http://www.convirture.com/downloads/convirture-tools/2.0.1/convirture-tools-2.0.1.tar.gz
2.解压convirture-tools到home目录下。在官方wiki看到,在安装convirture-tools之前,需要以root用 户执行./convirt-tool install_dependencies 然后再执行./convirt-tool setup。因此在安装CentOS5.6系统时就将相应的软件包安装好,会省去很多麻烦。
通过分析软件包里的脚本文件在/home/convirture-tools/common/scripts里的RedHat_functions文件了找到如下代码

  1. #install convirt tool dependencies  
  2. install_dependencies(){  
  3.    cd /etc/yum.repos.d  
  4.   if [ "${VER%.*}" == "6" ]; then  
  5.       wget --no-cache http://www.convirture.com/repos/definitions/rhel/6.x/convirt.repo  
  6.    else  
  7.      wget --no-cache http://www.convirture.com/repos/definitions/rhel/5.x/convirt.repo  
  8.    fi  
  9.    $SUDO yum -y install dnsmasq tunctl tcp_wrappers socat expect pexpect  
  10. }  
 可以看到在进行setup之前需要安装dnsmasq,tunctl,tcp_wrappers,socat,expect,pexpect,其中socat是centos自带光盘中没有的包,其余的都是可以通过光盘镜像中获取,因此,只需到http://www.convirture.com/repos/definitions/rhel/5.x/convirt.repo文件中的
http://www.convirture.com/repos/deps/RHEL/5.x/去下载好32为的或64为的socat备用。然后将代码修改为
  1. #install convirt tool dependencies  
  2. install_dependencies(){  
  3. #   cd /etc/yum.repos.d  
  4. #   if [ "${VER%.*}" == "6" ]; then  
  5. #      wget --no-cache http://www.convirture.com/repos/definitions/rhel/6.x/convirt.repo  
  6. #   else  
  7. #      wget --no-cache http://www.convirture.com/repos/definitions/rhel/5.x/convirt.repo  
  8. #   fi  
  9.    $SUDO yum -y install dnsmasq tunctl tcp_wrappers socat expect pexpect  
  10. }  
这样在安装系统的过程中就不从convirt的官方下载软件,以方便从自己搭建的yum源下载。
3.作修改后重新打包convirt-tools。备用。
4.搭建自己的yum源。本文采用web服务器存放CentOS5.6的镜像内容,并将下载好的socat,重新打包好的convirt-tools放到web服务器上。

二 部署分析

实际上部署和安装一般的linux没啥区别,就是在部署时尽量只安装需要的软件包,多余的不要,将尽量多的资源分配给虚拟机,以提高虚拟机性能。部署情况有以下几种
1.如果是全新安装部署,服务器都还在机房里没有发出去,可以采用PXE方式安装,定制好kickstart 文件就可以批量安装了。
2.我们的需求是要逐步更换正在运行的Vmware和XenServer,而且服务器没有远控。最先想到的就是用U盘引导+kickstart到现场去安装
3.由于我们使用的服务器一部分在公司,另一部分托管到别的机房,所以第2种方案有点费神费力。于是我开始研究是否可以在线远程更换。通过编辑grub+vmlinuz+initrd.img+kickstart+vnc可以实现远程更换。
 from http://john88wang.blog.51cto.com/2165294/819541

No comments:

Post a Comment