主机
192.168.1.125 h3 rabbit1
192.168.1.126 h4 rabbit2
192.168.1.14 h6 rabbit3
宿主机操作
mkdir /rabbitmq/data -p touch /rabbitmq/{rabbitmq.conf, hosts}
vim /rabbitmq/hosts
192.168.1.125 h3 rabbit1 192.168.1.126 h4 rabbit2 192.168.1.14 h6 rabbit3
vim /rabbitmq/rabbitmq.conf # 如果使用默认端口就不需要创建和修改这个文件了 或者使用 -e NODE_PORT=11111 来指定listeners.tcp.default端口 // management.tcp.port 没有找到这个变量名 loopback_users.guest = false listeners.tcp.default = 11111 management.tcp.port = 22222
从hub.docker.com上找容器, 默认的latest不包含web界面
docker pull rabbitmq:3.8.3-management
h3宿主机上创建容器
docker run -d --network=host --name rabbit1 -v /etc/localtime:/etc/localtime:ro -v /rabbitmq/data:/var/lib/rabbitmq -v /rabbitmq/hosts:/etc/hosts -v /rabbitmq/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' -e RABBITMQ_DEFAULT_USER=user -e RABBITMQ_DEFAULT_PASS=passwd 479479d8e188
h4 h6宿主机上创建容器
docker run -d --network=host --name rabbit2 -v /etc/localtime:/etc/localtime:ro -v /rabbitmq/data:/var/lib/rabbitmq -v /rabbitmq/hosts:/etc/hosts -v /rabbitmq/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' 479479d8e188 docker run -d --network=host --name rabbit3 -v /etc/localtime:/etc/localtime:ro -v /rabbitmq/data:/var/lib/rabbitmq -v /rabbitmq/hosts:/etc/hosts -v /rabbitmq/rabbitmq.conf:/etc/rabbitmq/rabbitmq.conf -e RABBITMQ_ERLANG_COOKIE='rabbitcookie' 479479d8e188
设置rabbit2节点加入集群
docker exec -it rabbit2 /bin/bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster rabbit@h3
rabbitmqctl start_app
exit
设置rabbit3节点加入集群
docker exec -it rabbit3 bash rabbitmqctl stop_app rabbitmqctl reset rabbitmqctl join_cluster --ram rabbit@h3 rabbitmqctl start_app exit 参数“--ram”表示设置为内存节点,默认为磁盘节点, 做的集群所以一个设置磁盘节点,一个设置内存节点, 内存节点读取快,磁盘节点安全
查询集群状态
rabbitmqctl cluster_status
故障节点的处理
docker exec -it rabbit2 /bin/bash
rabbitmqctl stop
#在一个正常的节点上移除有问题的节点
rabbitmqctl -n rabbit@h3 forget_cluster_node rabbit@h4