HealthCheck 中间件

https://blueprints.launchpad.net/glance/+spec/healthcheck-middleware

HealthCheck 中间件提供 <SERVER>:<PORT>/healthcheck 端点。该端点的行为类似于 Swift[1] 中的行为。正常操作返回 200 OK,如果配置选项 disable_path 已启用且该路径存在,则将返回 503 DISABLED BY FILE。

问题描述

目前 Glance 没有合理的手段来提供健康检查信息,例如给 HAProxy。任何此类部署都会导致大量的日志记录,并导致服务器端不必要的操作(例如,对 / 的 GET 请求,导致版本检查)。

提议的变更

利用 oslo.middleware 的 healthcheck 中间件,通过

  1. 添加一个新的 paste 过滤器 - healthcheck

  2. 将新的过滤器添加到默认的 Glance API 和 Registry 管道

禁用的功能将允许使用文件系统中的文件来返回 503 DISABLED BY FILE 响应,从而将节点从 HAProxy 中移除。这将允许禁用的节点完成其当前操作,并改善 HA 部署中的维护体验。

备选方案

当前操作模型。

采用 Swift 的略小实现,并将其直接复制到 Glance 的源代码树中。

数据模型影响

REST API 影响

GET ‘/healthcheck’ 200 OK, 503 DISABLED BY FILE

安全影响

通知影响

其他最终用户影响

性能影响

潜在的性能改进,因为 healthcheck 完成的频率很高,并且该中间件是管道开头的轻量级过滤器。

其他部署者影响

healthcheck 将被添加到使用的管道的开头以供使用。可选的 disable_path=PATH 选项将需要在配置文件中启用离散禁用功能。

开发人员影响

实现

负责人

主要负责人

jokke kamil-rykowski

核心评审员

kragniz flaper87 icordasc

工作项

代码变更 测试 配置文件变更 文档变更

依赖项

测试

简单的功能测试,用于验证 <SRV>:<P>/healthcheck 的响应

文档影响

文档变更非常小,解释了新的配置选项和功能。

参考资料

[1] _https://github.com/openstack/swift/blob/master/swift/common/middleware/healthcheck.py