0.准备工作
一般用这个,带管理界面
docker pull rabbitmq:management
当然从节点也可以直接不带管理界面
docker pull rabbitmq
1.搭建主节点
可以修改user和password
docker run -d --hostname rabbitmq-main \
--restart=unless-stopped --name rabbitmq \
-p 15672:15672 -p 5672:5672 -p 4369:4369 -p 25672:25672 \
-e RABBITMQ_DEFAULT_USER=guest -e RABBITMQ_DEFAULT_PASS=123456 \
-e RABBITMQ_ERLANG_COOKIE='rabbit_mq' \
-v rabbitmq-data:/var/lib/rabbitmq \
rabbitmq:management
然后通过以下命令修改erlang.cookie,注意替换命令行中的内容
docker exec -it rabbitmq bash -c 'echo "<你的erlang.cookie>" > /var/lib/rabbitmq/.erlang.cookie && chmod 400 /var/lib/rabbitmq/.erlang.cookie'
主节点restar
docker exec rabbitmq rabbitmqctl stop_app
docker exec rabbitmq rabbitmqctl reset
docker exec rabbitmq rabbitmqctl start_app
然后使用ifconfig确定主节点ip
我这里是虚拟机nat模式 ip为192.168.18.128

3.从节点配置
尝试ping主节点

没问题,然后运行容器,记得替换ip
docker run -d --hostname rabbitmq-deputy1 \
--restart=unless-stopped --name rabbitmq \
--add-host=rabbitmq-main:<主节点ip> \
-p 15672:15672 -p 5672:5672 -p 4369:4369 -p 25672:25672 \
-e RABBITMQ_DEFAULT_USER=guest -e RABBITMQ_DEFAULT_PASS=123456 \
-e RABBITMQ_ERLANG_COOKIE='rabbit_mq' \
-v rabbitmq-data:/var/lib/rabbitmq \
rabbitmq:management
设置erlang.cookie
docker exec -it rabbitmq bash -c 'echo "<你的erlang.cookie>" > /var/lib/rabbitmq/.erlang.cookie && chmod 400 /var/lib/rabbitmq/.erlang.cookie'
连接
docker exec -it rabbitmq rabbitmqctl stop_app
docker exec -it rabbitmq rabbitmqctl join_cluster rabbit@rabbitmq-main
docker exec -it rabbitmq rabbitmqctl start_app
4关于多节点集群配置
主要记住一个原则:
主节点不需要知道从节点ip的hostname,但是从节点之间要互相知道后加入的知道先加入的就行了 。
docker run -d --hostname rabbitmq-main \
--restart=unless-stopped --name rabbitmq \
-p 15672:15672 -p 5672:5672 -p 4369:4369 -p 25672:25672 \
-e RABBITMQ_DEFAULT_USER=guest -e RABBITMQ_DEFAULT_PASS=123456 \
-e RABBITMQ_ERLANG_COOKIE='rabbit_mq' \
-v rabbitmq-data:/var/lib/rabbitmq \
rabbitmq:management
docker run -d --hostname rabbitmq-deputy2 \
--restart=unless-stopped --name rabbitmq \
--add-host=rabbitmq-main:192.168.18.128 \
-p 15672:15672 -p 5672:5672 -p 4369:4369 -p 25672:25672 \
-e RABBITMQ_DEFAULT_USER=guest -e RABBITMQ_DEFAULT_PASS=123456 \
-e RABBITMQ_ERLANG_COOKIE='rabbit_mq' \
-v rabbitmq-data:/var/lib/rabbitmq \
rabbitmq:management
docker run -d --hostname rabbitmq-deputy1 \
--restart=unless-stopped --name rabbitmq \
--add-host=rabbitmq-main:192.168.18.128 \
--add-host=rabbitmq-deputy2:192.168.18.132 \
-p 15672:15672 -p 5672:5672 -p 4369:4369 -p 25672:25672 \
-e RABBITMQ_DEFAULT_USER=guest -e RABBITMQ_DEFAULT_PASS=123456 \
-e RABBITMQ_ERLANG_COOKIE='rabbit_mq' \
-v rabbitmq-data:/var/lib/rabbitmq \
rabbitmq:management

5.过程报错解决记录
5.1 noconnection

可能有以下原因
- 连接端口4369和25672未开放
按我上面做没这个问题 - 主节点和从节点ping不通在容器中安装ping命令后,去ping以下其他节点试试
- 有可能是erlang.cookie问题,最好不要通过
docker exec rabbitmq cat /var/lib/rabbitmq/.erlang.cookie去访问主节点然后CV,建议自己输入。
5.2 Error: unable to perform an operation on node ‘rabbit@rabbitmq-deputy1’. Please see diagnostics information and suggestions below.


一般都是erlang.cookie问题
171

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



