一、OpenStack简介
1. OpenStack概述
- NASA(美国国家航空航天局)和Rackspace共同发起
- 以Apache许可证授权的自由软件和开放源代码项目
- 为公有云及私有云的建设与管理提供软件的开源项目
- 覆盖了网络、虚拟化、操作系统、服务器等各个方面
2. OpenStack服务
2.1 8个核心服务
都是为虚拟机提供服务的
- Commpute
- NetWork
- Identity
- Identity
- Identity
- Image Server
- Block Storage
- Object Storage
- Telemetry
2.2 8个核心组件
- Nova
- Neutron
- Keystone
- Horizon
- GIance
- Cinder
- Swift
- Ceilometer
2.3 组件的详细解释
2.3.1 Nova(核心组件)(负责生命周期管理)
- OpenStack获取底层虚拟化技术,就是转化过来的虚拟资源是通过一个统一的入口来接收的,这个入口就是Nova,也就是说Nova管理的是所有的虚拟化资源,可以把虚拟化资源拿过来给虚拟机使用,从而让虚拟机正常运行
也就是说它调用的对象就是支撑实例运行的资源基础,所有它可以管理实例的生命周期 - Hypervisor(虚拟机管理器),它是将物理资源转化为虚拟化资源供给虚拟机使用,这边实例创建后资源不是通过hypervisor或其他虚拟化技术来供给虚拟机的,而是由Nova作为统一调用,在由Nova输送给虚拟机,所以才会对Hypervisor进行屏蔽,其中Nova还可以通过多种不同的驱动,来支持多种不同的虚拟化技术,来达到横向扩展,达到一个通用性
2.3.2 Neutron(负责虚拟网络的管理)
- 就相当于连接内外网,可以让实例与外界相同
- 对一部分的资源的一个租令,从而自已定义分配资源,与其他租户之间互不影响,从而更方便管理
2.3.3 Keystone(全局组件)
- 主要用于OpenStack中的所有组件之间相互交互、对接的认证机制,可以对用户等进行认证与授权
2.3.4 Horizon(Ui页面)
- 给使用者提供一个友好的管理界面,在控制台选择好自已需求的规格,然后进行创建控制台会把我们的需求,传递给OpenStack底层从而对我们的需求进行创建
2.3.5 Glance(镜像模板)
- 提供虚拟机镜像模板的注册与管理,如搭建一个负载均衡架构,封装为一个镜像,这个镜像就相当于一个负载均衡架构模板,只需要下载这个镜像,就可以供给多个用户使用,然后用这个镜像去创建虚拟机,创建出来的就是负载均衡架构的操作系统
2.3.6 Cinder(块存储)
- 负责为运行实例提供持久的块存储设备,可以方便的扩展,按需付费,因为它不只是为一个用户提供服务是为多个用户提供,所以它支持的是多种后端存储类型
2.3.7 Swift(对象存储)
- 为OpenStack提供基于云的弹性存储,支持集群无单点故障,它其实就是键值对的存储,存储的资源就是一些静态资源,它不能再对象存储中的内部直接修改源文件,而是需要下载下来才可以修改,然后在推送上去已做更新
2.3.8 Ceilometer(度量,监控)
- 用于管理用户对资源的租期管理,为用户提供记账途径
2.4 Keystone工作流程
二、OpenStack优势
控制性
- 完全开源的平台,提供API接口,方便与第三方技术集成
兼容性
- OpenStack兼容其他公有云,方便用户进行数据迁移
可扩展性
- 模块化设计,可以通过横向扩展,增加节点、添加资源
灵活性
- 根据自已的需要建立相应基础设施、增加集群规模
行业标准
- 众多IT领军企业已经加入到OpenStack项目
三、OpenStack架构规范
在学习openstack部署与运维之前,需要熟悉它的架构和运行原理,OpenStack作为开源、可扩展、富有弹性云操作系统,其设计基本原则如果下:
- 按照不同的功能和通用性划分不同项目,拆分子系统
- 按照逻辑计划、规范子系统之间的通信
- 通过分层设计整个系统架构
- 不同的功能子系统间提供统一的API接口
四、OpenStack架构概念
4.1 架构图
核心是为虚拟机,所有的组件都是围绕着虚拟机提供服务的
4.2 解析
4.2.1 红框中的为全局组件:
Keystone:为所有服务模块提供认证与授权
Ceilometer:度量、监控所有数据资源
Horizon:UI平台管理,提供一个Web管理页面,为底层交互
4.2.2 绿框中为外部(辅助)组件(主要提供一些必要的管理和资源服务):
Ironic:提供裸金属环境(没有操作系统的计算机硬件,简称裸机)
Trove:提供管理数据库服务(控制关系型和非关系型数据库)
heat,sahara:提供对数据管理和编排
4.2.3 蓝框中为内部核心组件(主要是维持虚拟机正常运作的一些组件):
Glance:提供镜像服务
Neutron:提供网络服务
Swift:提供对象存储资源
Cinder:提供块存储资源(提供持久化存储,同时也会备份一份,从而解决了单点故障的问题)
Nova:管理实例的生命周期,并负责管理调用上面的四个资源给虚拟机使用
4.2.4 具体流程
云平台用户在经过Keystone服务认证授权后,
通过Horizon或者Rest API模式创建虚拟机服务,
创建过程中包括利用Nova服务创建虚拟机实例,
虚拟机实例采用Glance提供镜像服务,
然后使用Neutron为新建的虚拟机分配IP地址,并将其纳入虚拟网络中,
之后在通过Cinder创建的卷为虚拟机挂载存储块,
整个过程都在Ceilometer模块资源的监控下,
Cinder产生的卷(Volume)和Glance提供的镜像(Image),可以通过Swift的对象存储机制进行保存
五、OpenStack逻辑架构
5.1 架构图
5.2 理解思路
-
1.先看OpenStack原生架构中的核心组件、其他组件、全局组件
-
2.对接:各服务器之间的对接方式是API,使用HTTP进行通讯
通讯:可以用Rabbitmq、也可以直接通过网络进行通讯 -
3.单个模块内部的子功能模块之间的通讯是使用的AMQP
5.2.1 为什么要使用AMQP消息代理?
1.因为以服务本身拥有的消息传递和消息交互的通讯方式,进行通讯与数据传输会存在严重的瓶颈问题
2.openstack本身架构非常的复杂,庞大,处理的数据量非常多时,消息传递速率,效率及合理性会有一个严格的划分,需要使用一个队列(AMQP消息代理)去作为中间的承载,是靠rabbitmq去实现的AMQP,而这样的一个服务叫rabbitmq(消息队列)
5.3 解析
5.3.1 OpenStack三层服务组件
首先以逻辑架构来说,Openstack包含三层服务组件
5.3.1.1 红色的全局组件
红色的全局组件:keystone(身份验证),ceilometer(计量)和horizon(可视化界面UI)三部分组成;
5.3.1.2 蓝色的核心组件
蓝色的核心组件:glance(镜像)、Neutron(网络)、Cinder(块存储)、Swift(对象存储)和Nova(计算服务)五部分组成;
5.3.1.3 橙色的辅助组件
橙色的辅助组件:Ironic(裸金属)、trove(数据库)和heat以及sahara(数据编排)组成;
5.3.2 各组件之间对接、通讯方式
1.各组件之间通过统一的API进行对接;
2.各组件之间通过消息代理(RabbitMQ)进行通讯;
3.各组件之间通讯通过restful进行了一个格式的规范,以及合法的验证。
5.3.3 各组件内部分层
1.API作为内外交互的接口,同时也对其它组件发过来的信息做一个预处理(1、统一发往keystone进行验证 2、API根据不同的任务将需求发往后端的子功能模块);
2.实际上API是不处理请求的,请求都是各个组件后端的子功能模块来处理的;
3.各子功能模块之间的相互通讯借助于消息队列;
4.子功能模块处理完的请求再次反馈到API,再通过API对接出去;