Openstack组件之glance组件详细解析

Openstack组件之glance组件详细解析文章目录前言一、Glance简介1.1、镜像服务的主要功能1.2、什么是glance镜像服务二、glance的组成及作用2.1、GlanceRESTAPI的版本三、关于镜像3.1、镜像文件格式3.2、镜像状态3.3、镜像访问权限四、Glance镜像服务架构图详解前言glance即imageservice,是为虚拟机的创建提供镜像的服务,我们基于openstack是构建基本的Iaas平台对外提供虚拟机,而虚拟机在创建时必须为选择需要安装的操作系统,glance服务就是为该选择提供不同的操作系统镜像

前言

glance即image service,是为虚拟机的创建提供镜像的服务,我们基于openstack是构建基本的Iaas平台对外提供虚拟机,而虚拟机在创建时必须为选择需要安装的操作系统,glance服务就是为该选择提供不同的操作系统镜像。

一、Glance简介

1.1 、镜像服务的主要功能

1.查询和获取镜像的元数据和镜像本身
2.注册和上传虚拟机镜像,包括镜像的创建、上传、下载和管理
3.维护镜像信息,包括元数据和镜像本身
4.支持多种方式存储镜像,包括普通的文件系统、swift、Amazon、S3等
5.对虚拟机实例执行创建快照命令来创建新的镜像,或者备份虚拟机的状态

1.2、什么是glance镜像服务

它在open stack中的项目名称为Glance.在早期的open stack版本中,Glance只有管理镜像的功能,并不具备镜像存储功能。现在,Glance已经发展称为集上传,检索,管理和存储等多种功能的open stack核心服务。

二、glance的组成及作用

glance由两部分组成:

(1)glance-api: 接受云系统镜像的创建,删除,读取请求
(2)glance-Registry: 云系统的镜像注册服务

  • glance-api 是接受 rest api请求的。完成诸如镜像的查找,获取,上传,删除等操作,默认是监听9292端口
  • glance-registry是用于Mysql的数据交互,用户存储或获取镜像的元数据(metadata);提供镜像元数据相关的REST接口,通过glance-Registry,可以向数据库中写入或获取镜像的各种数据。glance-Registry监听的端口是9191.Glance数据库中有两种表,一张是image表,主要存储了镜像格式,大小等信息;另一张是imageproperty表,主要存了镜像定制化信息。
  • image-store是一个存储的接口层,通过这个接口,glance可以获取镜像,imagestore支持的存储有Amazon的S3,Openstack本身的swift,还有诸如ceph,sheepdog,GluasterFS等分布式存储,imagestore是镜像保存与获取的接口,它仅仅是一个接口层,具体的实现需要外部的存储支持。

2.1、Glance REST API的版本

Glance有两个版本的REST API V1 和 V2
功能区别:

  1. V1只提供了基本的image和member操作功能:镜像创建、删除、下载、列表、详细信息查询、更新,以及镜像tenant成员的创建、删除和列表。
  2. V2除了支持V1的所有功能外,主要是增加了如下功能:

镜像 location 的添加、删除和修改等操作 metadata namespace 操作 image tag 操作

  1. V1 和V2对 image store 的支持是相同的

V1版本的实现,具有glance-api和glance-registry两个WSGI服务,二者都提供REST API,但需要强调的一点是:glance-registry提供的REST API是给glance-api使用的,即The registry is a private internal service meant for use by OpenStack Image service. Do not expose this service to users。

在这里插入图片描述
v2的实现就是将glance-registry集成到了glance-api内部,这么做的好处是减少了一个中间的处理环节

  • v1
    在这里插入图片描述

  • v2
    在这里插入图片描述

三、关于镜像

3.1、镜像文件格式

(1) 镜像文件容器格式

  • bare:没有容器或元数据“信封”
  • ovf:开放虚拟化格式
  • ova:在glance中存储的amazon内核格式
  • ari:在glance中存储的amazon虚拟内存盘(Ramdlsk)格式
  • aki:在glance中存储的amazon内核格式
  • docker:在glance中存储的容器文件系统的docker的tar归档

