配置服务健康检查

为服务配置健康检查,可检测后端服务运行状态。若服务实例节点发生异常,可下线或隔离异常的节点,以保障路由到该服务的接口可用性。同时可进行恐慌阈值配置,以保障系统在极端情况下的基本服务能力。本文将介绍服务健康检查功能及相关操作步骤。

使用场景

主动健康检查:实现服务中个别实例节点异常时自动下线(主动发送请求,如TCP链接/HTTP GET、探测服务节点是否存活以及直接判断节点是否可用),并在节点恢复正常后自动上线。该功能可在后端服务存在多副本部署时,提高路由到该服务的接口的可用性。

被动健康检查:实现基于实际流量请求失败率动态分析节点健康状态,若某节点表现异常(如失败率过高),将临时隔离该节点,待恢复后自动重启用。

恐慌阈值:用于防止在系统负载升高或部分节点故障时,故障扩散至整个集群,从而避免服务系统性失效。

操作步骤

说明

创建服务时默认开启TCP健康检查。

  1. 登录云原生API网关控制台

  2. 在左侧导航栏,选择实例,并在顶部菜单栏选择地域。

  3. 实例页面,单击目标网关实例ID。

  4. 在左侧导航栏,选择服务,并单击服务页签。

  5. 单击对应服务操作列下的健康检查配置。根据健康检查类型,选择开启,并完成相关配置。

    配置主动健康检查

    配置健康检查面板,打开开启主动健康检查开关并进行相关配置,然后单击确定。相关配置项说明参考下表:

    配置项

    示例值

    描述

    健康检查协议

    HTTP

    • TCP协议健康检查通过发送SYN握手报文来检测服务器端口是否存活。

    • HTTP协议健康检查通过发送请求模拟浏览器的访问行为来检查服务器应用是否健康。

    健康检查路径

    /

    用于健康检查页面文件的URI,建议对静态页面进行检查。

    正常状态码

    http_2xx

    用于判断健康检查正常的HTTP状态码。

    健康检查响应超时时间

    2

    每次健康检查响应的最大超时时间,超时视同不健康。

    健康检查间隔时间

    2

    相邻两次健康检查的时间间隔。

    健康检查健康阈值

    2

    云服务器从失败到成功的连续健康检查成功次数。

    健康检查不健康阈值

    2

    云服务器从成功到失败的连续健康检查失败次数。

    配置被动健康检查

    配置健康检查面板,打开开启被动健康检查开关并进行相关配置,然后单击确定。相关配置项说明参考下表:

    配置项

    示例值

    描述

    失败率阈值

    80

    当某节点失败请求占比达到此阈值,系统将触发该节点的弹出机制。

    检测间隔时间

    30

    每隔指定时间(如 30 秒)计算节点在这段时间内的请求失败率。

    初始隔离时长

    30

    节点被弹出后的初始隔离时长(如 30 秒)。隔离时间计算公式:k * base_ejection_time(k 初始值为1),每次弹出会延长隔离时间(k 加一),若连续检测正常则逐步缩短隔离时间(k 减一)。

    说明

    使用被动健康检查功能,需将引擎版本提升至2.1.9及以上版本。

    当更新被动健康配置时,被动健康检测状态将会重置,隔离的节点将全部重新启用。

恐慌阈值

恐慌阈值用于防止在系统负载升高或部分节点故障时,故障扩散至整个集群,从而避免服务系统性失效。该机制在可用性与正确性之间实现平衡,保障系统在极端情况下的基本服务能力。

具体行为如下:

  • 当集群中健康节点的比例高于恐慌阈值时,健康检查机制正常生效,请求仅路由至被标记为健康的节点,已失效或被弹出的节点将不再接收流量。

  • 当集群中健康节点的比例小于或等于恐慌阈值时,系统进入“恐慌模式”,健康检查机制将被临时绕过,请求会均匀转发至所有节点(包括已被标记为不健康或被弹出的节点)。

此配置旨在避免出现大量节点异常时,剩余少量健康节点因承载全部流量而过载,进而导致级联故障。通过恢复对部分“非健康”节点的调用,提升整体服务的容错能力和可用性。

说明

为在极端场景下最大限度保障服务可用性,系统将恐慌阈值默认设为 1%。当健康节点占比降至该阈值及以下时,系统将切换至恐慌模式,对所有节点转发请求。

建议根据实际业务场景和容灾能力合理调整该阈值,以取得稳定性与服务正确性之间的最佳平衡。

健康检查异常排查

一般情况下出现健康检查异常

排查步骤如下:

  • TCP健康检查失败,说明此时已经无法跟对应节点建立连接,需确认:

    • 该节点是否存在。

    • 是否并发连接数过高导致无法处理。

  • HTTP健康检查失败,改为TCP健康检查并确认是否能建立连接。若TCP健康检查正常,验证配置的健康检查路径是否正确,可尝试使用curl/Postman等工具访问测试。

初次添加服务时出现健康检查异常

排查步骤如下:

  1. 确认所购网关VPC是否与服务实例所处VPC一致,或服务所在环境是否已通过云企业网、专线与网关VPC打通,若VPC不一致且未做VPC连通,网关将无法访问到实例IP。

    说明

    网关不支持通过Nacos、ZooKeeper注册的本地服务。

  2. 确认所购网关VPC是否与服务实例所处VPC一致。若不一致且未做VPC连通,则无法访问到实例IP。

  3. 确认是否进行了安全组授权,若服务来源为ACK服务,需授权容器集群的安全组。更多信息,请参见设置安全组规则

  4. 若不健康的实例IP为公网地址,需确认网关所在VPC是否开启了公网NAT网关。