Openstack组件实现原理 — Glance架构(V1/V2)

简介: 目录目录Glance 安装列表Glance Image serviceImage service 的组件Glance-ApiGlance-RegistryGlance-dbImage StoreStore BackendImageGl...

目录

Glance 安装列表

Openstack组建部署 — Glance Install

Glance Image service

Image service项目代号Glance,是Openstack的镜像服务组件。Glance主要提供了一个虚拟机镜像文件的存储、查询和检索服务,通过提供一个虚拟磁盘映像目录和存储库,为Nova的虚拟机提供镜像服务。现在Glance具有V1和V2(Openstack-F发布)两个版本。
这里写图片描述

Image service 的组件

Glance-Api

glance-api:是一个对外的API接口,能够接受外部的API镜像请求。主要用于分析、分发、响应各种镜像管理的REST Request,然后通过其他模块(EG. glance-registry、Store Backend后端存储接口)完成镜像的发现、获取、存储等操作。默认绑定端口是9292

Glance-Registry

glance-registry:用于存储、处理、获取Image Metadata。通过响应从glance-api发送过来的Image Metadata REST Request,然后与MySQL进行交互,实现Image Metadate的存储、处理、获取。默认绑定的端口是9191

Glance-db

glance-db:在Openstack中使用MySQL来支撑,用于存放Image Metadate
Image Metadate(镜像元数据):指通过glance-registry来保存在MySQL Database中的镜像文件相关信息。

Image Store(Store Backend)

Image Store:用于存储镜像文件。通过Store Backend后端存储接口来与glance-api联系。通过这个接口,glance可以从Image Store获取镜像文件再交由Nova用于创建虚拟机。

Glance 通过Store Adapter(存储适配器)支持多种Imange Store方案
这里写图片描述

Glance允许上传私有或共有的不同格式镜像

  • Raw
  • Machine (kernel/ramdisk outside of image, a.k.a. AMI)
  • VHD (Hyper-V)
  • VDI (VirtualBox)
  • qcow2 (Qemu/KVM)
  • VMDK (VMWare)
  • OVF (VMWare, others)

Image

Image(镜像文件)的访问权限分为

  • Public 公共的:可以被所有的Tenant使用。
  • Private 私有的/项目的:只能被Image Owner所在的Tenant使用。
  • Shared 共享的:一个非公共的Image可以共享给指定的Tenant,通过member-*操作来实现。
  • Protected 受保护的:Protected Image不能被删除。

Image的状态类型

  • Queued:没有上传Image数据,只SQL Database中存有该镜像的元数据。
  • Saving:正在上传Image。
  • Active:正常状态。
  • Deleted/pending_delete: 已删除/等待删除的Image。
  • Killed:Image元数据不正确,等待被删除。

Image状态类型转换

  • ‘queued’ => (‘saving’, ‘active’, ‘deleted’)
  • ‘saving’ => (‘active’, ‘killed’, ‘deleted’, ‘queued’)
  • ‘active’ => (‘queued’, ‘pending_delete’, ‘deleted’)
  • ‘killed’ => (‘deleted’)
  • ‘pending_delete’ => (‘deleted’)
  • ‘deleted’ => ()

Glance 架构

Glance Restful API — V1

V1的功能:提供了基本的ImageMember操作
1. 镜像文件的创建、删除、查询、更改
2. 镜像Tenant成员的创建、删除和查询

V1包含有glance-apiglance-registry两个WSGI service,都提供了REST API接口来接收虚拟机镜像管理的请求。

两者的区别在于glance-api的REST API能够对外开放而glance-registry的REST API只能够被glance-api调用。

V1的架构

这里写图片描述

需要注意的是glance-api 不会真正去处理REST Request,可以将glance-api再分为两部分:

  • 一部分是中间件,主要用于对REST Request的分析、分发工作(EG. 分析出版本号)
  • 另一部分来提供实际的服务(EG. 与Store Backend后端存储接口交互,实现镜像上传、下载)

所以若glance-api接收到涉及SQL Database的操作请求时,会调用registry-clinet并生成HTTP指令,然后转发给glance-registry API进行处理。

Glance Restful API — V2

V2的功能:除了拥有V1的功能之外,还能够:
1. 镜像Location的添加、删除和修改
2. Metadata、Namespace、Image tag操作

