- 一 OpenStack架构
- OpenStack概念架构图
- OpenStack逻辑架构
- OpenStack组件通信关系
- OpenStack物理架构
- OpenStrack模块介绍
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



