使用 OpenStack 实现云计算
OpenStack是什么,是一个开源的云操作系统。OpenStack 的前景OpenStack 将继续集成新的功能,提高了 IaaS 解决方案的定义。OpenStack 旗下有许多其他项目可用,但还有很多仍在孵化进程中。Keystone 项目提供的身份识别服务统一了跨 OpenStack 组件的身份验证,同时又集成了现有的身份验证系统。还存在目的各异的社区项目,比如负载均衡即服务 (Atlas-LB);云安装和维护系统 (Crowbar);云可配置和可伸缩的关系数据库 (RedDwarf);面向云编排的基于REST 的 API (Heat);以及涵盖了监视、计费等的云管理工具 (Clanavi)。在 OpenStack 项目内外还有无数其他项目正在开发当中,只要 OpenStack 的构建势头不减,这个列表每天都在增长。
下面给大家一下iaas.
IaaS 和云基础架构云计算架构常常都着重于虚拟化后按需向用户公开的一组公共资源。这些资源包括功能各异的计算资源、持久的存储资源,以及将这些资源组合在一起并将它们有条件地公开到互联网的可配置联网资源。
IaaS 实现的基础架构(参见 图 1)就遵循了这样的模型,并添加了其他元素,比如计量(为计费的目的来说明使用的情况)。物理的基础架构则通过由各种技术(包括系统管理程序(用于平台虚拟化)、虚拟网络和存储)实现的虚拟层提取自应用程序和用户。
图 1. IaaS 的高级视图
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 解决方案的核心和附加组件
如图 2 所示,OpenStack 是一个项目集合,整体提供了一个完整的 IaaS 解决方案。表 1 展示了这些项目及其起作用的方面。
表 1. OpenStack 项目和组件
项目组件描述
HorizonDashboard用户和管理员仪表盘
NovaCompute/block device虚拟服务器和卷
GlanceImage serviceVM 磁盘映像
SwiftStorage as a Service对象存储
Quantum/MelangeNetworks安全虚拟网络
其他重要的方面还包括 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 允许您轻松地创建一个新实例来尝试或演示软件。此 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 视图
此映像可用来创建一个演示实例,正如图 4 所示,创建已经开始。这个实例现在就可以使用了。
图 4. 计算实例的 OpenStack Dashboard 视图
现在,有了运行于 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 演示堆栈
没有了对嵌套虚拟化(在另一个系统管理程序之上有效运行一个系统管理程序)的支持,我依赖于 QEMU 作为我在 OpenStack 上运行的来宾系统管理程序。这让我能够在一个来宾系统管理程序上运行一个来宾 VM,该来宾 VM 在一个类型-2 的虚拟化管理程序上运行。虽然这种设置可能会很慢,但它充分展示了一个在普通计算机系统上运行的 IaaS 堆栈。注意,如今某些 AMD 处理器可提供一种有效的支持嵌套虚拟化的方式。
虽然使用 QEMU 对于性能而言并不理想,但它与 KVM (Linux as a hypervisor) 极为兼容,因而很容易在两个系统管理程序之间迁移(除了在这两者之前兼容的 VM 映像)。在这种情况下,让 QEMU 之所以理想的原因是它可以在未提供虚拟化支持的硬件上执行。注意,我的平台在这个例子中是具有虚拟化功能的,但是由于我在 VirtualBox(一个凭借自身力量的虚拟化管理程序)上运行,嵌套虚拟化的缺乏让我不得不使用一个不依赖虚拟化扩展的来宾系统管理程序。不管在哪种情况下,我都使用 libvirt 来管理 VM(启动、停止、监视等),所以,在一个有虚拟化功能的硬件上迁移到 KVM 简单至极,只需在 OpenStack 配置文件内进行两行修改即可。
页:
[1]