我能够让尤里卡服务器以对等模式运行。但我很好奇的一件事是如何让服务发现客户端注册到多个 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 没有在下面使用它(来自 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<>();
}