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。

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

相关推荐
huipeng9263 小时前
GateWay使用详解
java·spring boot·spring cloud·微服务·gateway
随风,奔跑4 天前
Spring Cloud Alibaba(四)---Spring Cloud Gateway
后端·spring·gateway
jiayong234 天前
Hermes Agent 的 Skills、Plugins、Gateway 深度解析
ai·gateway·agent·hermes agent·hermes
鬼蛟4 天前
Gateway
gateway
武超杰4 天前
Spring Cloud Gateway 从入门到实战
spring cloud·gateway
StackNoOverflow4 天前
Spring Cloud Gateway 服务网关详解
gateway
tsyjjOvO4 天前
服务网关 Gateway 从入门到精通
gateway
甜鲸鱼5 天前
JWT过滤器:从单体应用到微服务架构
微服务·架构·gateway·springcloud
notfound40435 天前
解决SpringCloudGateway用户请求超时导致日志未记录情况
java·spring boot·spring·gateway·springcloud
接着奏乐接着舞6 天前
gateway
gateway