不同主机中的Docker容器中的RabbitMQ集群

我想创build一个对故障非常有弹性的rabbitMQ集群。

到目前为止,我已经设法创build了一个具有三个节点的集群,这些节点中的每一个都在Docker容器中运行。 为了使节点能够join集群,主机需要通过链路相互认识。

现在,整个架构运行在云中(精确到AWS)。 到目前为止,我的容器只能在相同的AWS实例上运行时彼此链接。 我想创build一个节点可以躺在不同的主机上的方式创build集群。

到目前为止我已经尝试过:

  1. 改用federation / shovel。 这不符合我的目的,因为我需要CP定理而不是CA。 我需要我的节点是所有的副本,并能够作为客户的同一个经纪人。

  2. 创build一个docker群。 我能够设置docker群并通过docker群连接两个实例。 但是如果我试图在这个群上运行多个兔子容器,它们要么放在同一个节点上,要么我们不能将它们彼此链接起来。 所以我最终得到了同一个节点上运行的所有主机的星座。

有什么解决scheme或其他方法,我可以在不同的AWS实例/主机之间的docker容器内创build一个rabbitmMQ集群?

你提到“为了使节点join一个集群,主机需要通过链接彼此了解。”但我不知道为什么你需要链接。 主要的是每个容器能够相互定位,这基本上是一个服务发现问题。 我用一堆不同的虚拟机(甚至不使用swarm)做了一些类似的事情(用rabbitmq),但是如果你已经在运行一个swarm集群,那么你可以通过API来发现其他的容器?