创建rabbitmq容器
1.docker network create rabbitmqnet --搭建桥接网络
2.创建3个rabbitmq容器
docker run -d --name rabbitmq1 -p 5672:5672 -p 15672:15672 -e RABBITMQ_NODENAME=rabbitmq1 -e RABBITMQ_ERLANG_COOKIE='QWERTYUIOPASDFGHJKL' -h rabbitmq1 --net=rabbitmqnet rabbitmq:management
docker run -d --name rabbitmq2 -p 5673:5672 -p 15673:15672 -e RABBITMQ_NODENAME=rabbitmq2 -e RABBITMQ_ERLANG_COOKIE='QWERTYUIOPASDFGHJKL' -h rabbitmq2 --net=rabbitmqnet rabbitmq:management
docker run -d --name rabbitmq4 -p 5674:5672 -p 15674:15672 -e RABBITMQ_NODENAME=rabbitmq4-e RABBITMQ_ERLANG_COOKIE='QWERTYUIOPASDFGHJKL' -h rabbitmq4 --net=rabbitmqnet rabbitmq:management
进入rabbitmq2和rabbitmq3容器(rabbitmq1作为构建集群的主节点)
进入容器:docker exec -it rabbitmq2 /bin/bash
停掉容器:rabbitmqctl stop_app
重置容器:rabbitmqctl reset
加入rabbitmq1:rabbitmqctl join_cluster --ram(内存) rabbitmq1@rabbitmq1
启动:rabbitmqctl start_app
数据丢失问题:停掉rabbitmq容器,导致数据丢失
rabbitmq消息的持久化:1.消息持久化标记 2.交换机持久化 3.队列持久化(进程挂掉但是容器没有挂掉的时候,内存的数据重启后依旧存在!)
普通集群:发送数据到一个服务器,服务器挂掉后,其他集群内服务器也拿不到数据
镜像集群:副本机制,临时master服务器->集群内其他服务器
设置镜像队列
rabbitmqctl set_policy -p / ha "^" '{"ha-mode":"all","ha-sync-mode":"automatic"}'