启用基于文件健康检查插件

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_fileenable_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

参考资料

注意

本作品采用知识共享署名 3.0 非移植许可协议授权。 http://creativecommons.org/licenses/by/3.0/legalcode