使用 OpenStack 实现云计算和存储

jopen 12年前

Infrastructure as a Service (IaaS) 云平台种类繁多,例如像 Nebula 和 Eucalyptus 这样为人熟知的解决方案。而此领域的一个新来者已展示了其不俗的增长,不仅包括用户数量的增长,还包括支持公司的数量的大量增长。在本文中,我们将了解这 个开源平台 OpenStack,发现它是否真的是一种开源云操作系统。

云和公共 Infrastructure as a Service (IaaS) 背后的理念并不算很新。实际上,Amazon Elastic Compute Cloud (Amazon EC2) 到今年已经有六岁了。有所改变的是,现在已经主要将 IaaS 作为一种私有云计算,以满足具有敏感数据的企业计算。私有云计算将 IaaS 的理念应用到私有基础架构。虽然这么做缺少公共云(现收现付服务)的经济优势,但它充分利用了云计算的核心原理,使企业数据中心内有了可伸缩和弹性的基础 架构。

让我们先来快速介绍一下 IaaS 及其基础架构,然后再深入研究这个领先的开源解决方案:OpenStack。

IaaS 和云基础架构

云计算架构常常都着重于虚拟化后按需向用户公开的一组公共资源。这些资源包括功能各异的计算资源、持久的存储资源,以及将这些资源组合在一起并将它们有条件地公开到互联网的可配置联网资源。

IaaS 实现的基础架构(参见 图 1)就遵循了这样的模型,并添加了其他元素,比如计量(为计费的目的来说明使用的情况)。物理的基础架构则通过由各种技术(包括系统管理程序(用于平台虚拟化)、虚拟网络和存储)实现的虚拟层提取自应用程序和用户。


图 1. IaaS 的高级视图

使用 OpenStack 实现云计算和存储

虽然 OpenStack 是如今最为流行的一种可用的开源云解决方案,但它当然不是最早的一个。实际上,OpenStack 是在公共和私有领域开发的两种旧解决方案的综合。

由位于圣巴巴拉市的加州大学的一个研究项目开发的 Elastic Utility Computing Architecture for Linking Your Programs To Useful Systems (Eucalyptus) 是更早的一种开源 IaaS 解决方案。其他的解决方案还包括 OpenNebula(一种开源的云计算工具箱)和 Nimbus(另一种面向 IaaS 云的开源工具箱)。OpenStack 集成了美国国家航空和航天局 (NASA) 的部分 Nebula 平台和 Rackspace Cloud Files 项目(云存储)。

云计算的新来者:OpenStack

OpenStack 是 IaaS 空间的一个新来者,在 2010 年末首次发布。尽管此解决方案成熟度不够,而且面市还不到两年时间,但是 OpenStack 现已成为了使用最为广泛的云堆栈之一。OpenStack 不是单一的解决方案,而是一个不断成长的开源解决方案套件(包括核心以及新孵化的项目),并共同形成了一个强大成熟的 IaaS 堆栈。

如 图 2 所示,OpenStack 构建自几个核心技术(多于这里所展示的,但这里所展示的代表关键方面)。左侧是 Horizon 仪表盘,显示了一个可为用户和管理员用来管理 OpenStack 服务的用户界面。Nova 提供了一个可伸缩的计算平台,用来支持大量服务器和虚拟机(VM;以一种系统管理程序不可知的方式)的配置和管理。Swift 实现一个具有内部冗余、可大量伸缩的对象存储系统。在底部的是 Quantum 和 Melange,二者实现了网络连接即服务 (network connectivity as a service)。最后,Glance 项目为虚拟磁盘映象实现了一个存储库(映像即服务 (image as a service))。


图 2. OpenStack 解决方案的核心和附加组件
使用 OpenStack 实现云计算和存储

如图 2 所示,OpenStack 是一个项目集合,整体提供了一个完整的 IaaS 解决方案。表 1 展示了这些项目及其起作用的方面。


表 1. OpenStack 项目和组件
项目 组件 描述
Horizon Dashboard 用户和管理员仪表盘
Nova Compute/block device 虚拟服务器和卷
Glance Image service VM 磁盘映像
Swift Storage as a Service 对象存储
Quantum/Melange Networks 安全虚拟网络

其他重要的方面还包括 Keystone,它实现了对企业私有云十分关键的身份识别服务(对计算服务器、Glance 内的映像以及 Swift 对象存储区的访问方面的管理)。

OpenStack 架构

