健康检查

最近更新时间:2024-11-13 16:14:53

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

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

配置存活检查

1. 登录 TSF 控制台,在左侧菜单栏中,单击部署组
2. 找到目标部署组,单击操作列的部署应用
3. 在部署应用页面,开启存活检查。
4. 检查方式:
HTTP 请求检查:任何大于200小于400的返回码都会认定是成功的返回码。其他返回码都会被认为是失败的返回码。HTTP 检查需要设置端口和请求路径。
TCP 端口检查:如果可以建立连接被认为是成功的。该检查方式需要设置检查端口。
执行命令检查:如果命令执行成功并且返回值为 0,认为是成功;其他返回值认为是失败。该检查方式需要填写执行命令。
5. 启动延时、超时时间、检测周期、健康阈值、不健康阈值使用默认值即可。

配置就绪检查

场景:服务 A 调用服务 B。服务 B 使用 /health 接口是否返回 200 状态码判断是否健康,当就绪检查失败时,服务 B 在注册中心中被屏蔽,服务 A 通过注册中心监听到服务 B 状态变化后更新本地路由表;当就绪检查成功时,服务 B 在注册中心恢复健康状态。
1. 登录 TSF 控制台,在左侧菜单栏中,单击部署组
2. 找到目标部署组,单击操作列的部署应用
3. 在部署应用页面,开启就绪检查。
如果是容器部署组,可以选择默认检查或者自定义默认检查无须用户设置检查规则,会根据服务实例是否注册到注册中心来决定 Pod 变为 ready 状态。
如果是虚拟机部署组,则只能自定义设置。
4. 检查方式:
HTTP 请求检查:任何大于200小于400的返回码都会认定是成功的返回码。其他返回码都会被认为是失败的返回码。HTTP 检查需要设置端口和请求路径。
TCP 端口检查:如果可以建立连接被认为是成功的。该检查方式需要设置检查端口。
执行命令检查:如果命令执行成功并且返回值为 0,认为是成功;其他返回值认为是失败。该检查方式需要填写执行命令。
5. 启动延时、超时时间、检测周期、健康阈值、不健康阈值使用默认值即可。

就绪检查和滚动更新

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

编辑健康检查

1. 登录 TSF 控制台,在左侧菜单栏中,单击部署组
2. 找到目标部署组,单击“ID/部署组名”。
3. 选择基本信息,单击健康检查模块右上角的编辑
4. 编辑健康检查信息,单击提交

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

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