OpenStack设计与实现(第3版)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.6 其他开源项目

作为一个开源项目,OpenStack自诞生起就不缺少竞争对手,其中影响力较大的有CloudStack、Eucalyptus和OpenNebula。表1-2所示为到目前为止,OpenStack与其他开源项目的简单比较。

表1-2 OpenStack与其他开源项目比较

img

1.CloudStack

在2008年前后,美籍华人梁胜联合其他几个创始人创立了一家公司,开发出一款名为VMOps的云平台系统,这便是CloudStack的前身。后来,这家公司收购了互联网域名Cloud.com,将公司更名为Cloud.com,同时将VMOps更名为CloudStack,希望致力于云计算解决方案的研发。

2010年5月,Cloud.com公司将大部分CloudStack的代码在GPLv3版权下发布成免费软件,只保留大约5%不进行公开。

2011年7月,Citrix收购了Cloud.com公司,希望丰富自己的云产品线。同年8月,Citrix在GPLv3版权下发布了剩余的CloudStack代码。

2012年2月,Citrix发布了CloudStack 3.0。同年4月,Citrix将CloudStack版权修改成Apache 2,并将其完全捐献给Apache软件基金会,放入Apache孵化器中。

2013年3月,CloudStack在发布CloudStack 4.0.2之后,终于从Apache孵化器中成功“毕业”,成为Apache软件基金会的顶级项目(Top-Level Project,TLP)。

到目前为止,CloudStack有着众多的商业客户,包括GoDaddy、英国电信、日本电报电话公司、韩国电信、中国电信和Autodesk等。

2.Eucalyptus

Eucalyptus(Elastic Utility Computing Architecture for Linking Your Programs to Useful Systems)最初是美国加利福尼亚大学圣芭芭拉分校计算机科学学院的一个研究项目。2009年,Benchmark Capital公司出资550万美元创立了Eucalyptus System公司,并将研究项目商业化。不过,Eucalyptus仍然按照开源项目进行维护和开发,只是Eucalyptus System会在开源的基础上构建额外附加的功能,并提供客户支持服务。

所以,Eucalyptus本质上是开源的,只是同时拥有收费的企业版。2014年9月,惠普公司宣布收购Eucalyptus为其子产品,加强其云战略。

3.OpenNebula

OpenNebula起源于2005年,当时它还是一个由两位研究员Ignacio M.Llorente和Ruben S.Montero主导的开源研究项目,研究的目的是找到一个IaaS的云计算解决方案。该方案能够提供开放、灵活、可扩展的管理中间层,允许用户通过该管理层轻易地自动生成和编配虚拟数据中心。

2008年3月,OpenNebula发布了第一个公开版本。在OpenNebula随后的发展过程中,社区用户起到了很大的作用。OpenNebula中的很多功能,都是社区用户在分布式架构上部署大规模虚拟机之后,为了解决在使用过程中的不便之处,以及满足新的业务需求而实现的,可以说,OpenNebula的很多功能是开源社区用户的智慧和创新的结果。

2010年3月,OpenNebula的主要贡献者创立了C12G实验室来为企业用户提供附加值服务,并且承诺为OpenNebula提供持久的维护工作。OpenNebula商业化运作自此开始。同时,C12G实验室还管理着开源网站社区OpenNebula.org。

2013年9月,OpenNebula迎来了它的第一次社区大会,当时来自世界各地的顶尖公司和组织都参加了这次盛会。2014年8月,OpenNebula发布了新的稳定版本4.8。

除了上述一些OpenStack的竞争对手,在整个云计算生态圈里,还有一些其他项目正在成为或者已经成为业界瞩目的焦点,比如在SDN领域和分布式存储领域中具有影响力的几个项目,以及基于容器技术的一些云平台管理技术等。

1.OpenDaylight

在网络技术的版图里,SDN技术早已是业界公认的未来方向,但是如何统一各个厂商甚至学术界的标准,一直以来都是一个难题。在2013年,一大批传统的IT设备厂商联合几家软件公司,发起了OpenDaylight项目,简称ODL。此项目发展至今,已经成为开源的SDN方案中具有较大影响力的项目之一。从2013至今,ODL已有11个正式的发行版本,而每一个版本都是以化学元素表中的某一元素来命名的,充满了学术气息。这11个版本的名字依次是:氢、氦、锂、铍……直到现在的钠(Sodium)。

