rabbitmq集群中,各个rabbitmq为对等节点,即每个节点均提供给客户端连接,进行消息的接收和发送。节点分为内存节点和磁盘节点,一般的,均应建立为磁盘节点,为了防止机器重启后的消息消失;这几个节点需要在同一个局域网内;这几个节点需要有相同的erlang cookie,否则不能正常通信。
环境版本
linux发行版本:centos linux 7
linux内核:Linux localhost.localdomain 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
docker:17.05.0-ce
rabbitmq:3.7.14
docker中安装RabbitMq
a.查找rabbitmq版本
docker search RabbitMq
b.下载rabmitmq
docker pull rabbitmq:3-management
如果下载带管理界面的用命令:docker pull rabbitmq:3-management
c.按装查看已下载到本地的rabmitmq安装文件
docker images rabbitmq
a.集群机器安装rabbitmq
容器:myrabbit1
docker run -d --hostname rabbit1 --name myrabbit1 -p 15672:15672 -p 5672:5672 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' rabbitmq:3-management

容器:myrabbit2
docker run -d --hostname rabbit2 --name myrabbit2 -p 5673:5672 --link myrabbit1:rabbit1 -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' rabbitmq:3-management
![]()
注意点:
多个容器之间使用“--link”连接,此属性不能少;
Erlang Cookie值必须相同,也就是RABBITMQ_ERLANG_COOKIE参数的值必须相同,原因见下文“配置相同Erlang Cookie”部分;
b.加入节点到集群
设置节点1
docker exec -it myrabbit1 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
exit
设置节点2
docker exec -it myrabbit2 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --ram rabbit@rabbit1
rabbitmqctl start_app
exit
参数“--ram”表示设置为内存节点,忽略次参数默认为磁盘节点。
f.浏览器访问http://10.1.7.202:15672默认创建了一个 guest 用户,密码也是 guest。
这下就有了两个节点
本文详细介绍了如何在Docker环境下部署RabbitMQ集群。首先,确保所有节点在同一局域网并配置相同的Erlang cookie。接着,通过docker run命令创建并链接容器作为集群节点。每个节点都需要指定hostname、Erlang cookie,并使用--link选项连接其他节点。然后,通过rabbitmqctl命令将节点加入集群,可以设置为内存节点或默认的磁盘节点。最后,可以通过默认的guest用户访问集群管理界面。

1540

被折叠的 条评论
为什么被折叠?



