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) [eurekaclient1.9.8.jar:1.9.8]atcom.netflix.discovery.shared.transport.decorator.SessionedEurekaHttpClient.execute(SessionedEurekaHttpClient.java:77) [eurekaclient1.9.8.jar:1.9.8]atcom.netflix.discovery.shared.transport.decorator.EurekaHttpClientDecorator.register(EurekaHttpClientDecorator.java:56) [eurekaclient1.9.8.jar:1.9.8]atcom.netflix.discovery.DiscoveryClient.register(DiscoveryClient.java:829) [eurekaclient1.9.8.jar:1.9.8]atcom.netflix.discovery.InstanceInfoReplicator.run(InstanceInfoReplicator.java:121) [eurekaclient1.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 群随时交流、讨论,也非常感谢同学的支持! 

1
1
黎明的烬
单节点的配置注释后打包,工程默认为8080端口访问了。。。。
2019-08-31
共1条回复

Spring Cloud微服务架构 设计实现广告系统

广告营销系统,未来大中型企业的标配

2150 学习 · 929 问题

查看课程