初学Openstack必要了解的基础理论

初学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张图片

初学Openstack必要了解的基础理论_第2张图片

三:Openstack常见服务模块

1、Keystone (身份认证模块)

负责管理身份验证、服务规则和服务令牌功能的模块。

涉及六个概念:

  • 用户

使用openstack云服务的人、系统或服务。 当User对OpenStack进行访问时,Keystone会对其身份进行验证 。

  • 项目

各个服务中的一些可以访问的资源集合,用来分组或隔离资源,不同的服务,项目所涉及的资源不同。在Nova服务中项目可以是云主机,在Swift和Glance中项目可以是镜像存储,在Neutron中项目可以是网络资源。一个项目可以有多个用户,一个用户可以是属于一个或多个项目。

  • 角色

是一组用户可以访问的资源权限集合,资源包括虚拟机、镜像、存储资源等。

  • 服务

用户使用云中的资源是通过访问服务的方式实现。Openstack中包含许多服务,如:提供计算服务的Nova、提供镜像服务的Glance、提供对象存储服务的Swift 。一个服务可以确认当前用户是否具有访问其资源的权限。

  • 令牌

是一串数字字符串,用于访问openstack服务的api及资源。一个令牌可在特定时间内生效,并可以在任意时间释放。在Keystone中主要是引入令牌机制来保护用户对资源的访问。

  • 端点

是指用于访问某个服务的网络地址或URL 。如需要访问一个服务,则必须知道该服务的端点。

初学Openstack必要了解的基础理论_第3张图片

2、Dashboard(控制台)

​ Dashboard(项目名称为 horizon)是一个Web接口,使得云平台管理员以及用户可以管理不同的OpenStack资源以及服务。Dashboard是一个用以管理、控制OpenStack服务的Web控制面板,通过它可以实现绝大多数OpenStack的管理任务。如实例、镜像、密匙对,卷等。通过 Dashboard,管理员无需记忆繁琐复杂的OpenStack命令。除此之外,用户还可以在控制面板中使用终端或VNC直接访问实例控制台。

Dashboard可以实现以下管理任务:

  • 实例管理:创建、删除实例,查看终端日志,远程连接实例,管理卷等

  • 访问与安全管理:创建安全组,管理密匙对,设置浮动IP地址等

  • 偏好设定:对虚拟硬件模板可以进行不同程度的偏好设定

  • 镜像管理:导入、编辑或删除镜像

  • 用户管理:创建用户、管理用户、设置配额、查看服务目录等

  • 卷管理:管理卷和快照

  • 对象存储处理:创建、删除容器和对象

3、Glance(镜像模块)

​ 镜像服务允许用户发现、注册和获取虚拟机镜像。它提供了一个 REST API,允许查询虚拟机镜像的元数据,并获取一个现存的镜像。可以将虚拟机镜像存放到各种位置,从简单的文件系统到对象存储系统,如OpenStack Swift项目,默认是存储在本地文件系统上的。在生产环境中这个模块本身不存储大量的数据,需要挂载后台存储 swift来存放实际的镜像数据。
​ 在OpenStack环境中,镜像是用于在计算节点生成虛拟机。脱离了镜像服务,就无法创建虚拟机,所以镜像服务是Openstock的一个核心服务。

  • #### Glance主要组件:

  • glance-api

用于接收镜像API的调用,诸如镜像发现、恢复以及存储等。作为一个后台进程, glance-api对外提供 REST API接口,响应用户发起的镜像查询、获取和存储的调用。

  • glance- registry

用于存储、处理和恢复镜像的元数据,元数据包括镜像的的大小和类型等属性, registry是一个内部服务接口,不建议暴露给普通用户。

  • database

用于存放镜像的元数据,可以根据需要选择数据库,如 MySQL、 SQLite等。

  • storage repository for image files

一般情况下, glance并不需要存储任何镜像,而是将镜像存储在后端仓库中。 Glance支持多种 repository,主要包括对象存储 Swift、块存储 Cinder、 VMware的ESX/ESXi或者vCenter、亚马逊的S3、HTTP可用服务器、Ceph等。

  • #### 镜像的格式:

  • RAW

是一种裸格式的磁盘文件类型,RAW对数据不做任何处理,直接保存原始状态,更容易与其他镜像格式进行转换。

  • QCOW2

是QCOW的升级版本,主要特性是磁盘文件大小可以动态按需增长,不会占用所有的实际磁盘空间大小。与RAW相比,节省了磁盘容量。

  • VHD

微软公司产品使用的磁盘格式。

  • VMDK

是VMware公司产品使用的磁盘格式,目前是一个开放的通用格式。

  • VDI

是Oracle公司的VirtualBox虚拟软件使用的格式。

  • ISO

是一种存档数据文件在光盘上的格式。

  • AKI、ARI、AMI

Amazon公司的AWS使用的镜像格式。

4、Nova(计算模块)

​ Nova是负责提供计算资源的模块,也是OpenStack中的核心模块,其主要功能是负责虚拟机实例的生命周期管理、网络管理、存储卷管理、用户管理以及其他的相关云平台管理功能 。Nova组件安装在控制节点和计算节点上。

  • ##### Nova的主要组件

  • Nova-api服务

接收和响应来自最终用户的计算API请求,对外提供一个与云基础设施交互的接口,也是外部可用于管理基础设施的唯一组件 。

  • Nova-api-metadata服务

