两年前OpenStack基于NASA的Nova项目和Rackspace的Swift项目合并得以建立,而今OpenStack已经成为云计算领域的一颗新星,继2012年四月发布Essex版本之后,在今年九月底OpenStack第6版Folsom正式发布,本文简要分析了OpenStack Folsom的架构。
OpenStack架构OpenStack的架构示意图和目前已实现情况
蓝色是要 openstack概念上的架构图,红色是目前已实现的。
OpenStack的组件
OpenStack目前有7个核心组件:Compute(计算), Object Storage(对象存储),Identity(身份认证),Dashboard(仪表盘), Block Storage(块存储), Network(网络) 和 Image Service(镜像服务) 。下面将依次进行解释:
Object Storage(代号为“Swift”) 允许进行存储或者检索文件。目前已经有几好家公司开始提供基于Swift商业存储服务,这些公司包括KT,Rackspace公司(Swift项目的发源地)和Internap,而且很多大公司内部也使用Swift来存储数据。
Image Service(代号为“Glance”) 是一个虚拟机镜像的存储、查询和检索系统,它提供了一个虚拟磁盘映像的目录和存储库,这些磁盘映像常常广泛应用于OpenStack Compute之中,而且这种服务在技术上是属于可选的,任何规模的云都适用于它。
Compute(代号为“Nova”) 根据需求提供虚拟服务。Rackspace公司和HP提供商业计算服务正是建立在Nova之上,Mercado Libre和NASA(Nova项目的起源地)内部也是使用的Nova。
Dashboard(代号为“Horizon”) 为所有OpenStack的服务提供了一个模块化的web-based用户界面。使用这个Web GUI,可以在云上完成大多数的操作,如启动实例,分配IP地址,设置访问控制等。
Identity(代号为“Keystone”) 为所有的OpenStack服务提供身份验证和授权。它还提供了一个在特定OpenStack云服务上的服务目录。
Network(代号为“Quantum”) 在接口设备之间提供“网络连接作为一种服务”,而这些接口设备主要靠其他的OpenStack服务进行管理(最有可能是Nova)。该服务允许用户创建自己的网络,然后连接接口。Quantum提供一个可插拔的体系架构,它能支持很多流行的网络供应商和技术,Quantum是Folsom版本中的新项目。
Block Storage(代号为“Cinder”) 提供稳定的数据块存储服务。这个项目的很多代码最初是来自于Nova之中(就是the nova-volume service)。但是请注意,这是块存储(或者volumes),而不是类似于NFS或者CIFS文件系统,Cinder在Folsom中也是一个全新的项目。除了这些核心项目之外,也有一些“孵化”项目,未来可能会考虑列入到OpenStack的核心项目之中。
部署部署时,除了Dashboard必须部署在 nova-api server上以外,所有的其它进程都可以部署在不同的机器上。
OpenStack提供了基于Puppet 的自动部署工具。经过简单配置,就可以把各个组件部署到不同机器上。
OpenStack的镜像创建并没有纳入其职责列表。
你可以使用Ubuntu的已有image
(https://help.ubuntu.com/community/UEC/),或者直接重新自己通过KVM安装
http://cssoss.wordpress.com/2011/04/27/openstack-beginners-guide-for-ubuntu-11-04-image-management/
Flat Network Manager, Flat DHCP Network Manager, VLAN Network Manager.
VLAN Network Manager这种方式适合于共有云。
在私有云方面,IP充足,而且为了方便的互联互通,简单的Flat结构网络比较适合。
OpenStack支持Floating IPs,该特性可以方便的通过更改IP来Failover(容错转移)或者迁移。
CAASCluster as a Service: Managing multiple clusters for openstack clouds and other diverse frameworks
OpenStack无法独自满足集群计算的需求。目前有一种方案,把集群计算部署放到IaaS/PaaS 的下一层,我们称这种解决方案是 CaaS.
当前,在很多机构或者学校,部署了不同的集群解决方案,但是他们使用的频率并不是很高,因此资源利用率不高的情况下,造成了很大的浪费(比如电费,PC)。
设计目标:
o每个集群资源都可以动态分配
o系统隔离性好
o集群有足够的性能和容量
设计:
oIaaS/PaaS层与CaaS 隔离
oIaaS/PaaS层可联机扩展
oCaaS 层的镜像可通过容器有效被处理
oCaaS 层是通过 webservice提供服务
o可通过 VLAN 网络隔离
o自动安装
在这个解决方案中是通过LXC的方式来实现系统隔离
注:
LXC, LINUX的容器工具,他使用cgroup把系统资源分组进行隔离。
它不需要指令级模拟。因此相对其他虚拟化技术性能更高。
因为他必须以进程运行执行文件的方式,因此不支持windows.
在CaaS中构建 OpenStack
Layers
oCaaS(Physical) Physical layer. OS is installed on physical machines.
oCaaS(LXC) LXC layer. A Tagged VLAN isolates LXC containers.
oIaaS Cloud layer.OpenStack(nova).
过程:
1.在物理机上安装LXC
2. 配置VPN网络
3. 执行nova的自动部署工具
重复1~3,在不同的机器上重复的安装OpenStack的计算节点
运行时架构 系统内部交互图
Swift 也是独立组件,对系统运行没影响。
nova-api 是对外的接口。
Glance 是独立组件,供 nova-compute 下载镜像使用。
核心组件:
Scheduler:根据当前资源使用情况,决定计算节点分布到哪台计算节点上。目前实现很薄,目前已支持插件方式扩展,方便后面可能有采用更复杂算法。
Compute: 计算节点,使用虚拟化技术,host 虚拟机
Network: 网络管理,给虚拟机分配网络和管理,使外部PC 可以可直接访问
Volume: 给虚拟机分配额外持久化的存储
运行时系统间交互都是通过异步消息的方式和DB进行交互。
运行时图管理和使用是走两个通道的。管理必须要经由nova-api转发过去。而运行时,直接连接计算节点上的虚拟机即可。