在Docker Swarm集群中使用Eureka副本进行微服务注册

如果我有一个用于Eureka服务发现的微服务,并且在docker-compose.yml中有5个副本,那么这5个eureka容器将分布在swarm集群中可用的多个swarm节点上。

我的问题是,当一个微服务想要向尤里卡注册时,

  1. 它会在eureka服务器的configuration中指定swarm集群中主节点的ip地址吗?

  2. 当微服务以任何方式向eureka注册时,这个registry是否会被复制到群集中的所有eureka容器上,因为谁知道swarm群集中的哪个eureka节点将服务于特定的微服务。

当一个微服务以自己的方式向eureka注册时,这个registry是否会被复制到所有的尤里卡容器中

从来没有自己testing,但我认为这发生。 注册pipe理机构自行联系并共享所有当前注册的微服务。

谁知道swarm集群中的哪个尤里卡节点将服务于特定的微服务

你的微服务在它的application.properties中有一个唯一的名字,允许其他的微服务向它发送一个HTTP请求,你不用java来控制这个机制,所以我希望它能联系到最合适的。

它会在eureka服务器的configuration中指定swarm集群中主节点的ip地址吗?

我尝试了几次设置一个主机名,让微服务使用基于容器的主机名联系尤里卡,但是这不起作用。 我使用frolvlad / alpine-oraclejdk8作为基础映像+ bash和wait-for-it.sh 。 我用docker-compose运行所有的东西。
请记住,这是configuration服务器,告诉微服务哪里是尤里卡。 我最终在configuration服务器中添加一个bash脚本,从jar文件中提取application.properties ,放入registry的IP,并将更新的application.properties重写到jar