健康检查

最近更新时间: 2024-10-17 17:10:00

TSF健康检查分为存活检查及就绪检查:

  • 存活检查主要作用是确定进程存活状态,判断是否需要进行实例重启。例如存活检查可以捕捉到死锁(应用程序进程还存在,但是无法响应),重启进程或者容器可以让应用程序恢复可用。

  • 就绪检查主要作用是确定服务实例能否支持对外服务,将健康检查结果与注册中心状态联动实现滚动更新及无损发布。当一个实例没有就绪,实例会在注册中心中被屏蔽(其他服务不会发送请求到微服务实例上)。

健康检查支持的产品能力:

  • 存活检查

  • 就绪检查

  • 无损发布

  • 检查顺序:http检查,tcp端口,执行命令检查

  • 支持虚拟机部署组和容器部署组

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

  1. 就绪检查,检查实例状态是否ready。

  2. 如果就绪检查ready则更新实例注册状态为passing,反之则检查状态为cirtical。

  3. 监听注册中心服务提供方实例状态变更。

  4. 存在状态变更更新缓存及本地文件。

  5. 发起服务调用。

配置存活检查

  1. 登录 【TSF 控制】,在左侧菜单栏中,单击【部署组】。

  2. 找到目标部署组,单击操作列的【部署应用】。

  3. 在部署应用页面,开启存活检查。

  4. 检查方式:

  • HTTP 请求检查:任何大于200小于400的返回码都会认定是成功的返回码。其他返回码都会被认为是失败的返回码。HTTP 检查需要设置端口和请求路径。

  • TCP 端口检查:如果可以建立连接被认为是成功的。该检查方式需要设置检查端口。

  • 执行命令检查:如果命令执行成功并且返回值为 0,认为是成功;其他返回值认为是失败。该检查方式需要填写执行命令。

  1. 启动延时、超时时间、检测周期、健康阈值、不健康阈值使用默认值即可。

配置就绪检查

场景:服务A调用服务B。服务B使用 /health 接口是否返回 200 状态码判断是否健康,当就绪检查失败时,服务B在注册中心中被屏蔽,服务A通过注册中心监听到服务B状态变化后更新本地路由表;当就绪检查成功时,服务B在注册中心恢复健康状态。

  1. 登录 【TSF 控制台】,在左侧菜单栏中,单击【部署组】。

  2. 找到目标部署组,单击操作列的【部署应用】。

  3. 在部署应用页面,开启就绪检查。

  • 如果是容器部署组,可以选择默认检查或者自定义。 【默认检查】无须用户设置检查规则,会根据服务实例是否注册到注册中心来决定 Pod 变为 ready 状态。

  • 如果是虚拟机部署组,则只能自定义设置。

  1. 检查方式:
  • HTTP 请求检查:任何大于200小于400的返回码都会认定是成功的返回码。其他返回码都会被认为是失败的返回码。HTTP 检查需要设置端口和请求路径。

  • TCP 端口检查:如果可以建立连接被认为是成功的。该检查方式需要设置检查端口。

  • 执行命令检查:如果命令执行成功并且返回值为 0,认为是成功;其他返回值认为是失败。该检查方式需要填写执行命令。

  1. 启动延时、超时时间、检测周期、健康阈值、不健康阈值使用默认值即可。

就绪检查和滚动更新

部署组支持立即更新和滚动更新两种更新方式:立即更新会先停止所有应用实例,然后使用新的程序包或者镜像版本部署;滚动更新会根据更新策略,分批更新部署组内的实例。

如果部署组使用滚动更新并且开启就绪检查,当就绪检查失败时滚动更新会被阻塞。

编辑健康检查

  1. 登录 【TSF 控制台】,在左侧菜单栏中,单击【部署组】。

  2. 找到目标部署组,单击“ID/部署组名”。

  3. 选择【基本信息】,单击【健康检查】模块右上角的【编辑】。

  4. 编辑健康检查信息,单击【提交】。

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

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

注意:

关于 Kubernetes 健康检查详情参考 【Kubernetes 配置存活和就绪检查】。