OpenStack架构及核心组件

一 OpenStack架构

OpenStack作为开源,可扩展,富有弹性的云操作系统,其设计基本原则

按照不同的功能和通用性划分不同的项目,拆分子系统
a.按照不同的功能划分不同的服务,并且服务之间相互隔离,只通过API作为统一交互入口相互对接
b.按照功能和通用性划分不同服务,将一个整理功能划分为各个子服务/子功能,方便管理,排障
按照逻辑计划,规范子系统之间的通信
a.API之间进行交互会有特定/通用的方式对不同组件之间的通讯方式进行规范
b.性质:隔离,各个子功能模块之间只会通过一个公共的API进行交互/通讯
c.各个子功能模块遵循一些规范进行通信(API HTTP)

通过分层设计整个系统架构
分层(以架构为单位),三层:

a.全局组件
b.辅助组件
c.核心组件

以单个核心服务/组件进行分层:

a.API(只通过API进行内外部交互,内部:核心组件;外部:openstack相对应核心组件内部而言为外部)
b.子功能模块(单个核心服务,参照物:维度)
c.其它(每个核心组件各自特色,个性化组件)

以上之间都可以通过消息队列/代理(rabbitmq)进行通讯。
作为组件与组件之间通讯/交互/数据传输的载体以解决单个服务的通讯方式瓶颈

API(预处理)

1.向keystone进行申请认证请求的合法性和权限
2.下发任务,会根据请求的功能需求,将不同的任务交给不同的组件来完成,统一收集结果和需要提供的资源,整合在一起,响应请求。

3.不同的功能子系统间提供统一的API接口
各组件之间通过统一的API接口进行交互/通讯/数据传输/调用

OpenStack概念架构图

在这里插入图片描述

以架构维度来看的话
分为:全局组件,核心组件,辅助组件

全局组件:
Keystone:身份认证服务,提供认证,管理全局权限,认证和授权的组件
Ceilometer:计量服务,监控,监控整个集群架构的状态
Horizon:控制面板服务,可以使用openstack架构中的所有功能

核心组件:
维持openstack虚拟机/示例正常运行的组件
Nova:管理实例的生命周期,并负责调取以上四个资源给虚拟机使用
Glance:提供镜像服务
Neutron:提供网络服务
Swift:提供对象存储资源
Cinder:提供块存储资源
由nova将资源收集整合,统一提供给虚拟机
如果要添加其他一些功能,关联,调用一些功能组件的API或者把功能对应的API暴露出来后,供给其它组件去对接,调用(openstack的灵活性)
辅助组件:
Ironic:裸金属(裸机)提供基本的硬件资源
Trove:数据库,管理数据库的服务(关系,非关系);存储openstack实例数据,各组件之间调用,使用情况;日志文件
Heat/Sahara:对数据进行分析,编排,处理,精细化管理

在这里插入图片描述

OpenStack逻辑架构

在这里插入图片描述

1.首先展示了内部核心组件,辅助组件,全局组件
2.各核心/辅助组件组件是怎么对接的(API对接,通讯方式可以为消息代理)
3.展示了各组件中,一部分核心的功能模块
4.展示OpenStack原生架构(基础)

第三方功能模块
1.辅助原生架构的组件可以更完善更合理的运行
2.增加一些功能(原生架构没有或者不完善的--特定场景)

解析

 全局,架构层面
OpenStack包括若干个称为OpenStack服务的独立组件,所有服务均可通过一个公共身份服务进行身份验证,除了那些需要管理权限的命令,每个服务之间均可通过公共API进行交互

1.以架构的维度来理解:
OpenStack分为多个核心组件,核心组件之间只/仅通过一个公共的API进行对接/通讯。同时每个核心组件,都由一个对立的用户进行管理(会对用户授权)

2.使用http进行交互
httpd承载API
HTTPD提供一个展示web页面的方式,并且表示是以HTTP进行通讯

在这里插入图片描述

