Spring cloud使用consul,网上许多教程,这里就不重复教程了。
1.在学习spring cloud过程中,碰过项目成功启动,没有报错信息,但是服务并没有注册到consul。
排查结果:依赖版本不对,必须使用正确的版本。版本对应如下:
Spring Cloud | Spring Boot |
---|---|
Finchley | 兼容Spring Boot 2.0.x,不兼容Spring Boot 1.5.x |
Dalston和Edgware | 兼容Spring Boot 1.5.x,不兼容Spring Boot 2.0.x |
Camden | 兼容Spring Boot 1.4.x,也兼容Spring Boot 1.5.x |
Brixton | 兼容Spring Boot 1.3.x,也兼容Spring Boot 1.4.x |
Angel | 兼容Spring Boot 1.2.x |
2.服务注册成功但是显示不健康。
产生原因
注册到eureka server的服务,如果开启了健康检查,spring boot程序会隔一小段时间就检查一下配置的一些外部资源是否可用,比如各种数据源是否能联通,如果任意一个配置无法正常连通,就会向eureka server推送消息让该实例下线。这相当于是一个hearbeat,检查各个实例是否能正常使用。当然自己也可以自己实现HealthCheckHandler来个性化健康检测,甚至给一个REST接口更改getStatus()返回值。
原因清楚了那么就自己写一个接口做健康检查。
@RequestMapping("/home")
public String home() {
return "Hello World";
}
再修改配置(这里需要仔细一些,注意别打错了也得小心缩进问题,不然可能配置不生效):
spring:
application:
name: springClound2
cloud:
consul:
host: 127.0.0.1
port: 8500
discovery:
serviceName: springClound3
healthCheckPath: /home
healthCheckInterval: 15s