使用Docker堆栈部署时,Hazelcast节点未发现其他节点

时间:2019-05-27 06:57:57

标签: java spring docker hazelcast

我需要在docker环境中为具有多个复制因素的web应用程序设置一个hazelcast,并使用docker swarm通过覆盖网络在多主机中部署该应用程序。

我正面临一个问题,即服务无法以群集模式发现另一个节点,但是在docker compose中可以正常工作。我正在使用下面的配置进行hazelcast配置。

<port auto-increment="true">5701</port>
<join>
  <multicast enabled="false">
    <multicast-group>224.2.2.3</multicast-group>
    <multicast-port>54327</multicast-port>
  </multicast>
  <tcp-ip enabled="true">
    <member>hazelcast-master</member>
  </tcp-ip>

</join>

这里hazelcast-master是我在docker中的服务名称。

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:0)

您如何配置Docker网络? hazelcast-master在您的DNS服务器中吗?默认情况下,docker使用与主机相同的DNS,但是例如,如果将hazelcast-master放在/ etc / hosts中,则docker guest虚拟机将看不到它,也将无法使用它。在运行Docker容器时,要么使用主机的IP地址,放置完整的主机域名(来自DNS),要么使用--add-host。

答案 1 :(得分:0)

我认为mutlicast在Docker Swarm中可能不起作用(至少是开箱即用)。阅读thisthis。 Docker Compose的工作仅是因为它已部署在一台主机上。

您可以做的是尝试使用Hazelcast Docker Swarm Discovery Plugin。除此之外,另一个选项是静态TCP-IP配置,这在Docker Swarm中可能没有多大意义。