单个服务,核心组件(维度)
每个OpenStack服务又由若干组件组成。包含多个进程。所有服务至少有一个API进程,用于侦听API请求,对这些请求进行预处理,并将它们传送到该服务的其它组件。除了认证服务,实际工作都是由具体的进程完成的

restful请求:外部想要访问/查询/调用,内部的资源的请求
API负责接收请求,对请求进行预处理,并且把它们发给后端对应的功能模块,它本身不负责具体过程处理

预处理:
1.API向keystone进行权限认证
2.根据请求需求把请求分发给对应的功能模块进行处理 

在这里插入图片描述

至于一个服务的进程之间通信,则使用AMQP消息代理,服务的状态存储在数据库中

以核心组件维度来理解
1.API
2.子功能模块
3.其它(rabbitmq 消息队列)

使用AMQP消息代理原因

因为以服务本身拥有的消息传递和消息交互的通讯方式,进行通讯与数据传输会存在严重的瓶颈问题
openstack本身架构非常的复杂,庞大,处理的数据量非常多时,消息传递速率,效率及合理性会有一个严格的划分,需要使用一个队列(AMQP消息代理)去作为中间的承载,而这样的一个服务叫rabbitmq(消息队列)

OpenStack组件通信关系

openstack内部根据功能可以划分不同的通讯方式

1.基于AMQP协议的通信

  用于每个项目内部各个组件之间的通信

2.基于SQL的通信

  用于各个项目内部的通信

3.基于HTTP协议进行通信

  通过各项目的API建立的通信关系,API都是RESTful Web API

解析:

RESTful:标准化通讯协议
httpd->提供了一个可视化的web页面(http承载API)->API->API会有自己的具体位置,而这个具体的位置可以是URL(域名,网址)
http通过域名与域名,IP地址+端口进行通信

openstack中的API是一个很核心的概念
restful:是一种交互/通讯的规范
web:由Apache承载API,Apache提供了一个Web展示页面
API:组件和组件对接的技术(点到点)
URL->对接->URL(域名)
endpoint--->endpoint(端点)

OpenStack是一种模块化的设计
HTTPD也是一种模块化的设计

4.通过Native API实现通信

  OpenStack各组件(原生架构)和第三方软硬件(外部组件)之间的通信

OpenStack物理架构

在这里插入图片描述

组件分析:

整个OpenStack是由控制节点,计算节点,网络节点,存储节点,四大部分组成。(这四个节点也可以单机部署)
其中:

提供者网络openstack架构内部网络                     
自服务网络:负责连通外部,与存储服务器集群进行关联

控制节点(调度器)

控制节点(调度器)
负责对其余几点的控制,包含虚拟机创建、迁移、网络分配、存储分配等等

控制节点架构:
控制节点包括以下服务

   管理支持服务
   基础管理服务
   扩展管理服务

a.管理支持服务:包含数据库与消息代理服务

数据库作为基础/扩展服务产生的数据存放的地方
消息代理服务(也称消息中间件)为其他各种服务之间提供了统一的消息通信服务

b.基础管理服务包含Keystone、Glance、Nova、Neutron、Horizon五个服务

Keystone:认证管理服务、提供了其余所有组件的认证信息/令牌的管理、创建、修改等等、使用MySQL等数据库存储认证信息

Glance:镜像管理服务,提供了对虚拟机部署的时候所能提供镜像的管理、包含镜像的导入、格式以及制作相应的模板

Nova:计算管理服务,提供了对计算节点的Nova管理、使用Nova-API(入口节点)进行通信

Neutron:网络管理服务、提供了对网络节点的网络拓扑管理,同时提供Neutron在Horizon的管理界面

Horizon:控制台服务,提供了以Web形式对所有节点的所有服务的管理,通常把该服务成为Dashboard

c.扩展管理服务包含Cinder、Swift、Trove、Heat、Centimeter五个服务

Cinder:提供管理存储节点的Cinder相关、同时提供Cinder在Horizon中的管理面板