之前,在ODL社区的成员公司中,分为白金、黄金、白银不同等级,标志了赞助费用和权益的不同。后来由于Linux基金会策略调整,整合了FD.io、ONAP、OPNFV、ODL、Open Switch、PNDA、SNAS.io和Tungsten Fabric(TF)等相关网络开源项目,形成了统一的LF Networking社区,因此ODL社区与LF Networking会员等级共享且相同。在社区的运作中,也充分强调了ODL技术决策的开放性和公正性,保证了项目发展的活力和健康。

在技术上,ODL项目有其独到之处。首先,此项目是基于Java开发平台的,充分利用了Java平台上成熟的动态模块技术(OSGI),并以微服务架构为基础,非常灵活和高效地集成了各种插件来提供对多家厂商设备的支持,以及各种高级网络服务。在北向API接口的设计上,ODL不但提供了RESTful的API,也提供了函数调用的OSGI接口,以应对不同方式的北向集成方案。在南向API接口的设计上,充分考虑了多协议支持和多厂商设备适配的便利。而与OpenStack中Neutron模块的集成,一直是ODL项目的技术重点之一,最近也有突飞猛进的发展。

2.OPNFV

顾名思义,OPNFV项目的初衷是提供一个开放、开源的电信运营级NFV方案,其中OP指的是Open Platform,而NFV是Network Function Virtualization的缩写。此项目自2014年创立至今,已有9个发行版本,最新的是2019年1月份的9.0(Iruya)。

OPNFV项目更像是一个其他NFV架构相关项目集成、测试、优化的标准,整合了包括OpenStack在内的30多个项目,如OpenDaylight、KVM、Xen、Ceph和OVS等。OpenStack是OPNFV方案中最关键的项目,作为云计算基础资源的管理者,可谓是NFV栈上的中心环节。

OPNFV项目对于已有技术而言没有自己的代码库,但强调“上游优先”的原则,所以OPNFV社区已经为上游软件做了大量的贡献,比如OpenStack的众多项目。同时OPNFV社区积极地同其他标准组织(如ETSI)合作,共同推进NFV领域的业界标准。

同理,与ODL一样,OPNFV也是LF Networking里的一员,会员级别也是共享的。

3.Ceph

在云计算的整体架构里,SDS存储方案的制定是无法绕过的要点。目前,Ceph项目应该是开源分布式存储方案的主流选择,尤其是在和OpenStack配合部署的场景下更是如此。

Ceph诞生于学术项目,在原作者依此创业的公司被红帽公司于2014年收购之后,红帽公司成为Ceph项目的最主要贡献者。2015年,Ceph正式开始社区化管理,社区委员会吸收了8家成员公司,包括红帽、英特尔、SUSE、思科、Canonical、Fujitsu、CERN和SanDisk。

Ceph项目提供了全方位的分布式存储接口,涵盖了对象存储、块存储和文件系统3种云环境使用场景。在OpenStack的云环境中,由于分布式块存储方案往往集成了Ceph的RDB技术,因此在选用对象存储方案时,很多用户更倾向于同样使用Ceph的对象存储服务。因此,Ceph对于OpenStack原生的Swift的推广有所影响。

对于云计算客户生产环境的要求,纯社区版的Ceph在性能上还有一定的差距,所以国内外出现了很多基于Ceph社区版的商业定制化产品,这些产品从性能优化、稳定性、用户界面等方面都有大幅度的提升。

4.Docker

2013年,Docker项目应运而生,并在此后的发展过程中对计算机行业产生了深远的影响。当然,在Docker诞生之前,各种容器的相关基础技术已经成熟,比如,Linux内核中的cgroup和namespace已经被广为人知,而联合文件系统技术也已有多种选择,在各种UNIX/Linux系统中,类容器项目也早已被广泛使用,比如,最原始的UNIX中的chroot技术,Solaris中的Zones技术,还有FreeBSD中的jail技术,以及Linux系统中的OpenVZ和LXC等项目。但为什么Docker能够取得前所未有的巨大成功呢?除天时、地利、人和的原因以外,从技术层面来看,Docker真正抓住了用户的痛点,进而设计出了满足使用者期望的友好使用界面,尤其是对于软件开发者而言更是如此,所以Docker的流行首先发生在DevOps领域,然后逐渐波及其他领域。这里的友好界面不单单指提供给用户的命令行指令,也包括对容器镜像的管理策略,以及统一的在线仓库。

