最近这两天一直有一个问题很困惑,那就是ribbon跟提供者以及eureka在同一台服务器的时候访问一切正常,而把ribbon放到其他服务器的时候,虽然同样注册进了eureka,但是却始终访问失败的问题。
这个时候提供者的资源文件如下
spring.application.name=hello-service
eureka.client.service-url.defaultZone=http://peer1:1111/eureka/,http://peer2:1112/eureka
eureka的注册信息如下
经过思索,我发现其实是http://HELLO-SERVICE/hello解析不了,因为注册进去的其实只有主机名,也就是说只有相同主机才能解析。所以提供者的资源文件修改如下
spring.application.name=hello-service
eureka.client.service-url.defaultZone=http://peer1:1111/eureka/,http://peer2:1112/eureka
eureka.instance.instance-id=${spring.cloud.client.ipAddress}:${server.port}
eureka.instance.prefer-ip-address=true
eureka.instance.hostname= ${spring.cloud.client.ipAddress}
此时eureka的注册信息如下
因为hello-service已经转换成了ip地址,此时用其他服务器注册的ribbon再来访问该提供者时已经一切正常。