1、总体架构
下图是OpenStack各Services之间的相互关系。
Nova:管理VM的生命周期
Neutron:为其它组件提供网络连接服务,负责创建和管理L2、L3网络。
Glance:管理VM镜像
Cinder:提供块存储服务
Keystone:为其它组件提供认证和权限管理服务
Ceilometer:提供监控告警和计量计费服务
Horizon:为用户提供一个基于Web的自服务Portal
Swift:提供对象存储服务
Trove:提供数据库服务
Ironic:提供裸金属管理服务
Heat:提供资源编排能力
Sahara:提供在OpenStack上构建大数据服务的能力
下图是各Services的组件及相互关系。
下图是部署Openstack所需要的硬件主机要求。
Controller Node
控制器节点为核心节点,运行身份服务,映像服务,计算的管理部分,网络的管理部分,各种网络代理和仪表板。它还包括支持服务,如SQL数据库,消息队列和NTP。
块存储,对象存储,编排和遥测服务的一部分为控制器节点的可选配置。
Compute Node
计算节点为核心节点,运行Nova的Compute部分。可以部署多个计算节点。
Block Storage Node
块存储节点为可选节点,包含块存储和共享文件系统服务为虚机提供磁盘。可以部署多个块存储节点。
Object Storage Node
对象存储节点为可选节点,包含对象存储服务用于存储帐户,容器和对象的磁盘。服务需要两个节点,可以部署多个对象存储节点。
下图为各服务组件部署总揽:
2、Nova
2.1、Nova功能
Nova是OpenStack最核心的Service,负责维护和管理云环境中的计算资源。主要有如下功能:
虚拟机生命周期管理
虚拟机资源动态调整
虚拟机迁移
主机管理
集群管理
密钥对管理
2.2、Nova架构
nova-api
接收和响应客户的 API 调用。
除了提供 OpenStack 自己的API,nova-api 还支持 Amazon EC2 API和特殊管理API。
nova-scheduler
虚机调度服务,负责决定在哪个计算节点上运行虚机
nova-compute
管理虚机的核心服务,通过调用 Hypervisor API 实现虚机生命周期管理。
Hypervisor
常用的 Hypervisor 有 KVM,Xen, VMWare,Hyper-V,Docker,LXC 等
nova-conductor
nova-compute 经常需要更新数据库,比如更新虚机的状态。
出于安全性和伸缩性的考虑,nova-compute 并不会直接访问数据库,而是将这个任务委托给 nova-conductor。
nova-console
用户可以通过多种方式访问虚机的控制台:
nova-novncproxy,基于 Web 浏览器的 VNC 访问
nova-spicehtml5proxy,基于 HTML5 浏览器的 SPICE 访问
nova-xvpnvncproxy,基于 Java 客户端的 VNC 访问
nova-consoleauth
负责对访问虚机控制台提供 Token 认证
nova-cert
提供 x509 证书支持
Database
Nova 会有一些数据,比如虚机构建时间和运行时状态信息,需要存放到数据库中,一般使用 MySQL。
Message Queue
Nova 包含众多的子服务,这些子服务之间需要相互协调和通信。为解耦各个子服务,Nova 通过 Message Queue 作为子服务的信息中转站。OpenStack 默认是用 RabbitMQ 作为 Message Queue。
2.3、Nova部署方案
在控制节点上部署nova-api、nova-scheduler、nova-console、Database、Message Queue、nova-cert、nova-conductor和nova-consoleauth组件;
在计算节点上部署 Hypervisor和nova-compute组件。
2.4、Nova各模块协同工作的例子:虚机创建
- 客户(可以是 OpenStack 最终用户,也可以是其他程序)向 API(nova-api)发送请求:“帮我创建一个虚机”
- API 对请求做一些必要处理后,向 Messaging(RabbitMQ)发送了一条消息:“让 Scheduler 创建一个虚机”
- Scheduler(nova-scheduler)从 Messaging 获取到 API 发给它的消息,然后执行调度算法,从若干计算节点中选出节点 A
- Scheduler 向 Messaging 发送了一条消息:“在计算节点 A 上创建这个虚机”
- 计算节点 A 的 Compute(nova-compute)从 Messaging 中获取到 Scheduler 发给它的消息,然后在本节点的 Hypervisor 上启动虚机。
- 在虚机创建的过程中,Compute 如果需要查询或更新数据库信息,会通过 Messaging 向 Conductor(nova-conductor)发送消息,Conductor 负责数据库访问。
3、Glance
3.1、Glance功能
Glance提供的是Image Service,具体功能如下:
- 提供REST API让用户能够查询和获取镜像及元数据
- 支持多种存储方式存储镜像,包括普通文件系统、Swift、Amazon S3等等
- 支持快照功能。例如,对虚拟机实例进行快照操作,以创建新的镜像
3.2、Glance架构
glance-api
glance-api是系统后台运行的服务进程。对外提供REST API,响应image查询、获取和存储等操作请求。如果请求与image metadata相关,它会把请求转发给glance-registry;如果请求与image自身存取相关,则把请求转发给该image的store backend。
glance-registry
glance-registry负责处理和存取 image 的 metadata,例如 image 的大小和类型。Glance支持的image格式包括:Raw、vhd、vmdk、VDI、ISO、QCOW2、aki、ari、ami。
database
Image的metadata保存在database中,默认使用MySQL。
Glance-Store
Glance自己并不存储image,真正的image存放在backend中。
Glance支持的backend包括:
- A directory on a local file system(默认配置)
- GridFS