虽然市面上有数量众多的商业软件可用于构建云基础设施,但是在你开始花血汗钱之前,也许应该看一下可供使用的开源方案。虽然开源云软件常常被称为是商业云软件的“替代品”,其实根本不是这样。而在许多情况下,开源应用程序是同类软件中率先使用云技术的。
有许多理由求助于开源软件来满足你的云计算要求。如果求助于一个或多个这样的开源应用程序,贵公司可以省下一大笔费用,具体取决于公司规模。此外,你可能会发现自己在与大规模企业竞争,对方其实在运行与你一样的开源软件,实际上让竞争环境变得了公平一点。
但是也有其他理由可能迫使你试一下这些方案。许多云计算开源项目有更庞大的用户群。由于实施软件的门槛很低,有更多数量和类别的人在使用它,而且软件背后常常有充满活力的社区,充当支撑体系。开源项目通常具有创新精神,很短的发布周期推动技术前进。实际上,用户常常根据实际的商业要求来决定下一个特性发布周期。
另外,开源意味着可以随意享用应用编程接口(API)和编写它们所使用的开放标准。应用程序代码库更透明,这常常有助于推动创新前进,加大社区支持。
综观许多云计算服务模式,比如用户云(又叫软件即服务)、开发云(又叫平台即服务)和系统云(又叫基础设施即服务),有大量多种多样的应用程序可供选择,既有商业产品,又有免费的开源产品。你可能会注意到,许多开源项目有着更崇高的目标,原因在于庞大、开发的社区,广大开发者致力于编写创新的软件,希望进一步推动云计算技术。幸好,有开放标准,许多开源应用程序可以彼此联系,让你可以精挑细选应用程序,为贵企业构建一套可靠、整合的云计算解决方案。
这样的应用程序和解决方案就包括如下:、GoogleDocs、RedHatNetwork、VMwareCloudFoundry、GoogleAppEngine、WindowsAzure、RackspaceSites、RedHatOpenShift、ActiveStateStackato、AppFog、EC2、RackspaceCloudFiles、OpenStack、CloudStack、Eucalyptus、OpenNebula及另外许多。
XCP含有思杰公司的商业发行版XenServer的一小部分功能。它包括XenAPI工具堆栈,提供了主机系统池管理、多租户模式、存储库、支持SLA以及预先整合网络和磁盘功能(比如OpenvSwitch)。XCP可以通过ISO来安装,类似XenServer,附有所有一样的驱动程序。虽然与XenServer不一样,但是代码库大部分一样。XCP还可以通过安装在DebianGNU/Linux和UbuntuLinux中的程序包管理器下的XCP-XAPI程序包来获得和配置。ISO基于CentOS5.x,使用XAPI本地管理,支持XenServer的大多数功能。然而,它是类似黑盒的设备,只能在CentOS上工作,而XCP-XAPI程序包易于定制、易于从源代码来构建,并以程序包的形式存在,那样你就能围绕它们组装自己的系统。缺点就是,相比ISO,XCP-XAPI在功能方面有一些限制,而且只支持数量有限的存储库类型,而ISO支持大多数类型。
基于内核的虚拟机(KVM)是一个开源项目,为在x86硬件上运行的GNU/Linux开发。由于可装入的Linux内核模块(kvm.ko),KVM可与安装有KVM的GNU/Linux系统整合起来,包括针对特定处理器的Linux内核模块(kvm-intel.ko或kvm-amd.ko)。作为一套完整的虚拟化系统,编写了许多外部程序来管理KVM映像。KVM可以运行GNU/Linux或微软Windows系统的多个映像,包括可访问专有的网卡、磁盘、显卡和USB等。虽然KVM与Linux内核整合起来(自Linux2.6.20起,KVM就是主线代码的一部分),Xen之类的虚拟机管理程序却是外部的,不得不控制安装有KVM的机器,并利用资源管理;KVM充当系统的一部分,使用Linux调度程序和内存管理。目前,KVM需要QEMU(开源模拟器)才能工作,但是撰写本文时,该项目在努力摈弃这种依赖。
为了非商业机构易于使用,VirtualBox可以在多种平台上工作,易于安装和设置。它提供x86和AMD64/英特尔64虚拟化,在家庭环境和企业环境下都很容易得到利用。它可以在Windows、Linux、Macintosh和Solaris主机上运行,支持主机安装Windows(NT4.0、、XP、Server、Vista、Windows7和Windows8)、DOS/Windows3.x、Linux(2.4、2.6和3.x)、Solaris及OpenSolaris、OS/2以及OpenBSD。VirtualBox拥有众多引人入胜的功能:可以轻松运行多个操作系统访客;你的限制主要取决于系统内存和处理器能力。可以使用VirtualBox来建立虚拟网络,用于实验室环境,比如渗透测试、构建集群原型和贝奥武夫(Beowulf)集群模板。一项名为“快照”的功能让用户可以保存虚拟机状态,如果需要的话,可以恢复到之前的那些状态。你还可以构建系统、配置系统并交付虚拟机,用于客户的VirtualBox实例。相比另外一些知名的商业虚拟化解决方案,VirtualBox因占用的内存和处理器资源最少而著称。
获得预构建的设备从来没有这么容易过。与SUSEStudio一样,用户可以使用预构建的Bitnami堆栈,下载虚拟机或安装程序。可从Bitnami获得的应用程序包罗万象:从基础设施和云工具,到客户关系管理(CRM)、内容管理系统(CMS)和企业内容管理(ECM),不一而足。耳熟能详的应用程序包括:WordPress、Joomla、Drupal、Moodle、JBoss、LimeSurvey、DokuWiki、SugarCRM和ownCloud等等。另外,Bitnami提供一系列堆栈,包括Ruby、Django、LAMP、WAMP、WAPP、MAMP、LAPP和MAPP。Bitnami设备拥有诸多功能,比如具有独立、安全、最新等优点,按一致的标准来构建。每个设备都捆绑有它所需要的所有库、数据库和运行时环境。每个设备都针对互联网上最常见的使用和情况进行了优化。Bitnami还通过亚马逊网络服务,为需要设备所提供的功能,可是又没有资源来下载和安装设备的那些人提供云服务。
眼下BoxGrinder主要是一种命令行构建工具,用于构建虚拟化用途和云部署的设备,BoxGrinder这个项目在不断开发之中。目前支持构建基于Fedora、CentOS、红帽企业级Linux(RHEL)和ScientificLinux的设备。设备目前可以部署到VMware、VirtualBox、VirtualPC和EC2。交付的内容包括一组插件,可用于本地交付、SFTP、S3、EBS、ElasticHosts和OpenStack。不过眼下,只能在Fedora上构建设备。用Ruby编写的BoxGrinder需要rubygem用于安装和管理程序包。由于项目还在开发之中,附加功能还在规划之中,BoxGrinder是未来值得关注的项目,但是构建系统的局限性和设备操作系统底层的局限性会让你暂时关注其他的云设备应用程序。
Oz是为了便于自动安装操作系统而开发的,它从用户获得首次安装的极少输入后,迅速推出一个完整的系统。Oz可以安装操作系统、定制操作系统,并生成程序包清单文件。不过,Oz方面有些地方需要手动维护。就新的操作系统和版本而言,它们需要手动添加。必须经常更新Oz,才能支持新的操作系统版本。作为其功能的一部分,Oz使用操作系统提供的原生安装工具来执行安装。虽然Oz支持安装一系列广泛的操作系统,包括RHEL、CentOS、ScientificLinux、Fedora、OpenSUSE、Debian、Ubuntu、Mandrake、Mandriva、FreeBSD和Windows,不过就这每一款操作系统及不同版本而言,Oz可能支持其中一种操作(安装、定制和生成清单文件),也可能不支持。然而,不像其他许多堆栈安装或操作系统安装工具,Oz让操作系统的安装就像它安装在裸机系统上一样。
SUSEStudio自年首次发布以来就大受欢迎,迅速经历了从LifeHacker到TuxRadar的几轮评估。借助最初由NovellSUSE(现在的SUSE)发布的在线Linux映像创建工具,该网站让你很容易配置青睐的操作系统(从核心应用程序到系统级定制),然后使用自动化工具来构建系统。RPM可以上传到构建环境,也可以添加软件库。因而生成的映像可以作为ISO(LiveCD/DVD,预装)、虚拟机(VMware/VirtualBox/OVF/Xen)、SUSE云或USB映像来下载。还有一系列广泛的预装映像可以选择,既有SUSE开发的,也有SUSEStudio用户贡献的。默认映像都基于SUSE,既有openSUSE,又有SUSELinuxEnterpriseServer。除了这些功能外,SUSE还能通过之前存在的AWS帐户上传AMI映像,为EC2映像创建实例,还可以通过之前存在的WindowsAzure帐户,上传VHD映像,为Azure应用程序创建实例。
尽管外面传闻Java不会继续是许多主要云应用程序的核心,但它依然扮演这一重要角色。ApacheCloudStack的核心是用Java编写的一批功能,包括用户管理、多租户和帐户分离、网络、计算和存储等资源核计、基于Web的管理控制台、原生API及与亚马逊S3/EC2兼容的API,以及支持主存储/辅助存储。ApacheCloudStack可以与XenServer/XCP、KVM、Hyper-V和VMware上的主机协同运行。ApacheCloudStack用来部署和管理虚拟系统组成的大型网络,被许多提供商选择用来为客户部署私有云、公有云和混合云等解决方案。额外的功能特性包括:高可用性、作为服务云计算平台的可扩展基础设施,以及用户和开发者组成的庞大社区(他们不断推动技术进步、改进功能特性)。
虽然目前只出现在CentOS和红帽企业级Linux上,但是Eucalyptus作为一种完整的IaaS解决方案,已经备受关注。Eucalyptus包括云控制器(CLC)、Walrus(持续性数据存储)、集群控制器(CC)、存储控制器(SC)、节点控制器(NC)和可选的VMware代理(VB),这俨然是一款功能齐全的产品。每个组件都是一种独立的Web服务(VB除外),旨在让Eucalyptus可以为每种服务提供API(与语言无关)。这种基于Linux的系统让用户可以使用一种基于行业标准的模块化框架,在现有的基础设施里面部署私有云和混合云。尤其是,Eucalyptus提供了隔离各路流量的虚拟网络覆盖层,让多个集群在同一局域网(LAN)上可以做到透明,同时保持数据完整性。此外,Eucalyptus通过API与亚马逊的EC2、S3、IAM、ELB、自动扩展(AutoScaling)和CloudWatch等服务兼容,因而对实施混合云方案来说再理想不过了。
OpenNebula结合了功能项目和功能研究,声称是数据中心虚拟化发展道路上迈出的下一步。从研究的角度来看,该项目力求开发先进的、自适应的虚拟化数据中心和企业云。通过与云计算领域的其他开源项目和研究人员合作,OpenNebula希望还能获得云计算软件的稳定性和质量。该项目的核心价值包括:流程和技术开放性、项目的所有生命周期都确保出色以及云开发方面的创新。至于其实际的功能产品,目前声称的主要功能特性包括:界面直观的自助服务门户网站、自动化服务管理目录、管理和超级用户界面、设备市场、性能及容量管理、高可用性、业务连续性、虚拟基础设施管理、企业级安全、第三方工具整合,以及开发者直接提供出色的产品支持和基于服务级别协议(SLA)的商业支持。
GlusterFS使用FUSE(用户空间中的文件系统)与VFS(虚拟文件系统)连接起来建立了一种在用户空间里面或者在内核及其特权扩展件外面编写的集群网络文件系统。GlusterFS使用ext3、ext4和xfs之类的现有文件系统来存储数据。GlusterFS之所以大受欢迎,是由于用户可以使用这样一种框架:能够扩展,在单一挂载点下提供数PB数据。GlusterFS可以将文件分布到一组子卷上,用一批较小的存储单位组成一个大的存储单位。这可以跨一台或几台服务器上的卷来实现。可以通过添加新服务器来增加卷,尤其是可以实时添加。由于复制功能,GlusterFS提供了存储冗余性和可用性。
Ceph的技术基础是可靠的自主分布式对象存储(RADOS),它在单个统一的存储集群中为应用程序提供了对象存储、块存储和文件系统存储。由于库让客户机应用程序可以直接访问基于对象的RADOS存储系统,用户就能充分利用RADOS块设备(RBD)、RADOS网关以及Ceph文件系统。RADOS网关提供了与亚马逊S3和OpenStack兼容的接口,以便连接RADOS对象存储。此外,POSIX是Ceph的一项主要的特性。POSIX语义用Ceph的传统文件系统来驱动接口,那样使用符合POSIX的文件系统的应用程序就能轻松使用Ceph的对象存储系统。额外的库让用
C、C 、Java、Python和PHP编写的应用程序也可以访问Ceph对象存储文件系统。高级的功能包括:部分/完整读取/写入、快照、对象级键值映射和原子事务(具有附加、截断和克隆范围等功能)。Ceph还与几种虚拟机客户软件兼容。
在OpenStack的许多架构特性当中,存储是基本的云架构必备要件之
一。OpenStack提供了可扩展、冗余的对象存储,使用服务器集群,可以存储数PB数据。借助这种分布式存储系统,OpenStack为其功能组合添加了另一层面的可扩展性、冗余性和耐久性。数据写入到数据中心中的多个磁盘上,数据复制得到管理,数据复制得到保障。对在意预算的那些人来说,OpenStack存储解决方案既可以将数据写到老式的小容量驱动器上,也可以写到新式的高速驱动器上。对OpenStack存储不满意?OpenStack与其他存储解决方案兼容,比如Ceph、NetApp、Nexenta、SolidFire和Zadara。额外的功能包括:快照(可以恢复或用来创建新的存储块)、扩展(添加新的服务来扩展和跨节点复制数据)、支持块存储、自愈合、众多功能强大的管理工具(可报告使用情况、性能和一般情况),包括审查工具。
Sheepdog是另一种分布式对象存储解决方案,恪守代码库小巧、简单和易于使用的原则。Sheepdog主要用于卷和容器服务,能够智能化管理磁盘和节点,它可以扩展至数千个节点。Sheepdog可以连接到QEMU虚拟机和LinuxSCSI目标设备,还支持快照、克隆和自动精简配置。它还可以连接到在裸机硬件上运行的其他虚拟机和操作系统(不过iSCSI必须得到支持)。Sheepdog支持libvirt和OpenStack,可与HTTPSimpleStorage进行联系,还有后端存储功能,比如支持丢弃、日志功能、支持单一节点上的多磁盘以及支持擦除代码。由于通过Web接口可与OpenStackSwift和亚马逊S3兼容,Sheepdog能存储和检索海量数据。
相关链接:e上的多个预构建配置。企业版拥有的功能特性则要多得多,除了开源版的功能外,还包括图形化用户界面、事件检查工具(直观地显示基础设施的变化)、得到支持的模块和资源配置(VMware虚拟机)。另外还包括配置管理(发现和用户帐户)、编排、任务自动化以及基于角色的访问控制(支持外部验证)。Puppet企业版还有一个统一的跨平台安装工具,可以安装所有组件和支持服务。
作为一款更庞大的企业就绪的应用软件的一部分,Salt配置管理组件正如人们预料的那样强大稳健、功能齐全。基于远程执行核心而建,系统的执行在“minion”节点上进行;minion节点收到来自中央Salt主节点的命令后,返回相应命令的结果。Salt支持同时配置成千上万个主机的任务。基于主机“状态”,根本不需要编程以编写配置文件;配置文件很短小,易于理解,可以帮助识别每个主机的状态。此外,对于确实习惯编程的那些人或想更大程度地控制及熟悉配置文件的管理员来说,可以利用任何语言来进行配置。