rmq跨机集群,假设三台机IP为:
192.168.78.140
192.168.78.141
192.168.78.142
1. 启动三个rabbitmq容器, 带界面
admin:admin123
192.168.78.140:
docker run -d --restart always --name rabbitmq0 \
--hostname rabbitmq0 \
--add-host="rabbitmq1":192.168.78.141 \
--add-host="rabbitmq2":192.168.78.142 \
-p 4369:4369 \
-p 5671:5671 \
-p 5672:5672 \
-p 15672:15672 \
-p 25672:25672 \
-p 15671:15671 \
-e RABBITMQ_ERLANG_COOKIE='rmqcookie' \
-e RABBITMQ_DEFAULT_USER=admin \
-e RABBITMQ_DEFAULT_PASS=admin123 \
-v /var/lib/rabbitmq:/var/lib/rabbitmq \
rabbitmq:3.8.5-management-alpine
192.168.78.141:
docker run -d --restart always --name rabbitmq1 \
--hostname rabbitmq1 \
--add-host="rabbitmq0":192.168.78.140 \
--add-host="rabbitmq2":192.168.78.142 \
-p 4369:4369 \
-p 5671:5671 \
-p 5672:5672 \
-p 15672:15672 \
-p 25672:25672 \
-p 15671:15671 \
-e RABBITMQ_ERLANG_COOKIE='rmqcookie' \
-e RABBITMQ_DEFAULT_USER=admin \
-e RABBITMQ_DEFAULT_PASS=admin123 \
-v /var/lib/rabbitmq:/var/lib/rabbitmq \
rabbitmq:3.8.5-management-alpine
192.168.78.142:
docker run -d --restart always --name rabbitmq2 \
--hostname rabbitmq2 \
--add-host="rabbitmq0":192.168.78.140 \
--add-host="rabbitmq1":192.168.78.141 \
-p 4369:4369 \
-p 5671:5671 \
-p 5672:5672 \
-p 15672:15672 \
-p 25672:25672 \
-p 15671:15671 \
-e RABBITMQ_ERLANG_COOKIE='rmqcookie' \
-e RABBITMQ_DEFAULT_USER=admin \
-e RABBITMQ_DEFAULT_PASS=admin123 \
-v /var/lib/rabbitmq:/var/lib/rabbitmq \
rabbitmq:3.8.5-management-alpine
注意:RABBITMQ_ERLANG_COOKIE 集群中不同节点的erlang cookie值要相同
2. 加入rabbitmq 到集群:
设置节点1:
docker exec -it rabbitmq0 bash rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
设置节点2,3:
docker exec -it rabbitmq1|rabbitmq2 bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@rabbitmq0 #加入集群
rabbitmqctl start_app
rabbitmqctl join_cluster --ram rabbit@rabbitmq0 代表内存
最后进入任意一台,设置镜像队列
rabbitmqctl set_policy -p $vhost ha-all "" '{"ha-mode":"all","ha-sync-mode":"automatic"}'
某节点故障后,需要集群中剔除此节点,再重新加入,
rm -rf /var/lib/rabbitmq/*
rabbitmqctl -n rabbit@rabbitmq0 forget_cluster_node rabbit@rabbitmq1
3. 访问
设置好之后,使用http://虚机ip:15672 进行访问了,默认账号密码是admin:admin123 启动了3个节点,3个磁盘节点。