大家好,我是SuieKa。,,,不想说了直接进入正题吧,写的不好,主要是记知识点。
入门了解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,并不了解的版本情况,他的第一个版本是Austin,往后看居然是以26个字母为首排的。。。目前是2020年,发行的版本到了Ussuri最新版,Victoria还在开发中。在官网有中文文档,目前中文文档只有两个版本的说明,也是奇了怪了哈:
正是由于OpenStack是一个云平台管理的项目工具,本身也是由各大组件组成,OpenStack的各大组件有哪些嫩?
(2)OpenStack组件以及功能作用
OpenStack 的组件形成关系图如下:
不止图上看淡的这些,还有很多呢,只不过是除开了核心组件的。
其中,有这几个重要组件(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、各个组件交互描述
(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的最小结构。
其中:
控制节点负责对其余节点的控制,包含虚拟机建立,迁移,网络分配,存储分配等等
计算节点负责虚拟机运行
网络节点负责对外网络与内网络之间的通信
存储节点负责对虚拟机的额外存储管理等
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
不全,请包涵