OpenStack之Glance模块

1、Glance服务

1.Glance架构

Glance架构是一个典型的CS架构,提供的也是标准的Rest接口,各个layer分层也是很清楚的。
html

2.Glance服务

Glance是OpenStack镜像服务组件,glance服务默认监听在9292端口,其接收REST API请求,而后经过其余模块(glance-registry及image store)来完成诸如镜像的获取、上传、删除等操做,Glance提供restful API能够查询虚拟机镜像的metadata,而且能够得到镜像,经过Glance,虚拟机镜像能够被存储到多种存储上,好比简单的文件存储或者对象存储(好比OpenStack中swift项目)是在建立虚拟机的时候,须要先把镜像上传到glance,对镜像的列出镜像、删除镜像和上传镜像都是经过glance进行管理。
mysql

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负责与mysql数据交互,用于存储或获取镜像的元数据(metadata),提供镜像元数据相关的REST接口,经过glance-registry能够向数据库中写入或获取镜像的各类数据,glance-registyr监听的端口是9191,glance数据库中有两张表,一张是image表,一张是image property表,image表保存了镜像格式、大小等信息,image property表保存了镜像的定制化信息。
  • Database
    Image的metadata会保持到database中,主要使用MySQL和SQLite。
  • image store
    image store是一个存储的接口层,经过这个接口glance能够获取镜像,image store支持的存储有Amazon的S三、openstack自己的swift、还有ceph、glusterFS、sheepdog等分布式存储,image store是镜像保存与读取的接口,可是它只是一个接口,具体的实现须要外部的支持,glance不须要配置消息队列,可是须要配置数据库和keystone。
    Glance本身并不存储image。真正的image是存放在repository中的,Glance支持多种repository。以下:
A directory on a local file system(这是默认配置)
RADOS block devices
VMware datastore
Amazon S3
HTTP
OpenStack Block Storage (Cinder)
OpenStack Object Storage (Swift)
  • Metadata definition service
    对于厂商、管理员、服务常见的API来讲,用户有意地定义本身元数据。此元数据可用于不一样类型的资源,如镜像、卷、单个主机和集合。本服务能够定义新属性的键、描述、约束以及与之相关联的资源类型。

4.Glance的格式

(1)磁盘格式
虚拟机镜像的磁盘格式是底层磁盘镜像的格式。如下是OpenStack支持的磁盘格式。
sql

格式说明:数据库

  • 一、RAW
    RAW即常说的裸格式,它其实就是没有格式,最大的特色就是简单,数据写入什么就是什么,不作任何修饰,因此再性能方面很不错,甚至不须要启动这个镜像的虚拟机,只须要文件挂载便可直接读写内部数据。而且因为RAW格式简单,所以RAW和其余格式之间的转换也更容易。在KVM的虚拟化环境下,有不少使用RAW格式的虚拟机。
  • 二、QCOW2
    qcow2是qcow的升级版本,它是QEMU的CopyOn Write特性的磁盘格式,主要特性是磁盘文件大小能够随着数据的增加而增加。譬如建立一个10GB的虚拟机,实际虚拟机内部只用了5GB,那么初始的qcow2磁盘文件大小就是5GB。与RAW相比,使用这种格式能够节省一部分空间资源。
  • 三、VHD
    VHD也是一种通用的磁盘格式。微软公司的Virtual PC和Hyper-V使用的就是VHD格式。VirtualBox也提供了对VHD的支持。若是要在OpenStack上使用Hyper-V的虚拟化,就应该上传VHD格式的镜像文件。
  • 四、VMDK
    VMware建立的一个虚拟机磁盘格式,目前也是一个开放的通用格式,除了VMware自家的产品外,QEMU和VirtualBox也提供了对VMDK格式的支持。
  • 五、VDI
    Oracle公司的VirtualBox虚拟软件所使用的格式。
  • 六、ISO
    ISO是指一种存档数据文件在光盘上的格式。
  • 七、AKI、ARI、AMI
    Amazon公司的AWS所使用的镜像格式。

(2)容器格式
正如OpenStack glance也支持容器格式的概念,它描述了文件格式,并包含关于实际虚拟机的额外元数据。json

如下是OpenStack Glance支持的Container格式。
swift

2、Glance处理流程

1.Glance请求流程

