【发布时间】:2015-04-11 20:34:39
【问题描述】:
我能够让 eureka 服务器在点对点模式下运行。但我很好奇的一件事是如何让服务发现客户端注册到多个 eureka 服务器。
我的用例是这样的:
假设我有一个服务注册到其中一个尤里卡服务器(例如服务器 A),并且该注册被复制到其对等方。该服务实际上指向服务器 A。如果服务器 A 出现故障,并且客户端希望与服务器 A 续订,如果服务器 A 不再存在,续订如何工作。
我是否需要同时注册两者,如果不需要,如果客户端无法与服务器 A 通信,那么续订如何发生。它是否对服务器 B 有一些了解(从其与 A 的初始和/或后续通信)并故障转移它的注册更新在那里?这在任何文档中都不清楚,我需要验证
所以根据答案,我将以下内容添加到我的 application.yml
eureka:
# these are settings for the client that gets services
client:
# enable these two settings if you want discovery to work
registerWithEureka: true
fetchRegistry: true
serviceUrl:
defaultZone: http://localhost:8762/eureka/, http://localhost:8761/eureka/
它只注册到逗号分隔列表中的第一个。如果我在 eureka 服务器之间切换注册翻转。
我可以看到它确实基于逗号分隔这些,但我的猜测是 Eureka 没有在下面使用它(来自 EurekaClientConfigBean.java)
@Override
public List<String> getEurekaServerServiceUrls(String myZone) {
String serviceUrls = this.serviceUrl.get(myZone);
if (serviceUrls == null || serviceUrls.isEmpty()) {
serviceUrls = this.serviceUrl.get(DEFAULT_ZONE);
}
if (serviceUrls != null) {
return Arrays.asList(serviceUrls.split(","));
}
return new ArrayList<>();
}
【问题讨论】:
标签: spring-cloud