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

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

到目前为止我所拥有的:

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

    现在我不知道从那里去哪里。

    我有问题:



    任何指导或指向正确方向的指导都将受到高度赞赏。

    最佳答案

    由于我找不到如何在Docker Cloud上进行设置的指南,因此在此进行说明:

  • 通过您首选的托管服务提供商(我选择了AWS),通过Docker Cloud上的GUI创建两个(或更多)节点
  • 通过Docker Cloud上的GUI创建节点集群,然后选择刚刚创建的节点
  • 我在GitHub上使用了预配置的镜像。

  • 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

    10-08 09:37
    查看更多