Glance架构是典型的CS架构。它还提供了标准的Rest接口,每一层的层次也非常清晰。
Glance 是一个 OpenStack 镜像服务组件。默认情况下,glance 服务侦听端口 9292。它接收REST API请求,然后通过其他模块(glance-registry和image store)完成图像获取、上传、删除等操作。 Glance 提供restful API来查询虚拟机镜像的元数据并获取镜像。通过Glance,创建虚拟机时可以将虚拟机镜像存储在多种存储上,例如简单文件存储或对象存储(如OpenStack中的Swift项目)。运行电脑时,需要先上传图片才能浏览。列出、删除和上传图像均通过glance 进行管理。
本地文件系统上的目录(这是默认配置)
RADOS 块设备
VMware 数据存储
亚马逊S3
HTTP协议
OpenStack 块存储 (Cinder)
OpenStack 对象存储 (Swift)
(2) 容器格式
由于 OpenStack Glance 还支持容器格式的概念,因此它描述了文件格式并包含有关实际虚拟机的附加元数据。
以下是 OpenStack Glance 支持的容器格式。
客户端发送请求,api端www.hack95.com发出请求,选择对应的方法处理请求,并将中间auth、notifier、policy、quota传递到location,调用glance_store进行底层-结束存储并返回存储位置信息需要写入数据库。与数据库交互时需要使用glance_registry将镜像的相关信息写入数据库。值得注意的是,上面镜像中存储的位置信息location_uri会被写入到数据库中。对于删除等操作,会直接从数据库读取URI并删除。
上传图片时,Glance会显示图片的各种状态。当我们第一步上传图片时,第一步就是将其排队。经过短暂的验证后,图片进入排队状态,保存图片并开始上传。之后图片会进入保存状态,表示尚未完全上传。图片上传完成后,状态将变为“Active”。如果上传失败,它将被杀死或删除。另外,我们还可以使用命令来停用或重新激活已经完全上传成功的图片。
下图为Glance镜像的状态流程图。
状态说明:
如前所述,磁盘映像存储为模板。图像服务存储和管理图像。实例是在计算节点上运行的单个虚拟机,由计算节点管理它们。用户可以从同一映像启动任意数量的实例。启动的每个实例都是镜像的副本,因此对实例的任何修改都不会影响镜像。我们可以拍摄正在运行的实例的快照,并使用该快照来启动新实例。
当我们启动实例时,我们需要指定 Flavor。风味定义了一个实例可以拥有多少个虚拟 CPU、多少 RAM 以及临时磁盘的大小。 OpenStack提供了预定义的flavor,我们也可以创建和编辑新的flavor。
下图显示了启动实例的系统状态。 lance store包含一定数量的image,计算节点包含可用的vcpu、内存和本地磁盘资源,cinder-volume包含一定数量的volume。
在启动实例之前,您需要选择图像、风格和任何可选属性。所选风格提供一个标记为 vda 的系统磁盘,另一个标记为 vdb 的临时磁盘,cinder-volume 提供的卷映射到第三个虚拟磁盘,称为 vdc。
vdc 使用 iSCSI 连接到 cinder-volume。当计算节点后续提供vCPU和内存资源后,实例将从vda启动。实例运行并更改磁盘上的数据。如果卷存储位于单独的网络上,则需要在计算节点nova.conf中指定的my_block_storage_ip将直接通过存储网络进行通信。
实例删除后,除卷外的所有资源都会被回收。临时磁盘将被清除,内存和vCPU资源将被释放。在此过程中图像不会发生任何变化。
Glance-api.conf:Glance api服务配置文件。
Glance-registry.conf:Glanceregistry服务配置文件,用户存储与图像相关的元数据。
glance-scrubber.conf:清理已删除镜像的服务。
policy.json:镜像服务的访问控制。在这里我们可以定义角色和策略,这是 OpenStack Glance 中的安全功能。
参考文章:
http://www.hack95.com/a/156310708_610730
http://www.hack95.com/infodetail-2287562.html
https://www.hack95.com/net/201707/657859.html