【发布时间】:2016-11-27 17:48:28
【问题描述】:
我是 Spring Cloud 的新手。我读过this doc,它说客户端应用程序必须指定一个服务网址:
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
但是如果localhost:8761 宕机了怎么办?
【问题讨论】:
标签: spring-cloud netflix-eureka
我是 Spring Cloud 的新手。我读过this doc,它说客户端应用程序必须指定一个服务网址:
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
但是如果localhost:8761 宕机了怎么办?
【问题讨论】:
标签: spring-cloud netflix-eureka
Eureka Discovery Server 应在生产设置中的 Peer-Aware 配置模式下使用。 查看: http://cloud.spring.io/spring-cloud-static/spring-cloud.html#_peer_awareness
例如,您的第一个 eureka 服务器实例将具有如下配置:
server:
port: 1111
eureka:
instance:
hostname: peer1
client:
serviceUrl:
defaultZone: http://peer2:1112/eureka/
..第二个服务器实例如下:
server:
port: 1112
eureka:
instance:
hostname: peer2
client:
serviceUrl:
defaultZone: http://peer1:1111/eureka/
当 Eureka 服务器实例启动时,它们会相互查找。所有微服务都会自动向它们注册,因此如果一个服务器出现故障,另一个服务器实例将始终存在。在两个 Eureka 实例上,您将能够看到所有已注册的微服务。像这样,您可以在生产环境中扩展并拥有多个服务器实例。
注意:如果您在单个系统上尝试此操作,请不要忘记编辑 /etc/hosts 文件:
127.0.0.1 对等体1
127.0.0.1 对等体2
【讨论】:
ERROR DiscoveryClient-<service>- was unable to send heartbeat! com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server"。是的,对,客户端没有获得单个实例的地址。我有我的最后一个配置,其中我传递了所有服务器实例的逗号分隔值。为了平衡 Eureka 服务器上的这些命中,我还看到了负载均衡器 b/w 微服务和 Eureka 服务器实例。