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。

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

相关推荐
程序员爱中国21 小时前
GateWay服务网关
gateway·服务网关
TOMORROW6COME3 天前
SpringCloud-服务网关-Gateway
spring·spring cloud·gateway
读书笔记控4 天前
计算机相关术语科普之什么叫网关(Gateway)
gateway
Lill_bin5 天前
面试题--SpringBoot
spring boot·后端·spring·spring cloud·zookeeper·gateway·mybatis
怪兽也会哭哭6 天前
微服务应用与开发知识点练习【Gateway,OpenFeign,Dubbo,RocketMQ和RabbitMQ,JPA,Redis,Mycat】
微服务·gateway·rabbitmq·dubbo·rocketmq
怪兽也会哭哭6 天前
Spring Cloud Alibaba之网关组件Gateway
spring boot·gateway·学习笔记
池塘边的菜园子7 天前
学习gateway网关路由时遇到的问题
网络·学习·gateway
池塘边的菜园子7 天前
微服务-网关Gateway
linux·微服务·gateway
请叫我鹏鹏君8 天前
微服务 | Springboot整合GateWay+Nacos实现动态路由
spring boot·微服务·gateway
luo♛8 天前
微服务-网关
java·分布式·spring cloud·微服务·架构·gateway