基于docker的RabbitMQ集群搭建(HA),简单详细

1 篇文章 0 订阅
1 篇文章 0 订阅

1、首先安装带有图形化界面的RabbitMQ,否则无法通过Web端网页观察消息队列状态信息。

在这里插入图片描述
有疑问的可以参考:
https://blog.csdn.net/qq_37686944/article/details/104378966

2、搭建RabbitMQ集群

参考:https://www.cnblogs.com/vipstone/p/9362388.html

docker run -d --hostname rabbit1 --name myrabbit1 -p 15672:15672 -p 5672:5672 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' 镜像ID/名称
docker run -d --hostname rabbit2 --name myrabbit2 -p 5673:5672 --link myrabbit1:rabbit1 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' 镜像ID/名称
docker run -d --hostname rabbit3 --name myrabbit3 -p 5674:5672 --link myrabbit1:rabbit1 --link myrabbit2:rabbit2 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' 镜像ID/名称

这里解释下 --hostname rabbit1 是指创建后集群内的第一个节点名为rabbit , --name 是容器名 ,使用–link 进行容器之间互连 ,!注意! 第二个节点容器和第一个相连,第三个则是都要连。最后这个RABBITMQ_ERLANG_COOKIE是设置节点间通信的钥匙,要保持一致。

3、启动后进入容器配置

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

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

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

–ram表示内存节点,而不加表示磁盘节点,可以选择两磁盘一内存或者一磁盘两内存,这里选择前一种

4、配置RABBITMQ_ERLANG_COOKIE,保持一致

通过docker logs 容器ID,可以看到
在这里插入图片描述
这是容器1的目录,把这个文件夹都拷贝出来后复制给其他容器:
首先建立主机目录,对于myrabbit1的容器ID:

docker cp 容器ID:/var/lib/rabbitmq/. 主机目录

拷贝出来后通过 ls -a 发现文件夹里有一个隐藏文件.erlang.cookie,把它拷贝到其他容器中,
即对于myrabbit2 , myrabbit3的容器ID:

docker cp 主机目录/.erlang.cookie 容器ID:/var/lib/rabbitmq/

到这里普通的集群就配置完成了!但是还没有结束…

5、查看集群状态

进入容器1,可以看到节点信息

rabbitmqctl cluster_status

6、镜像队列完成HA

参考地址:https://www.cnblogs.com/TimeMaster/p/7069073.html
首先要说的是,如果当前用户名 / 密码为guest / guest 的,建议修改下,否则可能会出现问题

# 先添加个用户
rabbitmqctl add_user 新用户名 新密码
# 然后可以选择把原来那个删了
rabbitmqctl delete_user 原来的用户名,即guest
# 查看用户组,发现新增用户没有权限,TAG=[]
rabbitmqctl  list_users
# 授权
rabbitmqctl set_user_tags 新用户名

通过你的Linux服务器 ip:15672 打开图形化界面,在这里调整规则参数
在这里插入图片描述
进入后
在这里插入图片描述
在Pattern可以用 .* 匹配为所有队列作镜像,我没有配好像也没发现问题
ha-mode 表示为所有的节点队列作镜像
ha-sync-mode 表示设置节点间队列数据同步,如果不设置会出现不同步
在这里插入图片描述
当你完成了这一步,那么恭喜你完成了高可用,如果一个或者两个节点掉了,第三个节点也能完成数据接收,在前两个节点恢复后,第三个节点也能迅速地同步数据到前两个节点。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值