OpenStack 常见模块

本文详细介绍了OpenStack云平台,包括其架构及各核心模块。如身份认证服务Keystone涉及用户、项目等概念;镜像模块Glance可存储虚拟机镜像;计算模块Nova用于创建虚拟机;网络模块Neutron提供网络服务;还有块存储Cinder和对象存储Swift等,各模块协同提供云服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、OpenStack 架构

二、控制台 Dashboard 

三、身份认证服务 Keystone 

1)用户(user) 

2)项目(project) 

3)角色(role) 

4)服务(service) 

5)令牌(token) 

6)端点(endpoint) 

四、镜像模块 Glance 

4.1、Glance 主要组件 

1)glance-api 

2)glance-registry 

3)database 

4)storage repository for image files 

4.2、镜像的格式 

1)RAW 

2)QCOW2

3)VHD 

4)VMDK 

5)VDI 

6)ISO 

7)AKI、ARI、AMI

五、计算模块 Nova 

1)Nova-api 服务 

2)Nova-api-metadata 服务 

3)Nova-Compute 服务 

4)Nova-placement-api 服务 

5)Nova-Conductor 模块 

6)Nova-Scheduler 服务 

六、网络模块 Neutron 

1)网络 

2)子网 

3)端口 

4)路由器 

6.1、Linux 虚拟网络 

1)虚拟交换机/网桥 

2)虚拟路由器 

3)namespace 

4)DHCP Server 

5)浮动 IP 地址 

6.2、组网模型 

1)Local 网络 

2)Flat 网络 

3)vlan 网络 

4)VXLAN 网络 

七、块存储 Cinder 

1)Cinder-Api 

2)Cinder-Volume 

3)Cinder-Scheduler 

4)Cinder-Backup 守护进程 

5)消息队列 

6)Database 

八、对象存储 swift 

 1)Swift 的主要特性

2)Swift 和 HDFS 的对比 

3)一致性哈希算法 

4)Swift 组件 

 5)Swift 存储结构


一、OpenStack 架构

 下图体现了 OpenStack 中各个服务之间的相互关系,图中的箭头体现了提供服务方和接受服务方的相对关系。

云计算概念图

OpenStack 由多种服务组成,每种服务具有独立的命名。在整个 OpenStack 架 构中,Keystone 提供认证服务,接收来自用户和服务的认证请求,并对身份进行认证。各个服务之间通过公用的 API 接口进行交互。大部分服务均包含一个 API 进程, 用于侦听 API 请求,根据服务的性质选择处理请求或转发请求。服务进程之间的通讯通过消息队列实现,如 AMQP。 

在部署完成的云系统平台上,用户通过 Dashboard 或 RestAPI 方式在经 KeyStone 模块认证授权后,可以执行创建虚拟机服务。通过 Nova 模块创建虚拟机实例,Nova 调用 Glance 模块提供的镜像服务,然后调用 Neutron 模块提供网络服务。根据需要可以选择给虚拟机增加存储卷,卷功能由 Cinder 模块提供服务。整个过程在 Ceilometer 模块的资源监控下完成。同时 Cinder 提供的 Volume 和 Glance提供的镜像可以通过 Swift 对象存储机制进行保存。 

通过以上解析可以看到 OpenStack 云平台服务的提供主要是依靠 Nova、Glance、 Cinder 和 Neutron 四个核心模块完成的,四个辅助模块 Horizen、 Ceilometer、 Keystone、Swift 提供的访问、监控、权限和对象存储功能。 


二、控制台 Dashboard 

