我想创建一个对故障非常有 flex 的RabbitMQ集群。

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

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

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

  • 改为使用联合/铲。这不符合我的目的,因为我需要CAP定理中的CP,而不是CA。我需要我的节点是彼此的所有副本,并且能够充当客户端的同一代理。
  • 创建 docker 群。我能够设置docker swarm并通过docker swarm连接两个实例。但是,如果我尝试在该集群上运行多个兔子容器,它们要么放在同一节点上,要么无法相互链接。因此,对于所有运行在同一节点上的所有主机,我最终都拥有相同的星座。

  • 是否有解决方案或其他方法,可以在不同AWS实例/主机之间的Docker容器内创建RabbitmMQ集群?

    最佳答案

    您提到“要使节点能够加入群集,主机需要通过链接相互了解” ..但我不确定为什么需要链接。最主要的是每个容器都能够相互定位,这基本上是服务发现问题。我已经在许多不同的VM上使用consul(甚至没有使用swarm)进行了类似的操作(使用rabbitmq),但是如果您已经在运行swarm集群,则可以通过API来发现容器?

    07-24 09:39
    查看更多