Swift:提供管理存储节点Swift相关、同时提供Swift在Horizon中的管理面板

Trove:提供管理数据库节点的Trove先关、同时提供Trove在Horizon中的管理面板

Heat:提供了基于模板来实现云环境中的资源的初始化,依赖关系处理,部署等基本操作,也可以解决自动收缩、负载均衡等高级特性

Centimeter:提供对物理资源以及虚拟资源的监控,并记录这些书库,读数据进行分析在一定条件下出发现货供应动作
控制节点通常来说只需要一个网络端口来用于通信和管理各个节点

解析
控制节点:(把控全局)统一管理,处理事务;并且进行分析后返回给客户,系统平台,运维人员
MySQL:Ceilometer计量服务统计数据的存储
RabbitMQ:消息代理。架构层:组件与组件之间的通讯,单个组件内部子功能模块之间的通讯

基础服务:集中化管理

网络接口:网卡
1.以网络层面,管理其它节点即以一种网卡类型去管理或者做一种类型的职能
2.以网卡职能划分网络类型,管理网络
管理网络:管理其它节点,
其它节点的管理网络:接受其它控制节点请求,且通过管理网络把数据返回

配置文件中,指定对接网卡的编号
每个网卡有不同的职能,有对应的网卡编号,

控制节点:分发任务,主要管理其它节点(管理者)
控制节点可以跑实例资源(处理具体任务)

计算节点
负责虚拟机运行
计算节点架构
计算节点包含Nova、Neutron、Telemter三个服务

1.基础服务

Nova:提供虚拟机的创建、运行、迁移、快照等围绕虚拟机的服务、并提供API与控制节点对接、由控制节点下发任务

Neutron:提供计算节点与网络节点之间的通信

2.扩展服务

Telmeter:提供计算节点监控代理、将虚拟机的情况反馈的控制节点,是Centimeter的代理服务

计算节点包含最少两个网络端口

端口1:与控制节点进行通信,受控制节点统一调配
端口2:与网络节点,存储节点进行通信
解析
计算节点:
(负责一些具体的实例的创建,资源管理,各种精细化具体操作)

基础服务:
Nova:
1.实例生命周期的管理
2.负责调用底层VMM的资源供给虚拟机使用

网络插件代理:
通过插件和代理来实现网络二层,三层的具体功能

扩展服务:
Ceilometer Agent
   计量     代理
定向管理,监控,并且统计资源,把资源给控制节点中的Ceilometer,计算出资源使用量,按量收集

管理网络:接受控制节点的调度管理
数据网络:与数据库进行对接,把资源存储在数据库中

网络节点
负责对外网络与内网之间的通信
网络节点架构
网络节点仅包含Neutron服务

Neutron:负责管理私有网络与公有网络的通信,以及管理虚拟机网络之间通信/拓扑、管理虚拟机之上的防火墙等等

网络节点包含三个网络端口

端口1:用于与控制节点进行通信。
端口2:用于除了控制节点之外的计算/存储节点之间的通信
端口3:用于外部的虚拟机与相应的网络之间通信 
解析
网络节点:
(提供了openstack架构内各个组件,节点之间通讯)
与计算机中数据网络相互关联

基础服务Neutron:网络资源的具体实现

管理网络:eth1 接受控制节点的任务调度,通过不同的接口类型(网卡)去实现整个openstack中,架构的互相调用和控制
数据网络:eth2 数据库服务,数据信息的交互,提供数据资源
外部网络:eth3 只负责与外部第三方组件进行对比,关联,集成
存储节点
负责对虚拟机的额外存储管理等等
存储节点架构
存储节点包含Cinder,Swift等服务

Cinder:块存储服务,提供相应的块才能出,简单来说,就是虚拟出一块存盘,可以挂载到相应的虚拟机之上,不收文件系统的影响,对虚拟机来说,这个操作像是加了一块硬盘,可以完成对磁盘的任何操作,包括挂载、卸载、格式化,转换文件系统等等操作,大多应用于虚拟机空间不足的情况下的空间扩容等

