如何在Docker Cloud上设置RabbitMQ集群?

时间:2017-01-04 14:46:25

标签: docker rabbitmq

我正在尝试通过DockerCloud 设置RabbitMQ群集,并且有点丢失。

有很多教程,但我无法弄清楚Docker Cloud是如何创建集群的,所以我可以部署和连接两个正在运行的RabbitMQ服务?

到目前为止我有什么:

  • 通过Docker Cloud(AWS)创建两个节点
  • 创建这两个节点的集群
  • 我在两个节点之一上部署了一个RabbitMQ容器

现在我不知道从哪里去。

我的问题:

  
      
  • 如何部署两个RabbitMQ实例并将它们链接在一起?
  •   
  • 如果它们相互关联,Docker Cloud如何管理它?或者我必须通过管理GUI执行此操作吗?
  •   

非常感谢任何指导或指导我正确的方向。

1 个答案:

答案 0 :(得分:1)

由于我找不到如何在Docker Cloud上设置它的指南,这里有一个解释:

  1. 通过Docker Cloud上的GUI与您首选的托管服务提供商创建两个(或更多)节点(我选择了AWS)
  2. 通过Docker Cloud上的GUI创建节点群集,并选择刚刚创建的节点
  3. 我在GitHub上使用了预先配置的图片。
  4. <强> 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和新节点进行扩展   自动与第一个节点集群。