OpenStack架构组成
OpenStack作为开源、可扩展、富有弹性的云操作系统,其设计规则如下:
- 按照不同的功能和通用性划分不同项目,拆分子系统
按照功能和通用性划分不同服务,将一个整理功能,拆分为各个子服务/子功能,方便管理、排障。并且服务之间相互隔离,只通过API作为统一交互入口相互对接/通讯
- 按照逻辑计划、规范子系统之间的通信
API之间进行交互会有特定/通用的方式对不同组件之间的通讯方式进行规范
各个子功能模块遵循一些规范进行通讯(API、 HTTP)
- 通过分层设计整个系统架构
分层思想的连个维度:
以架构为单位,三层
1、全局组件 2、辅助组件 3、核心组件
以单个核心服务/组件进行分层:
1、API 2、子功能模块 3、其他(rabbitmq)
组件和组件通讯,内部子功能模块都可以通过消息队列/代理(rabbitmq)进行通讯
消息代理:作为组件和组件通讯/交互/数据传输的载体
- 不同的功能子系统间提供统一的API接口
各组件之间通过统一的API接口进行交互/通讯/数据传输/调用
OpenStack概念架构
云平台用户在经过Keystone服务认证授权后,通过Horizon或者Reset API模式创建虚拟机服务,创建过程中包括利用Nova服务创建虚拟机实例,虚拟机实例采用Glance提供镜像服务,然后使用Neutron为新建的虚拟机分配IP地址,并将其纳入虚拟网络中,之后在通过Cinder创建的卷为虚拟机挂载存储块,整个过程都在Ceilometer模块资源的监控下,Cinder产生的卷(Volume)和Glance提供的镜像(Image) 可以通过Swift的对象存储机制进行保存。
以架构维度来看的话:
以架构为单位
1.全局组件:
Keystone:提供认证
Ceilometer:监控、统计费用
Horizon:管理实例功能
2.辅助组件:
提供了一些必要的管理和资源换服务
Sahara、heat:大数据方向,用于数据的编排和处理,精细化的管理
ironic(裸金属、裸机):提供一个可以使用的操作系统 ,管理基础硬件资源
Trove:管理数据库,存储实例的数据和信息,和各个组件的数据、信息、日志
3、核心组件
为实例(虚拟机)服务
Neutron:网络服务
Glance:镜像服务
Swift:对象存储服务
Cinder:块存储服务
Nova:收集资源,提供给虚拟机,让Nova支持虚拟机的创建
OpenStack逻辑架构
- (全局维度)OpenStack包括若个称为OpenStack服务的独立组件。所有服务均可通过一个公共身份服务进行身份验证。除了那些需要管理权限的命令,每个服务之间均可通过公共API进行交互。(或者http方式。比如OpenStack一键装机中Apache承载API。Apache提供了一个展示web页面的方式,并且表示是以HTTP进行通讯)
安装功能划分不同的服务,并且服务相互独立,只会通过API相互对接。
组件内部的服务都有一个身份。每个核心组件都会有一个对应的用户进行管理
各个服务组件通过API进行对接
- (核心组件维度)每个OpenStack服务又由若干组件组成。包含多个进程。所有服务至少有一一个API进程,用于侦听API请求,对这些请求进行预处理,并将它们传送到该服务的其他组件。除了认证服务,实际工作都是由具体的进程完成的
各服务之间对接方式是API,是HTTP进行通讯,可以有Rabbitmq进行通讯,也可以直接通过网络通讯
restful请求:
外部想请求内部的请求类型。是一种规范。例如:用户和企业之间,用户想要访问企业的页面需要借助网络,而网络之中的通讯,需要有一些标准化的规则
restful就是一种规范
规范请求的方式(格式),会进行过滤(filter) ,会进行合法性的验证,然后会对请求的结果进行反馈,比如forbi idenAPI (预处理)
1、向keystone进行申请认证请求的合法性和权限
2、下发任务,会根据请求的功能需求,将不同的任务交给不同的组件来完成。统一收集结果和需要的资源,整合在一起,相应请求
- 至于一个服务的进程之间通信,则使用AMQP消息代理。服务的状态存储在数据库中
单个服务内部的子功能模块之间的通讯——>AMQP
这幅图展示的内容:
1、首先展示了内部核心组件、辅助组件、全局组件
2、各核心辅助组件之间是怎么对接的
通过API,通讯方式可以为消息代理
3、展示了各组件中,一部分核心的功能模块
4、展示OpenStack原生架构(基础)
第三方功能模块:
1、可以服务原生架构的组件可以更完善更合理的运行
2、增加一个功能(原生架构或者不完善的—-特定场景)
OpenStack组件通信关系
OpenStack内部根据功能可以划分不同的通讯方式
-
基于AMQP协议的通信
用于每个项目内部各个组件之间的通信。
-
基于SQL的通信
用于各个项目内部的通信。
-
基于HTTP协议进行通信
通过各项目的API建立的通信关系,API都是RESTful Web API。
OpenStack中API是同一个很核心的概念
restful:是一种交互/通讯的规范
web:有Apache承载API,Apache提供了一个web展示页面
API:组件和组件对接的技术(点到点)
URL—>对接—>URL
endpoint—>—endpoint(端点)
-
通过Native API实现通信
OpenStack各组件和第三方软硬件之间的通信。
OpenStack和外出组件的通讯方式
OpenStack物理架构
物理架构中共有4中类型,按照职能划分:控制节点(把控全局)、网络节点(提供OpenStack内部组件/节点通讯)、计算节点(功能创建)、存储节点(存储服务)
控制节点内用于分发任务,主要管理其他节点。控制节点可以跑实例资源(处理具体任务)
支持的服务包含:MySQL、Rabbitmq
基础服务包含:keystone、Glance、Nova、Neutron(集中化管理网络服务)、Horizon
扩展服务包含(为实例的更好运行提供服务):Cinder、Swift、Trove、Heat、Ceilometer
网络类型包含:管理网络。可以通过网卡划分职能的方式管理其他节点
网络节点内基础服务包含:Neutron(实现网络服务)
网络接口类型包含:管理网络(接收控制节点任务调度)、数据网络(数据库服务)、外部网络(外部第三方插件)
计算节点内基础服务包含:Nova Hypervisor、网络插件代理(OpenStack中通过插件和代理来实现网络二层、三层的具体功能)
扩展服务包含:Ceilometer Agent
网络接口类型包含:管理网络、数据网络
存储节点内基础服务包含:Cinder、Swift
网络接口类型包含:管理网络、数据网络
网络节点(Network Node)
联网管理
ML2插件
Linux网络工具
Linux Bridge代理
DHCP代理
元数据代理(Metadata Agent)
自服务网络(Self-service networks )
联网管理
ML2插件
Linux网络工具
Linux Bridge代理
三层代理(L3 Agent)
DHCP代理
者网络(Provider networks):
联网管理
ML2插件
Linux网络工具
Linux Bridge代理
DHCP代理
元数据代理(Metadata Agent)
自服务网络(Self-service networks )
联网管理
ML2插件
Linux网络工具
Linux Bridge代理
三层代理(L3 Agent)
DHCP代理
元数据代理( Metadata Agent)
转自:
https://blog.csdn.net/weixin_50345054/article/details/113856675