作者:Posion丶丨 | 来源:互联网 | 2014-05-27 20:14
Openstack是一系列开源技术组合在一起提供了一个可扩展性很强的云操作系统,我们可以把它想象成一个软件可以把你的硬件资源想亚马逊的AmazonWebServices提供给大家使用,它主要有三部分组成Swift:提供对象/块存储,它大概类似于Rackspace的CloudFiles和
Openstack是一系列开源技术组合在一起提供了一个可扩展性很强的云操作系统,我们可以把它想象成一个软件可以把你的硬件资源想亚马逊的Amazon
Web Services提供给大家使用,它主要有三部分组成
Swift:提供对象/块存储,它大概类似于Rackspace的Cloud Files 和亚马逊的S3(Simple
Storage Service)
Glance:为Nova提供发现,存储和检索虚机镜像的功能
Nova:提供按需分配的虚拟机。它类似于Rackspaces的cloud servers和亚马逊的Amazon Elastic
Compute Cloud(EC2)
不过以上三个只是Openstack的核心projects,由于openstack是开放而且不断进化的,以后还会有更多的项目融入进去,例如:web界面和消息队列服务。
下面我们先深入研究一下其概念上的架构并看一下Nova是openstack中的位置。
云提供者的概念架构
现在想象一下我们如果打算建立一个自己的IaaS云给客户,我们需要提供哪些基本的特性
1.允许应用程序用户注册我们的云计算服务,查看你的使用情况及账单(基本的客户关系管理功能)
2.允许开发/运维人员创建和保存他们的应用程序镜像(基本的构建时功能)
3.允许开发/运维人员启动 监测 终止虚拟机实例(基本的运行时功能)
4.允许云操作者配置和操作基础架构云
尽管还有很多其他的功能需要提供(尤其是遵循像eTOM这样的完整行业架构),但这四个特性将是IaaS的核心特性
现在我们可以根据四个特性画出概念性的架构
在这里面我们根据与云端的交互和使用的功能不一样设定了四个角色(开发人员 运维人员 应用程序拥有者 云端管理人员)
就像传统的应用程序框架一样,表示层在这主要负责与用户交互。在这一层会提供给非开发人员的图形化界面的web门户网站以及开发人员的API接口用于二次开发。其中可能还会包括一些更高级的特性,例如:负载均衡
控制台代理 安全和命名服务
逻辑层将会提供云服务的智能控制功能,主要有orchestration(负责任务的工作流管理),scheduling(任务到资源的调度管理),policy(配额等服务)image
registry(镜像实例的元数据管理)logging(事件 计费管理)
这里讲需要功能到架构的集成。假设我们大多数提供的服务有已经有一些用户身份和账单系统了,那么我们将需要集成到云机构用
任何复杂的环境,我们都需要一个管理层去执行管理的操作功能。这将包括一些可供管理员用户访问的API和监控功能。
最后,由于其是云计算,我们需要一些实实在在的计算资源 网络资源 存储资源去提供给用户
有了上面对Openstack的整体把握,我们接下来可以回过头来看一看Nova的逻辑架构。
Openstack Nova的逻辑架构
这里有很多OpenStack Nova的逻辑组件,但我们主要看一下用户自定义的python编写的两种守护进程
WSGI应用程序去接收和中转API请求(nova-api, glance-api 等等)
Worker守护进程去执行orchestration任务(nova-compute, nova-network,
nova-schedule等等)
尽管这样,有两个重要部分的逻辑架构既不是用户自定义也不是基于Python编程,而是消息队列和数据库。这两个组件通过消息传递和信息共享方便了复杂的异步orchestration任,将这些联系起来我们可以得到以下架构图:
他虽然比较复杂,但是信息量不是很大,我们可以讲上面的图总结为以下三点:
终端用户(开发/运维人员和其他OpenStack组件)与nova-api进行交互
OpenStack Nova守护进程之间通过消息队列(动作)和数据库(信息)交互
OpenStack Glance是一个完全和OpenStack Nova不一样的架构,他们之间用过Glance
API进行交互
现在我们已经了解了OpenStack的架构,也对OpenStack
Nova的架构有所了解了,我们可以很容易的把Nova的组件对应到OpenStack的框架中去
由此可以看到,OpenStack Nova提供了Openstack最基本的功能