在上一篇文章中,我讲解了反向代理中的负载均衡,一个上游主机要想被使用到的前提:就是这该主机必须可用?那么怎么才算可用呢?这涉及到Caddy的健康检查,和Nginx的类似。

什么是健康检查

比如我们做体验,其实就是对我们自己身体做一个健康检查,判断身体是否健康。那么对于我们的上游主机服务,其实也一样,只要做了健康检查,才能知道这个上游是否健康,是否可用。

健康检查根据方式不同,又分为主动健康检查和被动健康,同样的Caddy也支持这两种检查方式,下面就先为你介绍主动健康检查。

主动健康检查

主动,从字面上看,是主动发起的,所以主动健康检查,也就是Caddy主动发起的对上游主机服务的健康检查,它的Caddyfile配置格式如下所示:

health_urihealth_porthealth_intervalhealth_timeouthealth_status2xx2002xx204health_bodyhealth_statushealth_headers

下面通过一个例子,来看下主动健康检查的使用:

/health?ready=1

被动健康检查

有主动就有被动,从上面的文章我们可以看到,主动检查是Caddy定时主动发起的,不受其他因素限制,但是被动检查就不一样了,被动检查只有在Caddy接收到用户请求时,才会对上游(后端)主机进行检查探测,这就是Caddy的被动健康检查。

和主动健康检查一样,Caddy的被动检查也有几个设置:

fail_durationfail_durationfail_durationmax_failsfail_durationmax_failsunhealthy_status4045xxunhealthy_statusfail_durationmax_failsunhealthy_latencyunhealthy_latencymax_failsunhealthy_request_count

从以上每个配置的解释说明,相信你已经了解了Caddy的被动检查,它其实非常简单,就这么几个配置,并且是根据接收到的请求触发的(非Caddy自己主动),所以叫做被动检查。

fail_duration

小结

这篇主要介绍Caddy的健康检查,从机制上了解它的运作,这对于我们更好的配置Caddy可以提供很大的帮助。

其实Caddy的思路不止可以用于Caddy,也可以用于你自己的代码开发中,比如你调用其他的微服务,也可以采用这里面的思路,做更好的优化,让你的程序更健壮。

flysnow_org