【51CTO专稿】2012年的LinuxCon大会之后,Linux基金会执行董事Jim Zemlin在自己的博客上总结道:
云计算已经对整个技术产业经济体造成了极大的变革,而这变革仍将继续。目前领跑的Amazon平台全都是基于开源软件来构建的。厂商们也不再各自单打独斗,而是纷纷在OpenStack和CloudStack这样的项目中联合作战。现在,无论你去找任何厂商,让他谈谈当前的技术趋势,他们都会跟你谈组成现在这些云的开源项目。
Zemlin拉了一份清单,重点列出了几个相关的项目。其中,除了大家耳熟能详的Linux,KVM和Xen之外,还包括:
- Gluster
- Ceph
- Puppet
- Chef
- oVirt
Zemlin认为构建云平台的厂商和工程师们都有必要去了解这几个项目。本文旨在对这五个项目进行简单的背景介绍,供大家参考。
GlusterFS(http://www.gluster.org/)
GlusterFS是一个分布式文件系统,在GPL许可协议下发布。该项目在2005年由Gluster公司启动。2011年,Gluster公司被红帽收购,项目目前由红帽主导。目前,GlusterFS已经在Red Hat Storage Server中采用。
GlusterFS面向PB级的数据处理,理论上可以处理72BB的数据(BB比PB高五个级别,相当于10的27次方),支持上千规模的客户端。集群存储块之间通过Infiniband RDMA或TCP/IP以太网连接,形成大型的并行网络文件系统,在一个全局的命名空间下进行资源调配和数据管理。在设计上,用户空间是可堆叠的。
Ceph(http://ceph.com/)
Ceph是一个分布式对象存储项目,在LGPL许可协议下发布。该项目的雏形起始于2006/2007年,Dreamhost联合创始人Sage Wei的博士论文。Sage Wei博士毕业后,与另外两名开发者Yehuda Sadeh Weinraub和Gregory Farnum一起全职投入Ceph的开发,期间该项目一直隶属Dreamhost内部。2012年,Sage Wei成立Inktank公司,专门提供Ceph的产品化和支持服务。
目前,Ceph背后的主要厂商为Inktank,Dreamhost和42on。Dreamhost的DreamObjects正是由Ceph实现,同时Ceph也跟CloudStack、OpenStack、Proxmox等项目进行了集成。
Ceph的目标是全面的分布式,杜绝任何单点故障。Ceph主要面向PB级的数据处理,理论上整个存储系统可以扩展至EB级别。其对象存储可通过C,C++,Java,Python和PHP绑定或名为radosgw的REST接口进行访问,该接口与S3和Swift兼容。块存储使用Ceph的RADOS Block Device(RBD),数据被打散存储在整个集群中。RBD已经与KVM进行了集成。Ceph提供的文件系统与POSIX网络文件系统(btrfs、ext3、ext4、xfs)兼容。
2010年3月,Linux kernel 2.6.34中合并了Ceph的客户端代码。2012年7月,Ceph发布第一个稳定版本Argonaut。第二个稳定版本Bobtail发布于2013年1月。
Puppet(https://puppetlabs.com/)
Puppet是Linux上的四大配置管理工具之一(四大工具分别是CFEngine、Bcfg2、Chef及Puppet),新版采用Apache许可协议,2.7.0及之前的版本为GPL许可协议。Puppet的主要开发者是Luke Kanies。从2001年到2005年间,Kanies开始在Reductive Labs从事工具的开发;2005年,Puppet正式发布。2010年,Reductive Labs更名为Puppet Labs。这是Puppet背后的主要支持厂商。
Puppet Labs的投资方包括VMware,Google和思科。
目前,Puppet在Wikimedia基金会、ARIN、Reddit、Dell、Rackspace、Zynga、Twitter、纽约证交所、迪士尼、思杰、甲骨文、Google、新浪等公司都有部署应用。这里有一份Puppet官方提供的客户列表。
Puppet的常用场景包括升级软件包、管理配置文件、系统服务、cron任务以及添加新的配置、修复错误等,在设计上可同时管理上千台服务器。
Puppet基于Ruby,依赖于C/S的部署架构。Puppet采用一种定制的声明式语言来描述系统配置,不需要管理员有深入的编程经验。这个单独的脚本可以直接被应用在系统上进行环境变更,也可以被编译进入catalog之后再通过C/S的部署分发到目标系统上,所有的目标主机会依次使用适用于本地系统的语法解释和执行这个模块。
另外,通过定制软件包和特殊的系统环境配置,可以对Puppet进行扩展。
Puppet支持各种Linux发行版,部分Unix发行版(Solaris,BSD,Mac OS X,AIX,HP-UX),以及微软Windows系统。
Chef(http://www.opscode.com/chef/)
跟Puppet类似,Chef也是Linux上的四大配置管理工具之一,在Apache许可协议下发布。Chef的第一个正式版本发布于2009年1月,其背后的主要公司Opscode成立于2008年。在开发Chef之前,这是一家名为HJK Solutions的咨询公司。
Opscode跟AWS、思杰、Dell、Eucalyptus、GCE、HP Cloud、Joyent、Windows Azure、nimbula、Piston、Rackspace、VMware等云服务均有合作。同时,Chef在Facebook、Dreamhost、MercadoLibre等公司均有应用。这里有一份Chef官方网站提供的客户列表。
Chef专注于快速部署、云服务管理与持续交付。
Chef使用Ruby和Erlang编写,其用于描述系统配置的领域专用语言采用Ruby编写,称作recipe或cookbook。Chef可以使用C/S架构部署,并针对Rackspace(OpenStack)、Amazon EC2进行了集成。除了Linux之外,Chef也支持Windows系统。
Chef的最新版本Chef 11发布于2013年2月,其核心API引擎全部采用Erlang进行了重写。
oVirt(http://www.ovirt.org/)
oVirt是一个虚拟化管理系统,在Apache 2.0许可协议下发布。2008年,Qumranet被红帽收购,其虚拟化管理软件需要从C#改写为Java。2011年9月,红帽宣布将这部分代码开源,成为新项目oVirt的一部分。2011年11月初,红帽在思科公司举办了第一次oVirt Workshop,与IBM、英特尔、思科、Canonical、NetApp与SUSE一同宣布oVirt社区的成立。
红帽的企业级虚拟化产品RHEV 3.0内部就包含了oVirt。同时,oVirt目前也是Fedora发行版中默认预装的工具之一。
oVirt基于libvirt--一个可以管理KVM、Xen和VirtualBox虚拟机的管理系统。与libvirt不同的是,oVirt仅专注于KVM,目标在于提供大规模的、对虚拟机、存储、虚拟网络的集中式管理。oVirt通过XML-RPC HTTPS与安装了VDSMd守护进程的宿主机通信,管理界面基于Web。
oVirt支持高可用和热迁移,单个虚拟机最大可支持64个vCPU和2TB vRAM。通过VDSMd,oVirt可以管理的存储包括:NFS,iSCSI,FibreChannel,GlusterFS,以及其他POSIX兼容的文件系统(如IBM的GPFS)。oVirt不支持AoE。oVirt可以管理的虚拟网络配置包括:链路聚合,VLAN,以及MTU。
除了分别面向管理员、普通用户、高级用户的三个Web管理界面外,oVirt也提供基于REST的API接口。该接口SDK基于Python编写,提供了命令行管理界面,大部分oVirt的功能都可以在这个接口下获取,用于自动化操作。
oVirt本身用Java编写,服务端运行在JBoss应用服务器和GWT web框架上。目前的稳定版本是oVirt 3.2.1,发布于2013年3月。大版本的发行周期目前为6个月。
今年的5月8号、9号两天,下一次oVirt Workshop将在英特尔位于上海的亚太研发中心举办。详细情况可参考研讨会的官方网站。