启用基于文件健康检查插件¶
https://blueprints.launchpad.net/oslo.middleware/+spec/enable-by-files-healthcheck
一种通用的健康检查插件,用于验证特定的文件路径是否可用。
问题描述¶
Glance 的文件系统后端可以使用 NFS 共享作为本地文件系统,因此不需要在 Glance 端存储任何特殊配置。Glance 根本不关心 NFS 服务器地址或 NFS 共享路径,它只是假设每个镜像都存储在本地文件系统中。这种假设的缺点是 Glance 不知道 NFS 服务器是否已连接/可用,NFS 共享是否已挂载,只是继续在本地文件系统目录上执行添加/删除操作,这可能会在 NFS 恢复在线时导致同步问题。
提议的变更¶
我们计划在 healthcheck wsgi 中间件中添加新的插件 enable_by_files,该插件可用于所有 OpenStack 组件,如果所需的路径不存在,则报告 503 <REASON> 错误,如果一切正常,则报告 200 OK。
[app:healthcheck]
paste.app_factory = oslo_middleware:Healthcheck.app_factory
backends = enable_by_files (optional, default: empty)
# used by the 'enable_by_files' backend
enable_by_file_paths = /var/lib/glance/images,/var/lib/glance/cache (optional, default: empty)
# Use this composite for keystone auth with caching and cache management
[composite:glance-api-keystone+cachemanagement]
paste.composite_factory = glance.api:root_app_factory
/: api-keystone+cachemanagement
/healthcheck: healthcheck
如果一切正常,中间件将返回“200 OK”,否则将返回“503 <原因>”,并说明为什么不应该使用此 API。
“backends” 将是命名空间为 “oslo.middleware.healthcheck” 的 stevedore 扩展的名称。
此外,我们还将添加一个检查,以验证是否同时提到了两个后端,即 disable_by_file 或 enable_by_files,如果同时提到,我们将引发适当的异常,这将使进程以失败退出。
备选方案¶
无
Impact on Existing APIs¶
这个新的健康检查插件与现有的插件 disable_by_file 完全相反。因此,操作员需要确保不要将 disable_by_file 插件与 enable_by_files 插件一起配置。
安全影响¶
无
性能影响¶
无
Configuration Impact¶
中间件需要按照 Proposed Change 部分所示进行配置。
开发人员影响¶
无
Testing Impact¶
中间件将由单元测试覆盖,并且对于集成了它的每个服务都将有一个 tempest 测试。
实现¶
负责人¶
- 主要负责人
Abhishek Kekane (abhishek-kekane)
- 其他贡献者
无
里程碑¶
完成目标里程碑
Dalmatian-3
工作项¶
编写 enable_by_files 健康检查插件
更新应用程序以使用它
文档影响¶
N/A
依赖项¶
N/A
参考资料¶
Glance NFS 改进规范 - https://review.opendev.org/917284
EnableByFiles 插件 PoC - https://review.opendev.org/919666
注意
本作品采用知识共享署名 3.0 非移植许可协议授权。 http://creativecommons.org/licenses/by/3.0/legalcode