在不同主机之间的Docker容器中创建RabbitMQ集群

3
我想创建一个RabbitMQ集群,它非常能够抵御故障。
到目前为止,我已经成功创建了一个由三个节点组成的集群,每个节点都在Docker容器中运行。为了让这些节点加入集群,主机需要通过链接相互了解。
现在,整个架构都在云中运行(确切地说是在AWS上)。迄今为止,我的容器只能与同一AWS实例上的其他容器建立连接。我希望创建的集群可以跨越不同的主机。
到目前为止,我尝试过:
1. 使用联邦 / 推土机。这不符合我的目的,因为我需要CAP-Theorem中的CP而不是CA。我需要我的节点都是彼此的副本,并且能够像客户端一样充当同一代理人。
2. 创建一个Docker Swarm。我可以设置Docker Swarm并通过Docker Swarm连接两个实例。但是,如果我尝试在此Swarm上运行多个Rabbit容器,则它们要么被放置在同一节点上,要么无法相互链接。因此,最终所有的节点仍然运行在同一节点上。
是否有任何解决方案或其他方法,可以让我在不同的AWS实例/主机之间创建一个RabbitMQ集群?

Docker的覆盖网络怎么样?https://docs.docker.com/engine/userguide/networking/dockernetworks/#an-overlay-network - cantSleepNow
1个回答

0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接