最近在练习Spring-cloud微服务时,遇到一个问题
多模块练习Eureka集群配置时出现了ConnectTimeoutException: Connect to localhost:8761 timed out这样的错误
因为一开始单独启动注册中心时一切正常,而且服务成功运行所以没有太在意
但是当开始做集群时就发现不对了,切到后台日志一看,发现报这个错误:
Caused by: org.apache.http.conn.ConnectTimeoutException: Connect to localhost:8761 timed out
at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:123) ~[httpclient-4.5.9.jar:4.5.9]
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:180) ~[httpclient-4.5.9.jar:4.5.9]
at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:144) ~[httpclient-4.5.9.jar:4.5.9]
at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:134) ~[httpclient-4.5.9.jar:4.5.9]
at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:605) ~[httpclient-4.5.9.jar:4.5.9]
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:440) ~[httpclient-4.5.9.jar:4.5.9]
at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:835) ~[httpclient-4.5.9.jar:4.5.9]
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:118) ~[httpclient-4.5.9.jar:4.5.9]
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:56) ~[httpclient-4.5.9.jar:4.5.9]
at com.sun.jersey.client.apache4.ApacheHttpClient4Handler.handle(ApacheHttpClient4Handler.java:173) ~[jersey-apache-client4-1.19.1.jar:1.19.1]
... 10 common frames omitted
当时我就一脸蒙蔽。。这啥啊,怎么会报的访问的8761这个端口出错呢,我没有访问这个端口啊。后来经过度娘谷哥,发现这个端口是Eureka默认的注册中心端口号,在EurekaClientConfigBean里会在构造方法中设置默认值
@ConfigurationProperties("eureka.client")
public class EurekaClientConfigBean implements EurekaClientConfig {
public static final String PREFIX = "eureka.client";
public static final String DEFAULT_URL = "http://localhost:8761/eureka/";
public static final String DEFAULT_ZONE = "defaultZone";
private static final int MINUTES = 60;
public EurekaClientConfigBean() {
this.serviceUrl.put("defaultZone", "http://localhost:8761/eureka/");
this.gZipContent = true;
...
}
}
难道我没配默认访问路径?额,赶紧去yml里面瞧一瞧,这不是配了么
server:
port: 1000
eureka:
instance:
hostname: test1000
client:
registerWithEureka: false
fetchRegistry: false
serviceUrl:
defaultZone: http://test1001:1001/eureka/
spring:
application:
name: eureka-server
百思不得其解,百般折腾之下,终于祭出大招,推倒重写
居然就好了!好了!!
然后两边代码一对比,噗~~~~~~~~~ 气的吐血
yml配置里不知道为啥缩进有一小格差距
正确的配置:
server:
port: 1000
eureka:
instance:
hostname: test1000
client:
registerWithEureka: false
fetchRegistry: false
serviceUrl:
defaultZone: http://test1001:1001/eureka/
spring:
application:
name: eureka-server
以此铭记这次坑逼的错误以及陪我熬夜排错消耗的脑细胞们