• OpenStack学习笔记-Glance组件深入了解


    视频了解:
    glance:为虚拟机的创建提供镜像的服务
    glance的功能:使用户能够发现、注册、检索虚拟机的镜像,它提供一个能够查询虚拟机镜像元数据和检索真实镜像的REST API
    REST API的体现就是一个URL,而在glance中通过一个URL地址来标识一个URL地址来唯一标识一个镜像的形式如:
    <Glance Server Location>/v1/images/<ID>
    <Glance Server Location>:glance服务按照的位置
    /v1:使用v1版本,详见四
    /images:请求的类型为镜像
    /<ID>:一个uuid,在glance中全局唯一

    v1版本的glance:
    1、V1版本的实现,具有glance-api和glance-registry两个WSGI服务,二者都提供REST API,但需要强调的一点是:glance-registry提供的REST API是给glance-api使用的
    2、Glance-API:1、接受api发来的请求,发给glance-registry。2、到后端的存储设备拉取镜像
    3、Glance-Registry:1、连接数据库,从数据库中找到符合客户端标准的镜像,获取镜像的元数据,将镜像的信息返回给glance-api
    v2版本的glance:
    1、v2的实现就是将glance-registry集成到了glance-api内部,这么做的好处是减少了一个中间的处理环节。
    2、Glance-API:接受api发来的请求直接去访问数据库,获取到镜像的元数据后去存储设备拉取镜像。

    书籍笔记:
    Glance体系结构(v1版本):
    1、Glance主要由glance-api与glance-registry两个服务组成。
    2、glance-api 是进入Glance的入口,负责接收用户的RESTful请求,然后通过后台的Swift 等存储系统完成镜像的存储与获取。
    3、Glance的Store模块实现了一个存储后台的框架,根据这个框架所提供的接口,实现了对各种不同后台存储系统的支持。
    4、在Juno版本之前,Store模块的实现位于glance/store目录;Juno版本之后,Store模块作为一个独立的项目glance store被剥离出来 ,以便为更多的项目服务
    5、glacne-registry也是一个 WSGI Server,不同的是,glance-registry处理的是与镜像元数据(这里的元数据是指保存在数据库中的关于镜像的一些信息)相关的RESTful请求。
    6、glance-api接收到用户的RESTful请求后,如果该请求与元数据相关,则将其转发给glance-registry服务。然后glance-registry会解析请求的内容,并与数据库进行交互,存取或更新镜像的元数据,Glance的DB模块存储的仅仅是镜像的元数据。
    v2版本的Glance中,glance-registry服务的内容被整合进了glance-api之中。

    Glance源码结构分析:
    1、Glance的核心代码位于glance目录
    2、所有服务以及工具的执行脚本位于glance/cmd
    3、glance-api、glance/registry分别对应GlanceAPI 和 Glance-registry
    4、glance-api可以为镜像建立本地缓存,实现API服务节点的数量扩展,提供多个API节点为同一个镜像提供服务的效率(本地的Image Cache是镜像文件的完全复制,这种缓存机制对用户来说是透明的)。
    5、用户可以通过配置文件/etc/glance/glance-cache.conf指定Cache文件存放的路径、本地能够用于Cache的存储空间等信息。
    6、镜像缓存的实现位于glance/image_cache目录。
    7、针对import、export等镜像操作,Glance引入Task的概念(针对镜像的异步操作,glance/async即是部分实现)
    8、Glance釆用了责任链(Chain of Responsibility)的设计模式实现用户请求的处理流程。使系统可以在不影响客户端的情况下动态地重新组织链和分配责任。
    9、glance.domain模块定义了一些基类或接口,glance.gateway.Gateway模块则是实现了责任链的建立。
    10、Rally是一个用于性能测试的项目,glance/rally-jobs目录是一些用于Rally的文件或插件。

    setup.cfg:
    entry_points,中的命名空间“consolc_scripts”里,涵盖了Glance所提供的所有服务以及工具
    其中的每一项都表示一个可执行的脚本,这些脚本在部署时会被安装,它们同时也是 Glance各项工作的入口。
    1、glance-cache-*: 4 个对 Image Cache 进行管理的工具。
    2、glance-manage:用于Glance数据库的管理。
    3、glance-replicator:用于实现镜像的复制。
    4、glance-scrubber:用于清理已经删除的Image。
    5、glance-control: Glance 提供了 glance-api 和 glance-registry 两个WSGI Server.以及一 个glance-scrubber后台服务进程,这里的glance-control工具即是用于控制这3个服务进程。
    6、glance-glare: Glare API 服务,目前正在开发中。

    Glance API详细介绍:
    Glance API主要提供镜像的管理功能。比如Image的导入/导出、镜像元数据的管理等。
    目前Glance API共有v1和v2两个版本,v2版本整合了glance-registry服务的功能,并且采用责任链设计模式来实现了API的处理流程。
    Image:
    Image是Glance所管理的主要资源。如果从Image启动VM,该VM被删除后,Image依然存在,但是Image上不包含本次在该VM实例上的修改(因为Image只是给VM启动的模板)
    对Image的描述:
    1、id:唯一一个标识Image的UUID
    2、name:Image的名字
    3、owner:Image的拥有者
    4、size:Image的字节大小
    5、created_at、updated_at:表示Image的出生时间、最后一次被修改的时间
    6、location:Image存储的位置
    7、disk_format:Image本身的格式(比如raw、qcow2(用于Qemu)、vdi(用于Virtual Box)、vmdk(用于Vmware)等)
    8、status:镜像的状态。(Glance负责管理Image的生命周期)
    Image的各种状态:
    1、queued:表面镜像ID已经被保留,但是镜像数据还没有上传
    2、saving:表面此时镜像正在上传
    3、active:是Image成功上传完毕后的状态,此时该Image完全可用
    4、killed:表面上传时发生错误,此时Image完全不可用。(在v2中被废除,如果上传失败,状态码变为“queued”以便上传可以重试)
    5、deleted:虽然此时Glance还保留Image的相关信息,但是该Image已不可用,在未 来某个时候会被glance-scrubber彻底删除。
    6、pending_delete:和deleted类似,但是并不会删除Image,此时尚可恢复。
    Task:
    Task是针对Image的异步(Async)操作,具有的一些属性包括id、owner状态等。Glance同时也实现了统一的JSON格式的API来操作这些Task,比如创建、删除、查询状态等。
    在一个Task运行过程中,我们不断查询它的状态。
    1、pending:表示Task被创建,但未被执行
    2、processing:表示Task正在被执行中。
    3、success:表示Task正在执行中。
    4、failure:表示Task由于某种原因未能成功结束。
    Task和Image的操作完全是两个概念:
    1、首先它们都是不同的API资源;
    2、其次,Task是异步的操作,是对Image操作的封装,目前只对clone、imports export 3种操作进行了封装;
    3、最后,Task一旦创建,可以不断查询这个它的状态,在一次操作比如import之后,Task可以消亡,但是此时生成的Image依然存在。
     

  • 相关阅读:
    关系代词 - 使用
    计量龙头威胜电子正式加入能源区块链,携手零数打造区块链生态圈
    FFplay文档解读-44-视频过滤器十九
    COMP26020 Part 1 Lab Assignment:Matrix Processing Library in C
    【大咖说Ⅲ】谢娟英教授:基于深度学习的野外环境下蝴蝶物种自动识别
    Nacos在Windows本地安装并启动教程
    力扣hot100:75. 颜色分类(双指针)
    linux安装、及JDK配置环境变量
    vue学习之属性绑定
    SpringMVC项目Rest风格
  • 原文地址:https://blog.csdn.net/m0_51734025/article/details/125422500