配置服务主动健康检查

更新时间:
复制 MD 格式

为服务配置主动健康检查可以实现在服务的个别实例节点异常时自动下线,并且在节点恢复正常后自动上线。该功能可以在后端服务有多副本部署时,提高路由到该服务的接口的可用性。

操作步骤

说明

网关版本为1.2.1及以上时,创建服务会默认开启TCP健康检查。

  1. 登录MSE网关管理控制台,并在顶部菜单栏选择地域。

  2. 在左侧导航栏,选择云原生网关 > 网关列表,单击目标网关实例ID。

  3. 在左侧导航栏,选择路由管理,然后选择服务页签。

  4. 单击对应服务的健康检查配置。在配置健康检查面板,打开开启健康检查开关并进行相关配置,然后单击确定

健康检查异常排查

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

请您做如下确认:

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

    • 该节点是否存在。

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

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

  • 确认后端 ECS 实例上的 Docker 网桥网段是否与 VPC 网段冲突。当后端 ECS 安装了 Docker 时,Docker 默认网桥网段(如 172.17.0.0/16)可能与 ECS 所在 VPC 网段(如 172.16.0.0/12)重叠,导致网关健康检查请求路由错误。可以在 ECS 上执行以下命令查看路由表,确认 Docker 网桥网段是否与 VPC 网段重叠:

    route -n

    若存在重叠,可以修改 /etc/docker/daemon.json 文件中的 bip 参数调整 Docker 网桥网段(例如改为 192.168.0.1/24),重启 Docker 服务后确认冲突解除。

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

请您依次做如下确认:

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

    说明

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

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

  3. 确认是否进行了安全组授权,如果是ACK服务来源,请注意是容器集群的安全组。更多信息,请参见安全组授权

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

健康检查状态显示“检查中”或首次探测失败但后续成功

若健康检查状态显示为检查中,或首次探测失败但后续探测很快恢复成功,通常属于正常的过渡状态,并非真实故障,可能原因包括:

  • 后端服务响应延迟,首次探测耗时接近 2 秒的超时阈值,导致状态未及时更新。

  • Pod 或网关负载较高,健康检查未获取到预期结果。

  • 健康检查刚开启,或服务刚注册,尚未完成完整的探测周期(需连续多次探测成功才会被标记为健康)。

建议先观察一段时间,等待探测周期完成;若状态持续异常,再参考本章节其他排查步骤处理。

协议配置错误导致健康检查通过但访问失败

若 MSE Ingress 配置的上游健康检查显示正常,但实际访问服务失败,请按以下顺序排查:

  1. 核对 ACK 中应用的服务协议类型配置是否正确。例如 HTTP 请求必须使用 TCP 协议,若误配为 UDP 会导致访问失败。

  2. 修正协议类型后,重新保存并发布路由配置。

  3. 检查容器服务来源是否已开启自动监听

  4. 执行 kubectl describe endpoints 命令,检查服务端点详情,确认端点是否正常。

IPv6 地址导致健康检查异常

问题现象:Pod 已监听 IPv6 端口,但 MSE 网关健康检查仍显示异常。

原因:MSE 网关目前暂不支持代理 IPv6 资源。

解决方案:修改后端 Service 配置,将 ipFamilies 指定为 IPv4,确保流量通过 IPv4 通信。