千家信息网

ocata如何启动nova-api服务

发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,这篇文章主要为大家展示了"ocata如何启动nova-api服务",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"ocata如何启动nova-api服务"这篇
千家信息网最后更新 2025年12月02日ocata如何启动nova-api服务

这篇文章主要为大家展示了"ocata如何启动nova-api服务",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"ocata如何启动nova-api服务"这篇文章吧。

启动nova的api服务时,需要调用nova-api命令,nova-api命令最终是调用nova.cmd.api模块里的main方法。

nova-api命令的main方法解析:

def main():    config.parse_args(sys.argv)#此方法会解析命令行传入进来的参数(sys.argv),配置文件的参数管理使用oslo.config模块进行管理。    logging.setup(CONF, "nova")#调用solo.log模块建立nova域的日志空间    utils.monkey_patch()#此方法会根据配置文件里的monkey_path参数来确定是否对某些模块打补丁。    objects.register_all()#注册所有需要的模块对象if 'osapi_compute' in CONF.enabled_apis:#这里对于缓存nova-compute服务版本是必要的,当使用网络ID为'auto'或'none',发出服务器创建请求时,将会查找该版本。        objects.Service.enable_min_version_cache()    log = logging.getLogger(__name__)#构建获取logger    gmr.TextGuruMeditation.setup_autorun(version)#使用oslo.reports模块来管理收集错误报告    launcher = service.process_launcher()#获取oslo.service模块的服务启动实例    started = 0    for api in CONF.enabled_apis:#定义了api-paste.ini两个默认的sections名,分别为osapi_compute,metadata        should_use_ssl = api in CONF.enabled_ssl_apistry:            server = service.WSGIService(api, use_ssl=should_use_ssl)#遍历启wsgi服务实例,会根据api-paste.ini配置文件加载app            launcher.launch_service(server, workers=server.workers or 1)            started += 1        except exception.PasteAppNotFound as ex:            log.warning(                _LW("%s. ``enabled_apis`` includes bad values. "                    "Fix to remove this warning."), ex)if started == 0:        log.error(_LE('No APIs were started. '                      'Check the enabled_apis config option.'))        sys.exit(1)    launcher.wait()#服务阻塞

api-paste.ini解析:

pasteDeploy通过文件配置的方式将各个功能以模块化的方式组装在一起。这样做的好处是把各个功能特性分块化后方便组装与拆卸,起到了松耦合的作用。

