容器化应用的健康检查、依赖检查与监控
1. 健康检查与依赖检查助力自愈应用
将应用构建为包含众多小组件的分布式系统,虽能提升灵活性与敏捷性,但也使管理更为复杂。组件间存在大量依赖关系,人们可能想明确组件的启动顺序以建模依赖,但这并非良策。
例如,在单台机器上,可通过 Docker Compose 指定 Web 容器依赖于 API 容器,从而确保它们按正确顺序启动。然而在生产环境中,可能在十几台服务器上运行 Kubernetes,需要 20 个 API 容器和 50 个 Web 容器。若对启动顺序建模,容器平台会先启动所有 20 个 API 容器,再启动 Web 容器吗?若 19 个容器正常启动,而第 20 个容器出现问题,需 5 分钟才能启动,此时没有 Web 容器运行,应用无法正常工作,但实际上即使有 1 个 API 容器不可用,50 个 Web 容器也能正常运行。
这时,依赖检查和健康检查就发挥作用了。无需平台保证启动顺序,让其尽快在多台服务器上启动尽可能多的容器。若部分容器无法访问其依赖项,它们会迅速失败并被重启或替换为其他容器。大型应用可能需要几分钟的调整才能达到 100% 服务状态,但在此期间,应用仍可在线为用户提供服务。
以下是容器在生产集群中的生命周期示例:
graph LR
A[容器启动] --> B{依赖检查}
B -- 通过 --> C{健康检查}
B -- 失败 --> D[容器重启或替换]
C -- 通过 --> E[正常运行]
C -- 失败 --> D
超级会员免费看
订阅专栏 解锁全文
1811

被折叠的 条评论
为什么被折叠?



