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

时间:2016-04-25 08:33:07

标签: amazon-web-services docker rabbitmq docker-swarm

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

到目前为止,我已经设法创建了一个包含三个节点的集群,每个节点都在一个docker容器内运行。要使节点加入群集,主机需要通过链接相互了解。

现在,整个架构在云中运行(准确地说是在AWS上)。到目前为止,我的容器只能在同一个AWS实例上运行时才能相互链接。我想以节点可以位于不同主机上的方式创建集群。

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

  1. 使用联合/铲子代替。这不符合我的目的,因为我需要来自CAP-Theorem的CP而不是CA.我需要我的节点是彼此的所有副本,并且能够作为客户端的同一个代理。

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

  3. 是否有任何解决方案或其他方法,我可以在不同的AWS实例/主机之间在docker容器中创建rabbitmMQ-cluster?

1 个答案:

答案 0 :(得分:0)

您提到"要启用节点加入群集,主机需要通过链接相互了解" ..但我不确定你为什么需要链接。主要的是每个容器能够相互定位,这基本上是服务发现问题。我在一堆不同的虚拟机上使用consul做了类似的事情(使用rabbitmq)(甚至没有使用swarm),但是如果你已经运行了一个群集群,那么你可能会遇到用于发现容器的其他实例的API?