大家好,我是SuieKa。,,,不想说了直接进入正题吧,写的不好,主要是记知识点。


  • 入门了解OpenStack
  • 一、OpenStack及云计算
  • 1、云计算基本概念
  • 二、OpenStack的组件及功能
  • 1、各个组件交互描述
  • 三、节点架构简单说明
  • 1、节点架构


入门了解OpenStack

一、OpenStack及云计算

OpenStack概念
OpenStack是一个云平台管理的项目,它不是一个软件,它是一个控制着大量计算能力,存储,甚至整个数据中心网络资源的云操作系统,通过Dashboard这个Web界面,让管理员可以控制、赋予他们的用户去提供资源的权限。他可以搭建公有云,私有云,企业云。
OpenStack被公认作为基础设施即服务(简称IaaS)资源的通用前端。作为(云计算)IaaS层的操作系统,OpenStack为虚拟机提供并管理了三大类资源:计算网络存储
OpenStack就是通过一系列相对一致的API实现,从而允许用户通过软件来实现虚拟环境,包含虚拟机,虚拟存储,虚拟网络等的部署和管理。

1、云计算基本概念

云计算(cloud computing)是一种基于因特网的超级计算模式,在远程的数据中心里,成千上万台电脑和服务器连接成一片电脑云。因此,云计算甚至可以让你体验每秒10万亿次的运算能力,拥有这么强大的计算能力可以模拟核爆炸、预测气候变化和市场发展趋势。用户通过电脑、笔记本、手机等方式接入数据中心,按自己的需求进行运算。

云计算的特点:虚拟化技术、动态可扩展性、、可扩展性、按需部署、灵活性高、可靠性高、性价比高
云计算服务分三类:基础设施即服务(IaaS)、平台即服务(PaaS)、软件即服务(SaaS)
基础设施即服务IaaS):基础设施即服务是主要的服务类别之一,它向云计算提供商的个人或组织提供虚拟化计算资源,如虚拟机、存储、网络和操作系统。
平台即服务(PaaS):平台即服务是一种服务类别,为开发人员提供通过全球互联网构建应用程序和服务的平台。Paas为开发、测试和管理软件应用程序提供按需开发环境。
软件即服务(SaaS):软件即服务也是其服务的一类,通过互联网提供按需软件付费应用程序,云计算提供商托管和管理软件应用程序,并允许其用户连接到应用程序并通过全球互联网访问应用程序。
然而,OpenStack就属于基础设施即服务IaaS)的一种。

OpenStack既然是一个开源的云平台项目,它的主要任务是给用户提供IaaS服务

二、OpenStack的组件及功能

(1)opnestack版本官网说明

一样,OpenStack也是经历了风风雨雨,在OpenStack自2010年成立以来,有各种不同版本,如官网:

openstack 资源查询 openstack主要管理哪些资源_API


刚开始接触OpenStack,并不了解的版本情况,他的第一个版本是Austin,往后看居然是以26个字母为首排的。。。目前是2020年,发行的版本到了Ussuri最新版,Victoria还在开发中。在官网有中文文档,目前中文文档只有两个版本的说明,也是奇了怪了哈:

openstack 资源查询 openstack主要管理哪些资源_API_02

正是由于OpenStack是一个云平台管理的项目工具,本身也是由各大组件组成,OpenStack的各大组件有哪些嫩?

(2)OpenStack组件以及功能作用

OpenStack 的组件形成关系图如下:

openstack 资源查询 openstack主要管理哪些资源_openstack 资源查询_03

openstack 资源查询 openstack主要管理哪些资源_大数据_04


不止图上看淡的这些,还有很多呢,只不过是除开了核心组件的。