Docker镜像制作和发布的便利,也彻底改变了很多人对于软件发行方式的看法。无论是否把容器技术用于云计算环境的搭建,人们使用Docker作为自己软件产品的持续集成交付(CICD)方案的基础,或者使用Docker仓库作为发布渠道之一,都已日渐流行。所以,OpenStack的软件发行管理、部署方式,以及各个组件的开发调试,都可以从中受益。

与虚拟化技术相比,以Docker为代表的容器技术在实现应用隔离的同时,并没有带来性能的损失,这是一个很明显的技术优势。所以在注重计算性能的云计算场景下,部分用户更倾向于使用容器作为底层基础技术。但是,安全性却是容器技术的短板,毕竟运行于同一主机的不同容器实例共享一个内核,安全漏洞防不胜防。当然,很多安全隔离增进技术也层出不穷,可以从不同的角度来弥补可预期的安全隐患。

Docker作为一个创新性的项目,也激发了其他厂商的灵感。基于多种原因,多家厂商也在力推自己的相似技术,如CoreOS的rkt等。而Docker公司自己也因为商业化而有意严控Docker项目的设计和走向,有时就会造成一些业界的分歧和困惑。所以,在其他厂商强烈的期盼下,OCI(Open Container Initiative)项目和社区应运而生,并以开发中立的容器技术标准为目标。最终这些项目和标准的前景如何,还有待观察。

5.Mesos

Mesos是2009年在加州大学伯克利分校创立的项目,其目的是成为一个集群环境中进行资源隔离、共享、调度的统一平台技术,就如Mesos自己所强调的,它可以被看作分布式系统层面的操作系统。2015年,Mesosphere公司成立,其商业目标是基于Mesos技术,提供产品级质量的数据中心分布式操作系统,即DC/OS。

Mesos统管的资源包括计算(CPU)、内存、I/O和文件系统,并且能够做到既细粒度又十分高效的资源隔离与调度。作为一个分布式系统的管理平台,Mesos在容错性上也表现出色。Mesos双层调度设计和开放的计算框架接口,使得它可以方便地适配不同的分布式计算应用,典型的应用场景包括以Hadoop和Spark为代表的大数据处理平台,或者大规模的数据挖掘应用,或者方兴未艾的深度学习应用框架,等等。

在Docker出现之前,Mesos已经发展和流行多年,而Docker所带来的功能,正是Mesos所需要的,所以这两个项目相辅相成,从而放大了Mesos商业应用的前景,催生了一批国内外基于此技术的创业公司。

6.Kubernetes

Kubernetes简称K8s,是Google所创建的开源项目,是Google内部使用的Borg系统的开源版本,现在从属于CNCF(Cloud Native Computing Foundation)社区以保证其公立性。

Kubernetes从一开始就把自己定位为容器云环境的管理软件,从整体系统的设计上充分考虑了容器(主要指的是Docker)技术的特点,这也是它和其主要竞争对手Mesos的不同点之一。

Kubernetes在资源的定义上,以容器为基础元素,引入了“Pod”的概念,把运行相同应用的多个容器实例看作一个管理和调度单元(Pod)。而一个Pod需要运行在单个Minion之中,Minion可以被理解成一个主机(Host)。在集群中,有多个Minion被中央控制节点Master统一管理。而在Pod的基础上,Kubernetes又抽象出Service的概念,是多个Pod一起工作、提供服务的抽象。

总而言之,Kubernetes引入了非常多的新抽象概念,而其集群管理中所要解决的调度、高可用、滚动升级等问题,都是围绕这些来进行设计的。

Kubernetes是容器云计算环境的基石之一,被业界寄予厚望,因此产生的初创公司在国内外都比较常见。