Swift:对象存储服务,提供相应的独享存储、简单来说,就是虚拟出一块磁盘空间,可以在这个空间当中存放文件,也仅仅只能存放文件,不能进行格式化,转换文件系统,大多应用于云磁盘/文件

存储节点包含最少两个网络端口

端口1:与控制节点进行通信,接受控制节点任务,受控制节点统一调配
端口2:与计算/网络节点进行通信,完成控制节点下发的各类任务
解析
存储节点:提供存储服务
基础服务:Cinder Swift (存储服务)
openstack原生架构中的数据服务

数据管理:通过数据网络将资源供给计算节点中的实例使用

OpenStrack模块介绍

控制台Horizon(图形化界面)
   管理,控制OpenStack服务的Web控制面板
   openstack是一个架构,由多个节点服务器组成,这些服务器为实现同一个任务,而做虚拟化,将资源整合成一个整体,对外进行分配,使用
Horizon特点
   实例管理
   访问与安全管理
   偏好设定
   镜像管理
   用户管理
   卷管理
   对象存储处理
身份认证模块Keystone
   负责管理身份验证,服务规则和服务令牌功能的模块
Keystone涉及概念
    User(用户)
    Tenant/tone(租户/项目)互相独立
    Role(角色)不同用户,不同权限。权限分类
    Service(服务)
    Token(令牌)
    Endpoint(端点)
身份认证模块Keystone
Keystone涉及概念
Keystone工作流程图

在这里插入图片描述

镜像模块Glance
提供发现,注册和下载的镜像服务,虚拟机镜像的集中式仓库
通过虚拟机镜像创建虚拟机

Glance主要组件
   glance-api
   glance-registry
   database
   storage repository for image files
镜像的格式
   RAW         VDI
   QCOW2       ISO
   VHD         AKI,ARI,AMI
   VMDK
 网络模块Neutron
  实现实例与实例之间以及实例与外部网络之间的通信
  提供二层(L2)vSwitch交换和三层(L3)Router路由抽象功能
        内网                   外网
    
示例:openstack中根据镜像创建的虚拟机
实现功能
  Router:为用户提供路由,NAT等服务
  Network:对应于一个真实物理网络中的二层局域网(VLAN)
  Subnet:指定一段IPV4或IPV6地址并描述其相关的配置信息
虚拟网络
  对二层物理网络Network的抽象与管理(局域网之间通信,vm之间)
     虚拟交换机/网桥
     虚拟路由器
     Namespace 
     DHCP
     浮动IP地址
组网模型
  Local
  Flat  
  VLAN
  Overlay之VXLAN(内部为二层物理。通过隧道进行传输数据信息)

块存储Cinder
   提供对Volume从创建到删除整个生命周期的分类
 Cinder功能
   提供REST API
   调度Volume创建请求,合理优化存储资源的分配
   支持多种back-end(后端)存储方式

Cinder组件
    Cinder-Api               Cinder-Backup:
    Cinder-Volume            Message Queue
    Cinder-Scheduler         Database

对象存储swift
 使用普通硬件来构建冗余的,可扩展的分布式对象存储集群。存储容量可达PB级
 Swift属于对象存储,用于永久类型的静态数据的长期存储(如虚拟机镜像,图片存储,邮件存储和存档备份)

Swift特点
 极高的数据持久性,          为单点故障
 完全对称的系统架构          简单,可依赖
 无限的可扩展性

Swift组件
代理服务(ProxyServer)                                                            
认证服务(AuthenticationServer)                                                
缓存服务(CacheServer)                                                             
账户服务(AccountServer)                                                             
容器服务(ContainerServer)                                                           
对象服务(ObjectServer)                                                       
复制服务(Replicator)
更新服务(Updater)
审计服务(Auditor)
账户清理服务(AccountReaper)

Swift存储结构
    Objects
   Accounts
  Containers
     Tmp
 async_pending
  quarantined
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值