`

Glance源码架构探秘(一)

阅读更多

        Glance是OpenStack的镜像管理模块,负责镜像的上传、下载等管理。

        Glance项目提供虚拟机镜像的查找、注册和重现,使用RESTful接口接受虚拟机镜像管理的查询请求。

  423x445

Glance-API和Glance-Registry是两个独立运行的服务,在sbin目录下,看过glance部署文章的同学知道,glance部署的最后一步就是启动glance-api和glance-registry这两个服务。这两个服务作为WSGI,会分别响应来自用户的RESTful请求,

Glance对外服务的入口主要有两个

1、Glance-API:主要负责接收响应镜像管理命令的Restful请求,分析消息请求信息并分发其所带的命令(如新增、删除、更新元数据等)。默认绑定端口是9292。

2、Glance-Registry:主要负责接收响应镜像元数据命令的Restful请求,分析消息请求信息并分发其所带的命令(如获取元数据,更新元数据等)。默认绑定端口是9191。

在/etc/glance目录下有两个文件glance-api-paste.ini和glance-registry-paste.ini,两个入口服务启动后,会用配置文件分析模块读取这两个文件,执行其文件中标注的需要执行的WSGIapp和middleware。简述paste文件中的概念:

  app:实际处理REST API请求的python类。
filter:一种装饰器,为app提供一层封装,在app处理请求之前会先调用filter的对象。
pipeline:所对应的对象是对filter和app的的封装,他将多个filter和某个app绑在一起,在app处理请求之前要先通过pipline指定的在app之前的filter的处理。

  在glance-registry中有

  [app:registryapp] paste.app_factory = glance.registry.api.v1:API.factory

证明这是一个独立的服务程序

  我们以glance-api为例,分析其服务入口程序

 """ Glance API Server """ 
 import gettext 
 import os 
 import sys 
 # If ../glance/__init__.py exists, add ../ to Python search path, so that 
 # it will override what happens to be installed in /usr/(local/)lib/python... 
 possible_topdir = os.path.normpath(os.path.join(os.path.abspath(sys.argv[0]), os.pardir, os.pardir)) 
 if os.path.exists(os.path.join(possible_topdir, 'glance', '__init__.py')): 
     sys.path.insert(0, possible_topdir) 
     gettext.install('glance', unicode=1) 
     from glance.common import config 
     from glance.common import wsgi 
     from glance.common import exception 
     from glancmon import log 
     import glance.store 
     def fail(returncode, e): 
         sys.stderr.write("ERROR: %s\n" % e) 
         sys.exit(returncode) 
         if __name__ == '__main__': 
             try: 
                 config.parse_args() 
                 log.setup('glance') 
                 glance.store.create_stores() 
                 glance.store.verify_default_store() 
                 server = wsgi.Server() 
                 server.start(config.load_paste_app(), default_port=9292) 
                 server.wait() 
             except exception.WorkerCreationFailure, e: 
                 fail(2, e) 
             except RuntimeError, e: 
                 fail(1, e)       

     首先程序会调用glance.store.create_stores,注册与后端存储(swift、s3、filesystem等)相关的控制模块,并校验默认存储方式。

紧接着启动一个Http Server,Openstack的WSGI SERVER用到了eventlet这个绿色线程的组件。通过config.load_paste_app()方法,会从上面提到的glance-api-paste.ini配置文件中读取要启动的WSGI app,并在server中启动,并让server线程等待接收http rest查询响应。

分享到:
评论

相关推荐

    paraview-glance-源码.rar

    《Paraview-Glance源码解析》 Paraview-Glance是ParaView项目的一个分支,专注于提供轻量级的、基于Web的可视化界面,让用户能够远程访问和交互式地查看大型科学数据。源码分析是理解软件工作原理、进行定制化开发...

    glance 1.1

    Glance是OpenStack云平台中的一个关键组件,主要负责提供虚拟机镜像的存储和检索服务。在"glance 1.1"这个版本中,我们聚焦于OpenStack Glance的早期发展,它为OpenStack生态系统奠定了基础。下面将详细讨论Glance ...

    Python-Glance是一个用于替代tophtop的跨平台监控工具

    此时,Python-Glance作为一个现代化的跨平台监控解决方案应运而生,它旨在为用户提供更直观、可定制的监控体验。 **Python-Glance的特点** 1. **跨平台兼容性**:Glance支持多种操作系统,包括但不限于Linux、...

    Glance安装配置简介.docx

    Glance是OpenStack云平台中的一个关键组件,主要负责镜像服务,为虚拟机实例提供镜像的存储、检索和管理功能。以下是对Glance安装配置的详细说明: 1. **创建Glance数据库及授权** 在安装Glance之前,需要在MySQL...

    openstack其中四大组件源码

    通过深入学习这四大组件的源码,开发者不仅可以了解OpenStack的基本架构和工作原理,还能对云存储、计算和身份管理有更深入的理解。此外,源码分析对于定制化开发、性能优化以及故障排查都具有重要意义。对于希望...

    云计算Glance 管理

    云计算Glance管理是云计算领域中的一种重要的镜像管理服务。Glance是OpenStack云计算平台中的一部分,负责管理和维护虚拟机镜像。Glance提供了镜像的注册、存储、检索和删除等功能,确保了云计算环境中的镜像管理是...

    20-理解 Glance1

    Glance的架构包含两个主要的服务进程:glance-api和glance-registry。glance-api对外提供REST API接口,处理用户的请求,如果是元数据操作,它会将请求转发给glance-registry;如果是镜像文件的存取,它会根据配置的...

    OpenStack之镜像服务(Glance)安装

    镜像服务(Glance)是OpenStack中的一个核心组件,主要负责管理和提供虚拟机镜像。以下是对安装和配置Glance服务的详细步骤和涉及的知识点的解释: 1. **安装Glance软件包**:在OpenStack环境中,首先需要通过包...

    Glance监控命令在HP UX上的使用

    Glance是一个功能强大的实时监控工具,专为HP-UX系统设计。它能够提供丰富的系统信息,并以图形模式和文本模式显示,帮助用户更好地理解和管理系统的资源利用情况。Glance支持多种视图展示,包括但不限于CPU使用率、...

    004.Glance详解1

    在OpenStack云平台中,Glance是一个关键组件,它负责管理和提供虚拟机镜像服务。理解Glance的系统架构及其工作原理对于有效地构建和维护OpenStack环境至关重要。 一、系统架构 Glance的系统架构主要包括以下几个...

    OpenStack-glance服务-glance-api.conf配置文件

    OpenStack-glance服务-glance-api.conf配置文件,在配置OpenStack的glance服务中,配置文件glance-api.conf需要进行部分修改,进而来适应各种服务,该文件为修改完成的glance-api.conf文件内容。

    OpenStack的架构详解

    3. **OpenStack Image Service (Glance)**:Glance主要负责管理和检索虚拟机镜像,它提供了一个RESTful API供用户查询、上传和下载镜像。Glance可以集成多种后端存储,如本地文件系统、Swift对象存储或者Amazon S3等...

    源码安装openstack软件包

    在"源码安装openstack软件包"的过程中,我们需要对OpenStack的架构和组件有深入理解,并熟悉Linux操作系统、编译工具以及依赖管理。 首先,OpenStack的组件包括Nova(计算)、Glance(镜像服务)、Cinder(块存储)...

    云计算实验2 安装镜像服务glance.doc

    该实验属于软件学院网络工程专业的一门课程,旨在让学生们通过实际操作来掌握OpenStack中的关键组件之一——Glance镜像服务的安装与配置。 实验的主要目标包括: - 学习如何安装和配置Glance镜像服务。 - 理解...

    glance镜像发布

    openstack项目中关于glance的应用与注意事项

    5.2 glance的安装和配置1

    1. 源码加载`admin`用户的环境变量: ``` source /root/admin-openrc ``` 2. 创建Glance用户,指定其属于`default`域,与`service`项目关联,赋予`admin`角色: ``` openstack user create --domain default -...

    openstack nova源码分析

    在进行OpenStack Nova源码分析时,我们需要深入了解其架构、核心模块以及关键流程。 首先,Nova的整体架构基于服务模型,包括以下主要服务: 1. **nova-api**:API服务,对外提供RESTful API接口,用于与其他...

    glance命令使用

    默认情况下,`glance`每5秒刷新一次屏幕,展示系统资源和活动进程的基本信息。为了获取更详细的性能数据,可以通过命令行参数来定制显示内容。 #### 三、常用选项及参数 ##### 1. 基本选项 - **`-j interval`**: ...

    OpenStack架构详解.pdf

    OpenStack 镜像服务(Glance)是一个查找和虚拟机图像检索系统。它可以配置三种方式:使用 OpenStack 对象存储来存储图像;使用亚马逊 S3 直接存储;或使用 S3 对象存储作为 S3 访问中间存储。 OpenStack 项目架构...

Global site tag (gtag.js) - Google Analytics