Kong工作原理 - 健康检查和断路器 - 启用和禁用健康检查

启用和禁用健康检查

要启用主动健康检查,您需要在上游对象配置的healthchecks.active下指定配置项。您需要提供必要的信息,以便Kong可以对目标进行定期探测,并指定如何解释结果信息。

您可以使用healthchecks.active.type字段来指定是否执行HTTP或HTTPS探测(将其设置为"http"或"https"),或者只是测试与给定主机和端口的连接是否成功(将其设置为"tcp")。

对于配置探测,您需要指定以下内容:

  • healthchecks.active.http_path - 在向目标发出HTTP GET请求时应使用的路径。默认值为"/"。
  • healthchecks.active.timeout - 探测的HTTP GET请求的连接超时限制。默认值为1秒。
  • healthchecks.active.concurrency - 在主动健康检查中同时检查的目标数量。

您还需要为运行探测指定正值的间隔:

  • healthchecks.active.healthy.interval - 健康目标的主动健康检查之间的间隔(以秒为单位)。值为零表示不应执行健康目标的主动探测。
  • healthchecks.active.unhealthy.interval - 不健康目标的主动健康检查之间的间隔(以秒为单位)。值为零表示不应执行不健康目标的主动探测。

这使您可以调整主动健康检查的行为,无论是希望对健康和不健康的目标进行相同间隔的探测,还是其中一个比另一个更频繁。

如果您正在使用HTTPS健康检查,还可以指定以下字段:

  • healthchecks.active.https_verify_certificate - 在使用HTTPS执行主动健康检查时,是否检查远程主机的SSL证书的有效性。
  • healthchecks.active.https_sni - 在使用HTTPS执行主动健康检查时要使用的主机名作为SNI(服务器名称标识)。当使用IP配置目标时,这特别有用,以便能够使用正确的SNI验证目标主机的证书。

请注意,TLS验证失败将增加"TCP failures"计数器;"HTTP failures"仅指HTTP状态码,无论是通过HTTP还是HTTPS进行探测。

最后,您需要配置Kong如何解释探测结果,通过设置健康计数器上的各种阈值,一旦达到这些阈值就会触发状态变化。计数器阈值字段如下:

  • healthchecks.active.healthy.successes - 在主动探测中的成功次数(由healthchecks.active.healthy.http_statuses定义)以确定目标是否健康。
  • healthchecks.active.unhealthy.tcp_failures - 在主动探测中的TCP故障或TLS验证故障次数,以确定目标是否不健康。
  • healthchecks.active.unhealthy.timeouts - 在主动探测中的超时次数,以确定目标是否不健康。
  • healthchecks.active.unhealthy.http_failures - 在主动探测中的HTTP故障次数(由healthchecks.active.unhealthy.http_statuses定义),以确定目标是否不健康。

启用被动健康检查

注意:混合模式下不支持此功能。

被动健康检查不包含探测,而是通过解读从目标流出的持续流量来工作。这意味着要启用被动检查,您只需要配置其计数器阈值:

  • healthchecks.passive.healthy.successes - 在被动健康检查中观察到的代理流量中的成功次数(由healthchecks.passive.healthy.http_statuses定义),以确定目标是否健康。当启用被动检查时,这个值需要为正数,以使健康的流量重置不健康的计数器。
  • healthchecks.passive.unhealthy.tcp_failures - 在被动健康检查中观察到的代理流量中的TCP故障次数,以确定目标是否不健康。
  • healthchecks.passive.unhealthy.timeouts - 在被动健康检查中观察到的代理流量中的超时次数,以确定目标是否不健康。
  • healthchecks.passive.unhealthy.http_failures - 在被动健康检查中观察到的代理流量中的HTTP故障次数(由healthchecks.passive.unhealthy.http_statuses定义),以确定目标是否不健康。

禁用健康检查

在健康检查配置中,对于所有计数器阈值和间隔的设置,将值设置为零意味着禁用该字段代表的功能。将探测间隔设置为零将禁用探测。同样地,您可以通过将计数器阈值设置为零来禁用某些类型的检查。例如,如果不希望在执行健康检查时考虑超时,可以将超时字段(用于主动检查和被动检查)都设置为零。这样一来,您可以精确控制健康检查器的行为。

总结起来,要完全禁用上游的主动健康检查,您需要将healthchecks.active.healthy.interval和healthchecks.active.unhealthy.interval都设置为0。

要完全禁用被动健康检查,您需要将healthchecks.passive下各计数器的所有阈值设置为0。

健康检查中的所有计数器阈值和间隔默认为零,这意味着在新创建的上游中默认情况下完全禁用了健康检查。

相关推荐
苏渡苇18 小时前
Spring Cloud Gateway 网关限流
spring cloud·gateway·springboot·网关限流
一个儒雅随和的男子2 天前
Spring cloud组件gateway网关详细剖析
spring·spring cloud·gateway
超梦dasgg2 天前
Gateway 鉴权场景:网关统一鉴权 + 业务应用决定放行规则
java·gateway
木雷坞2 天前
AI Gateway 接入大模型服务后首 token 慢排查:镜像、模型缓存和 GPU 节点
人工智能·缓存·gateway
明夜之约2 天前
Spring Cloud Gateway 深度解析:从路由原理到生产级网关实战
java·spring·spring cloud·gateway
tyler_download4 天前
深入深出openclaw:gateway 服务进程的启动逻辑
gateway
Upsy-Daisy4 天前
OpenClaw 源码解析(七):Gateway 控制平面与 WebSocket RPC 机制
websocket·平面·gateway
香菜烤面包4 天前
SGLang Model Gateway 核心功能解析
gateway
a752066287 天前
Windows 11运行OpenClaw(小龙虾)完整指南:从下载到Gateway在线
人工智能·windows·gateway·小龙虾·ai 办公自动化·小龙虾一键部署
阿里-于怀9 天前
告别 Ingress Nginx:云原生 API 网关 Gateway API 使用指引
nginx·云原生·gateway