OpenStack核心组件-glance

一、glance介绍

Glance 是 Openstack 项目中负责镜像管理的模块,其功能包括虚拟机镜像的查找、注册和检索等。 Glance 提供 Restful API 可以查询虚拟机镜像的 metadata 及获取镜像。Glance可以将镜像保存到多种后端存储上,比如简单的文件存储或者对象存储。

二、什么是 Image 以及为什么要用 Image?

在传统 IT 环境下,安装一个系统要么从安装 CD 从头安装,这两种方式有如下几个问题:

1、如果要安装的系统多了效率就很低

2、时间长,工作量大

3、安装完还要进行手工配置,比如安装其他的软件,设置 IP 等

4、备份和恢复系统不灵活

Image的解决方式:

Image 是一个模板,里面包含了基本的操作系统 和其他的软件。 举例来说,有家公司需要为每位员工配置一套办公用的系统,一般需要一个 Win7 系统再加office 软件。 OpenStack 是这么做的:

1、先手工安装好这么一个虚机

2、然后对虚机执行 snapshot,这样就得到了一个 image

3、当有新员工入职需要办公环境时,立马启动一个或多个该 image 的 instance(虚机)就可以

了。 在这个过程中,第 1 步跟传统方式类似,需要手工操作和一定时间,但第 2、3 步非常快,全自 动化,一般都是秒级别。

三、glance的架构图:

glance-api

glance-api 是系统后台运行的服务进程。 对外提供 REST API,响应 image 查询、获取和存储的调用。 glance-api 不会真正处理请求。 如果操作是与 image metadata(元数据)相关,glance-api 会 把请求转发给 glance-registry; 如果操作是与 image 自身存取相关,glance-api 会把请求转 发给该 image 的 store backend。

glance-registry

glance-registry 是系统后台运行的服务进程。 负责处理和存取 image 的 metadata,例如image 的大小和类型。

Store backend

Glance 自己并不存储 image。 真正的 image 是存放在 backend 中的。 Glance 支持多种 backend,包括: 1、A directory on a local file system(这是默认配置) 2、GridFS      3、Ceph RBD    4、Amazon S3     5、Sheepdog 等等。

glance的DB模块

存储的是镜像的元数据,可以选用MySQL、mariaDB、SQLite等数据库。镜像的元数据是通过glance-registry存放在数据库中。镜像本身(chunk 块数据)是通过glance的存储驱动存储在后端的各种存储系统中。

四、Glance 支持的image格式:

五、镜像访问权限

public公共的:可以被所有的项目使用
private私有的:只有被镜像所有者所在的项目使用
shared共享的:一个非共有的镜像,可以共享给其他项目,通过项目成员(member-*)操作来实现的
projected(受保护的):这种镜像不能被删除

六、使用CLI创建镜像:

上传镜像的方式:

openstack image create "cirros" --file cirros-0.3.3-x86_64-disk.img.img --disk-format
qcow2 --container-format bare --public

七、glance的工作流程:

首先是对客户端的安全认证流程:openstack的操作都需要经过keystone进行身份认证,并授权,glance也不例外,授权成功再去请求glance服务,glance服务接收到外部请求后,会去keystone进行认证,此请求是否已授权,认证通过后,才会将请求传到后端处理。
glance domain controller 是API和后端功能模块的中间件,相当于调度器,作用是将外部服务分发到下面的各个功能层去处理。

调度器的子功能模块:
auth授权:控制镜像的访问权限;
notifier消息通知:将镜像变化信息和错误添加到 消息队列
policy规则定义:定义镜像操作的访问权限,在policy.json中定义
quota限额:限制上传镜像的大小
location定位:通过glance store 与后台存储进行交互,指明镜像存储位置,还可以检查位置的URL是否正确
DB数据库:将镜像转换为相应的格式以存储在数据库中,并将从数据库读取的信息转换为可以操作的镜像对象。

后端有两种服务类型:一种是处理关于元数据的请求,另一种是关于镜像数据的请求。由调度器将请求分配到对应的服务模块。当请求元数据时,glanceDB会与调度器进行交互提供服务,中间还可以通过 registry layer 注册层进行一个安全交互。glanceDB存储着元数据信息。当请求的是关于镜像本身服务时,glance store可以提供一个统一的接口访问后端的存储,并且有一个驱动模块可以调用整个库与外部服务进行交互。后端的存储有多种存储系统,对象存储、文件存储等。
 

猜你喜欢

转载自blog.csdn.net/m0_73901077/article/details/134563265