在上一篇文章中,我讲解了反向代理中的负载均衡,一个上游主机要想被使用到的前提:就是这该主机必须可用?那么怎么才算可用呢?这涉及到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