常见的IaaS开源平台有OpenStack、CloudStack、Eucalyptus和OpenNebula,公开的现状报告和社区分析显示,OpenStack和CloudStack的在企业接受度和社区的发展情况已经远远超越另外两者,如图1所示。本研究报告将对OpenStack和CloudStack这两个最为流行的开源云平台进行对比,为企业在进行私有云建设时的技术选型提供参考和建议。

OpenStack和CloudStack对比研究报告_API


 

图1、开源云平台社区活跃度对比图

2. OpenStack和CloudStack的对比

1)历史背景和概况

    OpenStack由NASA和Rackspace公司在2010年联合发布,两者分别贡献计算代码(Nova)和存储代码(Swift),以Apache许可协议进行授权。OpenStack的目标是提供一个既可以用来建设公有云也能建设私有云的通用的开源云计算平台,而且做到云平台的搭建尽量的简单方便,同时能够快速的横向扩展。OpenStack独立于任何企业,遵循开源、开放设计、开放开发流程和开放社区的理念,完全由社区主导和维护。OpenStack的发布周期是半年,到目前为止已经发布8个正式版本,最新的版本是Havana,在每个版本发布之后社区都会举行一次峰会,来自世界各地的公司和开发者一起讨论下一个版本的设计,同时进行OpenStack相关的技术分享,值得一提的是,最近的一次峰会在中国的香港举行。

    CloudStack最初由Cloud.com公司开发,分为商业和开源两个版本,开源版本通过GPLv3(GNU General Public License, version 3)许可协议进行授权,Citrix公司在2011年收购Cloud.com后,将全部代码开源,并在2012年将CloudStack贡献给Apache软件基金会,成为Apache的孵化项目,同时将授权协议改为更加宽松开放和商业友好的Apache许可协议,CloudStack在2013年3月份升级为Apache的正式项目。CloudStack的目标是提供高度可用的、高度可扩展的能够进行大规模虚拟机部署和管理的开放云平台。CloudStack的发布周期并不固定,目前最新的版本是4.2,社区每年会举行一次全球协作会议(CloudStack Collaboration Conference)进行技术分享和交流。

2)平台架构

    OpenStack采用分布式架构,整个平台按照功能不同分为多个模块项目,如图2所示,项目之间通过消息队列中间件和RESTful形式的API进行交互通信(其中认证项目为其它项目提供认证和服务注册),因此每个项目都可以单独部署在不同的主机上,架构非常的灵活,OpenStack对外提供丰富和功能强大的API,使得资源可以被用户方便的使用和调度,同时提供和Amazon AWS(Amazon Web Services)兼容的API。

OpenStack和CloudStack对比研究报告_API_02


 

图2、OpenStack分布式架构图

    CloudStack采用集中式的单体架构(Monolithic architecture),如图3所示,整个平台只有一个项目构成,不同模块之间通过的本地调用进行交互,在一台主机上就可以完成平台的部署,非常方便,CloudStack同样地对外提供自身API和与Amazon AWS相兼容的API。

OpenStack和CloudStack对比研究报告_Apache_03


 

图3、CloudStack集中式架构图

    可以看到两者的架构几乎是相对的,OpenStack的分布式架构灵活性好,不同的项目可以单独部署,因此可以很容易的根据实际需要进行功能组合,并且由于不同的项目间耦合性低,项目间功能划分明确,因此针对单独功能进行定制开发也非常方便,缺点是部署麻烦,每个项目都要部署配置一遍;CloudStack因为只有一个项目,所以部署起来会相对容易很多,然而平台的扩展性就要相对弱一些。

3)平台整体比较

    OpenStack和CloudStack的功能对比如表1所示,我们从授权协议、支持的底层技术和用户群等不同方面对两者进行了比较。

 

OpenStack

CloudStack

授权协议

Apache 2.0,可以免费商用

Apache 2.0,可以免费商用

虚拟化技术

XenServer/XCP,KVM,QEMU,
LXC,VMware ESXi/vCenter,Hyper-V Baremetal,Docker,Xen/Libvirt

XenServer,KVM,QEMU,
VMware vCenter ,LXC

网络服务

VLAN,Flat,FlatDHCP
Quantum虚拟化网络

VLAN,Flat,OpenFlow

存储支持

iSCSI,Ceph,NFS,LVM,Swift,Sheepdog

NFS,LVM,Ceph,Swift

调度策略

模型全面,易扩展

模型简单,可扩展

用户界面

功能完善,界面简单

功能完善,界面友好

数据库

PostgreSQL,MySQL,SQLite

MySQL

虚拟机模板

支持

支持

组件

Nova,Glance,Keystone,
Horizon,Swift,Cinder,
Quantum,Heat,Ceilometer

Console Proxy VM,
Second Storage VM,
Virtual Router VM,
Host Agent,Management Server

开发主导

开源社区

Citrix公司

开发语言

Python

Java

官方文档

非常详细

详细

版本问题

存在版本兼容性问题

不存在版本兼容性问题

用户群

160家左右,包括NASA、
RedHat、Rackspace、HP、
网易、UnitedStack等

不到60家,包括诺基亚、
日本电话电报公司、Zynga、
阿尔卡特、迪斯尼等

表1、OpenStack与CloudStack 比较

4)平台选择

    经过前面的比较分析我们能够获得这样的结论,OpenStack和CloudStack都是功能强大的开源云平台,满足企业私有云建设的需求,并且因为开放开源,都可以根据需要进行定制。不同的是CloudStack因为是从商业软件开源出来的,所以对企业来说会更容易上手,在云平台构建时会比较方便,然而同样因为其带有商业软件属性,平台架构比较集中,模块间耦合度比较高,因此扩展性不是太好,同时二次开发的成本较高;OpenStack自诞生之初就是开源软件,并采用分布式的架构,所有的开发都是由社区承担,不同的项目之间几乎没有耦合,所以可以方便的进行开发定制,然而因为其有多个项目组成,每个项目都要单独安装,并且要保证项目间的协作,所以部署会比较麻烦,另外由于OpenStack处于高速发展阶段,不同版本之间项目可能会有较大的变动,因此版本间的升级会比较困难。
    另外值得一提的是,OpenStack和CloudStack虽然都对VMware的ESXi虚拟化技术提供支持,但支持方式是不一样的,如图4所示。CloudStack要经过vCenter才可以实现对ESXi宿主机上虚拟机的管理;而OpenStack支持直接和ESXi通信,实现对虚拟机的基本管理,只有高级功能才需要vCenter的支持。针对目前中小企业普遍采用VMware的免费虚拟化技术而没有vCenter的现状,这也是在平台选择时需要考虑的。

OpenStack和CloudStack对比研究报告_openstack_04


 

图4、VMware ESXi管理方式对比图

    恒天云采用OpenStack开源平台进行私有云建设,因为OpenStack架构非常开放,方便定制开发,并且拥有众多技术厂商的支持,非常有可能成为云计算IaaS平台领域的Linux,所以通过对OpenStack定制开发,积累云计算的技术能力,从长远来看对企业也是非常有益的。