OpenStack 用三个核心开源项目(如 图 2 所示)来表示:Nova(计算)、Swift(对象存储)和 Glance(VM 存储库)。Nova(或 OpenStack Compute),提供了跨服务器网络的 VM 实例的管理。它的应用程序编程接口 (API) 为试图无知物理硬件和系统管理程序提供了一种计算编排方法。请注意,Nova 不仅提供了用于管理的 OpenStack API,还为那些习惯该界面的人提供了一种 Amazon EC2-兼容 API。Nova 支持组织所使用的专有系统管理程序,但更为重要的是,它支持像 Xen 和 Kernel Virtual Machine (KVM) 这样的系统管理程序,也支持像 Linux® Container 这样的操作系统虚拟化。出于开发的目的,还可以使用 QEMU 这样的仿真解决方案。

Swift(或 OpenStack Object Storage)项目可通过配置了普通硬盘的标准服务器提供可伸缩的冗余存储集群。Swift 并不代表一个文件系统,它实现的是一个更为传统的对象存储系统,可用于主要是静态数据(一种关键的使用模型是静态 VM 映像)的长期存储。Swift 不具备集中式控制器,它能改善整体的可伸缩性。它在内部管理跨集群的复制(无需独立磁盘冗余阵列)来提高可靠性。

Glance(或 OpenStack Image Service)为 Nova 能够使用(此选项存储在 Swift 内)的虚拟磁盘映像提供了一个存储库。Glance 提供了一个 API 来注册磁盘映像,此外还提供了通过一个简单的 Representational State Transfer (REST) 界面的发现和交付。Glance 很大程度上对虚拟磁盘映像格式不可知,支持各种标准,包括 VDI (VirtualBox)、VHD (Microsoft® Hyper-V®)、QCOW2 (QEMU/KVM)、VMDK/OVF (VMware) 以及原始格式。Glance 还提供了磁盘映像校验和、版本控制(和其他元数据)以及虚拟磁盘验证和审计/调试日志。

此核心 OpenStack 项目(Nova、Swift 和 Glance)是使用 Python 开发的,它们都可以在 Apache License 下使用。

演示 OpenStack

因为有大量独立项目需要安装并配置以便能够相互协作,安装 OpenStack 可能会非常耗时(参见 参考资料 获取完整安装的更多信息)。但是对于好奇的读者来说,有其他一些选项可以极大地简化 OpenStack 的启动和运行。

阅读过我之前文章的读者都知道我是一个 VM 映像迷,热衷于基于 Linux 软件的简化使用。VM 允许您轻松地创建一个新实例来尝试或演示软件。此 VM 是一个自包含的 Linux 实例(有时称作虚拟设备),可以用必要的软件预安装并预配置以供使用。以这种方式配置的软件可极大地简化其使用,让您得以试验那些否则很难掌握或掌握起来很耗时的软件。参阅 参考资料 获取满足您特定的硬件和基础操作系统需求的安装选项。

对于本次展示,我决定使用最新的 Ubuntu 发布版 (12.04) 和 OpenStack Essex 发布版。Essex 的 ISO 版本可以使用 uksysadmin 安装程序进行安装(参见 参考资料)。 在 Ubuntu Precise 上成功安装了 OpenStack Essex 后,使用一个外部的 Web 浏览器能够登录 OpenStack 仪表盘。图 3 显示了具有两种容器格式的来宾(Guest) VM 映像的 System Panel Images 选项卡界面。


图 3. 可用来宾映像的 OpenStack Dashboard 视图
使用 OpenStack 实现云计算和存储

此映像可用来创建一个演示实例,正如图 4 所示,创建已经开始。这个实例现在就可以使用了。


图 4. 计算实例的 OpenStack Dashboard 视图
使用 OpenStack 实现云计算和存储

现在,有了运行于 OpenStack 之上的计算映像,我可以通过一个简单的 Secure Shell (SSH) 会话使用其 IP 地址 (172.16.1.1) 对其进行访问(参见清单 1,用户输入以粗体显示)。


清单 1. 通过 SSH 访问 OpenStack 计算实例
      $ ssh -i Downloads/demo.pem ubuntu@172.16.1.1 The authenticity of host '172.16.1.1 (172.16.1.1)' can't be established.  RSA key fingerprint is df:0e:d0:32:f8:6d:74:49:ea:60:99:82:f1:07:5d:3b.  Are you sure you want to continue connecting (yes/no)? yes  Warning: Permanently added '172.16.1.1' (RSA) to the list of known hosts.  Welcome to Ubuntu 12.04 LTS (GNU/Linux 3.2.0-23-virtual x86_64)     * Documentation:  https://help.ubuntu.com/     System information disabled due to load higher than 1.0    0 packages can be updated.  0 updates are security updates.    Get cloud support with Ubuntu Advantage Cloud Guest    http://www.ubuntu.com/business/services/cloud    The programs included with the Ubuntu system are free software;  the exact distribution terms for each program are described in the  individual files in /usr/share/doc/*/copyright.    Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by  applicable law.      To run a command as administrator (user "root"), use "sudo <command>".  See "man sudo_root" for details.    ubuntu@demo1 :~$   ubuntu@demo1 :~$ hostname demo1  ubuntu@demo1 :~$ ps   PID TTY          TIME CMD    835 pts/0    00:00:06 bash    948 pts/0    00:00:00 ps  ubuntu@demo1 :~$ 

