本文将概述 OpenStack。您还不熟悉 OpenStack?OpenStack 是由许多行业领袖共同发起的一系列开源技术项目(参阅 参考资料)。它提供了一个操作平台,可以大规模地协调云。它的技术与虚拟机管理程序无关,并且提供了可以在标准硬件上配置虚拟机 (VM) 的软件。此外,它还提供了一个分布式对象存储和广泛的可选功能,包括网络控制器、身份验证管理器、管理仪表板和块存储。
由 Rackspace Cloud 和 National Aeronautics and Space Administration (NASA,美国国家航空和航天局)共同发起的 OpenStack 是目前世界上最流行的联合领导的基础架构即服务软件栈(参阅 参考资料)。自成立以来,OpenStack 已经获得业界广泛认可,目前,它的支持者数量已超过 100 个,其中包括许多业内最大的组织。它目前的白金会员包括 IBM、AT&T、Canonical、HP、Nebula、Rackspace、Red Hat 和 SUSE。
IBM 的参与
这些文章的许多读者都对 IBM 有着浓厚的兴趣,所以值得强调一下 OpenStack 对 IBM 公司有多么重要。IBM 于 2013 年 3 月公布了其开放云架构,并承诺其所有云产品均以 OpenStack 为基础,第一个产品是 IBM SmartCloud® Orchestrator。在此声明之前,IBM 一直积极投为其产品与 OpenStack 的集成进行投资,并向 OpenStack 社区作出了重要贡献,帮助软件满足企业和云服务提供商的要求。
IBM 选择 OpenStack 时不仅考虑到了它的架构,还考虑到它的开发社区、开放式治理,以及供应商和插件不断成长的生态系统。作为社区的一部分,IBM 已经提供了大量的直接贡献。此外,IBM 其他许多基于云的活动也间接地支持 OpenStack。
例如,IBM 的开放云架构采用了 OASIS 的 Topology and Orchestration Specification for Cloud Applications (TOSCA,面向云应用程序的拓扑和业务流程规范)标准。TOSCA 是由 IBM、SAP、HP、Rackspace 等许多公司共同开发的一项开放标准。为了最大限度地提高其影响,许多公司也在 OpenStack Heat 项目中协作实现了 OASIS TOSCA 模板描述的支持。
IBM 参与的另一个领域是它对 OpenDaylight 的白金赞助,OpenDaylight 是 Linux® Foundation 下的一个合作项目,致力于通过开放和透明的方式实现 Software-Defined Networking(SDN,软件定义网络)。它是目前世界上最大的开源 SDN 项目,并获得了广泛的业界认可。该项目的使命是创建一个基于行业标准的开放 SDN 平台。例如,OpenDaylight Project 的成员创建的 OpenFlow 控制器被规划为 OpenStack Networking 服务的一个插件。
IBM 的云计算产品提供一个开源的平台即服务平台,让开发人员可以创建依赖于托管服务的以云为中心的应用程序,包括 PostgreSQL、MySQL、Redis、Blob 存储、弹性缓存、采样位置服务、SMS 服务、简单的社交服务、RabbitMQ 和 MongoDB。
历史
从历史角度了解它的演变过程,这样做最容易理解 OpenStack 项目。
OpenStack 是由 Rackspace Cloud 和 NASA 在 2010 年发起的,集成了 NASA 的 Nebula 平台的代码与 Rackspace 的 Cloud Files 平台。第一个核心模块被称为 Compute and Object Storage(计算和对象存储),但更常见的是它们的项目名称,即 Nova 和 Swift。
OpenStack 最令人兴奋的事情之一是,它继续大幅、快速地成长,经常每年更新两个或两个以上的版本。因此,有关该技术的许多公开信息都是过时的,而且了解所有文件中所指的是哪个版本非常重要。
OpenStack 使用了 YYYY.N 表示法,基于发布的年份以及当时发布的主版本来指定其发布。例如,2011 (Bexar) 的第一次发布的版本号为 2011.1,而下一次发布(Cactus)则被标志为 2011.2。次要版本进一步扩展了点表示法(例如,2011.3.1)。
开发人员经常根据代号来指定发行版本,发行版是按字母顺序排列的(参见 表 1)。Austin 是第一个主发行版,其次是 Bexar、Cactus 和 Diablo。这些代号是通过 OpenStack 设计峰会上的民众投票选出的,一般使用峰会地点附近的地理实体名称。
表 1. OpenStack 发布
版本名称 版本编号 日期 Austin 2010.1 2010-10-21 Bexar 2011.1 2011-02-03 Cactus 2011.2 2011-04-15 Diablo 2011.3 2011-09-22 2011.3.1 2012-01-19 Essex 2012.1 2012-04-05 2012.1.1 2012-06-22 2012.1.2 2012-08-10 2012.1.3 2012-10-12 Folsom 2012.2 2012-09-27 2012.2.1 2012-11-29 2012.2.2 2012-12-13 2012.2.3 2013-01-31 2012.2.4 2013-04-11 Grizzly 2013.1 2013-04-04 2013.1.1 2013-05-09 2013.1.2 2013-06-06 2013.1.3 2013-08-08 Havana 2013-10-17
每一个版本都纳入了新的功能,添加了文档,并以增量的方式提高部署的简易性,但路线图也增加了组成该计划的项目的数量。
如上所述,Austin 版本仅包括两个核心项目:OpenStack Compute (Nova) 和 OpenStack Object Storage (Swift)。Bexar 在此基础上补充了 Image Service (Glance),它在许多方面与计算和存储有交集。镜像代表存储在 OpenStack 上的模板虚拟机,用于按需快速启动计算实例。
Essex 发布增加了两个核心项目。OpenStack Identity (Keystone) 隔离之前由 Nova 处理的用户管理元素,而 OpenStack Dashboard (Horizon) 的引入则标准化和简化了用户界面(UI),使之同时适用于每个租户和 OpenStack 管理人员。
Folsom 使得版本数量又增加了两个。该团队决定将网络组件(以前包含在 Nova 中)拆分到一个单独的项目中,最初称其为 Quantum,后来将其改名为 Neutron。与此同时,一个单独的团队开发了一个 OpenStack Block Storage 组件,其品牌是 Cinder。
模块
截至 Grizzly 版本,OpenStack 含七个核心项目:
Compute (Nova) Networking (Neutron/Quantum) Identity Management (Keystone) Object Storage (Swift) Block Storage (Cinder) Image Service (Glance) User Interface Dashboard (Horizon)
OpenStack Compute (Nova)
OpenStack Compute (Nova) 控制云计算架构(基础架构服务的核心组件)。它是用 Python 编写的,创建一个抽象层,让 CPU、内存、网络适配器和硬盘驱动器等商品服务器资源实现虚拟化,并具有提高利用率和自动化的功能。
它的实时 VM 管理具有启动、调整大小、挂起、停止和重新引导的功能,这是通过集成一组受支持的虚拟机管理程序来实现的。还有一个机制可以在计算节点上缓存 VM 镜像,以实现更快的配置。在运行镜像时,可以通过应用程序编程接口(API)以编程方式存储和管理文件。
OpenStack Networking (Neutron/Quantum)
Networking (Neutron) 之前被称为 Quantum,它提供了管理局域网的能力,具有适用于虚拟局域网(VLAN)、动态主机配置协议和 Internet Protocol 版本 6 的一些功能。用户可以定义网络、子网和路由器,以配置其内部拓扑,然后向这些网络分配 IP 地址和 VLAN。浮动 IP 地址允许用户向 VM 分配(和再分配)固定的外部 IP 地址。
OpenStack Identity Management (Keystone)
OpenStack Identity Management (Keystone) 管理用户目录以及用户可以访问的 OpenStack 服务的目录。其目的是跨所有 OpenStack 组件暴露一个中央身份验证机制。Keystone 本身没有提供身份验证,它可以集成其他各种目录服务,如 Pluggable Authentication Module、Lightweight Directory Access Protocol (LDAP) 或 OAuth。通过这些插件,它能够实现多种形式的身份验证,包括简单的用户名密码凭据,以及复杂的多因子系统。
OpenStack Identity 使得管理员配置的集中式策略能够跨用户和系统得到应用。他们可以创建项目和用户并将其分配给管理域,定义基于角色的资源权限,并与其他目录(如 LDAP)集成。目录包含由单一注册表中所有已部署服务组成的一个列表。用户和工具可以检索一个服务列表,它们能够以编程方式发出请求或通过登录到仪表板来访问这些服务,它们还可以用这些服务来创建资源,并将这些资源分配给它们的帐户。
OpenStack Object Storage (Swift)
OpenStack Object Storage (Swift) 以 Rackspace Cloud Files 产品为基础,对于向外扩展的存储来说,它是理想的冗余存储系统。OpenStack 确保了在其池中的所有设备上的数据复制和分发,让用户可以利用商用硬盘和服务器,而不是更昂贵的设备。如果某个组件发生故障,那么 OpenStack 可以将来自其他活动系统的内容补充给新的集群成员。该架构还支持横向扩展,因为它很容易根据需要利用其他服务器来扩展存储集群。
Swift 是一个分布式存储系统,主要用于静态数据,比如 VM 镜像、备份和存档。该软件将文件和其他对象写入可能分布在一个或多个数据中心内的多个服务器上的一组磁盘驱动器,在整个集群内确保数据复制和完整性。
OpenStack Block Storage (Cinder)
OpenStack Block Storage (Cinder) 管理计算实例所使用的块级存储。块存储非常适用于有严格性能约束的场景,比如数据库和文件系统。
与 Cinder 配合使用的最常见存储是 Linux 服务器存储,但也有一些面向其他平台的插件,其中包括 Ceph、NetApp、Nexenta 和 SolidFire。云用户可通过仪表板管理他们的存储需求。该系统提供了用于创建块设备、附加块设备到服务器和从服务器分离块设备的接口。另外,也可以通过使用快照功能来备份 Cinder 卷。
OpenStack Image Service (Glance)
OpenStack Image Service (Glance) 为 VM 镜像(尤其是为启动 VM 实例中所使用的系统磁盘)提供了支持。除了发现、注册和激活服务之外,它还有快照和备份功能。
Glance 镜像可以充当模板,快速并且一致地部署新的服务器。API 服务器暴露了 Representational State Transfer(REST,具象状态传输)接口,用户可以利用它来列出并获取分配给一组可扩展后端存储(包括 OpenStack Object Storage)的虚拟磁盘镜像。
用户可采用多种格式为服务提供私有和公共镜像,这些格式包括 VHD(Microsoft(® Hyper-V®)、VDI(VirtualBox)、VMDK(VMware)、qcow2(Qemu/基于内核的虚拟机),以及 Open Virtualization Format。其他一些功能包括注册新的虚拟磁盘镜像、查询已公开可用的磁盘镜像的信息,以及流式传输虚拟磁盘镜像等。
依赖关系
典型的 OpenStack 实现将会集成大多数(如果不是所有)项目。
图 1. OpenStack 架构
三个元素将会与系统中的所有组件进行交互。Horizon 是图形用户界面,管理员可以很容易地使用它来管理所有项目。Keystone 处理授权用户的管理,Neutron 定义提供组件之间连接的网络。
Nova 被认为是 OpenStack 的核心,负责处理工作负载的流程。它的计算实例通常需要进行某种形式的持久存储,它可以是基于块的(Cinder)或基于对象的(Swift)。Nova 还需要一个镜像来启动一个实例。Glance 将会处理这个请求,它可以有选择地使用 Swift 作为其存储后端。
OpenStack 架构一直努力使每个项目尽可能的独立,这使得用户可以选择只部署一个功能子集,并将它与提供类似或互补功能的其他系统和技术相集成。然而,这种独立性不应掩盖这样一个事实:全功能的私有云很可能需要使用几乎所有功能才可以正常运作,而且各元素需要被紧密地集成。
路线图
在理解 OpenStack 时,需要牢记该系统仍在发展中,这一点很重要。用户有可能以 OpenStack 目前的形式来实现它,但还有大量其他项目也将启动。例如,Havana 发布了包含两个许多人期待已久的一个新项目:OpenStack Metering (Ceilometer) 和 OpenStack Orchestration (Heat)。
Ceilometer 是一种集中收集计量和监测数据的机制。它为各计费系统提供单一联系点,以获得整套 OpenStack 组件的使用信息。它支持一组可扩展的计数器,它们都是可追溯和可审计的。
Heat 是面向 OpenStack 的基于模板的协调引擎。它允许开发人员定义应用程序的部署模式,通过 RESTful API 协调复合云应用程序。该模板可以适应大多数 OpenStack 资源类型(例如,Nova 实例和浮动 IP 地址范围、Cinder 卷、Keystone 用户)。该模板还有一些高级功能,包括高可用性、自动扩展和嵌套栈。