V2架构图
这里写图片描述

V2在实现上,把glance-registryglance-api合并到了一起,减少了一个中间环节。

相关文章
|
2月前
|
监控 网络协议 Java
Tomcat源码解析】整体架构组成及核心组件
Tomcat,原名Catalina,是一款优雅轻盈的Web服务器,自4.x版本起扩展了JSP、EL等功能,超越了单纯的Servlet容器范畴。Servlet是Sun公司为Java编程Web应用制定的规范,Tomcat作为Servlet容器,负责构建Request与Response对象,并执行业务逻辑。
Tomcat源码解析】整体架构组成及核心组件
|
17天前
|
负载均衡 5G 网络性能优化
深入解析LTE(长期演进技术)的基本架构及其关键组件
深入解析LTE(长期演进技术)的基本架构及其关键组件
82 2
|
2月前
|
Kubernetes API 调度
Kubernetes 架构解析:理解其核心组件
【8月更文第29天】Kubernetes(简称 K8s)是一个开源的容器编排系统,用于自动化部署、扩展和管理容器化应用。它提供了一个可移植、可扩展的环境来运行分布式系统。本文将深入探讨 Kubernetes 的架构设计,包括其核心组件如何协同工作以实现这些功能。
102 0
|
28天前
|
XML Java 数据库
在微服务架构中,请求常跨越多个服务,涉及多组件交互,问题定位因此变得复杂
【9月更文挑战第8天】在微服务架构中,请求常跨越多个服务,涉及多组件交互,问题定位因此变得复杂。日志作为系统行为的第一手资料,传统记录方式因缺乏全局视角而难以满足跨服务追踪需求。本文通过一个电商系统的案例,介绍如何在Spring Boot应用中手动实现日志链路追踪,提升调试效率。我们生成并传递唯一追踪ID,确保日志记录包含该ID,即使日志分散也能串联。示例代码展示了使用过滤器设置追踪ID,并在日志记录及配置中自动包含该ID。这种方法不仅简化了问题定位,还具有良好的扩展性,适用于各种基于Spring Boot的微服务架构。
32 3
|
11天前
|
存储 缓存 Java
JAVA并发编程系列(11)线程池底层原理架构剖析
本文详细解析了Java线程池的核心参数及其意义,包括核心线程数量(corePoolSize)、最大线程数量(maximumPoolSize)、线程空闲时间(keepAliveTime)、任务存储队列(workQueue)、线程工厂(threadFactory)及拒绝策略(handler)。此外,还介绍了四种常见的线程池:可缓存线程池(newCachedThreadPool)、定时调度线程池(newScheduledThreadPool)、单线程池(newSingleThreadExecutor)及固定长度线程池(newFixedThreadPool)。
|
1月前
|
存储 SQL Cloud Native
Hologres 的架构设计与工作原理
【9月更文第1天】随着大数据时代的到来,实时分析和处理数据的需求日益增长。传统的数据仓库在处理大规模实时数据分析时逐渐显露出性能瓶颈。为了解决这些问题,阿里巴巴集团研发了一款名为 Hologres 的新型云原生交互式分析数据库。Hologres 能够支持 SQL 查询,并且能够实现实时的数据写入和查询,这使得它成为处理大规模实时数据的理想选择。
46 2
|
2月前
|
存储 安全 虚拟化
深入解析:Docker的架构与组件
【8月更文挑战第27天】
133 5
|
2月前
|
存储 分布式计算 Hadoop
ChunkServer 原理与架构详解
【8月更文第30天】在分布式文件系统中,ChunkServer 是一个重要的组件,负责存储文件系统中的数据块(chunks)。ChunkServer 的设计和实现对于确保数据的高可用性、一致性和持久性至关重要。本文将深入探讨 ChunkServer 的核心原理和内部架构设计,并通过代码示例来说明其实现细节。
33 1
|
2月前
|
JSON 前端开发 API
Django 后端架构开发:通用表单视图、组件对接、验证机制和组件开发
Django 后端架构开发:通用表单视图、组件对接、验证机制和组件开发
47 2
|
2月前
|
存储 监控 前端开发
OpenStack组件Horizon
【8月更文挑战第20天】
40 4
下一篇
无影云桌面