itmuch / spring-cloud-docker-microservice-book-code

《Spring Cloud与Docker微服务架构实战》配套代码。讨论QQ群:731548893
http://www.itmuch.com
Apache License 2.0
1.17k stars 861 forks source link

Spring Cloud Eureka高可用 #3

Closed lee-mz closed 6 years ago

lee-mz commented 6 years ago

您好,最近在看您的《Spring Cloud与Docker微服务架构实战》一书, 看到第四章微服务注册与发现时,到了eureka高可用那章,我按照书中示例,建立了工程,并在application.yml文件中指定了三段配置 完全按照书中的配置来的。对比过代码,都一样,但是我启动时会报错。 错误信息: com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused: connect Caused by: java.net.ConnectException: Connection refused: connect com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server 这里只贴了三行我认为有用的报错信息,大概意思是链接被拒绝,无法在任何已知服务器上执行请求。 我查了一下资料加上我个人理解,我的理解是:两个eureka server,都注册自身,并去发现其他服务。8761端口的去发现8762的服务,反过来8762去发现8761的服务。这样的话,启动的时候肯定会报这个错。以本地启动为例,我开两个cmd窗口分别执行命令,先启动peer1,peer1在启动时去peer2注册,但是此时peer2还未启动,所以peer1会报这个错。之后会重试,直到peer2启动起来,才会好,此时peer2启动后peer1恢复正常,peer2也能链接peer1了。双方都恢复正常。那么就是说eureka这个高可用服务,基本上每次启动时都会出现这个错误,是这样吗?这是正常的,不影响使用。即使线上生产环境也是这样吗?看着启动报错总感觉有点别扭。。。 期望能得到您的回复。感谢

eacdy commented 6 years ago

是的,是正常的。

lee-mz commented 6 years ago

谢谢回复。弄到这的时候真的纠结了很久。感谢