(2)虚拟机镜像文件磁盘格式

  • raw:无结构的磁盘格式
  • vhd:该格式通用于VMware、Xen、VirtualBox以及其他虚拟机管理程序
  • vhdx:vhd格式的增强版本,支持更大的磁盘尺寸
  • vmdk:—种比较通用的虚拟机磁盘格式
  • vdi:由VirtuaBox虚拟机监控程序和QEMU仿真器支持的磁盘格式
  • iso:用于光盘(CD-ROM)数据内容的档案格式
  • ploop:由Virtuozzo支持,用于运行OS容器的磁盘格式
  • qcow2:由QEMU仿真支持,可动态扩展,支持写时复制(Copy on Write)的磁盘格式aki:在Glance中存储的Amazon内核格式
  • ari:在Glance中存储的Amazon虚拟内存盘(Ramdisk)格式ami:在Glance中存储的Amazon机器格式

3.2、镜像状态

在这里插入图片描述

  • queued:这是一种初始化状态,镜像文件刚被创建,在glance数据库只有其元数据,镜像数据还没有上传至数据库中
  • saving:是镜像的原始数据在上传到数据库中的一种过渡状态,表示正在上传镜像
  • uploading指示已进行导入数据提交调用,此状态下不允许调用put/file(saving状态会执行put/file,这是另外一种上传的方法)
  • deleted : 镜像将在不久后被自动删除,该镜像不可再用,但是目前Glance仍然保留该镜像的相关信息和原始数据
  • pending_delete:与deleted相似,Glance还没有清除镜像数据,但处于该状态的镜像不可恢复
  • active:表示当镜像数据成功上传完毕,成为Glance中可用的镜像
  • deactivated:表示任何非管理员用户都无权访问镜像数据,禁止下载镜像,禁止镜像导出和镜像克隆之类的操作
  • killed:表示镜像上传过程中发生错误,镜像不可读

3.3、镜像访问权限

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

四、Glance镜像服务架构图详解

在这里插入图片描述

A client

然后使用glance服务的应用程序,可以是命令行工具,horizon,nova等

REST API

glance是一个client-server架构,提供一个REST API,而使用者就是通过REST API来执行关于镜像的各种操作。

Glance Domain Controller

是glance内主要的中间件实现,就相当于一调度员,作用是将glance内部服务的操作分发到各层(Auth认证,Notifier,Policy策略,Quota,Location,DB数据库连接)具体任务由每个层实现。

  • 第一层:Auth
    验证镜像自己或者它的属性是否可以被修改,只有管理员和该镜像的拥有者才可以执行该修改操作,否则报错。

  • 第二层:Property protection
    由glance domain controller控制的七层组件
    是可选的层,只有在glance的配置文件中设置了property_protection_file参数才会生效,它提供了两种类型的镜像属性:
    1.核心属性,是在镜像参数中指定的;2元数据属性,是任意可以被附加到一个镜像上的key/value
    该层的功能就是通过调用glance的public API来管理对meta属性的访问,你也可以在它的配置文件中限定这个访问

  • 第三层:Notifier
    把下列信息添加到queue队列中
    1.关于所有镜像修改的通知
    2.在使用过程中发生的所有的异常和警告

  • 第四层:Policy
    负责:
    1.定义操作镜像的访问规则rules,这些规则都定义在/etc/policy.json文件中
    2.监控rules的执行

  • 第五层:Quota
    如果针对一个用户,管理员为其规定好他能够上传的所有镜像的大小配额,此处的Quota层就是用来检测用户上传是否超出配额限制:
    1.如果没有超出配额限制,那么添加镜像的操作成功
    2.如果超出了配额,那么添加镜像的操作失败并且报错。

  • 第六层:Location
    与Glance Store交互,如上传下载等。由于可以有多个存储后端,不同的镜像存放的位置都被该组件管理。
    负责:
    1.当一个新的镜像位置被添加时,检测该URI是否正确。
    2.当一个镜像位置被改变时,负责从存储中删除该镜像。
    3.阻止镜像位置的重复

  • 第七层:DB
    1.实现了与数据库API的交互
    2.将镜像转换为相应的格式以记录在数据库中。并且从数据库接收的信息转换为可操作的镜像对象。

Registry Layer

属于可选的层,用来组织安全。

通过使用这个单独的服务,来控制Glance Domain Controller与Glance DB之间的通信。

Glance DB
glance服务使用统一一个核心库Glance DB,该库对glance内部所有依赖数据库的组件来说是共享的。

Glance Store

用来组织处理Glance和各种存储后端的交互。

所有的镜像文件操作都是通过调用Glance Store库执行的,它负责与外部存储端和(或)本地文件系统的交互。Glance Store提供了一个统一的接口来访问后端的存储。

今天的文章Openstack组件之glance组件详细解析分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/26859.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注