我需要在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中的服务名称。
任何帮助将不胜感激
答案 0 :(得分:0)
您如何配置Docker网络? hazelcast-master在您的DNS服务器中吗?默认情况下,docker使用与主机相同的DNS,但是例如,如果将hazelcast-master放在/ etc / hosts中,则docker guest虚拟机将看不到它,也将无法使用它。在运行Docker容器时,要么使用主机的IP地址,放置完整的主机域名(来自DNS),要么使用--add-host。
答案 1 :(得分:0)
我认为mutlicast在Docker Swarm中可能不起作用(至少是开箱即用)。阅读this和this。 Docker Compose的工作仅是因为它已部署在一台主机上。
您可以做的是尝试使用Hazelcast Docker Swarm Discovery Plugin。除此之外,另一个选项是静态TCP-IP配置,这在Docker Swarm中可能没有多大意义。