zoukankan      html  css  js  c++  java
  • nova分析(2)—— nova-all

    nova-all是一个用来启动所有nova服务的辅助脚本,注意只是启动所有服务,不包括停止和重启等功能。

    nova-all的入口在 nova.cmd.all:main ,脚本也比较简单,这儿就贴下代码了

    def main():
        # 命令行参数解析,实际上命令行参数并没有使用
        config.parse_args(sys.argv)
        logging.setup("nova")
        LOG = logging.getLogger('nova.all')
        utils.monkey_patch()
        objects.register_all()
        launcher = service.process_launcher()
    
        # 启动API以提供Rest服务,也就是nova-api(以WSGIService方式启动)
        for api in CONF.enabled_apis:
            try:
                should_use_ssl = api in CONF.enabled_ssl_apis
                server = service.WSGIService(api, use_ssl=should_use_ssl)
                launcher.launch_service(server, workers=server.workers or 1)
            except (Exception, SystemExit):
                LOG.exception(_('Failed to load %s') % '%s-api' % api)
    
        # 启动s3server(基于本地文件实现S3式的存储服务)
        # 启动xvp_proxy(VNC代理,支持基于java的vnc客户端)
        # 这两个服务都是以wsgi.Server方式启动
        for mod in [s3server, xvp_proxy]:
            try:
                launcher.launch_service(mod.get_wsgi_server())
            except (Exception, SystemExit):
                LOG.exception(_('Failed to load %s') % mod.__name__)
    
        # 其他的服务以Service方式启动
        for binary in ['nova-compute', 'nova-network', 'nova-scheduler',
                       'nova-cert', 'nova-conductor']:
    
            # FIXME(sirp): Most service configs are defined in nova/service.py, but
            # conductor has set a new precedent of storing these configs
            # nova/<service>/api.py.
            #
            # We should update the existing services to use this new approach so we
            # don't have to treat conductor differently here.
            if binary == 'nova-conductor':
                topic = CONF.conductor.topic
                manager = CONF.conductor.manager
            else:
                topic = None
                manager = None
    
            try:
                launcher.launch_service(service.Service.create(binary=binary,
                                                               topic=topic,
                                                              manager=manager))
            except (Exception, SystemExit):
                LOG.exception(_('Failed to load %s'), binary)
        launcher.wait()
  • 相关阅读:
    数组顺序表
    指针、数组、结构体
    急救模式下安装rpm包
    如何杀死远程服务器到本机的tcp连接
    centos升级内核之后修改内核启动顺序
    rpm yum 等命令无响应的解决方法
    关于ssh 设置的相关总结(ssh最大连接数、ssh连接时长、安全性配置等)
    详解Linux中的日志及用日志来排查错误的方法
    linux 普通用户登陆系统su
    如何更新/升级Red Hat Enterprise Linux内核?
  • 原文地址:https://www.cnblogs.com/feisky/p/3873630.html
Copyright © 2011-2022 走看看