本站教程收集整理的这篇文章主要介绍了RabbitMQ:镜像集群搭建(基于Docker),本站教程本站觉得挺不错的,现在分享给大家,也给大家做个参考。
集群形式
RabbitMQ集群节点包括内存节点(RAM)、磁盘节点(disk,消息持久化),集群中至少有一个disk节点。
普通模式
对于普通模式,集群中各节点有相同的队列结构,但消息只会存在于集群中的一个节点。对于消费者来说,若消息进入A节点的Queue中,当从B节点拉取时,RabbitMQ会将消息从A中取出,并经过B发送给消费者。
应用场景:该模式各适合于消息无需持久化的场合,如日志队列。当队列非持久化,且创建该队列的节点宕机,客户端才可以重连集群其他节点,并重新创建队列。若为持久化,只能等故障节点恢复。
镜像模式
与普通模式不同之处是消息实体会主动在镜像节点间同步,而不是在取数据时临时拉取,高可用;该模式下,mirror queue有一套选举算法,即1个master、n个slaver,生产者、消费者的请求都会转至master。
应用场景:可靠性要求较高场合,如下单、库存队列。
缺点:若镜像队列过多,且消息体量大,集群内部网络带宽将会被此种同步通讯所消耗。
(1)镜像集群也是基于普通集群,即只有先搭建普通集群,然后才能设置镜像队列。
2)若消费过程中,master挂掉,则选举新master,若未来得及确认,则可能会重复消费
搭建
创建三个节点
@H_457_27@mkdir -p /mydata/rabbitmq/rabbitmq01 mkdir -p /mydata/rabbitmq/rabbitmq02 mkdir -p /mydata/rabbitmq/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='wj' rabbitmq: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='wj' --link rabbitmq01:rabbitmq01 rabbitmq: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='wj' --link rabbitmq01:rabbitmq01 --link rabbitmq02:rabbitmq02 rabbitmq:management
RABBITMQ_ERLANG_COOKIE:节点认证作用,部署集群时,需要同步该值。
节点加入集群
docker exec -it rabbitmq01 /bin/bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
exit
便宜香港vps
rabbitmq02加入集群
docker exec -it rabbitmq02 /bin/bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --ram rabbit@rabbitmq01
rabbitmqctl start_app
exit
rabbitmq03加入集群
docker exec -it rabbitmq03 /bin/bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl join_cluster --ram rabbit@rabbitmq01
rabbitmqctl start_app
exit
访问:http://192.168.1.48:15673/#/
实现镜像集群
docker exec -it rabbitmq01 /bin/bash
#设置策略
rabbitmqctl set_policy -p / ha "^" '{"ha-mode":"all","ha-sync-mode":"automatic"}'
#查询策略
rabbitmqctl list_policies -p /
验证镜像集群
添加一个Hello队列
添加完成后,发现其他mq实例也有这个队列
我们发布一个持久化消息:
在其他mq实例中可以消费该消息
本站总结
以上是本站教程为你收集整理的RabbitMQ:镜像集群搭建(基于Docker)全部内容,希望文章能够帮你解决RabbitMQ:镜像集群搭建(基于Docker)所遇到的程序开发问题。
如果觉得本站教程网站内容还不错,欢迎将本站教程推荐给好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。