当前位置:   article > 正文

docker搭建rabbitmq集群——镜像模式_rabbitmq docker镜像

rabbitmq docker镜像

RabbitMQ是一套开源(MPL)的消息队列服务软件,是由 LShift 提供的一个 Advanced Message Queuing Protocol (AMQP) 的开源实现,由以高性能、健壮以及可伸缩性出名的 Erlang 写成

RabbitMQ的5大核心概念:Connection(连接)、Channel(信道)、Exchange(交换机)、Queue(队列)、Virtual host(虚拟主机)。

普通模式的集群

普通模式的集群是不会将创建的队列复制到其他节点,虽然我们在其它节点能够看到这个节点;这是由于其它节点只会保存一份这个队列的元数据,展示给我们看的,真实的队列还是存在创建这个队列的节点中的;如果这个时候我们把创建队列的的节点关闭,那么这个队列其实就不可用了; 为了解决这个问题,rabbitmq还提供了另外一种集群模式:镜像模式

镜像模式

镜像模式是rabbit提供的一种可添加的策略模式,如果创建的队列和创建的策略能够匹配上,则会把队列同步复制到其他节点中,而不再只是复制元数据;

这里使用docker来搭建rabbitmq集群的镜像模式,首先准备好docker环境,下载好镜像

创建网卡

docker network create rabbitmq_net
#安装三个rabbitmq组件,一主两从

docker run -d --name=rabbitmq_master -p 5672:5672 -p 15672:15672 -e RABBITMQ_NODENAME=rabbitmq_master -e RABBITMQ_ERLANG_COOKIE='1111111' -h rabbitmq_master --net=rabbitmq_net -v /data/rabbitmq-1/rabbitmq_master/data:/var/lib/rabbitmq -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=CiA7rk7L_6gIKnaX  rabbitmq:3.8.27-management
docker run -d --name=rabbitmq_slave1 -p 5673:5672 -p 15673:15672 -e RABBITMQ_NODENAME=rabbitmq_slave1 -e RABBITMQ_ERLANG_COOKIE='1111111' -h rabbitmq_slave1 --net=rabbitmq_net -v /data/rabbitmq-1/rabbitmq_slave1/data:/var/lib/rabbitmq -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=CiA7rk7L_6gIKnaX  rabbitmq:3.8.27-management
docker run -d --name=rabbitmq_slave2 -p 5674:5672 -p 15674:15672 -e RABBITMQ_NODENAME=rabbitmq_slave2 -e RABBITMQ_ERLANG_COOKIE='1111111' -h rabbitmq_slave2 --net=rabbitmq_net -v /data/rabbitmq-1/rabbitmq_slave2/data:/var/lib/rabbitmq -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=CiA7rk7L_6gIKnaX  rabbitmq:3.8.27-management
  • 1
  • 2
  • 3
开启三个组件的管理端插件
docker exec -it rabbitmq_master /bin/bash
rabbitmq-plugins enable rabbitmq_management
exit
docker exec -it rabbitmq_slave1 /bin/bash
rabbitmq-plugins enable rabbitmq_management
exit
docker exec -it rabbitmq_slave2 /bin/bash
rabbitmq-plugins enable rabbitmq_management
exit
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

浏览器分别访问以下地址,用户名和密码都是admin
http://localhost:15672/#/ http://localhost:15673/#/ http://localhost:15674/#/ 如果成功登入,则代表组件安装成功,但是这时候还不是集群模式,我们需要手动加入到集群

salve1加入集群
docker exec -it rabbitmq_slave1 /bin/bash
rabbitmqctl stop_app
rabbitmqctl join_cluster rabbitmq_master@rabbitmq_master
rabbitmqctl start_app
exit
  • 1
  • 2
  • 3
  • 4
  • 5
salve2加入集群
docker exec -it rabbitmq_slave2 /bin/bash
rabbitmqctl stop_app
rabbitmqctl join_cluster rabbitmq_master@rabbitmq_master
rabbitmqctl start_app
exit
  • 1
  • 2
  • 3
  • 4
  • 5

开启镜像队列

docker exec -it rabbitmq_slave1 /bin/bash
rabbitmqctl set_policy my_ha "^" '{"ha-mode":"all"}'
exit
  • 1
  • 2
  • 3

到这里,rabbitmq集群镜像模式就安装成功了

docker一键安装rabbitmq集群镜像模式脚本:

start_rabbitmq.sh

#创建网卡
docker network create rabbitmq_net
#安装三个rabbitmq组件,一主两从
docker run -d --name=rabbitmq_master -p 5672:5672 -p 15672:15672 -e RABBITMQ_NODENAME=rabbitmq_master -e RABBITMQ_ERLANG_COOKIE='1111111' -h rabbitmq_master --net=rabbitmq_net -v /data/rabbitmq-1/rabbitmq_master/data:/var/lib/rabbitmq -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=CiA7rk7L_6gIKnaX  rabbitmq:3.8.27-management
docker run -d --name=rabbitmq_slave1 -p 5673:5672 -p 15673:15672 -e RABBITMQ_NODENAME=rabbitmq_slave1 -e RABBITMQ_ERLANG_COOKIE='1111111' -h rabbitmq_slave1 --net=rabbitmq_net -v /data/rabbitmq-1/rabbitmq_slave1/data:/var/lib/rabbitmq -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=CiA7rk7L_6gIKnaX  rabbitmq:3.8.27-management
docker run -d --name=rabbitmq_slave2 -p 5674:5672 -p 15674:15672 -e RABBITMQ_NODENAME=rabbitmq_slave2 -e RABBITMQ_ERLANG_COOKIE='1111111' -h rabbitmq_slave2 --net=rabbitmq_net -v /data/rabbitmq-1/rabbitmq_slave2/data:/var/lib/rabbitmq -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=CiA7rk7L_6gIKnaX  rabbitmq:3.8.27-management
#开启三个组件的管理端插件
docker exec -it rabbitmq_master rabbitmq-plugins enable rabbitmq_management
docker exec -it rabbitmq_slave1 rabbitmq-plugins enable rabbitmq_management
docker exec -it rabbitmq_slave2 rabbitmq-plugins enable rabbitmq_management
#salve1加入集群
docker exec -it rabbitmq_slave1 rabbitmqctl stop_app
docker exec -it rabbitmq_slave1 rabbitmqctl join_cluster rabbitmq_master@rabbitmq_master
docker exec -it rabbitmq_slave1 rabbitmqctl start_app
#salve2加入集群
docker exec -it rabbitmq_slave2 rabbitmqctl stop_app
docker exec -it rabbitmq_slave2 rabbitmqctl join_cluster rabbitmq_master@rabbitmq_master
docker exec -it rabbitmq_slave2 rabbitmqctl start_app
#开启镜像队列
docker exec -it rabbitmq_slave1 rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小桥流水78/article/detail/981652
推荐阅读
相关标签
  

闽ICP备14008679号