所有这些层都运行后,可能很难想象所发生的事情。图 5 展示了整个堆栈,希望能帮助解释清楚。在这个演示中,运行 Mac OS X 的 Mac 提供了基础平台。VirtualBox 运行于 Mac OS X 之上,提供了 OpenStack 的执行平台(运行于 Ubuntu Linux 上)。注意,VirtualBox 是一个类型-2 的虚拟化管理程序。在 OpenStack Linux 层,QEMU 被用作一个来宾系统管理程序,从硬件角度来看,这很理想,但缺乏真正的产品设置所需的性能。


图 5. 在普通硬件上运行的 OpenStack 演示堆栈
使用 OpenStack 实现云计算和存储

没有了对嵌套虚拟化(在另一个系统管理程序之上有效运行一个系统管理程序)的支持,我依赖于 QEMU 作为我在 OpenStack 上运行的来宾系统管理程序。这让我能够在一个来宾系统管理程序上运行一个来宾 VM,该来宾 VM 在一个类型-2 的虚拟化管理程序上运行。虽然这种设置可能会很慢,但它充分展示了一个在普通计算机系统上运行的 IaaS 堆栈。注意,如今某些 AMD 处理器可提供一种有效的支持嵌套虚拟化的方式。

虽然使用 QEMU 对于性能而言并不理想,但它与 KVM (Linux as a hypervisor) 极为兼容,因而很容易在两个系统管理程序之间迁移(除了在这两者之前兼容的 VM 映像)。在这种情况下,让 QEMU 之所以理想的原因是它可以在未提供虚拟化支持的硬件上执行。注意,我的平台在这个例子中是具有虚拟化功能的,但是由于我在 VirtualBox(一个凭借自身力量的虚拟化管理程序)上运行,嵌套虚拟化的缺乏让我不得不使用一个不依赖虚拟化扩展的来宾系统管理程序。不管在哪种 情况下,我都使用 libvirt 来管理 VM(启动、停止、监视等),所以,在一个有虚拟化功能的硬件上迁移到 KVM 简单至极,只需在 OpenStack 配置文件内进行两行修改即可。

使用 OpenStack 的其他方式

即便您没有自己的集群,也可采用其他选项来享受 OpenStack 带来的益处。OpenStack 的创作者之一 Rackspace,就提供了它寄予厚望的云的 Linux。Rackspace 的 OpenStack 云平台提供了 OpenStack 在公共云基础架构的灵活性和可伸缩性方面的优势。

为了简化 OpenStack 面向私有云的安装,很多公司都关注于简化 OpenStack 在私有集群内的使用。比如,Piston Cloud Computing 公司就提供了 Piston Enterprise OS 这种基于 OpenStack 的私有云操作系统。Mirantis 则向企业提供了专业的构建 OpenStack 基础架构的服务。

OpenStack 的前景

OpenStack 将继续集成新的功能,提高了 IaaS 解决方案的定义。OpenStack 旗下有许多其他项目可用,但还有很多仍在孵化进程中。Keystone 项目提供的身份识别服务统一了跨 OpenStack 组件的身份验证,同时又集成了现有的身份验证系统。还存在目的各异的社区项目,比如负载均衡即服务 (Atlas-LB);云安装和维护系统 (Crowbar);云可配置和可伸缩的关系数据库 (RedDwarf);面向云编排的基于REST 的 API (Heat);以及涵盖了监视、计费等的云管理工具 (Clanavi)。在 OpenStack 项目内外还有无数其他项目正在开发当中,只要 OpenStack 的构建势头不减,这个列表每天都在增长。

OpenStack 并非没有竞争,随着旧项目的不断发展,新的项目也会出现。例如,CloudStack(在 2009 年首次发布)具有几个产品安装,但缺乏 OpenStack 所具备的开源贡献者支持的级别。

结束语

继 Linux 发展成为能符合所有使用模型的通用操作系统之后,OpenStack 也正在向代表云操作系统的方向前进。与管理有限集的核心和本地资源不同,OpenStack 管理的是包含计算和存储资源的庞大的服务器网络,以及将它们连接在一起的虚拟网络胶。

自它在 2010 年末首次发布以来 (Austin),OpenStack 项目已经又发布了四个版本,最新的一个版本在 2012 年 4 月发布 (Essex)。对于每次发布,OpenStack 都继续推动新的、改进了的功能,这也提高了其他 IaaS 解决方案的竞争门槛。如今,在 Apache 旗下,OpenStack 成为云堆栈内的标准实在不足为奇。


转自:IBM developerWorks