RabbitMQ集群搭建

139 阅读2分钟

运行RabbitMQ

拉取镜像

docker pull rabbitmq:management

启动容器

docker run -d -e RABBITMQ_DEFAULT_USER=Admin -e RABBITMQ_DEFAULT_PASS=123456 -v mq-plugins:/plugins --name mq  --hostname mq -p 15672:15672 -p 5672:5672 -d rabbitmq:management

-e RABBITMQ_DEFAULT_USER=Admin设置默认账号为Admin

e RABBITMQ_DEFAULT_PASS=123456设置默认账号为123456

如果不设置这两条参数账号密码默认为:guest

这是启动带有管理面板的版本,docker会自动拉取缺少的并且启动

管理面板

通过http://{hostname}:15672进入到管理面板,使用刚才设置的账号密码登录

搭建RabbitMQ集群

拉取镜像

docker pull rabbitmq:management

运行容器

## 第一个
docker run -d --hostname host_rabbit1 --name rabbit1 -p 15672:15672 -p 5672:5672 -e RABBITMQ_ERLANG_COOKIE='rabbitmq_cookie' rabbitmq:management
## 第二个
docker run -d --hostname host_rabbit2 --name rabbit2 -p 5673:5673 --link rabbit1:host_rabbit1 -e RABBITMQ_ERLANG_COOKIE='rabbitmq_cookie' rabbitmq:management
## 第三个
docker run -d --hostname host_rabbit3 --name rabbit3 -p 5674:5674 --link rabbit1:host_rabbit1 --link rabbit2:host_rabbit2 -e RABBITMQ_ERLANG_COOKIE='rabbitmq_cookie' rabbitmq:management

-e RABBITMQ_ERLANG_COOKIE='rabbitmq_cockie'同一个集群内的值是必须相同的

--link 容器之间的连接

加入节点到集群

设置节点1

## 进入容器1
docker exec -it rabbit1 bash
## 停止应用
rabbitmqctl stop_app
## 重置节点
rabbitmqctl reset
## 启动应用
rabbitmqctl start_app
## 退出容器
exit

设置节点2

## 进入容器2
docker exec -it rabbit2 bash
## 停止应用
rabbitmqctl stop_app
## 重置节点
rabbitmqctl reset
## 加入集群
rabbitmqctl join_cluster --ram rabbit@host_rabbit1
## 启动应用
rabbitmqctl start_app
## 退出容器
exit

设置节点3

## 进入容器3
docker exec -it rabbit2 bash
## 停止应用
rabbitmqctl stop_app
## 重置节点
rabbitmqctl reset
## 加入集群
rabbitmqctl join_cluster --ram rabbit@host_rabbit1
## 启动应用
rabbitmqctl start_app
## 退出容器
exit

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

image.png