搭建RabbitMQ集群(Docker)

1. 创建多个RabbitMQ容器

docker run -d --hostname rabbit1 /
--name myrabbit1 /
-p 5672:5672 -p 15672:15672  /
-e RABBITMQ_ERLANG_COOKIE='rabbitcookie' /
rabbitmq:3.8-management
docker run -d --hostname rabbit2 /
--name myrabbit2 /
-p 5673:5672 -p 15673:15672 /
--link myrabbit1:rabbit1 /
-e RABBITMQ_ERLANG_COOKIE='rabbitcookie' /
rabbitmq:3.8-management
docker run -d --hostname rabbit3 /
--name myrabbit3 /
-p 5674:5672 -p 15674:15672 /
--link myrabbit1:rabbit1 /
--link myrabbit2:rabbit2 /
-e RABBITMQ_ERLANG_COOKIE='rabbitcookie' /
rabbitmq:3.8-management

2. 将RabbitMQ节点加入到集群中

重新启动myrabbit1节点(主节点)

docker exec -it myrabbit1 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
exit

将myrabbit2加入到集群(从节点)

docker exec -it myrabbit2 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --ram rabbit@rabbit1
rabbitmqctl start_app
exit

将myrabbit3加入到集群(从节点)

docker exec -it myrabbit3 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --ram rabbit@rabbit1
rabbitmqctl start_app
exit

3. 启动并访问

*    --ram  表示设置为内存节点,忽略该参数则默认为磁盘节点。

使用http://ip:15672 进行访问了,账号密码默认为guest&guest
在这里插入图片描述

4. 如何将已经运行的多台RabbitMQ部署为集群

同步它们之间的erlang cookie

RabbitMQ是通过Erlang实现的,Erlang Cookie相当于不同节点之间相互通讯的秘钥,Erlang节点通过交换Erlang Cookie获得认证。

 1. 通过RabbitMQ容器启动日志里面的home dir路径作为根路径获取Erlang Cookie所在位置。使用:“docker logs 容器名称/ID”查看。所以Erlang Cookie的全部路径就是“/var/lib/rabbitmq/.erlang.cookie”。     

 2. 复制Erlang Cookie到其他RabbitMQ节点
获取到第一个RabbitMQ的Erlang Cookie之后,只需要把这个文件复制到其他RabbitMQ节点即可。

物理机和容器之间复制命令如下:
- 容器复制文件到物理机:docker cp 容器名称:容器目录 物理机目录
- 物理机复制文件到容器:docker cp 物理机目录 容器名称:容器目录
设置Erlang Cookie文件权限:“chmod 600 /var/lib/rabbitmq/.erlang.cookie”。

3. 将节点加入集群

参考:
搭建RabbitMQ集群(Docker)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值