悉尼峰会:Oslo组件的重大更新
峰会进入第三天,来自EasyStack的 Oslo PTL 郭长波和红帽工程师 Stephen Finucane 带来了 OpenStack 公共通用库项目Oslo Pike 版本项目更新。
澳大利亚悉尼当地时间11月6号上午9点,第16届OpenStack峰会在悉尼国际会议中心盛大开幕,来自全球52个国家2300余名与会者,将就以OpenStack为核心的开放基础架构相关技术和商业实践展开为期三天的讨论,本文为第三天的讨论内容之一。
OpenStack 公共通用库项目Oslo Pike 版本主要有五部分更新:机器可读的配置文件生成,全局request id ,和pbr, oslo.messaging, cliff 的更新,本文将对重要的三个更新进行解析。
一、机器可读的配置文件生成
Oslo.config 是一个用于分析配置文件和命令行参数的可扩展库,也是OpenStack项目里普遍使用的项目。oslo.config 提供命令行来生成项目如Nova的配置文件样例,这有助于开发者和运维者了解有哪些配置项及对应的默认值和帮助提示。实现方式为oslo.config 负责格式化并输出每一种配置类型的示例片段,使用oslo.config 的项目需要通过entry_point机制提供项目使用的所有配置项。
在Pike版本以前,oslo.config 只生成ini格式的配置文件样例,这对于一些配置工具来说不是很方便,通常在部署过程中需要替换模板文件里对应的配置项值来完成配置工作。
基于此oslo.config 支持两种机器可读的配置文件格式: YAML 和JSON, 通过参数format指定要生成的配置文件样例格式,这极大的方便了部署工具。
二、
全局Request ID
Request ID 在OpenStack项目里有两个目的:用于跟踪操作过程的日志,运维人员可以通过在日志文件查找特定的Request id了解操作的一些信息; Request ID 也可以被记录在数据库里,通过特定API查看某个Request ID 对应的操作细节便于debug。
现有的Request ID机制有一些不足,一个Request ID局限于一个服务项目如Nova,不能跟踪跨服务项目的整个操作过程。
例如部署一个虚拟机,会涉及到Nova, Glance, Neutron,有可能包括Cinder。运维人员没法通过现有的Request ID 了解整个操作过程在各个服务项目里的调用过程.因此引入全局Request ID。
基本设计思路是: 当一个操作需要调用另一个服务的API时,会传递全局Request ID, 新服务会使用这个全局Request ID 而不是自己重新生成一个新的Request ID. 需要在oslo.log 配置logging_context_format_string 来启用这个功能。
目前oslo 支持的功能已经完成,需要在各个服务项目集成这个新功能,Ironic已经完成,其它项目正在进行中。
三、消息队列oslo.messaging 更新
在Pike 版本里,oslo.messaging 废弃了两项:’blocking’ executor 和pika driver。
Executor 决定了RPC调用和notification通知请求在服务器端如何被分发处理,当前支持三种模式,blocking, threading, eventlet. Blocking 模式下这些请求会被逐个处理,如果前面请求没有处理完,后续请求会被block住,直到前面请求处理完,这个模式更多的用于测试,在生产环境不建议使用,基于此,’blocking’ executor 会在Rocky版本里移除。
pika driver 是调用RabbitMQ server 的一种driver, 但是没有被很好的支持,在性能和稳定性方面并没有现有支持的rabbit driver表现好,所以决定在Rocky 版本移除pika driver。
oslo.messaging 项目另一个大的改变是,可以允许RPC和notification使用不同的后端消息服务器。
在传统的部署模式中,RPC和notification 都使用同一个后端消息服务器,为了防止notification丢失,通常后端消息服务器如RabbitMQ需要持久化这些消息,这在大规模部署情况下这带来了性能问题.通过不同的配置项可以让RPC和Notification使用不同的后端消息服器。
EasyStack工程师点评:Pike 版本里,Oslo在易用性和可管理性上有了很大的改善,不光是方便开发者,运维人员的日常工作,更多的从实际生产环境角度考虑问题,这将对OpenStack其它服务稳定高效运行提供有利支撑。
感谢 EasyStack 工程师 发自悉尼现场的报道
投稿邮箱:[email protected]