1. 概述
常见的IaaS开源平台有OpenStack、CloudStack、Eucalyptus和OpenNebula,公开的现状报告和社区分析显示,OpenStack和CloudStack的在企业接受度和社区的发展情况已经远远超越另外两者,如图1所示。本研究报告将对OpenStack和CloudStack这两个最为流行的开源云平台进行对比,为企业在进行私有云建设时的技术选型提供参考和建议。
图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。
图2、OpenStack分布式架构图
CloudStack采用集中式的单体架构(Monolithic architecture),如图3所示,整个平台只有一个项目构成,不同模块之间通过的本地调用进行交互,在一台主机上就可以完成平台的部署,非常方便,CloudStack同样地对外提供自身API和与Amazon AWS相兼容的API。
图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的现状,这也是在平台选择时需要考虑的。
图4、VMware ESXi管理方式对比图