############# Metadata #############[composite:metadata]use = egg:Paste#urlmap   #调用paste模块的urlmap来转发URL,配置文件中的enabled_apis的其中一个默认值就是metadata/: meta    #将/的路径转发到[pipeline:meta]处理,:号也可以换成=号来映射[pipeline:meta]pipeline = cors metaapp[app:metaapp]paste.app_factory = nova.api.metadata.handler:MetadataRequestHandler.factory############## OpenStack ##############[composite:osapi_compute] #这里的url路径映射是使用:号,也可以换成=号来代替use = call:nova.api.openstack.urlmap:urlmap_factory #这里nova自定义了urlmap工厂来处理URL,配置文件中的enabled_apis的其中一个默认值就是osapi_compute/: oscomputeversions         #将/的路径转发到[pipeline:oscomputeversions]处理# v21是与v2完全匹配的功能,但它在wsgi表面上具有更严格的输入验证(防止API早期模糊化)。# 它还通过API微版本提供了新功能,这些微版本可供客户选择。不知情的客户端将接收到相同的冻结v2 API特性集,但有一些宽松的验证/v2: openstack_compute_api_v21_legacy_v2_compatible #将/v2开头的url转到[composite:openstack_compute_api_v21_legacy_v2_compatible]处理/v2.1: openstack_compute_api_v21    #将/v2.1开头的url转到[composite:openstack_compute_api_v21]处理[composite:openstack_compute_api_v21]#调用自定义的composite工厂方法。方法里会根据配置文件的认证策略来决定加载下面哪一种应用,默认加载keystone,也可以将配置文件里的auth_strategy设置为noauth3。use = call:nova.api.auth:pipeline_factory_v21#在noauth3和keystone配置里不同的地方是noauth3和authtoken这两个认证filter,authtoken会先进行keystone登陆验证noauth3 = cors http_proxy_to_wsgi compute_req_id faultwrap sizelimit osprofiler noauth3 osapi_compute_app_v21keystone = cors http_proxy_to_wsgi compute_req_id faultwrap sizelimit osprofiler authtoken keystonecontext osapi_compute_app_v21[composite:openstack_compute_api_v21_legacy_v2_compatible]use = call:nova.api.auth:pipeline_factory_v21noauth3 = cors http_proxy_to_wsgi compute_req_id faultwrap sizelimit osprofiler noauth3 legacy_v2_compatible osapi_compute_app_v21keystone = cors http_proxy_to_wsgi compute_req_id faultwrap sizelimit osprofiler authtoken keystonecontext legacy_v2_compatible osapi_compute_app_v21[filter:request_id]# 它确保为每个API请求分配请求ID并将其设置到request environment。请求ID也被添加到API响应中。 paste.filter_factory = oslo_middleware:RequestId.factory # 确保请求ID的中间件[filter:compute_req_id]# 它确保为每个请求到compute服务的api分配请求ID并将其设置到request environ。请求ID也被添加到API响应中。paste.filter_factory = nova.api.compute_req_id:ComputeReqIdMiddleware.factory[filter:faultwrap]paste.filter_factory = nova.api.openstack:FaultWrapper.factory[filter:noauth3]paste.filter_factory = nova.api.openstack.auth:NoAuthMiddleware.factory[filter:osprofiler]paste.filter_factory = nova.profiler:WsgiMiddleware.factory[filter:sizelimit]paste.filter_factory = oslo_middleware:RequestBodySizeLimiter.factory #限制传入请求的大小的中间件。 [filter:http_proxy_to_wsgi]# 此中间件使用远程HTTP反向代理提供的环境变量重载WSGI环境变量。 paste.filter_factory = oslo_middleware.http_proxy_to_wsgi:HTTPProxyToWSGI.factory # 到WSGI终止中间件的HTTP代理。 [filter:legacy_v2_compatible]paste.filter_factory = nova.api.openstack:LegacyV2CompatibleWrapper.factory[app:osapi_compute_app_v21]paste.app_factory = nova.api.openstack.compute:APIRouterV21.factory[pipeline:oscomputeversions]pipeline = cors faultwrap http_proxy_to_wsgi oscomputeversionapp[app:oscomputeversionapp]paste.app_factory = nova.api.openstack.compute.versions:Versions.factory########### Shared ###########[filter:cors]# 这个中间件允许WSGI应用程序为多个配置的域提供CORS报头.paste.filter_factory = oslo_middleware.cors:filter_factory # CORS中间件 oslo_config_project = nova[filter:keystonecontext]paste.filter_factory = nova.api.auth:NovaKeystoneContext.factory[filter:authtoken]paste.filter_factory = keystonemiddleware.auth_token:filter_factory

以上是"ocata如何启动nova-api服务"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

服务 配置 模块 文件 中间件 处理 命令 方法 版本 内容 功能 参数 篇文章 路径 管理 验证 两个 变量 实例 客户 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 gta战局无法同步服务器怎么办 网络安全性设计的要求 疫情开展网络安全宣传周 网络安全仙果 网络安全辩论赛正方观点 2000数据库怎么看路径 联想服务器管理口怎么进 滴滴出行实行网络安全审查 201年网络安全宣传周视频 如何提示网络安全性 甘肃明星软件开发有限公司 北京市公安部网络安全保卫局 国家网络技术试题及解析 崇明区辅助软件开发收费套餐 三季稻哪个服务器 sql数据库怎么创建表账号密码 西北城市创业做软件开发 成都全国软件开发培训班 数据库超时时间 计算机网络技术高考试卷 网络安全知识竞赛题库 服务器装机需要什么配置 收到网络安全宣传周短信 计算机网络安全的定义和特点 数据库 范围查询 部队网络安全小演讲稿 江苏网络软件开发一体化 宝山区工商软件开发要求 扬州企业软件开发服务 栖霞区工商软件开发专业服务
0