购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

4.12 Eureka的健康检查

先来看一下Eureka首页,如图4-11所示。

img

图4-11 Eureka Server上的微服务列表

由图可见,在Status一栏有个UP,表示应用程序状态正常。应用状态还有其他取值,例如DOWN、OUT_OF_SERVICE、UNKNOWN等。只有标记为“UP”的微服务会被请求。

前文讲过,EurekaServer与EurekaClient之间使用心跳机制来确定EurekaClient的状态,默认情况下,服务器端与客户端的心跳保持正常,应用程序就会始终保持“UP”状态。

以上机制并不能完全反映应用程序的状态。举个例子,微服务与Eureka Server之间的心跳正常,Eureka Server认为该微服务“UP”;然而,该微服务的数据源发生了问题(例如因为网络抖动,连不上数据源),根本无法正常工作。

前文说过,Spring BootActuator提供了/health端点,该端点可展示应用程序的健康信息。那么如何才能将该端点中的健康状态传播到Eureka Server呢?

要实现这一点,只需启用Eureka的健康检查。这样,应用程序就会将自己的健康状态传播到Eureka Server。开启的方法非常简单,只需为微服务配置以下内容,就可以开启健康检查。

img

某些场景下,可能希望更细粒度地控制健康检查,此时可实现com.netflix.appinfo.Heal thCheckHandler接口。

img

●eureka.client.heal thcheck.enabled=true只能配置在application.yml中,如果配置在bootstrap.yml(在第9.4节中有详解)中,可能会导致一些不良的后果,例如应用注册到Eureka Server上的状态是UNKNOWN。

●当eureka.client.heal thcheck.enabled=true时,/pause端点(该端点由Spring Boot Actuator提供,用于暂停应用)无法正常工作,详见: https://github.com/spring-cloud/spring-cloud-netflix/issues/1571 ,经笔者测试,发现当eureka.client.heal thcheck.enabled=true时,请求/pause端点也无法将应用在Eureka Server上的状态标记为DOWN。由于该Bug尚未修复,建议读者留意。

img

Eureka健康检查相关博客: https://jmnarloch.wordpress.com/2015/09/02/springcloud-fixing-eureka-application-status/ . ZK35m92rV+aafwEaAV6wBU4TfnpQf0jkok9YUS5zUBejF09H0wSFXaAi2JKVtayw

点击中间区域
呼出菜单
上一章
目录
下一章
×