健康检查

最近更新时间:2025-03-10 18:08:33

我的收藏

概述

TSF 健康检查分为存活检查和就绪检查:
存活检查:主要作用是确定进程存活状态,判断是否需要进行实例重启。例如存活检查可以捕捉到死锁(应用程序进程还存在,但是无法响应),重启进程或者容器可以让应用程序恢复可用。
就绪检查:主要作用是确定服务实例能否支持对外服务,将健康检查结果与注册中心状态联动实现滚动更新及无损发布。当一个实例没有就绪,实例会在注册中心中被屏蔽(其他服务不会发送请求到微服务实例上)。

健康检查支持的产品能力

存活检查。
就绪检查。
无损发布。
检查顺序:HTTP 检查、TCP 端口、执行命令检查。
支持虚拟机部署组和容器部署组。

健康检查与注册中心联动流程


1. 就绪检查,检查实例状态是否 ready。
2. 如果就绪检查 ready 则更新实例注册状态为 passing,反之则检查状态为 Critical。
3. 监听注册中心服务提供方实例状态变更。
4. 存在状态变更更新缓存及本地文件。
5. 发起服务调用。

配置存活检查

1. 登录 腾讯微服务平台控制台,在应用管理选择对应的应用,进入应用详情,在左侧菜单栏中,单击应用部署
2. 在部署配置,选择对应的容器,展开容器高级设置,在容器健康检查中开启存活检查。



3. 检查方式:
HTTP 请求检查:任何大于200小于400的返回码都会认定是成功的返回码。其他返回码都会被认为是失败的返回码。HTTP 检查需要设置端口和请求路径。
TCP 端口检查:如果可以建立连接被认为是成功的。该检查方式需要设置检查端口。
执行命令检查:如果命令执行成功并且返回值为 0,认为是成功;其他返回值认为是失败。该检查方式需要填写执行命令。
4. 启动延时、超时时间、检测周期、健康阈值、不健康阈值使用默认值即可。

配置就绪检查

场景:服务 A 调用服务 B。服务 B 使用 /health 接口是否返回 200 状态码判断是否健康,当就绪检查失败时,服务 B 在注册中心中被屏蔽,服务 A 通过注册中心监听到服务 B 状态变化后更新本地路由表;当就绪检查成功时,服务 B 在注册中心恢复健康状态。
1. 登录 腾讯微服务平台控制台,在应用管理选择对应的应用,进入应用详情,在左侧菜单栏中,单击应用部署
2. 在部署配置,选择对应的容器,展开容器高级设置,在容器健康检查中开启就绪检查。



优雅滚动重启:无须用户设置检查规则,会根据服务实例是否注册到注册中心来决定 Pod 变为 ready 状态。
自定义:自定义容器就绪检查通过的方式。
3. 检查方式:
HTTP 请求检查:任何大于200小于400的返回码都会认定是成功的返回码。其他返回码都会被认为是失败的返回码。HTTP 检查需要设置端口和请求路径。
TCP 端口检查:如果可以建立连接被认为是成功的。该检查方式需要设置检查端口。
执行命令检查:如果命令执行成功并且返回值为 0,认为是成功;其他返回值认为是失败。该检查方式需要填写执行命令。
4. 启动延时、超时时间、检测周期、健康阈值、不健康阈值使用默认值即可。

就绪检查和滚动更新

部署组支持立即更新和滚动更新两种更新方式:立即更新会先停止所有应用实例,然后使用新的程序包或者镜像版本部署;滚动更新会根据更新策略,分批更新部署组内的实例。
如果部署组使用滚动更新并且开启就绪检查,当就绪检查失败时滚动更新会被阻塞。

TSF 健康检查和 Kubernetes 健康检查的关系

对于容器部署组,存活检查和就绪检查和 Kubernetes 的 Liveness 和 Readiness Probe 对应。除此之外,TSF 就绪检查还会和注册中心进行关联,当检查失败时会将实例从注册中心屏蔽,避免流量打到异常实例上。
说明:
关于 Kubernetes 健康检查详情参见 Kubernetes 配置存活和就绪检查