ocata如何启动nova-api服务
发表于:2025-01-26 作者:千家信息网编辑
千家信息网最后更新 2025年01月26日,这篇文章主要为大家展示了"ocata如何启动nova-api服务",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"ocata如何启动nova-api服务"这篇
千家信息网最后更新 2025年01月26日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安全错误
数据库的锁怎样保障安全
虚拟主机和数据库
数据库及其应用 课后答案
统一流媒体服务器
网络安全公司 政府补助
三六零网络安全实力
虎猫网络安全课
曙光服务器一直卡在logo
网络安全宣教月活动总结报告
慕课网三星软件开发云
如果没有卫星还可以使用服务器吗
天津常规软件开发制造价格
dell常用服务器
日企软件开发面试项目介绍
考核点数据库设计
北京服务器租赁
网络安全奖申请
网络安全专家培养
软件开发税票单位是
天津科研项目管控软件开发平台
方舟联机手游绿色服务器
中国电信大规模采购服务器
行情软件开发工具
小学生网络安全小视频
wps共享文件网络服务器
管理服务器的软件有哪几家产品
浙江联想服务器维修维保价格
hpe塔式服务器多少钱
sql服务器如何连接
云南闲虾网络技术有限公司
2b2t手游良心服务器