Dashboard(项目名称为 horizon)是一个 Web 接口,使得云平台管理员以及用户可以管理不同的 OpenStack 资源以及服务。Dashboard 通过 Apache 的 mod_wsgi 搭建,并通过 python 模块实现和不同的 OpenStack API 进行交互,从而实现管理目的。Dashboard 是一个用以管理、控制 OpenStack 服务的 Web 控制面板,通过它可以实现绝大多数 OpenStack 的管理任务。如实例、镜像、密匙对,卷等。在上一章节中基于 OpenStack 入门体验的大部分操作,都是基于 Dashboard 操作。通过 Dashboard,管理员无需记忆繁琐复杂的 OpenStack 命令。除此之外,用户还可以在控制面板中使用终端或 VNC 直接访问实例控制台。Dashboard 可以实现以下管理任务。 

  • 实例管理:创建、删除实例,查看终端日志,远程连接实例,管理卷等;
  • 访问与安全管理:创建安全组,管理密匙对,设置浮动 IP 地址等;
  • 偏好设定:对虚拟硬件模板可以进行不同程度的偏好设定;
  • 镜像管理:导入、编辑或删除镜像;
  • 用户管理:创建用户、管理用户、设置配额、查看服务目录等;
  • 卷管理:管理卷和快照;
  • 对象存储处理:创建、删除容器和对象。 

三、身份认证服务 Keystone 

Keystone (OpenStack Identity Service)中主要涉及到如下几个概念。 

1)用户(user) 

在 OpenStack 中,用户是使用 OpenStack 云服务的人、系统或服务。用户可以登录或使用指定的 token 访问云中的资源,并可以被指派到指定的项目或角色。认证服务通过对用户身份的确认,来判断一个请求是否被允许。用户通过认证信息如密码、API Keys 等进行验证。 

2)项目(project) 

项目是各个服务中的一些可以访问的资源集合,用来分组或隔离资源或身份对象。不同服务中,项目所涉及的资源不同。在 Nova 服务中项目可以是云主机,在 Swift 和 Glance 中项目可以是镜像存储,在 Neutron 中项目可以是网络资源。默认情况下,用户总是被绑定到项目中。一个项目中可以有多个用户,一个用户可以属于一个或多个项目。 

3)角色(role) 

角色是一组用户可以访问的资源权限集合,这些资源包含虚拟机、镜像、存储资源等。 用户既可以被添加到全局的角色,也可以被添加到指定项目内的角色中。其区别是,全局的角色适用于所有项目中的资源权限,而项目内的角色只适用于某个项目内的资源权限。 

4)服务(service) 

用户使用云中的资源是通过访问服务的方式实现,OpenStack 中包含许多服务,如提供计算服务的 Nova、提供镜像服务的 Glance 以及提供对象存储服务的 Swift。一个服务可以确认当前用户是否具有访问其资源的权限。但是当一个用户尝试访问其项目内的 service 时,该用户必须知道这个服务是否存在以及如何访问这个服务。 

5)令牌(token) 

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

6)端点(endpoint) 

所谓端点,是指用于访问某个服务的网络地址或 URL。如果需要访问一个服务,则必须知道该服务的端点。在 keystone 中包含一个端点模板,这个模板提供了所有已存在的服务的端点信息。一个端点模板包含一个 URL 列表,列表中的每个 URL 都对应一个服务实例的访问地址,并且具有 public、private 和 admin 这三种权限。其中 public 类型的端点可以被全局访问,private 类型的端点只能被 OpenStack 内部服务访问,admin 类型的端点只能被管理员访问。 

OpenStack 身份认证服务将管理认证、授权以及服务目录整合为一个访问点,同时也是用户需要和 OpenStack 进行交互的第一个服务。一旦认证通过,终端用户就可以使用其身份访问 OpenStack 其他服务。同样的,其他服务也将利用身份认证服务确认来访用户身份是否合法以及是否具备相应的权限。此外,OpenStack 身份认证服务可以集成其他的身份认证管理系统,如 LDAP 等。 

身份认证服务为其他 OpenStack 服务提供验证和授权服务,为所有服务提供终端目录。 此外,提供用户信息但是不在 OpenStack 项目中的服务(如 LDAP 服务)可被整合进先前存在的基础设施中。 

