用 CloudStack 配置和管理一个简单云

用 CloudStack 配置和管理一个简单云 CloudStack 的配置、部署与管理,以及 API 的使用。

简介: CloudStack 是 Ctrix 公司在 IaaS 市场上的主打产品,它提供了对云计算资源的灵活部署与管理能力。今年上半年 Ctrix 将其源代码贡献给 Apache 后,CloudStack 成为一个开源项目。这类开源项目的文档虽历经完善,但作为一个云计算领域的新手开始尝试它的安装与部署时,总还是遇到或多或少的挑战。这便是本文目的所在,即忠实记录并尝试总结这个过程中的一些问题,与大家分享。

CloudStack 在 IaaS 市场的背景和主要竞争对手

随着亚马逊在公有云和 VMware 在私有云方面的成功,各类企业纷纷在云时代迈出了自己的步伐,这些企业希望在自身的计算资源(主机,网络,存储)虚拟化过程中能够获得强大功能的同时,又维持相对低廉的成本。这正是 IaaS 供应商们发展的动力。

IaaS 提供了对资源的自动化管理能力。例如用界面、脚本甚至 Web Service API 实现对大量硬件、大量虚拟机的生命周期管理。IaaS 产品面对的是大规模、可伸缩的云环境,这是与用手工管理有限资源的方式完全不同的一类系统。

CloudStack 前身为 cloud.com 的商业化产品,它在 2011 年被 Ctrix 以超过二亿美金价格收购,随后又在今年被捐献给 Apache 基金会。这项产品开源的举措,引起了市场对 IaaS 发展路线的一些争议,例如它与另外一个开源产品 OpenStack 的竞争与合作关系?

OpenStack 是由 Rackspace 和 NASA 主导开发的一个 IaaS,它拥有更大的用户群,包括 HP,IBM,Dell 和 RedHat 等大公司。表 1 列出了 CloudStack 与 OpenStack 的一些对比。


表 1.CloudStack 与 OpenStack 的对比

 CloudStackOpenStack
LicenseApache 2.0 授权协议,可免费用于商业模式Apache 2.0 授权协议,可免费用于商业模式
支持的 HypervisorsKVM,XEN,Oracle VM,vSphere 和 Bare MetalKVM,XEN,(有限支持 Hyper-V,ESX,PowerVM)
支持的 Networking ModelOpenFlow,VLAN 和 Flat networksVLAN,Flat,Flat DHCP
支持的StorageNFS,Cluster LVM,Rados Block Device(Ceph),Local StorageiSCSI,Ceph,NFS,Local Storage 和 Swift(对象存储)
客户不到 60 家,包括诺基亚,Zynga,日本电报电话公司,塔塔,阿尔卡特160 家左右,包括了 NASA,Rackspace,HP,红帽,Piston
开发语言Java 为主Python 为主
兼容亚马逊 EC2 API

附:比较数据截止至2012年中,对应的软件版本为CloudStack 3和OpenStack Essex。

可以认为,在市场上 CloudStack 和 OpenStack 这两个 IaaS 平台存在不同的功能、客户和发展路线,前者作为曾经的商业软件,已经被证明为可以可靠的用于生产系统;而后者,虽则目前缺少广泛的真实用户,却拥有更多的大公司支持。这是它们显著的不同。

尽管如此,但从技术而言,它们背后的源代码贡献者并不是一定不同的,经常有来自同一家公司的开发人员为这两个开源项目提交代码。从这个角度说,两个平台在某一天的合并也不会令人惊奇。

还存在其它众多的 IaaS 产品(例如 Eucalyptus,Nebula 等),可以在文末的 参考资源中找到一些介绍。总体而言,这些产品当中 CloudStack 和 OpenStack 是特性最为相近、也是最引起争论的,参考资源中的一篇文章提及到了最近发生的一个有趣争论。

CloudStack 架构图

CloudStack 采用了典型的分层结构:客户端、核心引擎、以及资源层。它面向各类型的客户提供了不同的访问方式:Web Console、Command Shell 和 Web Service API。通过它们,用户可以管理使用在其底层的计算资源(又分为主机、网络和存储),完成诸如在主机上分配虚拟机,配给虚拟磁盘等功能。见图 1。


图 1. 系统架构图
用 CloudStack 配置和管理一个简单云

虚拟机如果使用 Xen 和 KVM,需要安装 CloudStack Agent 来支持其与管理服务器的交互。而管理服务器和 Xen Server 交互则是靠 XAPI,和 vCenter、ESX 交互靠 HTTP。

当部署 CloudStack 时,需要了解它的层次结构和存储管理,见图 2。


图 2. 部署图
用 CloudStack 配置和管理一个简单云

Zone:Zone 对应于现实中的一个数据中心,它是 CloudStack 中最大的一个单元。

Pod:Pod 对应着一个机架。同一个 pod 中的机器在同一个子网(网段)中。

Cluster:Cluster 是多个主机组成的一个集群。同一个 cluster 中的主机有相同的硬件,相同的 Hypervisor,和共用同样的存储。同一个 cluster 中的虚拟机,可以实现无中断服务地从一个主机迁移到另外一个上。

Host:Host 就是运行虚拟机(VM)的主机。

即从包含关系上来说,一个 zone 包含多个 pod,一个 pod 包含多个 cluster,一个 cluster 包含多个 host。

CloudStack 中存在两种存储:

Primary storage:一级存储与 cluster 关联,它为该 cluster 中的主机的全部虚拟机提供磁盘卷。一个 cluster 至少有一个一级存储,且在部署时位置要临近主机以提供高性能。

Secondary storage:二级存储与 zone 关联,它存储模板文件,ISO 镜像和磁盘卷快照。

  • 模板:可以启动虚拟机的操作系统镜像,也包括了诸如已安装应用的其余配置信息。
  • ISO 镜像:包含操作系统数据或启动媒质的磁盘镜像。
  • 磁盘卷快照:虚拟机数据的已储存副本,能用于数据恢复或者创建新模板。

CloudStack 的详细介绍:请点这里
CloudStack 的下载地址:请点这里

相关阅读

相关推荐