技术分享
初学Openstack必要了解的基础理论
2020-08-05
初学Openstack必要了解的基础理论
前言:
Openstack是一个云平台管理的项目,不是一个软件,是由几个主要的组件组合起来完成一些具体的工作。Openstack是一个旨在为公共及私有云的建设与管理提供软件的开源项目 。 Openstack是由 Rackspace和NASA共同开发的云计算平台 ,包括两个主要模块:Nova和 Swift 。
(请做好准备,本篇博客全部是文字哦!!!)
一:Openstack的介绍
1、Opestack 特性
快速:OpenStack安装部署所需的时间少
灵活:OpenStack获得的各大厂商的支持,兼容性和适用性强,OpenStack兼容其他公有云,方便用户进行数据迁移
开源:OpenStack的使用成本相对低廉,还有源源不断的更新(频率为半年)
可扩展性:OpenStack 采用模块化的设计,支持主流发行版本的linux系统,可以通过横向扩展,增加节点、添加资源
2、Openstack节点类型
是openstack中实现数据中心控制的节点,所谓控制就是管理,管理openstack的所有服务组件。这些组件不管在哪个节点上,都需要在控制节点上完成类似于注册的工作。
控制节点必须安装三种类型的软件:
(1)底层软件
底层软件相对于openstack服务来说,需要为openstack组件来提供服务。底层软件有DB软件、消息队列软件、Menorycache和Etcd等。
(2)核心组件
控制节点必须安装三个openstack的核心组件:Keystone和Glance是完整的安装在控制节点上的,Nova安装了一部分,Nova的安装是为了管理计算节点的计算服务。
(3)其他可选组件
openstack还支持其他可选组件,比如集群中有存储节点,那么在openstack上需要管理存储节点和对应的服务组件等,类似于核心组件Nova。
控制节点服务:
(1)管理支持服务
MySQL:数据库作为基础/扩展服务产生的数据存放的地方
Qpid:消息代理(也称消息中间件)为其他各种服务之间提供了统一的消息通信服务
(2)基础管理服务
Keystone:认证管理服务,提供了其余所有组件的认证信息/令牌的管理,创建,修改等等,使用MySQL作为统一的数据库
Glance:镜像管理服务,提供了对虚拟机部署的时候所能提供的镜像的管理,包含镜像的导入,格式,以及制作相应的模板
Nova:计算管理服务,提供了对计算节点的Nova的管理,使用Nova-API进行通信
Neutron:网络管理服务,提供了对网络节点的网络拓扑管理,同时提供Neutron在Horizon的管理面板
Horizon:控制台服务,提供了以Web的形式对所有节点的所有服务的管理,通常把该服务称为DashBoard
(3)扩展管理服务
Cinder:提供管理存储节点的Cinder相关,同时提供Cinder在Horizon中的管理面板
Swift:提供管理存储节点的Swift相关,同时提供Swift在Horizon中的管理面板
Trove:提供管理数据库节点的Trove相关,同时提供Trove在Horizon中的管理面板
Heat:提供了基于模板来实现云环境中资源的初始化,依赖关系处理,部署等基本操作,也可以解决自动收缩,负载均衡等高级特性
Centimeter:提供对物理资源以及虚拟资源的监控,并记录这些数据,对该数据进行分析,在一定条件下触发相应动作
网络节点只有Neutron组件,网络节点上的neutron安装core plugin(核心插件)ML2 和service plugin(服务插件)L3 service,具体的 Service Plugin可以根据需求选择。
网络节点包含三个网络端口:
eth0:用于与控制节点进行通信
eth1:用于与除了控制节点之外的计算/存储节点之间的通信
eth2:用于外部的虚拟机与相应网络之间的通信
安装存储组件的节点, 一般有代表性的 Cinder(块存储)和 Swift(对象存储 )。
存储节点服务:
(1)Cinder:块存储服务,提供相应的块存储,简单来说,就是虚拟出一块磁盘,可以挂载到相应的虚拟机之上,不受文件系统等因素影响,对虚拟机来说,这个操作就像是新加了一块硬盘,可以完成对磁盘的任何操作,包括挂载,卸载,格式化,转换文件系统等等操作,大多应用于虚拟机空间不足的情况下的空间扩容等。
(2)Swift:对象存储服务,提供相应的对象存储,简单来说,就是虚拟出一块磁盘空间,可以在这个空间当中存放文件,也仅仅只能存放文件,不能进行格式化,转换文件系统,大多应用于云磁盘/文件。
包含Nova部分组件和 Neutron部分组件Nova- compute.,Neutron agent
计算节点包含三个服务:
(1)基础服务
Nova:提供虚拟机的创建,运行,迁移,快照等各种围绕虚拟机的服务,并提供API与控制节点对接,由控制节点下发任务
Neutron:提供计算节点与网络节点之间的通信服务
(2)扩展服务
Telmeter:提供计算节点的监控代理,将虚拟机的情况反馈给控制节点,是Centimeter的代理服务
二:OpenStack架构
OpenStack 云平台服务的提供主要是依靠 Nova、Glance、Cinder 和 Neutron 四个核心模块完成的,四个辅助模块 Horizen、Ceilometer、Keystone、Swift 提供的访问、监控、权限和对象存储功能 。
OpenStack由多种服务组成,每种服务具有独立的命名。在整个OpenStack架构中,Keystoneopenstack 所有服务通过keystone组件进行身份验证,接收来自用户和服务的认证请求,并对其身份进行认证。各个服务之间通过公用的API接口进行交互。大部分服务均包含一个API进程,用于侦听API请求,根据服务的性质选择处理请求或转发请求,服务进程之间的通讯通过消息队列实现。
三:Openstack常见服务模块
1、Keystone (身份认证模块)
负责管理身份验证、服务规则和服务令牌功能的模块。
涉及六个概念:
用户
使用openstack云服务的人、系统或服务。 当User对OpenStack进行访问时,Keystone会对其身份进行验证 。
项目
各个服务中的一些可以访问的资源集合,用来分组或隔离资源,不同的服务,项目所涉及的资源不同。在Nova服务中项目可以是云主机,在Swift和Glance中项目可以是镜像存储,在Neutron中项目可以是网络资源。一个项目可以有多个用户,一个用户可以是属于一个或多个项目。
角色
是一组用户可以访问的资源权限集合,资源包括虚拟机、镜像、存储资源等。
服务
用户使用云中的资源是通过访问服务的方式实现。Openstack中包含许多服务,如:提供计算服务的Nova、提供镜像服务的Glance、提供对象存储服务的Swift 。一个服务可以确认当前用户是否具有访问其资源的权限。
令牌
是一串数字字符串,用于访问openstack服务的api及资源。一个令牌可在特定时间内生效,并可以在任意时间释放。在Keystone中主要是引入令牌机制来保护用户对资源的访问。
端点
是指用于访问某个服务的网络地址或URL 。如需要访问一个服务,则必须知道该服务的端点。
2、Dashboard(控制台)
Dashboard(项目名称为 horizon)是一个Web接口,使得云平台管理员以及用户可以管理不同的OpenStack资源以及服务。Dashboard是一个用以管理、控制OpenStack服务的Web控制面板,通过它可以实现绝大多数OpenStack的管理任务。如实例、镜像、密匙对,卷等。通过 Dashboard,管理员无需记忆繁琐复杂的OpenStack命令。除此之外,用户还可以在控制面板中使用终端或VNC直接访问实例控制台。
Dashboard可以实现以下管理任务:
实例管理:创建、删除实例,查看终端日志,远程连接实例,管理卷等
访问与安全管理:创建安全组,管理密匙对,设置浮动IP地址等
偏好设定:对虚拟硬件模板可以进行不同程度的偏好设定
镜像管理:导入、编辑或删除镜像
用户管理:创建用户、管理用户、设置配额、查看服务目录等
卷管理:管理卷和快照
对象存储处理:创建、删除容器和对象
3、Glance(镜像模块)
镜像服务允许用户发现、注册和获取虚拟机镜像。它提供了一个 REST API,允许查询虚拟机镜像的元数据,并获取一个现存的镜像。可以将虚拟机镜像存放到各种位置,从简单的文件系统到对象存储系统,如OpenStack Swift项目,默认是存储在本地文件系统上的。在生产环境中这个模块本身不存储大量的数据,需要挂载后台存储 swift来存放实际的镜像数据。
在OpenStack环境中,镜像是用于在计算节点生成虛拟机。脱离了镜像服务,就无法创建虚拟机,所以镜像服务是Openstock的一个核心服务。
用于接收镜像API的调用,诸如镜像发现、恢复以及存储等。作为一个后台进程, glance-api对外提供 REST API接口,响应用户发起的镜像查询、获取和存储的调用。
用于存储、处理和恢复镜像的元数据,元数据包括镜像的的大小和类型等属性, registry是一个内部服务接口,不建议暴露给普通用户。
用于存放镜像的元数据,可以根据需要选择数据库,如 MySQL、 SQLite等。
一般情况下, glance并不需要存储任何镜像,而是将镜像存储在后端仓库中。 Glance支持多种 repository,主要包括对象存储 Swift、块存储 Cinder、 VMware的ESX/ESXi或者vCenter、亚马逊的S3、HTTP可用服务器、Ceph等。
是一种裸格式的磁盘文件类型,RAW对数据不做任何处理,直接保存原始状态,更容易与其他镜像格式进行转换。
是QCOW的升级版本,主要特性是磁盘文件大小可以动态按需增长,不会占用所有的实际磁盘空间大小。与RAW相比,节省了磁盘容量。
微软公司产品使用的磁盘格式。
是VMware公司产品使用的磁盘格式,目前是一个开放的通用格式。
是Oracle公司的VirtualBox虚拟软件使用的格式。
是一种存档数据文件在光盘上的格式。
Amazon公司的AWS使用的镜像格式。
4、Nova(计算模块)
Nova是负责提供计算资源的模块,也是OpenStack中的核心模块,其主要功能是负责虚拟机实例的生命周期管理、网络管理、存储卷管理、用户管理以及其他的相关云平台管理功能 。Nova组件安装在控制节点和计算节点上。
接收和响应来自最终用户的计算API请求,对外提供一个与云基础设施交互的接口,也是外部可用于管理基础设施的唯一组件 。
接收来自虚拟机发送的元数据请求。Nova-api-metadata服务一般在安装Nova-Network服务的多主机模式下使用。
持续工作的守护进程,通过 Hypervisor的API来创建和销毁虚拟机实例 。
接收一个来自队列的运行虚拟机实例请求,然后决定在哪台计算服务器主机来运行该虚拟机。通过恰当的调度算法从可用资源池获得一个计算服务。Nova- Scheduler服务将根据负载、内存、可用域的物理距离、CPU构架等信息,并运行调度算法,最终做出调度决策。
Nova- placement-api用于追踪记录资源提供者目录和资源使用情况,这些资源包括计算、存储以及IP地址池等 。
作用于Nova- Compute服务与数据库之间,避免了由Nova- Compute服务对云数据库的直接访问。它可以横向扩展。不要将它部署在运行Nova- Compute服务的主机节点上 。
总结: OpenStack计算模块Nova中的各个组件是以数据库和队列为中心进行通信的 。
5、Neutron(网络模块)
OpenStack早期的网络模块是Nova- Network,而 Neutron则是Nova- Network的更新换代产品,也是目前 OpenStack重要组件之一 。
##### 在OpenStack环境中对网络的抽象主要有几种形式
虚拟交换机/网桥
OpenVSwitch
虚拟路由器
namespace
DHCP server
浮动IP地址
#### 组网模型
Neutron提供多种组网模型供不同租户搭建各种网络拓扑。
网络拓扑类型:
不具备vlan特性,不能对二层网络进行隔离;
同一个local网络的虚拟机实例会连接到相同的虚拟交换机上,instance之间可以通信;
虚拟交换机没有帮的那个任何物理网卡,无法于宿主机之外的网络通信,也就是无法于自身namespace之外的设备通信。
flat组网模型不支持vlan,属于扁平化的网络模型;
linux bridge直接绑定物理网卡并连接虚拟机,每个flat都会独占一个物理网卡;
该物理网卡不能配置IP地址,所有连接到此网络的虚拟机共享一个私有IP网段。
Flat的缺点:
openstack通过vlan网络解决了都租户之间的网络隔离问题 。
缺点:
vlan 的数量限制:4096个vlan数量不能大规模满足云计算数据中心的需求;
物理网络基础设施的限制:基于IP子网的区域划分限制了需要二层网络连通性的应用负载的部署;
TOR交换机mac表耗尽:虚拟化及节点过多的流量导致更多的mac地址表条目。
VXlan网络使用的是隧道技术,是目前openstack广泛使用的网络技术。
相比之前的vlan模型,VXlan的优点 :
租户数量从4K增加到了16M;
租户内部通信可以跨越任意IP网络,支持虚拟机任意迁移;
一般来说,每个租户逻辑上都有一个网关实例,IP地址可以在租户间进行复用;
能够结合SDN技术对流量进行优化。
6、Cinder(块存储)
块存储服务为OpenStack中的实例提供持久的存储,块存储提供基础设施,用于管
理卷以及和OpenStack计算服务交互,为实例提供卷、快照、卷类型等功能。站在实例的角
度,挂载的每个卷都是一-块独立的硬盘。Cinder提供了从创建卷到删除卷整个生命周期的
管理。
具体功能:
● 提供RESTAPI接口,使用户能够查询和管理卷、卷快照以及卷类型;
● 协调卷的创建请求, 合理优化存储资源的分配;
● 通过驱动架构支持多种后端存储方式,包括LVM、NFS. Ceph和其他诸如EMC、IBM
等商业存储产品和方案。
Cinder-api用来接受API请求,并将其路由到 Cinder-Volume执行。
用来与块存储服务和 Cinder- Scheduler进程进行直接交互。 Cinder- Volume服务响应送到块存储服务的读写请求来维持状态,它也可以和多种存储提供者在驱动架构下进行交互。当用户请求一个存储资源时,由 Cinder-API负责接受请求, Cinder- Scheduler负责调度资源,而真正执行存储任务的是 Cinder-Volume,这样的工作机制使得存储架构非常容易扩展。当存储资源不足时,可以增加存储节点(运行 Cinder-Volume)。当客户的请求量太大调度不过来时,可以增加调度(运行Cinder- Scheduler)。
守护进程会选择最优存储节点来创建卷,其工作机制与Nova- Scheduler类似。当需要创建卷时, Cinder- Scheduler根据存储节点的资源使用情况选择一个最合适的节点来创建卷。
Cinder- Backup服务提供任何种类备份卷到一个备份存储提供者,它与多种存储提供者在驱动架构下进行交互。
作用是在块存储的进程之间路由信息。 Cinder各个子服务通过消息队列实现进程间通信和相互协作。

- 标签:
-
技术分享