OpenStack组件架构及部分核心组件解析

1 OpenStack组件架构简介

OpenStack组件架构及部分核心组件解析_第1张图片
上图 VM是虚拟机,围绕 VM 的那些长方形代表 OpenStack 不同的模块(OpenStack 叫服务,后面都用服务这个术语),下面来分别介绍。

  1. **Nova:**管理 VM 的生命周期,是 OpenStack 中最核心的服务;
  2. **Neutron:**为 OpenStack 提供网络连接服务,负责创建和管理L2、L3 网络,为 VM 提供虚拟网络和物理网络连接;
    **- Glance:**管理 VM 的启动镜像,Nova 创建 VM 时将使用 Glance 提供的镜像;
    **- Cinder:**为 VM 提供块存储服务。Cinder 提供的每一个 Volume 在 VM 看来就是一块虚拟硬盘,一般用作数据盘;
    **- Swift:**提供对象存储服务。VM 可以通过 RESTful API 存放对象数据。作为可选的方案,Glance 可以将镜像存放在 Swift 中;Cinder 也可以将 Volume 备份到 Swift 中;
    **- Keystone:**为 OpenStack 的各种服务提供认证和权限管理服务。简单的说,OpenStack 上的每一个操作都必须通过Keystone 的审核;
    **- Ceilometer:**提供 OpenStac k监控和计量服务,为报警、统计或计费提供数据;
    **- Horizon:**为 OpenStack用户提供一个 Web 的自服务 Portal;

2 核心组件内部架构

2.1Nova 组件内部架构

OpenStack组件架构及部分核心组件解析_第2张图片
- API-nova API
1、负责接收和响应客户的 API 调用,如:OpenStack API,Amazon EC2 API;
- Compute Core
1、Nova scheduler:虚拟机调度服务;
2、Nova compute :调用 Hypervisor API 实现虚机生命周期管理;
3、Hypervisor:虚机管理最底层,常用的 Hypervisor 有 KVM,Xen,VMWare 等;
4、Nova conductor:访问数据库,更新数据库状态;
-Console interface
1、Nova-console:访问虚拟机控制台;
2、Nova-consoleauth:请求token认证;
3、Nova-cert:提供x509证书支持;
-Database
1、通常使用mysql;
- Message Queue
1、Nova各个子服务之间通信;
2、默认是用 RabbitMQ
OpenStack组件架构及部分核心组件解析_第3张图片
Cinder 包含如下几个组件:

  1. cinder-api 接收 API 请求,调用 cinder-volume 执行操作。
  2. cinder-volume 管理 volume的服务,与 volume provider 协调工作,管理 volume 的生命周期。运行 cinder-volume服务的节点被称作为存储节点。
  3. cinder-scheduler scheduler 通过调度算法选择最合适的存储节点创建volume。
  4. volume provider 数据的存储设备,为 volume 提供物理存储空间。
  5. cinder-volume支持多种 volume provider,每种 volume provider 通过自己的 driver 与cinder-volume协调工作。
  6. Message Queue Cinder各个子服务通过消息队列实现进程间通信和相互协作。因为有了消息队列,子服务之间实现了解耦,这种松散的结构也是分布式系统的重要特征。
  7. Database Cinder 有一些数据需要存放到数据库中,一般使用MySQL。数据库是安装在控制节点上的,比如在我们的实验环境中,可以访问名称为“cinder”的数据库。

2.2 组件间如何协同工作

下面以Nova为例(其余组件类似)介绍组件内部如何协同工作的:
OpenStack组件架构及部分核心组件解析_第4张图片

  1. 客户发送请求:“创建一个虚机”;
  2. API 向 Messaging发送“创建一个虚机”的消息;
  3. Scheduler从 Messaging获取该消息后执行调度算法,选出节点 A;
  4. Scheduler 向 Messaging 发送一条消息:“在计算节点 A 上创建这个虚机”
  5. 节点 A 从 Messaging 中获取 Scheduler 的消息,然后在本节点的 Hypervisor 上启动虚机;
  6. 在创建过程中,Compute 需要查询或更新数据库信息,会通过 Messaging 向 Conductor发送消息,Conductor负责数据库访问。

你可能感兴趣的:(云计算,云管平台)