接收来自虚拟机发送的元数据请求。Nova-api-metadata服务一般在安装Nova-Network服务的多主机模式下使用。

  • Nova-Computer服务

持续工作的守护进程,通过 Hypervisor的API来创建和销毁虚拟机实例 。

  • Nova-Scheduler服务

接收一个来自队列的运行虚拟机实例请求,然后决定在哪台计算服务器主机来运行该虚拟机。通过恰当的调度算法从可用资源池获得一个计算服务。Nova- Scheduler服务将根据负载、内存、可用域的物理距离、CPU构架等信息,并运行调度算法,最终做出调度决策。

  • Nova-placement-api服务

Nova- placement-api用于追踪记录资源提供者目录和资源使用情况,这些资源包括计算、存储以及IP地址池等 。

  • Nova-Conductor模块

作用于Nova- Compute服务与数据库之间,避免了由Nova- Compute服务对云数据库的直接访问。它可以横向扩展。不要将它部署在运行Nova- Compute服务的主机节点上 。

总结: OpenStack计算模块Nova中的各个组件是以数据库和队列为中心进行通信的 。

5、Neutron(网络模块)

​ OpenStack早期的网络模块是Nova- Network,而 Neutron则是Nova- Network的更新换代产品,也是目前 OpenStack重要组件之一 。

  • ##### 在OpenStack环境中对网络的抽象主要有几种形式

  • 虚拟交换机/网桥

  • OpenVSwitch

  • 虚拟路由器

  • namespace

  • DHCP server

  • 浮动IP地址

  • #### 组网模型

Neutron提供多种组网模型供不同租户搭建各种网络拓扑。

网络拓扑类型:

  • Local 网络

不具备vlan特性,不能对二层网络进行隔离;

同一个local网络的虚拟机实例会连接到相同的虚拟交换机上,instance之间可以通信;

虚拟交换机没有帮的那个任何物理网卡,无法于宿主机之外的网络通信,也就是无法于自身namespace之外的设备通信。

初学Openstack必要了解的基础理论_第4张图片

  • Flat 网络连接路由器和外部网络

flat组网模型不支持vlan,属于扁平化的网络模型;

linux bridge直接绑定物理网卡并连接虚拟机,每个flat都会独占一个物理网卡;

该物理网卡不能配置IP地址,所有连接到此网络的虚拟机共享一个私有IP网段。

初学Openstack必要了解的基础理论_第5张图片

Flat的缺点:
  • 存在单一网络瓶颈

  • 缺乏可伸缩性

  • 缺乏合适的多租户隔离

  • Vlan 网络

openstack通过vlan网络解决了都租户之间的网络隔离问题 。

缺点:

vlan 的数量限制:4096个vlan数量不能大规模满足云计算数据中心的需求;

物理网络基础设施的限制:基于IP子网的区域划分限制了需要二层网络连通性的应用负载的部署;

TOR交换机mac表耗尽:虚拟化及节点过多的流量导致更多的mac地址表条目。

  • VXlan网络

VXlan网络使用的是隧道技术,是目前openstack广泛使用的网络技术。

相比之前的vlan模型,VXlan的优点 :
  • 租户数量从4K增加到了16M;

  • 租户内部通信可以跨越任意IP网络,支持虚拟机任意迁移;

  • 一般来说,每个租户逻辑上都有一个网关实例,IP地址可以在租户间进行复用;

  • 能够结合SDN技术对流量进行优化。

初学Openstack必要了解的基础理论_第6张图片

6、Cinder(块存储)

​ 块存储服务为OpenStack中的实例提供持久的存储,块存储提供基础设施,用于管
理卷以及和OpenStack计算服务交互,为实例提供卷、快照、卷类型等功能。站在实例的角
度,挂载的每个卷都是一-块独立的硬盘。Cinder提供了从创建卷到删除卷整个生命周期的
管理。

具体功能:

● 提供RESTAPI接口,使用户能够查询和管理卷、卷快照以及卷类型;

● 协调卷的创建请求, 合理优化存储资源的分配;

● 通过驱动架构支持多种后端存储方式,包括LVM、NFS. Ceph和其他诸如EMC、IBM
等商业存储产品和方案。

  • ##### Cinder服务组件

  • Cinder-api

Cinder-api用来接受API请求,并将其路由到 Cinder-Volume执行。

  • Cinder-Volume

用来与块存储服务和 Cinder- Scheduler进程进行直接交互。 Cinder- Volume服务响应送到块存储服务的读写请求来维持状态,它也可以和多种存储提供者在驱动架构下进行交互。当用户请求一个存储资源时,由 Cinder-API负责接受请求, Cinder- Scheduler负责调度资源,而真正执行存储任务的是 Cinder-Volume,这样的工作机制使得存储架构非常容易扩展。当存储资源不足时,可以增加存储节点(运行 Cinder-Volume)。当客户的请求量太大调度不过来时,可以增加调度(运行Cinder- Scheduler)。

  • Cinder- Scheduler

守护进程会选择最优存储节点来创建卷,其工作机制与Nova- Scheduler类似。当需要创建卷时, Cinder- Scheduler根据存储节点的资源使用情况选择一个最合适的节点来创建卷。

  • Cinder- Backup守护进程

Cinder- Backup服务提供任何种类备份卷到一个备份存储提供者,它与多种存储提供者在驱动架构下进行交互。

  • 消息队列

作用是在块存储的进程之间路由信息。 Cinder各个子服务通过消息队列实现进程间通信和相互协作。

你可能感兴趣的:(Openstack)