【个人小结】
OpenStack是开源项目,是云平台架构,是云操作系统组件,(一句话:OpenStack是由很多组件形成的开源项目云平台架构。)
OpenStack组件按模块分类,核心模块是计算Nova、镜像Glance、存储Cinder、网络Neutron;辅助模块是访问Horizen、监控Ceilometer、权限KeyStone、对象存储Swift。
OpenStack组件四大节点:控制、计算、网络、存储。
OpenStack组件三驾马车:计算Nova,存储Cinder,网络Neutron。
OpenStack是目前最流行的构建云平台的开源项目,是使用Python语言编写的云操作系统组件。2010年6月,由美国航空航天局(NASA)和 RackSpace公司合作研发完成的0penStack是一个灵活的、能够整合多个系统,构建公有云、私有云、混合云的IaaS云平台的组件集合,它通过统一的管理接口对云平台中的资源(如存储、虚拟机、网络等)进行管理,使用OpenStack能够搭建包括公有云、私有云、混合云的IaaS云平台。
OpenStack是开源云操作系统,可控制整个数据中心的大型计算,存储和网络资源池。
以下小节,是关于OpenStack整体或者各功能/组件/部分的不同分类展示,通过图形和不同角度进行协同记忆,换言之,认识一个事物,先认识ta的整体基本轮廓,是圆的,方的,还是扁的。
OpenStack核心组件
1.身份服务(Identity Service):Keystone
2.计算(Compute):Nova
3.镜像服务(Image Service):Glance
4.网络 & 地址管理( Network ): Neutron
5.对象存储( Object Storage ): Swift
6.块存储 (Block Storage) : Cinder
7.UI 界面 (Dashboard) : Horizon
8.测量 (Metering) : Ceilometer
9.部署编排 (Orchestration) : Heat
整个OpenStack是由控制节点,计算节点,网络节点,存储节点四大部分组成
。(这四个节点也可以安装在一台机器上,单机部署)其中:
1.控制节点:负责对其余节点的控制,包含虚拟机建立,迁移,网络分配,存储分配等等。
2.计算节点:负责虚拟机运行。
3.网络节点:负责对外网络与内网络之间的通信。
4.存储节点:负责对虚拟机的额外存储管理。
其中:
(一)控制节点负责对其余几点的控制,包含虚拟机创建、迁移、网络分配、存储分配等等。
1.控制节点架构
控制节点包括以下服务:管理支持服务、基础管理服务、扩展管理服务
(1)管理支持服务包含数据库与消息代理服务
① 数据库作为基础/扩展服务产生的数据存放的地方
② 消息代理服务(也称消息中间件)为其他各种服务之间提供了统一的消息通信服务
(2)基础管理服务包含Keystone、Glance、Nova、Neutron、Horizon五个服务
① Keystone:认证管理服务、提供了其余所有组件的认证信息/令牌的管理、创建、修改等等、使用MySQL等数据库存储认证信息
② Glance:镜像管理服务,提供了对虚拟机部署的时候所能提供镜像的管理、包含镜像的导入、格式以及制作相应的模板
③ Nova:计算管理服务,提供了对计算节点的Nova管理、使用Nova-API进行通信
④ Neutron:网络管理服务、提供了对网络节点的网络拓扑管理,同时提供Neutron在Horizon的管理界面
⑤ Horizon:控制台服务,提供了以Web形式对所有节点的所有服务的管理,通常把该服务成为Dashboard
(3)扩展管理服务包含Cinder、Swift、Trove、Heat、Centimeter五个服务
① Cinder:提供管理存储节点的Cinder相关、同时提供Cinder在Horizon中的管理面板
② Swift:提供管理存储节点Swift相关、同时提供Swift在Horizon中的管理面板
③ Trove:提供管理数据库节点的Trove相关、同时提供Trove在Horizon中的管理面板
④ Heat:提供了基于模板来实现云环境中的资源的初始化,依赖关系处理,部署等基本操作,也可以解决自动收缩、负载均衡等高级特性
⑤ Centimeter:提供对物理资源以及虚拟资源的监控,并记录这些书库,读数据进行分析,在一定条件下出发现货供应动作
2.端口:控制节点通常来说只需要一个网络端口来用于通信和管理各个节点
3.定位:运维人员通过控制节点从而控制整个openstack架构
(二)计算节点负责虚拟机运行
1.计算节点架构
计算节点包含Nova、Neutron、Telemter三个服务
(1)基础服务
① Nova:提供虚拟机的创建、运行、迁移、快照等围绕虚拟机的服务、并提供API与控制节点对接、由控制节点下发任务
② Neutron:提供计算节点与网络节点之间的通信
(2)扩展服务
① Telmeter:提供计算节点监控代理、将虚拟机的情况反馈的控制节点,是Centimeter的代理服务
2.计算节点包含最少两个网络端口
(1)端口1:与控制节点进行通信,受控制节点统一调配
(2)端口2:与网络节点,存储节点进行通信
(三)网络节点负责对外网络与内网之间的通信
1.网络节点架构
网络节点仅包含Neutron服务
① Neutron:负责管理私有网络与公有网络的通信,以及管理虚拟机网络之间通信/拓扑、管理虚拟机之上的防火墙等等
2.网络节点包含三个网络端口
(1)端口1:用于与控制节点进行通信
(2)端口2:用于除了控制节点之外的计算/存储节点之间的通信
(3)端口3:用于外部的虚拟机与相应的网络之间通信
(四)存储节点负责对虚拟机的额外存储管理等等
1.存储节点架构
存储节点包含Cinder,Swift等服务
(1)Cinder:块存储服务,提供相应的块才能出,简单来说,就是虚拟出一块存盘,可以挂载到相应的虚拟机之上,不收文件系统的影响,对虚拟机来说,这个操作像是加了一块硬盘,可以完成对磁盘的任何操作,包括挂载、卸载、格式化,转换文件系统等等操作,大多应用于虚拟机空间不足的情况下的空间扩容等。
(2)Swift:对象存储服务,提供相应的独享存储、简单来说,就是虚拟出一块磁盘空间,可以在这个空间当中存放文件,也仅仅只能存放文件,不能进行格式化,转换文件系统,大多应用于云磁盘/文件
2.存储节点包含最少两个网络端口
(1)端口1:与控制节点进行通信,接受控制节点任务,受控制节点统一调配
(2)端口2:与计算/网络节点进行通信,完成控制节点下发的各类任务
OpenStack"三驾马车”{计算:Nova,块存储: Cinder,网络:Neutron }
上图的核心为虚拟机,所有组件围绕虚拟机,为它提供服务。可将上图的架构分为三个部分:
一、红色方框为全局组件
1.keystone:为所有服务模块提供认证与授权
2.ceilometer:度量、监控所有数据资源
3.horizon :UI平台管理,提供一个web管理页面,与底层交互
二、紫色方框为外部辅助组件
1.ironic 提供裸金属环境
2.trove 提供管理数据库服务(控制关系型和非关系型数据库)
3.heat,sahara 提供对数据管理和编排
三、蓝色方框为内部核心组件
1.glance:Glance是Open Stack的镜像服务,提供了磁盘和服务器虚拟镜像的查询、注册和传输的功能。
2.neutron:提供网络连接服务
3.swift:对象存储通过一个 RESTful,基于HTTP的应用程序接口存储和任意检索的非结构化数据对象
4.cinder:提供块从存储服务。
5.nova:管理实例的生命周期,并负责调取以上四个资源给虚拟机使用。
核心
模块:Nova、Glance、Cinder、Neutron四个核心模块提供计算、镜像、存储、网络;四个辅助
模块:Horizen、Ceilometer、KeyStone、Swift提供访问、监控、权限、对象存储。OpenStack 架构由大量开源项目组成。其中包含 6 个稳定可靠的核心服务,用于处理计算、网络、存储、身份和镜像;同时,还为用户提供了十多种开发成熟度各异的可选服务。OpenStack 的6个核心服务主要担纲系统的基础架构,其余项目则负责管理控制面板、编排、裸机部署、信息传递、容器及统筹管理等操作。
1.keystone:Keystone认证所有 OpenStack 服务并对其进行授权。同时,它也是所有服务的端点目录。
2.glance:Glance 可存储和检索多个位置的虚拟机磁盘镜像。
3.nova:是一个完整的 OpenStack 计算资源管理和访问工具,负责处理规划、创建和删除操作。
4.neutron:Neutron 能够连接其他 OpenStack 服务并连接网络。
5.dashboard:web管理界面
6.Swift: 是一种高度容错的对象存储服务,使用 RESTful API 来存储和检索非结构数据对象。
7.Cinder 通过自助服务 API 访问持久块存储。
8.Ceilometer:计费
9.Heat:编排
手把手教你搭建OpenStack云平台:3w+
OpenStack是由许多功能/组件构成,所以使用前需要了解具体功能/组件的操作(具体功能/组件的关系,详见“是什么”的“架构”)
换言之,此章节是对OpenStack的组件/功能更详细的介绍,在“是什么”的“架构”中仅仅是做了简单的介绍而已。
Horizon是图形用户界面,提供统一的管理界面,管理所有组件的状态。
Keystone包括OpenStack的认证服务和用户信息管理服务。其中认证服务主要负责用户的登录认证和访问控制,用户信息管理主要是对用户、角色、权限、租户等信息管理。
Keystone 的认证过程主要通过用户名,密码认证后,返回一个临时Token,用户通过临时Token查询所属租户,一个用户可以对应多个租户,获得租户信息后,选择其中一个租户并通过用户名,密码认证后,Keystone返回租户的Token,使用该Token 获取各个组件的服务。
用户信息包括用户、Tenant和角色,用户是访问OpenStack 各个服务或资源的人或程序。Tenant即租户,让多个用户或企业能够在同一时刻使用同一个应用服务或资源,并保护用户数据的隐私与安全。用户访问应用服务或资源前,必须与该租户关联,并且指定用户在该租户下的角色。角色是用户拥有的权限,一个角色可以拥有多个权限,用户的Role越高,在OpenStack中能访问的服务或资源就越多。
Keystone还包括其他基本信息,如 Service服务,当用户访问服务时,根据租户下用户的角色确认是否有访问服务的权限,Endpoint是具体化的Service,它提供给用户访问服务的端点,Endpoint一般为URL,用户通过该URL,可以访问服务。Endpoint的URL具有Public、Private和 Admin三种权限。其中 Public URL提供对外访问服务,Private URL提供对内访问服务,Admin URL提供管理员访问服务。
Glance是一套虚拟机镜像管理系统。它能够以多种形式存储镜像文件:①利用OpenStack对象存储机制Swift来存储镜像;②利用Amazon的简单存储解决方案(简称S3)直接存储信息;③将S3存储与对象存储结合起来,作为S3访问的连接器。OpenStack镜像服务支持多种虚拟机镜像格式,包括VMware (VMDK) 、Amazon镜像(AKI、ARI、AMI)以及VirtualBox所支持的各种磁盘格式。Glance 架构如图7-6所示。
(1)Glance-API:类似于Nova-API,接收 REST API请求,通过Glance-Registry模块及Image store模块来完成诸如镜像的查找、获取、上传、删除等操作。
( 2) Glance-Registry:用于与MySQL 数据库交互,存储或获取镜像的元数据( metadata)。
(3)Image store:是一个存储的接口层,通过这个接口,Glance 可以获取镜像,Image store支持的存储有Amazon的 S3、OpenStack本身的Swift,还有诸如Ceph,Sheepdog、GlusterFS等分布式存储。
Nova是0penStack的核心,负责处理虚拟机的所有流程,为虚拟机提供自动创建和管理功能,类似于Amazon EC2的Web 服务。Nova在创建虚拟机时需要一个镜像文件,通常该操作系统的镜像文件由Glance提供,并存储在Cinder 或Swift等介质中。
Nova主要包括Nova-api, Nova-conductor、Nova-scheduler和 Nova-compute模块,它们的主要功能如下。
(1) Nova-api主要对外提供REST 接口的处理,对传入的参数进行合法性校验和约束限制,对资源进行创建、更新、删除、查询、配额(Quota)、校验和预留等。它是虚拟机生命周期的入口,可以水平扩展部署。
(2) Nova-conductor在G版本中被引入,解耦其他组件,如 Nova-compute的数据访问,控制Nova的复杂流程,如创建、冷迁移、热迁移、虚拟机规格调整和虚拟机重建,对其他组件心跳功能的定时写入。
(3)在云平台中,使用Nova-scheduler对资源进行调度。如创建虚拟机时,指导虚拟机创建在哪台主机上,迁移时指定到哪台主机上等。
(4)Nova-compute是虚拟机各生命周期操作的真正执行者。底层对接不同虚拟化的平台(KVM、VMware、Xen、FusionCompute、Hyper-V等)进行虚拟化操作,内置周期性任务,完成资源刷新、虚拟机状态同步等功能。
OpenStack 从 Folsom版本开始,将之前Nova中的部分持久性块存储功能(Nova-Volume)分离出来,独立为新的组件Cinder。Cinder 的核心功能是对卷的管理,允许对卷、卷的类型、卷的快照、卷备份进行处理。它为云平台提供统一接口,通过驱动的方式接入不同种类的后端存储(本地存储、网络存储、FCSAN、IPSAN)与OpenStack进行整合提供块存储服务(类似于Amazon EBS服务)。Cinder组件主要包括三种服务。
(1) Cinder-API
Cinder对外接口,负责接受和处理 REST请求,并将请求放入 RabbitMQ队列。
(2)Cinder-Scheduler
处理队列中的任务,并根据预定策略选择合适的Volume Service节点来执行任务。
(3)Cinder-Volume
负责与后端存储进行对接,通过各厂商提供的 Driver 将OpenStack操作转换为存储操作。该服务运行在存储节点上,管理存储空间。每个存储节点都有一个 VolumeService,若干个这样的存储节点联合起来可以构成一个存储资源池。
在Cinder整体构架中,如图7-4所示,API是核心部分,连接了内部的授权管理,REST 请求,消息队列和前端的Cinder 客户端,Nova客户端。客户端通过Web界面显示Cinder信息,Nova端用户可以调用存储在块中的资源。AMQP是高级消息队列协议,应用于消息队列中。Scheduler处理消息队列中的任务,任务在Volume节点上执行。iSCSI一端连接存储设备(Volume),一端连接其他主机。用户使用API用以请求和使用Cinder虚拟化块存储设备池,并且不用了解存储的位置或设备信息。
Neutron提供不同层次的网络服务,是OpenStack核心项目之一。它将网络、子网、端口和路由器抽象化之后启动的虚拟主机就可以连接到这个虚拟网络上。优势是部署或者改变一个SDN变得非常简单,并都可在可视化的Horizon里实现。
Neutron主要包括Neutron-server、插件 plugin、Neutron 数据库、DHCP代理、二层代理、三层代理和消息队列,如图7-5所示。其中Neutron-server和插件plugin主要接收REST 请求,通过Keystone授权,与数据库交互,对外提供API 功能。二层代理主要连接网络端口,处理数据包。三层代理为客户机访问外部网络提供三层转发服务。
Neutron采用的是分布式架构,其中 Neutron-server接收API的请求,通过Plugin的代理实现各种请求,并把Neutron的网络状态保存在数据库中,组件之间通过消息队列进行通信。其中API 分为核心API和扩展API两个部分,核心API是对网络、子网和端口进行增删改查操作,扩展API主要针对具体插件的实现。
云计算中的网络流量可以分为以下几个大类。
(1)管理网络(API 网络):用于云计算内部的管理流量,包括内部虚拟化组件之间、SDN控制组件之间和消息队列等。管理流量一般不对外,并且需要连接云数据中心中的每一个服务器节点,并只在数据中心内部传输。
(2)租户网络:用于数据中心的各个租户之间的流量,提供云计算服务,保证用户内部虚拟机之间能够通信,同时隔离不同用户之间的流量。租户之间隔离的方式包括VLAN、VXLAN、NVGRE等。
(3)外部网络:租户网络只能通过业务虚拟机之间通信,与其余设备的通信则都要通过外部网络转发。除了路由以外,外部网络往往还兼具 VPN、NAT、负载均衡、防火墙等职能。
(4)存储网络:用于连接计算节点和存储节点,主要是为计算节点中的主机和虚拟机提供存储服务。存储网络也不对外,在内部传输。
OpenStack 的管理网络流量,同样需要连接所有的主机,其上传输的流量包括Horizon、Nova、Keystone、Glance等组件的管理服务。它通过管理网络与计算节点、网络节点上的Agent、Client通信。
外部网络主要运行的是Neutron的各种插件,包括L2 Agent、L3 Agent、DHCP Agent、VPN Agent、FW Agent 以及配套的各种软件。它为租户提供各种诸如NAT、路由之类的出口服务。
在OpenStack 架构中,存储网络普遍采用单独的存储服务器集群向计算节点服务器提供存储服务,且支持块存储、文件存储、对象存储多种类型。
租户网络同样通过二层的0verlay技术来对租户的流量进行标记,实现隔离。Neutron支持的二层设备包括开源虚拟交换机和商用虚拟交换机的插件。
OpenStack子项目,为VM提供“Network as a Service"服务
始于Essex版,孵化项目,高级用户选择试用
在Folsom版本成为核心项目,OpenStack云平台对其提供正式支持
OpenStack"三驾马车”之一{计算:Nova,块存储: Cinder,网络:Neutron }
模块最多、层次繁复、厂商插件最多、内部交互最繁杂
OpenStack在FusionSphere中的位置
FusionSphere OpenStack扩展
FusionSphere OpenStack可靠性扩展
FusionSphere OpenStack安全性扩展