kong - 健康检查和断路器 Linux教程


# Kong支持两种健康检查,可单独使用或联合使用:

1. 主动检查,目标中的特定HTTP端点定期被请求,目标的健康是根据其响应确定的。

2. 被动检查(也称为断路器),Kong分析正在访问的流量,并根据它们响应请求确定目标的健康状况。

主动健康检查可以在恢复健康的时候自动重新激活环平衡器中的目标。被动健康检查则不能。


# 正反两方面的总结

主动健康检查可以在恢复健康的时候自动重新激活环平衡器中的目标。被动健康检查则不能。

被动健康检查不会给目标带来额外的流量。主动健康检查会产生额外流量。

一个主动健康检查程序需要一个已知的URL,在目标中有一个可靠的状态响应,以便将其配置为探针(可能就像“/”一样简单)。被动健康检查不要求这样的配置。

通过为一个主动健康检查器提供一个定制的探测端点,应用程序可以确定它自己的健康指标,并生成一个由Kong使用的状态码。即使一个目标继续为被动健康检查器提供看起来健康的流量,它也可以对主动探测的失败状态作出响应,本质上是请求从新的流量中解脱出来。

可以将这两种模式结合起来。例如,一个人可以让被动健康检查仅仅基于其流量来监控目标健康,并且只在目标不健康的情况下使用主动健康检查,以便自动重新启用它。


# 启用主动健康检查

要启用主动健康检查,您需要在在上游对象配置中指定下面的配置项healthchecks.active。您需要指定必要的信息,以便Kong能够对目标进行周期性的探测,以及如何解释所得到的信息。

配置探头,您需要指定:

healthchecks.active.http_path - 在向目标发出HTTP GET请求时应该使用的路径。默认值是“/”。

healthchecks.active.timeout - 用于探测的HTTP GET请求的连接超时限制。默认值是1秒。

healthchecks.active.concurrency - 在主动健康检查中并发检查的目标数量。

你还需要为运行的探针指定间隔的值:

healthchecks.active.healthy.interval - 健康目标的主动健康检查间隔时间(以秒为单位)。0的值表明不执行对健康目标的主动探测。

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

这允许您调整主动健康检查的行为,无论您是否希望探测健康和不健康的目标在相同的时间间隔内运行,或者一个比另一个更频繁。

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

healthchecks.active.healthy.successes - 在主动探测中成功的数量(由healthchecks.active.healthy.http_statuses定义)来确认目标的健康

healthchecks.active.unhealthy.tcp_failures - 在主动探测中TCP故障的数量,以确认目标是不健康的。

healthchecks.active.unhealthy.timeouts - 在主动探测中超时的数量,以确认目标是不健康的。

healthchecks.active.unhealthy.http_failures - 在主动探测中出现的HTTP故障数量(由healthchecks.active.healthy.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的相关属性。

要完全禁用上游的主动健康检查,您需要同时设置healthchecks.active.health.interval和healthchecks.active.unhealth.interval为0。

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

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



签名:这个人很懒,什么也没有留下!
最新回复 (0)
返回