文章目录
前言
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
功能区别:
- V1只提供了基本的image和member操作功能:镜像创建、删除、下载、列表、详细信息查询、更新,以及镜像tenant成员的创建、删除和列表。
- V2除了支持V1的所有功能外,主要是增加了如下功能:
镜像 location 的添加、删除和修改等操作 metadata namespace 操作 image tag 操作
- 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