深挖Openstack Glance - 基本知识

2024-06-15 14:08

本文主要是介绍深挖Openstack Glance - 基本知识,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一. glance的作用:提供虚拟机镜像的发现、注册、检索,使用RESTful接口接收外部请求

 

二. 版本说明

glance有两个版本API v1/v2,其中v2版本(F版)较为简洁,将glance-api和glance-registry合并在一块。

1. glance-api:接收REST API的请求,分析消息请求信息并分发命令(如新增、删除、更新等)

2. glance-registry:负责接收响应镜像元数据命令的Restful请求,分析消息请求信息并分发命令(如获取元数据、更新元数据等)

 

三. 任意一个用户都可以向glance上传和注册image,还可以设定该image是否可以公开为其他tenant用户使用。

 

四. image使用URI作为唯一标识:

<Glance ServerLocation>/images/<ID>

其中,Glance Server Location是镜像的所在位置,ID是镜像在Glance的唯一标识

 

五. image状态:

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

2. saving:image data正在被上传

3. active:image完全可用

4. killed:image元数据不正确,等待被删除

5. deleted/pending_delete:已删除/等待删除

 

六. glance目录解析:(待完善)

1. /glance/api/v1/router.py:将WSGI收到的HTTP操作映射到glance-api模块的Controller类的方法

2. /glance/api/v1/images.py:提供与image相关的操作

3. /glance/registry/client/v1/api.py:registry API入口,调用client.py中的函数

4. /glance/api/v2/image_data.py:提供对image上传下载的操作

 

七. Paste模块

在/etc目录下有两个文件glance-api-paste.ini和glance-registry-paste.ini,当WSGI Server接收到URL_Path形式的HTTP Request时,这些Request首先会被这些paste文件处理,执行其文件中标注的需要执行的WSGIapp和middleware。

在paste文件中,每个Section的格式均为[type:name],主要有这几种类型的Section:

1. composite section

request进来后第一个通过的Section,表示需要将一个HTTP URL Request调度到一个或多种Application上。

[composite:rootapp]
paste.composite_factory = glance.api:root_app_factory
/: apiversions
/v1: apiv1app
/v2: apiv2app
/v3: apiv3app


2. app section

一个app就是实际处理REST API请求的python类,表明这是一个独立的服务程序。

[app:apiv1app]
# paste.app_factory: 表明调用哪个函数来获得application
paste.app_factory = glance.api.v1.router:API.factory


3. filter section

一种装饰器,为app提供一层封装,起过滤作用,用于过滤Request和Response,在app处理请求之前会先调用filter对象。

[filter:healthcheck]
# paste.filter_factory: 表明调用哪个函数来获得这个filter中间件
paste.filter_factory = oslo_middleware:Healthcheck.factory
backends = disable_by_file
disable_by


4. pipeline section

是对多个filter和某个app进行封装,表明在app处理请求之前会先调用pipeline所指定的多个filter对象。

在pipeline section中,最后一个名字对应的section一定是app类型,其它名字对应的一定是filter类型。

# Use this pipeline for no auth or image caching = DEFAULT
[pipeline:glance-api]
pipeline = healthcheck versionnegotiation osprofiler unauthenticated-context rootapp

比如pipeline:glance-api表明在访问glance-api之前需要先调用healthcheck、versionnegotiation等一系列filter对象,而最后的rootapp就是一个app section。


八. URL的Routes分发

首先WSGI接收到用户请求,经过几层过滤器,到达rootapp处理,rootapp内部根据用户提供的版本信息(v1/v2)交由apiv1app或apiv2app处理。

以v1版本为例,从horizon传过来的HTTP请求首先来到/glance/api/v1/router.py,查找匹配的HTTP请求。类API继承wsgi.Router:

class API(wsgi.Router):

mapper.connect匹配对应的请求,比如获取image详情:

mapper.connect("/images/detail",controller=images_resource,action='detail',conditions={'method': ['GET', 'HEAD']})

当用户的glance操作请求通过WSGI,通过分发dispatch进入控制器Controller之后,接下来就是开始glance镜像的具体操作。


这篇关于深挖Openstack Glance - 基本知识的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1063671