其中,有这几个重要组件(Nova、Neutron、Swift、Cinder、Keystone、Glance、Heat、Ceilometer)以及控制台Dashboard(Horizon

组件 (服务名)

功能及作用

Nova (计算)

管理虚拟机的整个生命周期:创建、运行、挂起、调度、关闭、销毁等。这是真正的执行部件。接受 DashBoard 发來的命令并完成具体的动作。但是 Nova 不是虛拟机软件,所以还需要虚拟机软件(如 KVM、Xen、Hyper-v 等)配合。

Neutron(网络)

管理网络资源,提供/一组应用编程接口(API),用户可以调用它们来定义网络(如 VLAN ),并把定义好的网络附加给租户。Networking 是一个插件式结构,支持当前主流的网络设备和最新网铬技术。

Swift(对象存储)

是 NoSQL 数据库,类似 HBase,为虚拟机提供非结构化数据存储,它把相同的数据存储在多台计箅机上,以确保数据不会丢失。用户可通过 RESTful 和 HTTP 类型的 API 来和它通信。这是实际的存储项目,类似 Ceph,不过在 OpcnStack 具体实施时,人们更愿意采用 Ceph。

Cinder(块存储)

管理块设备,为虚拟机管理 SAN 设备源。但是它本身不是块设备源, 需要一个存储后端来提供实际的块设备源(如 iSCSI、FC等)。Cinder 相当于一个管家,当虚拟机需要块设备时,询问管家去哪里获取具体的块设备。它也是插件式的,安装在具体的 SAN 设备里。

Keystone(认证服务)

提供身份验证、权限管理、令牌管理及服务名册管理。要使用云计算的所有用户事先需要在 Keystone 中建立账号和密码,并定义权限。另外,OpenStack 服务(如 Nova、Neutron、Swift、Cinder 等)也要在里面注册,并且登记具体的 API,Keystone 本身也要注册和登记 API。

Glance(镜像服务)

存取虚拟机磁盘镜像文件,Compute 服务在启动虚拟机时需要从这里获取镜像文件。这个组件不同于上面的 Swift 和 Cinder,这两者提供的 存储是在虚拟机里使用的

Heat(编排服务)

自动化部署应用,自动化管理应用的整个生命周期.主要用于Paas。

Ceilometer(计费服务)

收集云平台资源使用数据,用来计费或者性能监控。

Horizon(Dashboard控制台)

提供了一个web网页界面,用户登录后可以做这些操作:管理虚拟机、配置权限、分配 IP 地址、创建租户和用户等。本质上就是通过图形化的 操作界面控制其他服务(如 Compute、Networking 等)。

对于Swift和Cinder可以说明一下,现在主流的存储有三种:文件存储、块存储、对象存储
文件存储最典型的是FTP\NFS服务器,以文件作为传输协议。Ext3、Ext4、NTFS是本地文件存储,NFS、CIFS是网络文件存储(NAS存储);最明显的特征是支持POSIX的文件访问接口:open、read、write、seek、close等;优点:便于扩展&共享;缺点:读写速度慢。

块存储在物理级别的最小读写单位是扇区。块存储可以认为是裸盘,最多包一层逻辑卷(LVM);常见的DAS、FC-SAN、IP-SAN都是块存储,块存储最明显的特征就是不能被操作系统直接读写,需要格式化为指定的文件系统(Ext3、Ext4、NTFS)后才可以访问。优点:读写快(带宽&IOPS);缺点:因为太底层了,不利于扩展。

对象存储将元数据独立了出来,控制节点叫元数据服务器(服务器+对象存储管理软件),里面主要负责存储对象的属性,而其他负责存储数据的分布式服务器叫做OSD,主要负责存储文件的数据部分。

1、各个组件交互描述

openstack 资源查询 openstack主要管理哪些资源_Cinder_05

(1). 通过Dashboard/CLI(OpenStack命令行接口)/自己开发的创建VM的界面,要启动VM,需先到Keystore认证并登录,接着用获得的Token,来访问Nova-API。

(2). Nova-API它是接收用户请求的调用接口,它需要监听在一个套接字上,来通过TCP/IP协议来访问.当Dashboard/CLI发过来请求后,Nova-API会先验证它的Token是否合法,若合法则接收请求。接着向Nova-DB(MySQL)请求查询该VM,Nova-DB从已创建的VM中查询,若有要启动的VM则获取该VM的信息(如:实例名/RAM大小/CPU/磁盘等信息),并将这些信息返回给Nova-API。

(3). 当Nova-API获得的VM的信息后,Nova-API会将该VM信息组织成Hypervisor或Nova-compute上借助Hypervisor来操作VM的特定请求包,并发送给Hypervisor或Nova-compute,由它来负责操作VM,
Nova-API和Nova-compute的交互是异步的,它们中间隔着一个队列。

(4).Nova-API将特定请求包丢入队列后,Nova-Scheduler会获得这些请求,并为该请求调度选择运行节点,完成后,Nova-scheduler会将该调度信息再次丢入队列中,同时向Nova-DB发送VM已启动的更新信息,Nova-DB更新完该VM的状态后,会通知Nova-scheduler。

(5).Nova-compute可以看成是具体的一个物理实体机,它会从队列中获取Nova-scheduler发出的调度信息,并判断是否是自己的任务,若是则获取该启动VM的任务,并生成VM的已在启动中的状态信息,在丢入队列中。

(6).当Nova-conductor发现Nova-compute丢入队列中的VM状态更新信息后,它会读取该信息,并将该信息发给Nova-DB来更新该VM的状态,当Nova-DB更新完成后,Nova-DB会通知Nova-conductor,接着Nova-conductor会将该信息丢入队列,当Nova-compute检测到Nova-conductor丢入的更新成功的信息后,Nova-compute便开始进行接下来的VM启动步骤。

(7).当知道VM更新信息已经完成后,Nova-compute开始向glance-API请求启动该VM的磁盘镜像,这时glance-API会先从通过glance-registry来查询glance-DB看是否存在该VM的磁盘信息,若有则glance-registry会将该磁盘镜像信息返回给glance-API,然后,glance-API会先到Keystore验证该Nova-compute提供的Token是否合法,若合法,则通过该VM磁盘镜像信息到Image Store中去下载该VM启动的磁盘镜像文件,并返回给Nova-compute。

(8).quantum-server: 它是负责为VM创建网络基础设施的,如:构建虚拟网桥,虚拟路由器并添加相应转发规则,甚至是NAT; quantum-server是一个非常繁忙的系统,因为它需要为每个VM创建网络基础设施,但quantum-server并不直接为VM创建网络基础设施,而是将请求丢入到quantum子系统内部的队列中。

(9).相应的quantum-plugin会从quantum子系统内部的队列中读取构建网络设施的信息,并通过查询Quantum-DB来判断那些部分在真正运行VM的Nova-compute上创建(如:创建网桥就需要在本地创建.),那些在quantum上创建,若需要在运行VM的节点上创建,则quantum-plugin会将这些信息丢入内部队列中,Nova-compute上运行的quantum-agent会从quantum内部队列中获得这些信息,并在本地创建相应的网络基础设施,完成后,quantum-agent会将完成信息发送给Quantum-DB来更新该网络基础设施的状态信息。最后,quantum-server会通告Nova-compute网络已经构建完成。

(10).Nova-compute会从获得的启动VM的信息中看是否需要加载它曾经关联过的Block设备,若有则向cinder-API发起请求,cinder-API会先将请求信息发给cinder-volume,由它来查询Cinder-DB看是否存在Nova-compute请求的Block设备,若有则cinder-volume会通知cinder-API,cinder-API在向Keystore发起验证请求,验证通过后,cinder-api会直接将Block设备信息返回给nova-compute,若这是一个创建Block的请求,则cinder-volume会将Block信息丢入cinder内部队列中,由cinder-scheduler从cinder-DB中获取后端存储的信息,并根据要创建Volume的大小,VolumeType,所需具有的特性等信息,从后端存储主机中选出一个最匹配的,并将结果写入cinder队列中,cinder-volume通过该信息在存储节点上调用相应的存储驱动创建volume,创建完成后将这些信息写入cinder-db中,最后cinder-volume告诉cinder-api,cinder-api在返回信息给nove-compute。

对于组件的详细介绍在以下博文算的上很详细了,我就不再描述,大家可以参考看看,有很多
http://blog.itpub.net/18796236/viewspace-1840119/

三、节点架构简单说明

openstack 资源查询 openstack主要管理哪些资源_Cinder_06

OpenStack是由控制节点,计算节点,网络节点,存储节点四大部分组成。(这四个节点也可以安装在一台机器上,单机部署)
控制节点+计算节点+网络节点 这种三节点是OpenStack的最小结构。

其中:
控制节点负责对其余节点的控制,包含虚拟机建立,迁移,网络分配,存储分配等等
计算节点负责虚拟机运行
网络节点负责对外网络与内网络之间的通信
存储节点负责对虚拟机的额外存储管理等

1、节点架构

(1)控制节点架构
控制节点包括以下服务

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

管理支持服务包含MySQL与Qpid两个服务
MySQL:数据库作为基础/扩展服务产生的数据存放的地方

Qpid:消息代理(也称消息中间件)为其他各种服务之间提供了统一的消息通信服务

基础管理服务包含Keystone,Glance,Nova,Neutron,Horizon五个服务
Keystone:认证管理服务,提供了其余所有组件的认证信息/令牌的管理,创建,修改等等,使用MySQL作为统一的数据库。

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

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

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

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

扩展管理服务包含Cinder,Swift,Trove,Heat,Centimeter五个服务
Cinder:提供管理存储节点的Cinder相关,同时提供Cinder在Horizon中的管理面板。

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

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

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

Centimeter:提供对物理资源以及虚拟资源的监控,并记录这些数据,对该数据进行分析,在一定条件下触发相应动作。

控制节点一般来说只需要一个网络端口用于通信/管理各个节点

(2)网络节点架构
网络节点仅包含Neutron服务
Neutron:负责管理私有网段与公有网段的通信,以及管理虚拟机网络之间的通信/拓扑,管理虚拟机之上的防火等等。

网络节点包含三个网络端口
网卡1:用于与控制节点进行通信。

网卡2:用于与除了控制节点之外的计算/存储节点之间的通信。

网卡3:用于外部的虚拟机与相应网络之间的通信。

(3)计算节点架构
计算节点包含Nova,Neutron,Telemeter三个服务

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

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

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

计算节点包含最少两个网络端口
网卡1:与控制节点进行通信,受控制节点统一调配。

网卡2:与网络节点,存储节点进行通信。

(4)存储节点架构
存储节点包含Cinder,Swift等服务

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

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

存储节点包含最少两个网络接口
网卡1:与控制节点进行通信,接受控制节点任务,受控制节点统一调配。

网卡2:与计算/网络节点进行通信,完成控制节点下发的各类任务。

之后我会使用三个节点(控制节点,计算节点,块存储节点)部署openstack,版本我使用两个:pike和ocata

不全,请包涵