glance镜像组件介绍
目录
什么是 Image 以及为什么要用 Image?
什么是Glance镜像服务
Glance几个重要概念
Glance的基本架构和三大核心模块
Glance数据库设计
Glance的配置文件
Glance的日志文件
要理解 Image Service 先得搞清楚什么是 Image 以及为什么要用 Image?
在传统 IT 环境下,安装一个系统是要么从安装 CD 从头安装,要么用 Ghost 等克隆工具恢复。这两种方式有如下几个问题:

如果要安装的系统多了效率就很低
时间长,工作量大
安装完还要进行手工配置,比如安装其他的软件,设置 IP 等
备份和恢复系统不灵活

云环境下更高效的解决方案?
云环境下需要更高效的解决方案,这就是 Image。
Image 是一个模板,里面包含了基本的操作系统和其他的软件。

举例来说,有家公司需要为每位员工配置一套办公用的系统,一般需要一个 Win7 系统再加 MS office 软件。OpenStack 是这样的:

先手工安装好这么一个虚机;
然后对虚机执行 snapshot,这样就得到了一个 image;
当有新员工入职需要办公环境时,立马启动一个或多个该 image 的 instance(虚机)就可以了。

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

比如公司新上了一套 OA 系统,每个员工的 PC 上都得有客户端软件。
那么可以在某个员工的虚机中手工安装好 OA 客户端,然后执行 snapshot ,得到新的 image,以后就直接使用新 image 创建虚机就可以了。

另外,snapshot 还有备份的作用,能够非常方便的恢复系统。

什么是Glance镜像服务?
Glance是OpenStack镜像服务,用来注册、登陆和检索虚拟机镜像。Glance服务提供了一个REST API,使你能够查询虚拟机镜像元数据和检索的实际镜像。通过镜像服务提供的虚拟机镜像可以存储在不同的位置,从简单的文件系统对象存储到类似OpenStack对象存储系统。

默认情况下,上传的虚拟机镜像存储路径为
/var/lib/glance/images/

Glance负责镜像文件的注册、查询和存储管理。

glance-api 负责接受Image API请求,处理image查询和存储等
glance-registry 负责存储,处理和检索image的元数据(大小,类型等)
使用数据库来存储image文件的元数据
支持不同的存储仓库来存储image文件,包括swift,本地磁盘,RADOS块设备,Amazon S3,HTTP

Glance几个重要概念
(1)镜像标识(image identify)
镜像使用URI作为唯一标识。URL符合以下格式:
/images/

一般glance部署完毕,OpenStack默认的将用户上传的镜像文件保存在/var/lib/glance/images中,可以在这个文件路径下,查看glance管理的镜像文件。下面就是在配置glance以后该路径下的一个镜像文件。

root@controller:/# cd /var/lib/glance/images
root@controller:/var/lib/glance/images# ls
40056951-e712-47f2-b91b-a3c03cd37dbe

(2)镜像状态(image status)
镜像状态是glance管理镜像重要的一个内容,glance组件给整个OpenStack提供的镜像查询和检索,glance可以通过虚拟机镜像的状态感知某一镜像的可用状态。一般来讲,OpenStack中镜像的状态分成以下几种:

Queued:Queued状态这是一种初始化镜像状态,在镜像文件刚刚被创建,在glance数据库中已经保存了镜像标示符,但还没有上传至glance中,此时的glance对镜像数据没有任何描述,其存储空间为0。

Saving:Saving状态是镜像的原始数据在上传中的一种过度状态,它产生在镜像数据上传至glance的过程中,一般来讲,glance收到一个image请求后,才将镜像上传给glance。

Active:Active状态是当镜像成功上传完毕以后的一种状态,它表明glance中可用的镜像。

Killed:Killed状态出现在镜像上传失败或者镜像文件不可读的情况下,glance将镜像状态设置成Killed。

Deleted:Deleted状态表明一个镜像文件马上会被删除,只是当前glance这种仍然保留该镜像文件的相关信息和原始镜像数据。

Pending_delete:Pending_delete状态类似于deleted,虽然此时的镜像文件没有删除,但镜像文件不能恢复的。

图中描述的是glance中镜像文件的状态转换过程,正常情况一个镜像一般会经历Queued、Saving、Active和Deleted过程,其他几种状态则是只有镜像出现异常时特殊情况才会出现。

(3)磁盘格式(Disk Forma)

glance中的磁盘格式指的是虚拟机镜像的磁盘格式。在虚拟机的创建时,需要指定镜像的磁盘格式。下面是OpenStack支持的镜像文件磁盘格式。

(4)容器格式(Container Format)

从文件角度,glance中的容器格式是指虚拟镜像的文件格式,glance对镜像文件进行管理,往往把镜像元数据装载与一个“容器”(信封)中。在这个容器中包含了虚拟机的元数据(metadata)和其他相关信息等数据。在虚拟镜像文件创建的时候,需要管理员指定镜像的Container format。

Glance基本架构和三大模块
它的设计模式采用C/S架构模式,Client通过Glance提供的REST API与Glance的服务器(Server)程序进行通信,Glance的服务器程序通过网络端口监听,接收Client发送来的镜像操作请求,基本架构如图所示。

Glance-api:接收REST API的请求,然后通过其他模块(glance-registry及image store)来完成诸如镜像的查找、获取、上传、删除等操作,默认监听端口9292。

Glance-registry:用于与MariaDB数据库交互,用于存储或获取镜像的元数据(metadata);通过glance-registry,可以向数据库中写入或获取镜像的各种数据,glance-registry监听端口9191。

Store Adapter:是一个存储的接口层,通过这个接口,glance可以获取镜像,image store支持的存储有Amazon的S3、OpenStack本身的Swift,本地文件存储和其他分布式存储。

glance组件的工作过程

Glance配置文件—glance-api.conf
Glance服务安装的日志和调试信息,例如:debug、日志文件路径log_file等参数

Glance服务的API服务器的相关信息。例如:服务绑定的IP地址、端口bind_port等参数

Registry服务的相关信息,例如:Registry服务的网络地址、监听的端口号、glance与Registry间通信的协议等

系统消息相关参数,该部分主要配置glance与系统消息的收发。消息队列rabbitmq的IP地址、监听端口等参数

镜像后端存储的相关配置,一般情况下,glance-api.config中包含普通文件存储、swift、S3、RBD等较为常见的存储设备的信息配置。

glance-api-paste.ini文件

Glance中keystone身份验证的相关配置,该部分主要设置OpenStack的keystone组件服务的IP地址、监听端口、租户名称、用户名称、口令等信息
glance的日志文件

/var/log/glance/glance.log

作者:i_nclude