OpenStack_Glance

什么是Glace

Glance即image service(镜像服务),就是为建立虚拟机提供镜像的地方docker

为何要有Glance

这个问题问的好,openstack就是构建Iaas平台对外提供虚拟机的啊,构建虚拟机没有镜像怎么行,并且还不能只有一个数据库

Glance的功能

Glance服务使用户可以发现,注册,检索虚拟机的镜像,它提供一个可以查询虚拟机镜像元数据和检索真实镜像的REST API(实际上就是一个URL,glance就是经过url来标志一个镜像的)json

<Glance Server Location>/v1/image/<ID>后端

<Glance Server Location>:glance服务安装的位置api

/v1:使用v1版本缓存

/images:请求的类型为镜像安全

/<ID>:一个uuid,在glance中全局惟一架构

Glance的两个版本

在Newton以前的版本中,glance支持两种REST API V1和V2,二者区别仍是很明显的:dom

(1). V1只提供了基本的image和member操做功能:镜像建立、删除、下载、列表、详细信息查询、更新,以及镜像tenant成员的建立、删除和列表。工具

(2). V2除了支持V1的全部功能外,主要是增长了以下功能:

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

(3).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内部,这么作的好处是减小了一个中间的处理环节

 在Newton版本中V1已通过时了,而且V1最终会被移除

镜像的数据存放

镜像的数据包括:1.镜像元数据;2.镜像自己即chunk

其中镜像的元数据是经过glance-registry保存到数据库中,而镜像的chunk数据是经过Glance store Drivers存放到各类bakcend store中。

在配置glance时咱们使用file做为后端,即将镜像存放于本地文件系统中,上传或者存储镜像的目录位于按照glance服务的机器上(控制节点),默认目录是:/var/lib/glance/images/,咱们应该确认该目录有足够的空间可使用。

须要特别强调的一点是:fileh后端一般位于控制节点自己,于是这种后端并不适用于多节点部署。

在glance服务上周星期的运行不少进程来支持缓存。在作glance集群时要考虑使用复制服务来确保一致性和可用性,其余的周期性的进程包括auditors, updaters, and reapers。

镜像的访问权限

public 公共的:能够被全部的项目使用。

private 私有的/项目的:只能被image owner所在的project使用(即只能在一个项目中使用)

shared 共享的:一个非共享的image能够共享给其余project。

protected 受保护的:protected的image不能被删除

镜像及任务的各类状态

下图为官网图

注解:

  queued:没有上传image数据,只有db中的元数据

  saving:正在上传image data。

  active:当镜像上传完毕,镜像就能够被使用,此时属于active

  deactivated:表示任何非管理员用户都无权访问镜像数据,禁止下载镜像,也禁止镜像导出和镜像克隆之类的操做(请求镜像数据的操做)

  killed:表示上传过程当中发生错误,而且镜像不可读

  deleted:glance已经保存了该镜像的数据,可是该镜像不在可用,处于该状态的镜像将在不久后被自动删除

  pending_delete:与delete想说,glance尚未清除镜像数据,处于该状态的镜像不可恢复

小结:

'queued' => ('saving', 'active', 'deleted')
'saving' => ('active', 'killed', 'deleted', 'queued')
'active' => ('queued', 'pending_delete', 'deleted')
'killed' => ('deleted')
'pending_delete' => ('deleted')
'deleted' => ()

任务的状态

pending:任务已经保留,可是还没开始处理

processing:正在执行

success:执行成功

failure:表示在执行任务的过程当中发生了错误,而且不能继续执行

Glance包含的组件

glance-api

接受api请求,并提供相应操做,包括发现、检索、存储

glance-registry

存储、处理、检索镜像的元数据,元数据包括例如镜像大小、类型等

Database

能够选择组件喜欢的数据库存储进行元数据,大多数使用MySQL或者SQLite.

Storage repository for image files

指的是存储镜像文件的仓库或者称为backend,能够是:

1本地文件存储(或者任何挂载到glance-api控制节点的文件系统)

2.对象存储Object Stroage(Swift)

3.块存储RADOS(ceph)

4.VMware数据存储

5.HTTP

Glance和OpenStack其余服务的关系

对glance来讲,他的客户端Glance Cli能够是:

1.glance的命令行工具

2.Horizon

3.nova

同keystone同样,glance是Iass的另一个中心,keystone是关于权限的中心,而glance是关于镜像的中心。glance能够被终端用户或者nova服务访问:接受磁盘或者镜像的API请求和定义镜像元数据的操做

Glance工做流程

注解:

A client

而后使用glance服务的应用程序,能够是命令行工具,horizon,nova等

REST API

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

Glance Domain Controller(glance域控制器)

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之间的通讯

Clance DB

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

 

Glance Store

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

全部有的进行文件操做都是经过调用Glance Store库执行的,它负责与外部存储端和(或)本地文件存储系统的交互。

Glance Store提供了一个统一的接口来访问后端的存储

Disk和Container格式

当咱们添加一个镜像到glance时,你必须指定虚拟机的disk格式和container格式,关于disk格式请自行研究kvm等虚拟。

disk和container格式是每一个部署的基本配置,经常使用的格式以下:

1.Disk Format

不一样的虚拟化应用的厂针有不一样的虚拟机镜像的disk格式:

  • raw

    This is an unstructured disk image format

  • vhd

    This is the VHD disk format, a common disk format used by virtual machine monitors from VMware, Xen, Microsoft, VirtualBox, and others

  • vhdx

    This is the VHDX disk format, an enhanced version of the vhd format which supports larger disk sizes among other features.

  • vmdk

    Another common disk format supported by many common virtual machine monitors

  • vdi

    A disk format supported by VirtualBox virtual machine monitor and the QEMU emulator

  • iso

    An archive format for the data contents of an optical disc (e.g. CDROM).

  • ploop

    A disk format supported and used by Virtuozzo to run OS Containers

  • qcow2

    A disk format supported by the QEMU emulator that can expand dynamically and supports Copy on Write

  • aki

    This indicates what is stored in Glance is an Amazon kernel image

  • ari

    This indicates what is stored in Glance is an Amazon ramdisk image

  • ami

    This indicates what is stored in Glance is an Amazon machine image

2.Container Format

容器container格式是指虚拟机映像是否包含一个文件格式,该文件格式还包含有关实际虚拟机的元数据。

须要注意的是:容器格式字符串在当前并不会被glance或其余OpenStack组件的使用,因此若是你不肯定,简单的将容器格式指定bare是安全的。

你能够设置以下容器格式:

  • bare

    This indicates there is no container or metadata envelope for the image

  • ovf

    This is the OVF container format

  • aki

    This indicates what is stored in Glance is an Amazon kernel image

  • ari

    This indicates what is stored in Glance is an Amazon ramdisk image

  • ami

    This indicates what is stored in Glance is an Amazon machine image

  • ova

    This indicates what is stored in Glance is an OVA tar archive file

  • docker

    This indicates what is stored in Glance is a Docker tar archive of the container filesystem

本站公众号
   欢迎关注本站公众号,获取更多信息