初学Spring cloud的时候,启动Eureka的时候报了下面的错误:
com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused: connect
.....
com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server
到网上一查,原来是因为在默认设置下,Eureka服务注册中心也会将自己作为客户端来尝试注册它自己,所以我们需要禁用它的客户端注册行为。
解决方法:
配置eureka server的配置文件appication.yml(我个人比较喜欢.yml的格式,注意一下,属性名称的“:”后面有一个英文格式的空格)
server:
port: 9000 eureka:
instance:
hostname: localhost
client:
registerWithEureka: false
fetchRegistry: false
serviceUrl:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ spring:
application:
name: eurka-server
或者appication.properties
server.port=9000
spring.application.name=eureka-server
eureka.instance.hostname=localhost
eureka.server.enable-self-preservation=false
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/
通过eureka.client.registerWithEureka:false和fetchRegistry:false来表明自己是一个eureka server.
配置完成后重启服务就OK了!