Docker安装RabbitMQ集群
三个节点
部署节点1
IP: 192.168.1.100上
单机启动一个节点就好
docker run -d -h rabbitmq01 --name rabbitmq01 \
-v /app/data/rabbitmq:/var/lib/rabbitmq \
-p 15672:15672 -p 5672:5672 -p 4369:4369 -p 25672:25672 \
-e RABBITMQ_VM_MEMORY_HIGH_WATERMARK=0.9 \
-e RABBITMQ_ERLANG_COOKIE='rabbitmq379' rabbitmq:3.7.9-management
部署节点2
IP: 192.168.1.101上
docker run -d -h rabbitmq02 --name rabbitmq02 \
-v /app/data/rabbitmq:/var/lib/rabbitmq \
-p 15672:15672 -p 5672:5672 -p 4369:4369 -p 25672:25672 \
-e RABBITMQ_ERLANG_COOKIE='rabbitmq379' \
-e RABBITMQ_VM_MEMORY_HIGH_WATERMARK=0.9 \ # 内存告警限制根据实际情况修改
--add-host rabbitmq01:192.168.1.100 rabbitmq:3.7.9-management
部署节点3
IP: 192.168.1.102上
docker run -d -h rabbitmq03 --name rabbitmq03 \
-v /app/data/rabbitmq:/var/lib/rabbitmq \
-p 15672:15672 -p 5672:5672 -p 4369:4369 -p 25672:25672 \
-e RABBITMQ_ERLANG_COOKIE='rabbitmq379' \
-e RABBITMQ_VM_MEMORY_HIGH_WATERMARK=0.9 \
--add-host rabbitmq01:192.168.1.100 \
--add-host rabbitmq02:192.168.1.101 rabbitmq:3.7.9-management
说明
# 端口说明
tcp4369端口用于集群邻居发现:
tcp5671,5672端口用于AMQP 0.9.1 and 1.0 clients使用;
tcp15672端口用于http api与rabbitadmin访问,后者仅限在management plugin开启时;
tcp25672端口用于erlang分布式节点/工具通信
# 内存说明
0.4: 表示百分之40
--ram: 参数为内存节点,默认硬盘节点
加入集群操作
# 进入第一个节点:
docker exec -it rabbitmq01 /bin/bash -c "rabbitmqctl stop_app && rabbitmqctl reset && rabbitmqctl start_app"
# 进入第二个节点:
docker exec -it rabbitmq02 /bin/bash -c "rabbitmqctl stop_app && rabbitmqctl reset && rabbitmqctl join_cluster rabbit@rabbitmq01 && rabbitmqctl start_app"
# 进入第三个节点:
docker exec -it rabbitmq03 /bin/bash -c "rabbitmqctl stop_app && rabbitmqctl reset && rabbitmqctl join_cluster rabbit@rabbitmq01 && rabbitmqctl start_app"