OpenStack 是一个云平台管理的项目,它不是一个软件。这个项目由几个主要的组件组合起来完成一些具体的工作。想要了解 OpenStack,第一步我们可以观察它的概念图:
[图示:OpenStack 架构概念图]
针对上图的翻译 + 解释:
[图示:OpenStack 功能服务说明]
上图主要回答了 OpenStack 为我们提供什么服务,它的功能有哪些。当然概念图只是为我们提供了一个概念,而正如一开始介绍的那样——OpenStack 是一个管理的项目,它不是一个软件,这个项目由几个主要的组件组合起来完成一些具体的工作。搞清楚由哪些组件完成这些功能,我们需要借助下图,下图为 Grizzly 的架构图,简述了套件之间是如何运作的:
[图示:OpenStack Grizzly 架构图]
OpenStack 的 Grizzly 版共有 7 个不同功能套件,分别是:
- 运算套件 Nova:OpenStack 中的核心,负责计算和实施一些策略,很多组件都要通过它进行调度(Nova 中的 nova-api 负责所有 API 的调度,初始化大多数部署,执行部分策略)。
- 对象储存套件 Swift:分布式对象存储,功能类似于 Hadoop,可是跟 Hadoop 又有很大不同;在 OpenStack 中,Swift 用于存储创建虚拟机的镜像文件。
- 区块储存套件 Cinder:分配块存储,给虚拟机增加一个块存储设备(有点类似于移动硬盘)。
- 网络套件 Quantum:通过 API 来管理的网络架构系统。
- 身份识别套件 Keystone:身份认证功能。
- 镜像管理套件 Glance:对镜像文件进行管理。
- 仪表板套件 Horizon:就是一个 UI。
以上是针对 OpenStack 组件的一些通俗解释。网上流传着好几个不同版本的架构图,几种架构图描述的方式都相差很大,第一眼看上去甚至都不是一个东西,面对这种情况,我们可以假设他们都是对的,然后找出他们之间的联系,这样我们也可以加深对 OpenStack 的理解。
现在看一下 OpenStack 的逻辑架构:
[图示:OpenStack 逻辑架构图]
- 终端用户通过和 nova-api 对话来与 OpenStack Compute 交互。
- OpenStack Compute 守护进程之间通过队列(行为)和数据库(信息)来交换信息,以执行 API 请求。(交换信息的方式我们以后会讲)
- OpenStack Glance 基本上是独立的基础架构,OpenStack Compute 通过 Glance API 来和它交互。
其各个组件的情况如下:
- nova-api 守护进程是 OpenStack Compute 的中心。它为所有 API 查询(OpenStack API 或 EC2 API)提供端点,初始化绝大多数部署活动(比如运行实例),以及实施一些策略(绝大多数的配额检查)。因此很多相对于 OpenStack 独立的基础架构是跟 nova-api 交换信息的,而不是向其他进程那样使用队列和数据库。
- nova-compute 进程主要是一个创建和终止虚拟机实例的 Worker 守护进程。基本原理:从队列中接收行为,然后在更新数据库的状态时,执行一系列的系统命令执行它们。
- nova-volume 管理映射到计算机实例的卷的创建、附加和取消。这些卷可以来自很多提供商,比如,ISCSI 和 AoE。
- Nova-network worker 守护进程类似于 nova-compute 和 nova-volume。它从队列中接收网络任务,然后执行任务以操控网络,比如创建 bridging interfaces 或改变 iptables rules。
- Queue 提供中心 hub,为守护进程传递消息。当前用 RabbitMQ 实现。但是理论上能是 python amqplib 支持的任何 AMQP 消息队列。
- SQL database 存储云基础架构中的绝大多数编译时和运行时状态。当前广泛使用的数据库是 sqlite3(仅适合测试和开发工作),MySQL 和 PostgreSQL。
- OpenStack Glance,是一个单独的项目,它是一个 compute 架构中可选的部分,分为三个部分:
- glance-api: glance-api 接受 API 调用;
- glance-registry: glance-registry 负责存储和检索镜像的元数据,实际的 Image Blob 存储在 Image Store 中;
- the image store: Image Store 可以是多种不同的 Object Store,包括 OpenStack Object Storage (Swift);
- 最后,user dashboard 是另一个可选的项目。OpenStack Dashboard 提供了一个 OpenStack Compute 界面来给应用开发者和 devops staff 类似 API 的功能。当前它是作为 Django web Application 来实现的。当然,也有其他可用的 Web 前端。(说白了就是个 UI)


