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。

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

相关推荐
疯狂的维修1 天前
关于Gateway configration studio软件配置网关
网络协议·c#·自动化·gateway
hadage2331 天前
--- 统一请求入口 Gateway ---
gateway
波波烤鸭3 天前
深入理解 Gateway 网关:原理、源码解析与最佳实践
java·spring·gateway
DO_Community3 天前
DigitalOcean Kubernetes 现已支持 Gateway API 托管服务
容器·kubernetes·gateway
T_Ghost3 天前
SpringCloud微服务网关Gateway
spring cloud·微服务·gateway
Rysxt_5 天前
Spring Boot Gateway 教程:从入门到精通
spring boot·网关·gateway
月夕·花晨5 天前
Gateway -网关
java·服务器·分布式·后端·spring cloud·微服务·gateway
sanggou6 天前
License 集成 Spring Gateway:解决 WebFlux 非阻塞与 Spring MVC Servlet 阻塞兼容问题
spring·gateway·mvc
摘星编程12 天前
Nginx 502 Bad Gateway:从 upstream 日志到 FastCGI 超时复盘
网络·nginx·gateway·php-fpm·fastcgi
网硕互联的小客服12 天前
504 Gateway Timeout:服务器作为网关或代理时未能及时获得响应如何处理?
运维·服务器·gateway