Client端发送请求,api端router.py中将请求下发,选择相应的方法处理请求,通过中间auth, notifier, policy, quota到location,会调用到glance_store进行底端存储,并返回存储的位置信息,须要写到数据库中 在跟数据库的交互中须要用到glance_registry,将镜像的相关信息写到数据库中,值得注意的是会将上面镜像存储的位置信息location_uri写入到数据库中,在进行删除等操做会直接从数据库中读取这个uri,进行删除。api

2.Glance状态流

上传镜像时Glance会显示镜像的各类状态。当咱们第一步上传镜像时,第一步就是入队列,通过短期的验证,镜像进入queued状态,保存镜像并开始上传。以后镜像会进入saving的状态,表示尚未彻底上传完毕。镜像彻底上传后,状态会变成Active。若是上传失败,将会变成killed或deleted状态。另外咱们还可使用命令停用或者从新激活彻底上传成功的镜像。安全

下图为glance镜像的状态流转图。
restful

状态说明:网络

  • queued
    在Glance registry里已经经过验证能够开始存储. 暂时没有镜像数据被上传到glance,镜像大小在上传时设置为0。
  • saving
    表示正在上传镜像到Glance。经过POST /images接口注册镜像,若是有x-image-meta-location http头,这个镜像将不会处于saving状态(由于镜像数据在其余位置已经可用)。
  • active
    表示在glance里是一个彻底可用的镜像。当镜像上传成功后,会切换到这个状态。.
  • deactivated
    表示不容许任何非管理的用户访问。禁止下载镜像,同时也禁止因此可能获取镜像数据的操做,好比镜像导出和镜像克隆等操做。
  • killed
    表示上传镜像时发生错误,这个镜像不可用。
  • deleted
    Glance仍然保留了镜像的相关信息,但不能在被使用。这个状态下的镜像将会被自动删除。
  • Deactivatingand Reactivating an image
    能够停用镜像。也能够从新激活,或者删除。当管理员对镜像进行更新时,能够先把镜像停用,这样镜像对非管理员用户就不可见了,当更新完成后,能够从新激活镜像,以便用户能够用更新后镜像启动虚拟机。

3、镜像与实例

如前所述,磁盘镜像做为模板存储。镜像服务存储和管理镜像。实例是在计算节点上运行的单个虚拟机,计算节点管理这些实例。用户能够从用同一个镜像启动任意数量的实例。每一个启动的实例都是基于镜像的一个副本,因此实例上的任何修改都不会影响到镜像。咱们能够对正在运行实例作快照,并能够用快照于启动另外一个新的实例。

当咱们启动一个实例时,咱们须要指定Flavor。Flavor定义了实例能够有多少个虚拟CPU,多大的RAM以及临时磁盘的大小。 OpenStack提供了预约义的flavor,咱们也能够新建立和编辑Flavor。

下图显示了启动实例的系统状态。glance store包含必定数量的镜像,计算节点包含可用的vcpu,内存和本地磁盘资源,cinder-volume包含必定数量的volume。

启动实例以前,须要选择一个镜像,flavor和任何可选属性。选定的 flavor提供一个系统盘,标记为vda,另一个临时盘被标记为vdb,cinder-volume提供的volume被映射到第三个虚拟磁盘并将其称为vdc。

vdc使用iSCSI链接到cinder-volume。随后计算节点提供vCPU和内存资源以后,该实例将从vda.启动。该实例运行并更改磁盘上的数据。若是volume store位于单独的网络上,须要在计算节点nova.conf里指定的my_block_storage_ip,将会经过存储网络直接通讯。

实例被删除后, 除volume以外的其它资源都会被回收。临时盘将会被清空,内存和vCPU资源被会被释放。在这个过程当中镜像不会发生任何改变。

4、Glance配置文件

Glance-api.conf :Glance api 服务配置文件.

Glance-registry.conf :Glanceregistry服务配置文件,用户存储镜像有关的元数据。

glance-scrubber.conf :用于清理已删除的镜像的服务。

policy.json :镜像服务的访问控制。在这里,咱们能够定义角色和策略,是OpenStack Glance中的安全特性。

参考文章:
http://www.sohu.com/a/156310708_610730
http://www.bubuko.com/infodetail-2287562.html
https://www.2cto.com/net/201707/657859.html

相关文章
相关标签/搜索