OpenStack架构详解

OpenStack架构

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

①按照不同的功能和通用性划分不同项目,拆分子系统

  • 按照不同的功能划分不同服务,并且服务之间相互隔离,只通过API作为统一交互入口相互对接
  • 按照功能和通过性划分不同服务,将一个整理功能,拆分为各个子服务/子功能。方便管理、排障

②按照逻辑计划、规范子系统之间的通信

  • API之间进行交互会有特定/通用的方式,对不同组件之间的通讯方式进行规范

③通过分层设计整个系统架构

  • 1、分层(以架构为单位),三层①全局组件②辅助组件③核心组件
  • 2、以单个核心组件/服务进行分层①API②子功能模块③其他

④不同的功能子系统间提供统一的API接口

  • 各组件之间通过统一的API接口进行交互、通讯、数据传输、调用

OpenStack概念架构

OpenStack架构详解_第1张图片
以架构维度来看,分为:全局组件、核心组件、辅助组件

全局组件: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架构详解_第2张图片
一共有四种节点类型:控制节点、网络节点、计算节点、存储节点

功能

  • 控制节点把控全局,分发任务,主要管理其它节点,控制节点可以跑实例资源(处理具体任务)
  • 网络节点提供了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)

服务提供的对象来划分的/网络的功能

它们都是由代理、插件的形式来实现的

OpenStack架构详解_第3张图片

主要讲述
1、OpenStack网络类型(以功能划分)有两种

  • ①内部网络
  • ②外部网络

2、OpenStack的网络功能,是通过插件、代理的方式来实现

提供者网络(指的就是OpenStack原生架构内部)

  • 联网管理:是一种类型
  • ML2插件:在OpenStack中,提供网络支持的方式就是通过插件和代理的方式去实现网络的功能,ML2代表的就是二层的插件管理
  • Linux网络工具:比如说一些虚拟交换机、虚拟路由器一些虚拟设备,包括虚拟化的一个网线和对接的网卡
  • Linux Bridge代理:网桥、桥接、DHCP代理:就是通过插件与代理的方式去实现的
    元数据代理(Metadata Agent):管理的是具体的一个属性的控制,这样修改它的网络组件包括虚拟设备,都可以通过修修改他的元数据属性来进行修改,控制

自服务网络(指的就是OpenStack架构外部的网络)

  • 与提供者网络相比多了一个三层代理(L3 Agent)
  • L3 Agent:三层设备,路由器、三层交换机,可以跨网段通信,也就是可以跨节点,跨平台通信

你可能感兴趣的:(OpenStack,openstack)