window系统,两个服务都可以启动,显示正常启动但是没有相互注册
来源:3-5 【让代码跑起来】Eureka Server 的部署
慕前端2002638
2019-02-20
异常:
com.netflix.discovery.shared.transport.TransportException: There is no known eureka server; cluster server list is empty
at com.netflix.discovery.shared.transport.decorator.RetryableEurekaHttpClient.execute(RetryableEurekaHttpClient.java:108) ~[eureka-client-1.9.8.jar:1.9.8]
at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.register(EurekaHttpClientDecorator.java:56) ~[eureka-client-1.9.8.jar:1.9.8]
at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator1.execute(EurekaHttpClientDecorator.java:59) [eureka−client−1.9.8.jar:1.9.8]atcom.netflix.discovery.shared.transport.decorator.SessionedEurekaHttpClient.execute(SessionedEurekaHttpClient.java:77) [eureka−client−1.9.8.jar:1.9.8]atcom.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.register(EurekaHttpClientDecorator.java:56) [eureka−client−1.9.8.jar:1.9.8]atcom.netflix.discovery.DiscoveryClient.register(DiscoveryClient.java:829) [eureka−client−1.9.8.jar:1.9.8]atcom.netflix.discovery.InstanceInfoReplicator.run(InstanceInfoReplicator.java:121) [eureka−client−1.9.8.jar:1.9.8]atjava.util.concurrent.Executors1.execute(EurekaHttpClientDecorator.java:59) ~[eureka-client-1.9.8.jar:1.9.8]
at com.netflix.discovery.shared.transport.decorator.SessionedEurekaHttpClient.execute(SessionedEurekaHttpClient.java:77) ~[eureka-client-1.9.8.jar:1.9.8]
at com.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.register(EurekaHttpClientDecorator.java:56) ~[eureka-client-1.9.8.jar:1.9.8]
at com.netflix.discovery.DiscoveryClient.register(DiscoveryClient.java:829) ~[eureka-client-1.9.8.jar:1.9.8]
at com.netflix.discovery.InstanceInfoReplicator.run(InstanceInfoReplicator.java:121) ~[eureka-client-1.9.8.jar:1.9.8]
at java.util.concurrent.Executors1.execute(EurekaHttpClientDecorator.java:59) [eureka−client−1.9.8.jar:1.9.8]atcom.netflix.discovery.shared.transport.decorator.SessionedEurekaHttpClient.execute(SessionedEurekaHttpClient.java:77) [eureka−client−1.9.8.jar:1.9.8]atcom.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.register(EurekaHttpClientDecorator.java:56) [eureka−client−1.9.8.jar:1.9.8]atcom.netflix.discovery.DiscoveryClient.register(DiscoveryClient.java:829) [eureka−client−1.9.8.jar:1.9.8]atcom.netflix.discovery.InstanceInfoReplicator.run(InstanceInfoReplicator.java:121) [eureka−client−1.9.8.jar:1.9.8]atjava.util.concurrent.ExecutorsRunnableAdapter.call(Unknown Source) [na:1.8.0_201]
at java.util.concurrent.FutureTask.run(Unknown Source) [na:1.8.0_201]
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access201(UnknownSource)[na:1.8.0201]atjava.util.concurrent.ScheduledThreadPoolExecutor201(Unknown Source) [na:1.8.0_201]
at java.util.concurrent.ScheduledThreadPoolExecutor201(UnknownSource)[na:1.8.0201]atjava.util.concurrent.ScheduledThreadPoolExecutorScheduledFutureTask.run(Unknown Source) [na:1.8.0_201]
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [na:1.8.0_201]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [na:1.8.0_201]
at java.lang.Thread.run(Unknown Source) [na:1.8.0_201]
1回答
-
张勤一
2019-02-20
同学你好:
从当前的错误来看,是配置文件和启动方式错误导致的。可以参考下下面的这份配置文件:
#spring: # application: # name: ad-eureka # #server: # port: 8000 # #eureka: # instance: # hostname: localhost # client: # # eureka.client.fetch-registry: 表示是否从 Eureka Server 获取注册信息,默认为true。如果这是一个单点的 Eureka Server,不需要同步其他节点的数据,设为false # fetch-registry: false # # eureka.client.register-with-eureka: 表示是否将自己注册到 Eureka Server, 默认为true。由于当前应用就是 Eureka Server, 因此设为 false # register-with-eureka: false # # 设置 Eureka Server 所在的地址,查询服务和注册服务都需要依赖这个地址 # service-url: # defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ # 配置不同的 Profile, 需要注意, 如果要执行下面的 Profile, 需要将上面的配置注释掉 --- spring: application: name: ad-eureka profiles: server1 server: port: 8000 eureka: instance: hostname: server1 prefer-ip-address: false client: service-url: defaultZone: http://server2:8001/eureka/,http://server3:8002/eureka/ --- spring: application: name: ad-eureka profiles: server2 server: port: 8001 eureka: instance: hostname: server2 prefer-ip-address: false client: service-url: defaultZone: http://server1:8000/eureka/,http://server3:8002/eureka/ --- spring: application: name: ad-eureka profiles: server3 server: port: 8002 eureka: instance: hostname: server3 prefer-ip-address: false client: service-url: defaultZone: http://server1:8000/eureka/,http://server2:8001/eureka/另外,需要注意 server1、server2、server3 在 host 中的配置。一切就绪之后,重新编译打包,并执行如下命令:
java -jar ad-eureka-1.0-SNAPSHOT.jar --spring.profiles.active=server1
java -jar ad-eureka-1.0-SNAPSHOT.jar --spring.profiles.active=server2
java -jar ad-eureka-1.0-SNAPSHOT.jar --spring.profiles.active=server3
欢迎来 QQ 群随时交流、讨论,也非常感谢同学的支持!
112019-08-31