随着微服务越来越火,对于如何对微服务进行健康检查,也出现了很多成熟的解决方案。本文以其中应用较多的Kong gateway为例,详细讲述如何配置kong health check。
Kong有两种健康检查方法,可分别或同时使用:
active checks主动检查,其中定期请求目标中的特定HTTP或HTTPS端点,并根据其响应确定目标的健康状态;
passive checks被动检查(也称为断路器),Kong在其中分析正在代理的流量,并根据目标的行为响应请求来确定目标的健康状况。
配置health check有两种方式,一种通过kong admin api直接配置(参考官方文档),另一种可以通过配置KongIngress的方式来实现。本文主要介绍后一种方式。
配置KongIngress:
apiVersion: configuration.konghq.com/v1
kind: KongIngress
metadata:
name: health-check-demo
upstream:
healthchecks:
passive:
healthy:
successes: 0
unhealthy:
http_failures: 5
tcp_failures: 5
timeouts: 30
active:
timeout: 5
healthy:
interval: 1
http_statuses: [ 200 ]
successes: 0
unhealthy:
interval: 1
http_failures: 5
http_path: "/"
concurrency: 10
配置完成后,可以通过kubectl get kongingress来查看。要想让这个配置生效,还需要绑定到对应service上,方法如下:
在对应service的yaml文件中增加标红部分,之后只要正常部署即可。
最后,可以通过kong admin api来查看效果:
观察到标红处为"HEALTHY"或者"UNHEALTHY"配置就生效了。如果观察到"HEALTHYCHECK_OFF"那就是配置没有生效,需要具体查看原因。