为了从身份认证服务中获益,其他的 OpenStack 服务需要身份认证服务合作完成某个任务。当某个 OpenStack 服务收到来自用户的请求时,该服务发送请求到身份认证服务, 以验证该用户是否具有权限进行此次请求。当安装 OpenStack 身份服务时,用户必须将之注册到其 OpenStack 安装环境的每个服务。身份服务才可以追踪到已经安装哪些 OpenStack 服务,并在网络中定位它们。 

Keystone 是 OpenStack 框架中负责管理身份验证、服务规则和服务令牌功能的模块。 用户访问资源需要验证用户的身份与权限,服务执行操作也需要进行权限检测,这些都需要通过 Keystone 来处理。Keystone 类似一个服务总线, 或者说是整个 Openstack 框架的注册表,其他服务通过 keystone 来注册其服务的 Endpoint,任何服务之间相互的调用,需要经过 Keystone 的身份验证,并获得目标服务的 Endpoint,从而找到目标服务。以创建一 个云主机为例,下图是 keystone 的工作流程图。 

 Keystone 工作流程图

身份认证服务包含以下组件。

  • 服务器:一个中心化的服务器使用 RESTful 接口来提供认证和授权服务。
  • 驱动:驱动或服务后端被整合到集中式服务器中。它们被用来访问 OpenStack 外部仓库的身份信息,并且它们可能已经存在于 OpenStack 被部署在的基础设施(如 SQL 数据库或 LDAP 服务器)中。 
  • 模块:模块运行于使用身份认证服务的 OpenStack 组件的地址空间中,这些模块拦截服务请求,获取用户凭据,并将它们送入中央服务器以寻求授权。使用 Python Web 服务器网关接口,可以实现中间件模块和 OpenStack 组件间的整合。 

四、镜像模块 Glance 

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

在 OpenStack 环境中,镜像是用于在计算节点生成虚拟机。脱离了镜像服务,就无法创建虚拟机,所以镜像服务是 OpenStack 的一个核心服务。 

4.1、Glance 主要组件 

Glance 镜像服务主要涉及到以下组件。 

1)glance-api 

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

2)glance-registry 

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

3)database 

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

4)storage repository for image files 

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

4.2、镜像的格式 

Glance 支持多种镜像格式,包括磁盘格式和容器格式。OpenStack 中可以支持多种虚拟化的技术,如 KVM、XenServer、Hyper-V 和 VMware 等。用户在上传镜像时,需要指定上传镜像文件的格式。除了磁盘格式,在 Glance 中还有容器的格式。一般在上传镜像时只需指定容器格式为 bare,即为空。因为 Glance 中并没有真正使用到容器格式。容器格式用来表示虚拟机镜像文件是否包含了元数据,例如 OVF 格式。下面列出了 Glance 中常用的几种镜像文件格式。 

1)RAW 

RAW 是一种没有格式或裸格式的磁盘文件类型,RAW 对数据不做任何修饰和处理,直接保存最原始的状态,所以在性能方面非常出色。由于 RAW 格式保存原始数据,因此更容易和其他镜像格式进行转换。 

2)QCOW2

QCOW2 是 QCOW 的升级版本,其主要特性是磁盘文件大小可以动态按需增长,并且不会占用所有的实际磁盘空间大小。例如创建了 100GB 的 QCOW2 格式的磁盘,而实际只保存了 2GB 数据,那么将只占用了实际物理磁盘的 2GB 空间。与 RAW 相比,使用这种格式可以节省磁盘容量。 

3)VHD 

VHD 是微软公司产品使用的磁盘格式。Virtual PC(微软早期虚拟化产品)和 Hyper-V 使用的就是 VHD 格式。VirtualBox 也提供了对 VHD 的支持。如需在 OpenStack 上使用 Hyper-V 类型的虚拟化,就应上传 VHD 格式的镜像文件。 

4)VMDK 

VMDK 是 VMware 公司产品使用的磁盘格式。目前也是一个开放的通用格式,除了 VMware 自家的产品外,QEMU 和 VirtualBox 也提供了对 VMDK 格式的支持。 

5)VDI 

VDI 是 Oracle

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值