项目场景:
com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server
新建了一个springcloud分布式项目,服务提供者模块向eureka注册中心注册一直报这个错误。做个记录。
原因分析:
主要的问题是:在eureka模块中配置了注册中心地址为
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
那么实际上我们在浏览器中访问的地址应该是:
http://${eureka.instance.hostname}:${server.port}
这样的形式,是不带 eureka的。
其次,我们在服务提供者中填写的注册中心地址的时候,必须为
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
这样的,不能不带 eureka,否则服务提供者是注册不到注册中心的。
还有一个问题就是:
servlet:
context-path: XXX
如果eureka配置这个参数的话,浏览器访问的应该是:
defaultZone: http://${eureka.instance.hostname}:${server.port}/xxx/