eureka サーバーをピア ツー ピア モードで動作させることができます。しかし、私が興味を持っていることの 1 つは、サービス検出クライアントを複数の eureka サーバーに登録するにはどうすればよいかということです。
私の使用例は次のとおりです
。eureka サーバーの 1 つ (サーバー A など) に登録するサービスがあり、その登録がそのピアに複製されるとします。サービスは実際にはサーバー A を指しています。サーバー A がダウンし、クライアントがサーバー A で更新することを期待している場合、サーバー A が存在しなくなった場合、更新はどのように機能しますか。両方に登録する必要がありますか? そうでない場合、クライアントがサーバー A と通信できない場合、更新はどのように行われますか? (A との最初の通信および/またはその後の通信から) サーバー B についてある程度の知識があり、フェールオーバーして実行しますか?その登録更新がありますか?それはどのドキュメントでも明確ではなく、確認する必要があります
その答えに基づいて、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<>();
}