OpenStack源码分析之Nova-Compute服务启动过程(icehouse)

本文深入分析了OpenStack Nova-Compute服务在icehouse版本的启动过程。从启动命令到upstart-job脚本,再到/etc/init/nova-compute.conf配置文件,详细解释了如何通过start-stop-daemon启动服务,并探讨了/usr/local/bin/nova-compute文件中的main函数和服务管理。文章适合已使用过OpenStack并希望了解其内部工作原理的读者。
摘要由CSDN通过智能技术生成

学习OpenStack有半年多了,一直都停留在使用和trouble shooting的阶段,最近有时间来好好研究了一下代码,因为以前是C++/Windows出生的,所以对Linux下面的Python开发不是很熟悉,本文适合一些已经使用过OpenStack并且想要初步了解代码工作原理的朋友,如果有什么不对的地方欢迎指正

这里分析的是Nova-Compute服务的开启过程,其他服务如Nova-Scheduler, Nova-Conductor等的启动过程类似(代码是基于GitHub上nova的icehouse版本的)

首先,当我们安装完OpenStack的Nova-Compute组件后,通常我们会通过下面两条命令来启动服务:

service nova-compute start
start nova-compute

这两条命令实际上是调用了upstart-job脚本来启动nova-compute服务的

 

首先我们可以在/etc/init/nova-compute.conf文件中看到下面的shell启动脚本

chdir /var/run


pre-start script
        mkdir -p /var/run/nova
        chown root:root /var/run/nova/


        mkdir -p /var/lock/nova
        chown root:root /var/lock/nova/


        modprobe nbd
end script


exec start-stop-daemon --start --chuid root --exec /usr/local/bin/nova-compute -- --config-file=/etc/nova/nova.conf --config-file=/etc/nova/nova-compute.conf


前面几条可以不用管,就是修改一些权限之类的,最后一句exec start-stop-deamon脚本真正的用来启动/usr/local/bin/nova-compute服务,后面带的--config参数相信童鞋们都很熟悉了,就是nova-compute服务的两个配置文件,这在后面的代码中会用到来初始化配置

 

接下来可以找到/usr/local/bin/nova-compute文件

import sys

from nova.cmd.compute import main


if __name__ == "__main__":
    sys.exit(main())

这里有点像C++的main函数启动过程,调用了nova.cmd.compute的main方法

def main():
    config.parse_args(sys.argv)
    logging.setup('nova')
    utils.monkey_patch()
    objects.register_all()

    gmr.TextGuruMeditation.setup_autorun(version)

    if not CONF.conductor.use_local:
        block_db_access()
        objects_base.NovaObject.indirection_api = \
            conductor_rpcapi.ConductorAPI()

    server = service.Service.create(binary='nova-compute',
                                    topic=CONF.compute_topic,
                            
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值