我正在尝试通过DockerCloud 设置RabbitMQ群集,并且有点丢失。
有很多教程,但我无法弄清楚Docker Cloud是如何创建集群的,所以我可以部署和连接两个正在运行的RabbitMQ服务?
到目前为止我有什么:
现在我不知道从哪里去。
我的问题:
- 如何部署两个RabbitMQ实例并将它们链接在一起?
- 如果它们相互关联,Docker Cloud如何管理它?或者我必须通过管理GUI执行此操作吗?
非常感谢任何指导或指导我正确的方向。
答案 0 :(得分:1)
由于我找不到如何在Docker Cloud上设置它的指南,这里有一个解释:
<强> Dockerfile 强>
FROM rabbitmq:3.5.3-management
MAINTAINER Dimitris Kapanidis dimitris.kapanidis@harbur.io
COPY rabbitmq-cluster /usr/local/bin/
COPY pre-entrypoint.sh /
EXPOSE 5672 15672 25672 4369 9100 9101 9102 9103 9104 9105
ENTRYPOINT ["/pre-entrypoint.sh"]
CMD ["rabbitmq-cluster"]
重要的部分(特别是对于Docker Cloud)是 rabbitmq-cluster文件:
#!/bin/bash
hostname=`hostname`
RABBITMQ_NODENAME=${RABBITMQ_NODENAME:-rabbit}
if [ -z "$CLUSTER_WITH" -o "$CLUSTER_WITH" = "$hostname" ]; then
echo "Running as single server"
rabbitmq-server
else
echo "Running as clustered server"
/usr/sbin/rabbitmq-server -detached
rabbitmqctl stop_app
echo "Joining cluster $CLUSTER_WITH"
rabbitmqctl join_cluster ${ENABLE_RAM:+--ram} $RABBITMQ_NODENAME@$CLUSTER_WITH
rabbitmqctl start_app
# Tail to keep the a foreground process active..
tail -f /var/log/rabbitmq/*
fi
在Docker Cloud中,创建新服务并搜索harbur/rabbitmq-cluster
。部署映像时,选择“在每个节点上部署”,并使用标记来标识群集节点。
在环境变量中,输入: CLUSTER_WITH:rabbitmq-cluster-1(你的第一个实例的名字) ERLANG_COOKIE:abcdefg
在每个节点上执行rabbitmq-cluster脚本 (rabbit-mq-cluster-1,rabbit-mq-cluster-2等),所以环境 变量确保只加入那些不是第一个的主机。 这可确保您可以通过Docker Cloud和新节点进行扩展 自动与第一个节点集群。