单节点上用Docker模拟RabbitMQ集群

用docker CLI在单台服务器实现RabbitMQ集群

  • 从Github Repo https://github.com/oprearocks/RabbitMQ-Docker-cluster 将如下两个文件放在当前文件夹下(这两个是RabbitMQ的配置,这里不细说了):
    1. rabbitmq.config
    2. definitions.json
  • 启动RabbitMQ master node(如果未将当前用户添加到docker group,需要在命令前加sudo,下同)
    docker run -d \
        --name="rabbit1" \
        --hostname="rabbit1"\
        -e RABBITMQ_ERLANG_COOKIE="secret string" \
        -e RABBITMQ_NODENAME="rabbit1" \
        --volume=$(pwd)/rabbitmq.config:/etc/rabbitmq/rabbitmq.config \
        --volume=$(pwd)/definitions.json:/etc/rabbitmq/definitions.json \
        --publish="4369:4369" \
        --publish="5671:5671" \
        --publish="5672:5672" \
        --publish="15671:15671" \
        --publish="15672:15672" \
        --publish="25672:25672" \
        rabbitmq:3-management
    
    1. -d:后台执行
    2. –name=“rabbit1”:启动的docker容器名
    3. –hostname=“rabbit1”:RabbitMQ容器的hostname,主机名称
    4. -e:两个RabbitMQ环境变量,具体原理参考
    5. –volume=$(pwd)/rabbitmq.config:/etc/rabbitmq/rabbitmq.config:将当前目录下的rabbitmq.config装载到容器中的/etc/rabbitmq/rabbitmq.config
    6. –publish=“4369:4369”:将容器端口4369 publish 到服务器端口4369
    7. rabbitmq:3-management:启动的容器为带有管理插件的版本,各种版本参考
  • 启动另外两个RabbitMQ节点
    docker run -d \
        --name="rabbit2" \
        --hostname="rabbit2"\
        -e RABBITMQ_ERLANG_COOKIE="secret string" \
        -e RABBITMQ_NODENAME="rabbit2" \
        --volume=$(pwd)/rabbitmq.config:/etc/rabbitmq/rabbitmq.config \
        --volume=$(pwd)/definitions.json:/etc/rabbitmq/definitions.json \
        --link="rabbit1:rabbit1" \
        rabbitmq:3-management
    
    1. –link=“rabbit1:rabbit1”:增加一个到容器rabbit1的连接,让rabbit1和rabbit2可以相互通讯
    docker run -d \
        --name="rabbit3" \
        --hostname="rabbit3"\
        -e RABBITMQ_ERLANG_COOKIE="secret string" \
        -e RABBITMQ_NODENAME="rabbit3" \
        --volume=$(pwd)/rabbitmq.config:/etc/rabbitmq/rabbitmq.config \
        --volume=$(pwd)/definitions.json:/etc/rabbitmq/definitions.json \
        --link="rabbit1:rabbit1" \
        --link="rabbit2:rabbit2" \
        rabbitmq:3-management
    
  • 登录管理后台,验证三节点RabbiMQ集群已经启动
    1. 管理后台地址:http://localhost:15672/
    2. 用户名/密码:guest/guest (这个是在definitions.json中设置的)
      在这里插入图片描述
    3. 三节点RabbiMQ集群已经启动
      在这里插入图片描述
    4. 随便点点看看功能,在overview页面下面可以导入导出Json配置文件,不用手动写
  • 用命令行的问题
    1. 节点多了难维护,–link也相应的多,
    2. 不好在利用在docker swarm中(如果要在多台服务器上建立RabbitMQ集群,就要用到docker swarm了)
  • 删除建立的集群
    docker container rm -f rabbit1 rabbit2 rabbit3
    
    或者
    docker rm -f $(docker ps -aq)
    

用docker-compose在单台服务器实现RabbitMQ集群

  • 安装docker compose,具体参考
    sudo curl -L "https://github.com/docker/compose/releases/download/1.23.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    sudo chmod +x /usr/local/bin/docker-compose
    
    1. Windows docker toolkits是自带的,mac toolkits好像也带,但是linux是分开装的
  • 从Github Repo https://github.com/oprearocks/RabbitMQ-Docker-cluster 将如下文件放在当前文件夹下:
    1. rabbitmq.config
    2. definitions.json
    3. docker-compose.yml
    • 对比前面的docker run命令的介绍,docker-compose.yml文件大部分应该很直接。
    • depends_on: rabbit1:在rabbit1启动后,再启动该service
    • networks部分:将启动的容器连接到rabbitmq-cluster这个网络上(docker 中的custom network是自带DNS服务的,default network bridge好像没有)
  • 建立rabbitmq-cluster docker network
    docker network create rabbitmq-cluster
    
  • 利用docker-compose.yml启动RabbitMQ集群
    docker-compose up -d
    
  • 登录管理后台,验证三节点RabbiMQ集群已经启动
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值