Liberty nova-api启动流程分析

本博客欢迎转载,但请注明出处 http://blog.csdn.net/ringoshen/article/details/51321540

由于能力与时间有限,文章内容难免错漏,望大家多加指正,相互进步!

0. 总览

nova的服务在功能上主要分为应用层和逻辑层两类,nova-api就是应用层的服务,而nova-scheduler、nova-conductor等则是逻辑层服务。本文主要通过注释的方式讲述nova-api服务的启动流程。
首先看一下main函数,之后针对几个重要的部分简单跟踪一下。

# nova/cmd/api.py

def main():
    # 加载命令行传入的参数,设置数据库和RPC,argv是服务启动命令的参数列表,
    # ['/usr/local/bin/nova-api', '--config-file', '/etc/nova/nova.conf']
    config.parse_args(sys.argv)

    # 直接调用oslo_log.log设置服务的日志文件
    logging.setup(CONF, "nova")
    # 打补丁的方式导入模块,但默认不开启
    utils.monkey_patch()
    # 其实就是import objects模块的各个object,在RPC接收时用到
    objects.register_all()

    # 根据wiki的解释,应用于admin了解系统运行细节,
    # 通过信号量的方式进行触发,可生成极为详细的运行报告
    gmr.TextGuruMeditation.setup_autorun(version)

    # 创建一个ProcessLauncher对象,也就是服务启动器
    launcher = service.process_launcher()

    # 创建api,我的默认配置是enabled_apis = osapi_compute,metadata
    for api in CONF.enabled_apis:
        # 默认都不使用ssl
        should_use_ssl = api in CONF.enabled_ssl_apis、
        # 创建相应api的WSGIService对象
        server = service.WSGIService(api, use_ssl=should_use_ssl)
        # 启动相应api的服务
        launcher.launch_service(server, workers=server.workers or 1)
    # 监控api服务的worker,不正常结束就reset;接收到终止的信号量就kill workers
    launcher.wait()

以下是本文涉及到的一些文件目录
这里写图片描述

1. 解析命令行参数

主要是设置默认的配置,其中最主要的是RPC的设置和初始化,我的环境的默认driver是rabbitmq。

# nova/config.py

def parse_args(argv, default_config_files=None, configure_db=True,
               init_rpc=True):
    # 设置oslo_log使用的默认选项
    log.set_defaults(_DEFAULT_LOGGING_CONTEXT_FORMAT, _DEFAULT_LOG_LEVELS)
    # 注册命令行和配置选项
    log.register_options(CONF)
    # 设置DB相关的默认选项
    options.set_defaults(CONF, connection=_DEFAULT_SQL_CONNECTION,
                         sqlite_db='nova.sqlite')
    # 设置RPC的默认选项,设置默认exchange为nova
    rpc.set_defaults(control_exchange='nova')

    # ===== 这三个默认配置并不是很懂,之后看懂了补上 =====
    cache.configure(CONF)
    debugger.register_cli_opts()
    config.set_middleware_defaults()
    # ====================================================

    # 解析命令行参数和配置文件
    CONF(argv[1:],
         project='nova',
         version=version.version_string(),
         default_config_files=default_config_files)

    # 初始化RPC。之前都是些默认配置,RPC的初始化过程稍微复杂一些,涉及stevedore模块,
    # 主要涉及几个对象:TRANSPORT, NOTIFICATION_TRANSPORT, LEGACY_NOTIFIER, NOTIFIER
    if init_rpc:
        rpc.init(CONF)
    # 配置sqlalchemy api
    if configure_db:
        sqlalchemy_api.configure(CONF)

2. Guru Meditation Reports

这个模块主要是进行对系统操作的监控,这里可以看一看wiki里的一个展示看一下效果。
如果有兴趣可以看一下wiki的详细解释 Guru Meditation Reports

========================================================================
====                     Guru meditation report                     ====
========================================================================
UUID: 6d4faf99-480c-4d0c-90be-b7d090ecd83e
Time: Mon, 18 Feb 2013 18:01:11 +0000
========================================================================
====                             Config                             ====
========================================================================
DEFAULT:
  allow_resize_to_same_host=True
  allow_same_net_traffic=True
  allowed_direct_url_schemes=[]
  allowed_rpc_exception_modules=['nova.openstack.common.exception', 'nova.exception', 'cinder.exception', 'exceptions']
  api_paste_config=/etc/nova/api-paste.ini
  api_rate_limit=True
  auth_strategy=keystone
  auto_assign_floating_ip=False
  backdoor_port=None
  bandwidth_poll_interval=600
  base_dir_name=_base
  bindir=/home/berrange/src/cloud/nova/bin

  ... ...  ... ...
  ... ...  ... ...

  Thread ID 3
  /usr/lib/python2.7
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
【优质项目推荐】 1、项目代码均经过严格本地测试,运行OK,确保功能稳定后才上传平台。可放心下载并立即投入使用,若遇到任何使用问题,随时欢迎私信反馈与沟通,博主会第一时间回复。 2、项目适用于计算机相关专业(如计科、信息安全、数据科学、人工智能、通信、物联网、自动化、电子信息等)的在校学生、专业教师,或企业员工,小白入门等都适用。 3、该项目不仅具有很高的学习借鉴价值,对于初学者来说,也是入门进阶的绝佳选择;当然也可以直接用于 毕设、课设、期末大作业或项目初期立项演示等。 3、开放创新:如果您有一定基础,且热爱探索钻研,可以在此代码基础上二次开发,进行修改、扩展,创造出属于自己的独特应用。 欢迎下载使用优质资源!欢迎借鉴使用,并欢迎学习交流,共同探索编程的无穷魅力! 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip 基于业务逻辑生成特征变量python实现源码+数据集+超详细注释.zip

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值