虚拟化管理软件比较 -- 功能篇

By , 2011年5月6日 4:46 下午

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

这一系列文章分成五个部分:

虚拟化管理软件比较 -- 商务篇

虚拟化管理软件比较 -- 构架篇

虚拟化管理软件比较 -- 功能篇

虚拟化管理软件比较 -- 综合篇

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

(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 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自己的虚拟机实例,但是保存自己对虚拟机所作的修改,直到用户选择销毁该虚拟机实例为止。)

 

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的目前的发展势头来看,下一个版本可能比较值得期待。

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

 

2 Responses to “虚拟化管理软件比较 -- 功能篇”

  1. […] 虚拟化管理软件比较 -- 功能篇 […]

  2. […] 虚拟化管理软件比较 -- 功能篇 […]

Leave a Reply

Panorama Theme by Themocracy