首页 > 技术文章 > docker搭建 rabbitmq集群

qiansm 2020-08-26 18:49 原文

1、拉取镜像

docker pull rabbitmq:management

2、运行容器

docker run -d --hostname rabbit_host1 --name rabbitmq1 -p 15672:15672 -p 5672:5672 -e RABBITMQ_ERLANG_COOKIE='rabbitmq_cookie' rabbitmq:management

docker run -d --hostname rabbit_host2 --name rabbitmq2 -p 5673:5672 --link rabbitmq1:rabbit_host1 -e RABBITMQ_ERLANG_COOKIE='rabbitmq_cookie' rabbitmq:management

docker run -d --hostname rabbit_host3 --name rabbitmq3 -p 5674:5672 --link rabbitmq1:rabbit_host1 --link rabbitmq2:rabbit_host2 -e RABBITMQ_ERLANG_COOKIE='rabbitmq_cookie' rabbitmq:management

主要参数:
-p 15672:15672 management 界面管理访问端口
-p 5672:5672 amqp 访问端口
--link 容器之间连接
Erlang Cookie 值必须相同,也就是一个集群内 RABBITMQ_ERLANG_COOKIE 参数的值必须相同。因为 RabbitMQ 是用Erlang实现的,Erlang Cookie 相当于不同节点之间通讯的密钥,Erlang节点通过交换 Erlang Cookie 获得认证

 

3、加入节点到集群

设置节点1:

docker exec -it rabbitmq1 bash

root@rabbit_host1:/#rabbitmqctl stop_app

root@rabbit_host1:/#rabbitmqctl reset

root@rabbit_host1:/#rabbitmqctl start_app

root@rabbit_host1:/#exit

设置节点2,加入到集群:

docker exec -it rabbitmq2 bash

root@rabbit_host2:/#rabbitmqctl stop_app

root@rabbit_host2:/#rabbitmqctl reset

root@rabbit_host2:/# rabbitmqctl join_cluster --ram rabbit@rabbit_host1

root@rabbit_host2:/#rabbitmqctl start_app

root@rabbit_host2:/# exit

设置节点3,加入到集群:

docker exec -it rabbitmq3 bash

root@rabbit_host3:/# rabbitmqctl stop_app

root@rabbit_host3:/# rabbitmqctl reset

root@rabbit_host3:/# rabbitmqctl join_cluster --ram rabbit@rabbit_host1

root@rabbit_host3:/# rabbitmqctl start_app

root@rabbit_host3:/# exit

主要参数:
--ram 表示设置为内存节点,忽略次参数默认为磁盘节点。该配置启动了3个节点,1个磁盘节点和2个内存节点。

设置好之后,使用 http://ip:15672 进行访问,默认账号密码:guest/guest

4、集群查看

root@rabbit_host1:/# rabbitmqctl cluster_status

推荐阅读