rabbitmq集群: pull: docker pull rabbitmq 普通模式(默认): what: 集群中各节点有相同的队列结构, 但消息只会存在于集群中的一个节点。 对于消费者来说, 若消息进入 A 节点的 Queue 中, 当从 B 节点拉取时, RabbitMQ 会将消息从 A 中取出, 并经过 B 发送给消费者 应用场景: 该模式各适合于消息无需持久化的场合, 如日志队列。 当队列非持久化, 且创建该队列的节点宕机, 客户端才可以重连集群其他节点, 并重新创建队列。 若为持久化,只能等故障节点恢复。 镜像模式: what: 与普通模式不同之处是消息实体会主动在镜像节点间同步, 而不是在取数据时临时拉取, 高可用; 该模式下, mirror queue 有一套选举算法, 即 1 个 master、 n 个 slaver, 生产者、 消费者的请求都会转至 master 应用场景: 可靠性要求较高场合, 如下单、 库存队列 缺点: 若镜像队列过多, 且消息体量大, 集群内部网络带宽将会被此种同步通讯所消耗。 镜像集群也是基于普通集群, 即只有先搭建普通集群, 然后才能设置镜像队列。 若消费过程中, master 挂掉, 则选举新 master, 若未来得及确认, 则可能会重复消费。 集群搭建: 准备阶段: #创建rabbitmq用于存放rabbitmq集群映射信息 mkdir /mydata/rabbitmq #分别创建各集群映射目录 cd rabbitmq/ mkdir rabbitmq01 rabbitmq02 rabbitmq03 启动容器: docker run -d --hostname rabbitmq01 --name rabbitmq01 -v /mydata/rabbitmq/rabbitmq01:/var/lib/rabbitmq -p 15673:15672 -p 5673:5672 -e RABBITMQ_ERLANG_COOKIE='fly' rabbitmq:latest-management docker run -d --hostname rabbitmq02 --name rabbitmq02 -v/mydata/rabbitmq/rabbitmq02:/var/lib/rabbitmq -p 15674:15672 -p 5674:5672 -e RABBITMQ_ERLANG_COOKIE='fly' --link rabbitmq01:rabbitmq01 rabbitmq:latest-management docker run -d --hostname rabbitmq03 --name rabbitmq03 -v /mydata/rabbitmq/rabbitmq03:/var/lib/rabbitmq -p 15675:15672 -p 5675:5672 -e RABBITMQ_ERLANG_COOKIE='fly' --link rabbitmq01:rabbitmq01 --link rabbitmq02:rabbitmq02 rabbitmq:latest-management 主意事项: –hostname 设置容器的主机名 RABBITMQ_ERLANG_COOKIE: 节点认证作用, 部署集成时 需要同步该值 RABBITMQ_ERLANG_COOKIE 为rabbitmq多节点之间通信所用到的cookie,rabbitmq集群就是利用这一特性实现的 设置rabbitmq01为主节点 docker exec -it rabbitmq01 /bin/bash rabbitmqctl stop_app rabbitmqctl reset rabbitmqctl start_app Exit 将rabbitmq02加入rabbitmq01 docker exec -it rabbitmq02 /bin/bash rabbitmqctl stop_app rabbitmqctl reset rabbitmqctl join_cluster --ram rabbit@rabbitmq01 rabbitmqctl start_app exit 将rabbitmq03加入rabbitmq01 docker exec -it rabbitmq03 /bin/bash rabbitmqctl stop_app rabbitmqctl reset rabbitmqctl join_cluster --ram rabbit@rabbitmq01 rabbitmqctl start_app exit 首先进入主节点查看当前策略: docker exec -it rabbitmq01 /bin/bash rabbitmqctl list_policies -p / 改为镜像模式: rabbitmqctl set_policy -p / ha "^" '{"ha-mode":"all","ha-sync-mode":"automatic"}' 为rabbitmq安装可视化插件 rabbitmq-plugins enable rabbitmq_management 账号:guest 密码:guest
标签:--,rabbitmq,rabbitmqctl,集群,docker,rabbitmq01 From: https://www.cnblogs.com/wyf20190411-/p/17827565.html