1.Openstack架构
1.1 什么是Openstack?
Openstack是一个开源的云计算平台项目,用起来很简单很方便可扩展性良好,在世界范围内都被广泛使用。
1.2 Openstack服务
1.2.1 Openstack关键服务
Openstack系统包含如下几个关键性的服务,安装的时候可以根据自身需求选择性安装:
名称 | 描述 | 项目代号 |
---|---|---|
Compute | 计算服务 | Nova |
Identity | 身份认证服务 | Keystone |
Networking | 网络服务 | Neutron |
Image | 镜像管理服务 | Glance |
Block Storage | 块存储服务 | Cinder |
Object Storage | 对象存储服务 | Swift |
File share Service | 文件共享存储服务 | Manila |
Telemetry | 监控服务 | Ceilometer |
Orchestration | 编排服务 | Heat |
Database | 数据库 | Trove |
1.2.2 概念架构图
下图是Openstack各个服务之间的配合关系
1.2.3 逻辑架构图
为了便于管理Openstack,我们应该熟悉Openstack各个服务之间的逻辑关系。前面1.2.2中所示的概念架构图中,包含了许多独立的Services。Services具有如下特性:
Service 特性 |
---|
1.各个服务之间采用共同的身份认证服务进行身份确认,各个Services之间通信采用API的方式进行通信。 |
2.每一个Service都是由多个进程组成的,并且至少都包含一个API进程(用来监听处理转发API请求)。 |
3.同一个Service之间的各个进程间通信采用AMQP message broker(基于AMQP的一种消息验证、传输、路由的架构模式),Service的状态信息存储在数据库当中。配置Openstack时可以选用多种消息队列和数据库,如:RabbitMQ, MySQL, MariaDB, and SQLite等。 |
4.用户可以使用多种方式调用各种service,如:Horizon Dashboard、命令行工具(Openstack client)、curl请求api、多种sdk(目前官方推荐有python、go、ruby的sdk) |
2.服务简介
2.1 认证管理服务Keystone
Keystone为整个Openstack提供身份认证功能(包括Openstack中租户的身份验证和授权),不同Openstack的服务之间通信都需要先经过Keystone服务提供的认证。
2.2 三大存储服务的区别
2.3 镜像注册服务
Glance服务提供了镜像和元数据的注册服务。Openstack可以通过镜像来启动虚拟机。镜像支持很多格式,如:KVM/Qemu,XEN,VMware,Docker等。Glance默认使用文件目录来存储镜像,但是在大规模生产环境中,可以使用其他后端存储方案(如NFS、Swift、Cinder等)。
2.4 计算服务Nova
nova服务本质上是一个分布式的应用程序,用来在不同组件之间进行调度编排以执行任务,其组成如下:
- 1.
nova-api
:该组件接受并响应终端用户的API请求。例如将和镜像查询有关的请求转发至Glance。 - 2.
nova-compute
:这个组件本质上是一个守护进程,通过虚拟化引起的API接口(如XenServer的XenAPI,Libvirt的KVM、VMware的VMwareAPI)创建和终止虚拟机实例。 - 3.
nova-network
:从队列中获取网络任务来进行操作,不过该服务可以使用Neutron代替。 - 4.
nova-scheduler
:从队列中获取VM实例请求,并确定它应该在哪个计算机节点运行。 - 5.
nova-conductor
:向计算节点提供数据库访问。
2.5 网络服务Neutron
Neutron为Openstack服务管理的接口设备提供真正的网络即服务功能。比如创建子网,虚拟机关联IP等。
2.6 监控服务Telemetry
Telemetry在openstack中提供监控资源使用情况的服务。他负责收集与资源相关的数据。
2.7 创建虚拟机过程简介
创建虚拟机的过程就是各个服务之间通过消息队列总线提交和提取RPC调用进行交互从而协同作战的过程,其具体的过程如下:
- 1.调用身份认证服务进行身份验证,成功则生成后续调用的令牌。
- 2.访问镜像服务并获取模板基础镜像
- 3.通过网络服务API确定可用网络
- 4.通过计算节点调度程序选择Hypervisor节点
- 5.调用块存储服务API为实例分配卷
- 6.通过计算服务API调用在Hypervisor节点启动实例
- 7.调用网络服务API为实例分配网络