相关文章

详细分析Springmvc中的@ModelAttribute基本知识(附Demo)

目录 前言1. 注解用法1.1 方法参数1.2 方法1.3 类 2. 注解场景2.1 表单参数2.2 AJAX请求2.3 文件上传 3. 实战4. 总结 前言 将请求参数绑定到模型对象上,或者在请求处理之前添加模型属性 可以在方法参数、方法或者类上使用 一般适用这几种场景: 表单处理:通过 @ModelAttribute 将表单数据绑定到模型对象上预处理逻辑:在请求处理之前

Linux命令与基本知识

一、基本知识 1、Linux内多有的数据都是以文件的形态呈现的。Linux系统中最重要的在于目录树结构。整个目录树结构最重要的是根目录,其表示方法为“/”。 2、挂载(mount):即将目录树结构的架构与磁盘内的数据结合起来。挂载利用一个目录作为进入点,将磁盘分区的数据放置在该目录下,也就是说,进入该目录就可以读取该分区。 树状目录结构 /bin:bin是Binary的缩写, 这个

理解 JTBD 框架和EJ 理念:深挖以用户为中心的设计

在与用户的交流中,我们发现对用户需求的精准洞察普遍困扰着产品经理、设计、企划人员,因为当今消费者行为已经由单品消费转向场景消费,千人千面的个性化需求出现,消费者数据维度极大丰富,这对把握用户体验造成了很大挑战。 我们所处的产品设计行业,错综复杂,不断发展,有一个设计框架叫做 JTBD (待办任务)。无论你是否听说过。我们只需读完本篇文章之后,你将会对这个框架的含义,以及对产品设计工作的重要

数据结构基本知识框图

数据结构知识框图:  转化成图片之后链接失效,只能在下面给出: 时间复杂度&空间复杂度计算: http://blog.csdn.net/lf_2016/article/details/52453212 线性表: C语言实现顺序表基本算法:http://blog.csdn.net/lf_2016/article/details/51503152 顺序表实现通讯录:http

java 运算的一些基本知识

1、 << 向左进行位移运算 我在看swt源码的时候看到这么一段内容: /*** Style constant for horizontal alignment or orientation behavior (value is 1<<8).* <p><b>Used By:</b><ul>* <li><code>Label</code></li>* <li><code>ProgressB

docker的基本知识

文章目录 前言docker的基本知识1. docker 的底层逻辑2. docker 的核心要素2.1. 镜像的基本概念:2.2. 容器的基本概念:2.3. 仓库的基本概念: 前言   如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差,实在白嫖的话,那欢迎常来啊!!! docker的基本知识

openstack中ping不通vm

ping不通vm的问题解决 ping不通vm,首先应考虑安全组规则的问题,查看安全组中是否有ICMP规则。 Even pinging the instance is not possible without an ICMP rule configured. 1 查看安全组及其规则 [root@-ctl ~]# nova secgroup-list+----------

Openstack使用官方ubuntu和Centos镜像

1 使用官方ubuntu镜像无法使用ssh用户名密码登录登录的问题 在创建instance的时候,选择"创建后",然后选择直接输入,输入如下代码 ubuntu [plain]  view plain  copy #!/bin/sh     passwd ubuntu<<EOF     123456   123456   EOF sed -i 's/Per

OpenStack Liberty High Availability 概述和指导

OpenStack Liberty 高可用性概述和参考-第一部分 这篇文章由Avishay Traeger 和 Shimshom Zimmerman编写。        OpenStack设计目的是在商用硬件上运行,但是没有自身的机制处理硬件和软件故障。OpenStack成功部署的一个重要组成部分是创建一个高可用性(HA)软件架构体系。这样的架构体系的首要组件是支持高可用OpenSta

OpenStack LBaaS之Octavia

OpenStack自从Kilo版本引入了V2.0版本的LBaaS API,并且从Liberty版本开始正式支持V2.0 API,同时该API支持的LBaaS plug-in换成了Octavia。换成Octavia的原因是之前使用的haproxy plug-in没有HA功能,扩展性也比较差,不适用于大规模部署的场景。具体的关于Octavia的说明可以参考如下Specs: http://specs.