RabbitMQ集群由docker-compose在不同的主机和不同的项目上

时间:2016-10-05 22:17:48

标签: docker rabbitmq docker-compose docker-swarm docker-networking

我有3个项目,可以部署在不同的主机上。每个项目都有自己的RabbitMQ容器。但是我需要使用相同的vhost创建具有这3个主机的集群,但使用不同的用户/登录对。

我尝试了Swarm和覆盖网络,但是swarm旨在运行独奏容器并且使用compose它不起作用。此外,我尝试了docker-compose bundle,但这不能按预期工作:(

我认为它可以像这样工作

1)在管理器节点上,我创建了覆盖网络

2)在每个撰写文件中,我使用我的覆盖网络为rabbitmq容器扩展网络配置。

3)他们按预期工作,我不发布到Internet rabbitmq端口。

任何想法,我该怎么做?

1 个答案:

答案 0 :(得分:1)

您的方法是正确的,但目前是Docker Compose doesn't work with Swarm Mode。 Compose只运行docker命令,因此您可以编写所需的脚本。对于每个项目,您都有这样的脚本:

docker network create -d overlay app1-net
docker service create --network app1-net --name rabbit-app1 rabbitmq:3
docker service create --network app1-net --name app1 your-app-1-image
...

当您在管理器上运行所有三个脚本时,您将拥有三个网络,每个网络将拥有自己的RabbitMQ服务(默认情况下只有一个容器,使用--replicas运行多个)。在网络中,其他服务可以通过DNS名称rabbit-appX到达消息队列。您不需要发布任何端口,因此无法在Docker网络之外访问Rabbit。