OpenStack架构
OpenStack架构
OpenStack作为开源、可扩展、富有弹性的云操作系统,其设计基本原则
①按照不同的功能和通用性划分不同项目,拆分子系统
按照不同的功能划分不同服务,并且服务之间相互隔离,只通过API作为统一交互入口相互对接
按照功能和通过性划分不同服务,将一个整理功能,拆分为各个子服务/子功能。方便管理、排障
②按照逻辑计划、规范子系统之间的通信
API之间进行交互会有特定/通用的方式,对不同组件之间的通讯方式进行规范
③通过分层设计整个系统架构
1、分层(以架构为单位),三层①全局组件②辅助组件③核心组件
2、以单个核心组件/服务进行分层①API②子功能模块③其他
④不同的功能子系统间提供统一的API接口
各组件之间通过统一的API接口进行交互、通讯、数据传输、调用
OpenStack概念架构
以架构维度来看,分为:全局组件、核心组件、辅助组件
全局组件:Keystone、Ceilometer、Horizon
①全局的认证、监控、控制台管理
辅助组件:Ironic、Trove、Hert、Sahara(提供了一些必要的管理与服务)
①Ironic:裸金属(裸机),把资源调用过后给它创建一个操作系统,这样就组成了一个可以使用的操作系统,使用的一个节点和虚拟机,管理和控制基础硬件资源
②Trove:数据库/管理数据库的服务,可以管理关系型和非关系型数据库,数据库存储信息和数据,存储OpenStack最为核心的实例数据,存储各组件的数据,各组件的调用数据和使用情况以及各种日志
③Hert、Sahara:做数据的分析编排和处理,精细化的管理和编排更为合理的使用利用数据
核心组件(为实例/虚拟机服务):Glance、Nova、Swift、Neutron、Cinder
①创建虚拟机需要网络资源、镜像资源和存储资源
②Glance为虚拟机提供了镜像
③Neutron提供了网络
④Swift、Cinder为虚拟机提供了存储,Cinder为虚拟机提供持久化存储,同时也会备份一份在Swift里面
⑤Nova会把创建虚拟机所需要的资源(Glance、Swift、Neutron、Cinder)调用过来,然后提供给虚拟机
OpenStack逻辑架构
图展示内容
1、展示了内部核心组件、辅助组件、全局组件
2、各核心/辅助组件之间是怎么对接的(通过API对接,通信方式可以为消息代理(rabbitmq))
3、展示了各组件中,一部分核心的功能模块
4、展示了OpenStack原生架构(基础)
一:首先各种服务组件,分为三层,核心、辅助、全局,每一个组件的作用
全局组件
①Keystone-all:对用户、租户和角色、服务进行认证与授权
②Ceilomter-api:用于度量、监控和控制数据资源的集中来源,为OpenStack用户提供记账途径
③Harizon:提供一个Web管理界面,与OpenStack底层服务进行交互
核心组件
①Glance-api:为虚拟机提供了镜像
②Swift-proxy server:对象存储,为OpenStack提供基于云的弹性存储
③Neutron-server:提供了网络
④Cinder-api:块存储,负责为运行实例提供持久的块存储设备
⑤Nova-api:负责实例生命周期的管理,Nova可以调用各自虚拟化的资源,来供给虚拟机运行/工作
辅助组件
①Ironce-api:裸金属(裸机),把资源调用过后给它创建一个操作系统,这样就组成了一个可以使用的操作系统,使用的一个节点和虚拟机,管理和控制基础硬件资源
②Trove-api:数据库/管理数据库的服务,可以管理关系型和非关系型数据库,数据库存储信息和数据,存储OpenStack最为核心的实例数据,存储各组件的数据,各组件的调用数据和使用情况以及各种日志
③Hert-api:做数据的分析编排和处理,精细化的管理和编排更为合理的使用利用数据
④Sahara-all:做数据的分析编排和处理,精细化的管理和编排更为合理的使用利用数据
二:各组件之间怎么通讯,通过API对接,借助消息代理通讯/HTTP
三:每一个核心组件都是由各种各样的子功能模块构成,每个功能模块做具体的事件处理,执行具体的任务,它们各组件的通讯也是借助了消息代理这种方式
OpenStack组件通信关系
①基于AMQP协议的通信
用于每个项目内部各个自建的通信,AMPQ:消息代理,同时组件与组件之间也可以用到AMQP/Rabbitmq
②基于SQL的通信
用于各个项目内部的通信,SQL:数据库的一个语言,数据库与数据库之间通信可以使用这种通信方式,数据库和其他服务对接的通讯也可以使用这种SQL通讯方式
③基于HTTP协议进行通信
通过各项目API建立的通信关系,API都是RESTful Web API
什么是 RESTful Web API
RESTful Web API:OpenStack中API是一个很核心的概念
RESTful是一种交互/通信的规范
web由Apache承载API,APache提供了一个Web展示页面
API组件和组件对接的技术(点到点)
④通过Native API实现通信
OpenStack各组件和第三方软硬件之间的通信,表示的是OpenStack原生架构它和外部组件的通信是使用这种方式的
OpenStack物理架构
一共有四种节点类型:控制节点、网络节点、计算节点、存储节点
功能
控制节点把控全局,分发任务,主要管理其它节点,控制节点可以跑实例资源(处理具体任务)
网络节点提供了OpenStack架构内部各组件之间的通信
计算节点负责一些具体的实例创建、资源管理、各种精细化的具体操作
存储节点提供存储服务
控制节点----->支持服务
MySQL:数据库,做存储,做一些组件核心的数据存储
RabbitMQ:是一种消息代理,工作在组件与组件之间通讯,单一组件内部子功能模块的通讯
控制节点----->基础服务
Keystone:最为核心的一点,所有活动、所有对接、所有认证都需要有Keystone认证,全局组件
Horizon:所有组件部署完成之后,我们可以在控制台上进行更为详细的操作,全局组件
Neutron:网络组件,OpenStack想要搭建需要网络,集中化管理
Glance:镜像,是虚拟机创建的一个前提条件
Nova:调度,控制节点上一个核心的内容,控制虚拟机管库实例生命周期都需要Nova去进行管理
Glance、Nova、Neutron:创建数据库所必备的组件,也是最为复杂的组件,所以为基础服务
控制节点管理着计算节点,Nova想要调用资源分配的话也是会由控制节点中的Nova进行调用/管理
控制节点----->扩展服务
Cinder:块存储,为实例提供持久化存储
Swift:保存镜像
Trove:数据库,辅助组件
Heat:编排,对数据进行管理编排
Ceilometer:计量,对每一个它的组件的资源需求和资源使用量,使用情况的监控,是一个扩展服务类型,从架构层面是一个全局组件
Cinder、Swift、Trove、Heat:数据存储的管理
Cinder、Swift:辅助组件,提供虚拟机的存储支持
控制节点----->网络接口
在划分了四个节点情况下,只会有一个管理网络
作用:每一个节点都会有一个管理网络,简单点说就是网卡
为什么是管理网络?
对网卡的功能进行了划分,负责了在网络层面对OpenStack进行管理,如果以四个节点进行划分的话,控制节点通过这种管理网络的网卡类型去管理网络节点、管理计算节点、管理存储节点,就是说以网络的层面管理其它控制节点,管理整个架构,那么其他节点管理网络的功能为接受控制节点的一个任务/请求,并且通过这样的管理网络把数据返回回去
网络节点------>基础服务
Neutron:主要去做具体网络资源的实现
网络节点------>网络接口
管理网络:(例eth1)主要负责接收控制节点的任务调度
数据网络:(例eth2)数据库服务,一些数据存储、数据对接、数据关联、数据同步
外部网络:(例eth3)只负责和外部第三方组件去做对接、去做关联、去做集成
计算节点------>基础服务
Nova Hypervisor:是一种基础服务,如果以性能方面而言,把这样的功能组件放在了控制节点,把资源调度给控制节点之后,在通过计算节点供给计算节点话,这种方式会造成资源浪费,会占用控制节点的资源,会占用网络带宽,网络传输,这样不合理,所以会把这个组件放在计算节点,而计算节点里跑的就是虚拟机/实例,这样可以保证最大化的节省和更为合理的使用资源
网络插件代理:一台设备想要访问到外网的话,需要经过二层、三层设备,而在OpenStack里面,通过插件和代理来实现网络二层、三层的具体功能,所以属于基础服务
计算节点------>扩展服务
Ceilomter Agent(Agent:代理):计量,想要知道网络资源的使用情况,那就需要计量这项服务来定向去管理和监控,并且统计资源,把资源统计给控制节点中的Ceilomter组件,来让他计算出具体的资源使用量并且按量收费
计算节点------>网络接口
管理网络:接受控制节点的调度和管理
数据网络:主要是和数据库对接,会把使用的资源量去存储到数据库里面
存储节点----->基础服务
Cinder:块存储,主要是为实例提供了持久化存储
Swift:对象存储,提供了镜像存储
两个是通过数据网络这样的网卡供给计算节点数据网络的网卡
OpenStack物理架构
网络节点(Network Node)
----->提供者网络(provider networks)
----->自服务网络(Self-service networks)
服务提供的对象来划分的/网络的功能
它们都是由代理、插件的形式来实现的
主要讲述
1、OpenStack网络类型(以功能划分)有两种
①内部网络
②外部网络
2、OpenStack的网络功能,是通过插件、代理的方式来实现
提供者网络(指的就是OpenStack原生架构内部)
联网管理:是一种类型
ML2插件:在OpenStack中,提供网络支持的方式就是通过插件和代理的方式去实现网络的功能,ML2代表的就是二层的插件管理
Linux网络工具:比如说一些虚拟交换机、虚拟路由器一些虚拟设备,包括虚拟化的一个网线和对接的网卡
Linux Bridge代理:网桥、桥接、DHCP代理:就是通过插件与代理的方式去实现的
元数据代理(Metadata Agent):管理的是具体的一个属性的控制,这样修改它的网络组件包括虚拟设备,都可以通过修修改他的元数据属性来进行修改,控制
自服务网络(指的就是OpenStack架构外部的网络)
与提供者网络相比多了一个三层代理(L3 Agent)
L3 Agent:三层设备,路由器、三层交换机,可以跨网段通信,也就是可以跨节点,跨平台通信