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。

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

相关推荐
.生产的驴3 小时前
SpringCloud Gateway网关路由配置 接口统一 登录验证 权限校验 路由属性
java·spring boot·后端·spring·spring cloud·gateway·rabbitmq
菜菜-plus1 天前
分布式,微服务,SpringCloudAlibaba,nacos,gateway,openFeign
java·分布式·微服务·nacos·gateway·springcloud·openfeign
七月在野,八月在宇,九月在户1 天前
前端--> nginx-->gateway产生的跨域问题分析
前端·nginx·gateway
Denny辉3 天前
Flink使用SQL Gateway提交SQL Job到远程集群
sql·flink·gateway
菜菜-plus3 天前
Nginx、Gateway的区别
运维·nginx·gateway
cyt涛5 天前
SpringCloudGateway — 网关登录校验
运维·网关·gateway·登录·过滤器·校验·threadlocal
牛角上的男孩7 天前
Istio Gateway发布服务
云原生·gateway·istio
柳叶寒9 天前
医院信息化与智能化系统(17)
java·nacos·gateway·全栈·项目
cyt涛9 天前
SpringCloudGateway — 网关路由
java·开发语言·网关·gateway·路由·断言·转发
风霜不见闲沉月9 天前
kong网关的使用
junit·kong