在网上查到了很多原因,基本上为springboot和springcloud版本不对应导致的接口地址变更,最后排查发现跟那个没啥关系,其实很简单......
正常情况下consul的健康检查接口只认识ip:port/actuator/health接口,即正常情况下你通过这个地址是可以访问到consul的各个微服务的健康状态的,但是我访问却是404,这也是导致consul图形化界面有check红叉的原因,也是微服务在consul注册中心虽然有但是微服务间通过实例名称访问却报404未找到微服务的原因。
原因是我的项目本身配置加上了context_path导致consul访问ip:port/actuator/health报404了,健康检查失败了。微服务实例虽然在注册中心有,但是微服务自检失败,该服务不可用,所以图形化界面红叉,所以健康检查接口404,所以微服务间通过微服务实例名称访问报404未找到该服务。
加上context_path的健康检查接口就可以正常访问,但是consul本身不认识
解决办法:1.去掉context_path 2.自定义健康检查接口实现。
我用的第一步,第二步网上也有教程
当然上面返回的状态信息比较详细,正常情况下只有一个返回status:up,要想这么详细还需要暴露更多的状态配置
微服务间通过微服务实例名称访问,404未找到该微服务实例名称的原因 解决!
这仅是我遇到的问题,可能也有其他原因造成,比如说版本原因,可以尝试。