前言
在现在微服务架构下,RabbitMQ也需要支持集群,保证高可用。
集群架构
1. 普通集群模式
1.1 主节点的队列,从节点是没有的。但是从节点可以看到。
1.2 消费者可以监听从节点,从节点会找主节点要消息。
1.3 Excahge是会主从同步的。
1.4 故障无法自动转移。
2. 镜像集群
2.1 通过镜像同步,实现Exchange和Queue的同步。
2.2 主节点故障,从节点会自动切换成主节点,正常工作。
集群搭建(普通集群)
1. 准备三台机器:
主节点:1.0.0.1
从节点:1.0.0.2
从节点:1.0.0.3
2. 三台机器都需要安装RabbitMQ:https://www.cnblogs.com/jssj/p/13910643.html
3. 保证erlang的cookie是一样的。
cat /var/lib/rabbitmq/.erlang.cookie -- 三台机器都需要改成一样。
4. 启动三台机器的RabbitMQ。
rabbitmq-server -detached -- 后台启动,前端页面将失效,只能通过linux命令查询MQ的消息和操作。
5. 查询RabbitMQ启动状态
rabbitmqctl cluster_status
6. 停止从节点
rabbitmqctl stop_app
7. 从节点执行加入集群命令
rabbitmqctl join_cluster rabbit@mq1 -- 其中mq1主节点的主机名
8. 从节点启动
rabbitmqctl start_app -- 这个时候前端插件有可以使用了
集群效果图:
集群已经搭建完毕:
rabbitmqctl cluster_status
查看集群状态
集群搭建(镜像集群)
策略查询:
rabbitmqctl list_policies
策略说明:
1. 设置镜像策略:
rabbitmqctl set_policy ha-all '^hello' '["ha-mode":"all","ha-sync-mode":"automatic"]' -- ha-all 是策略名,^hello 表示符合该表达式的队列。
镜像集群就设置好了,也可以在页面设置:
设置完成之后:
界面就队列就变成这样了,主节点宕机会自动切换主节点,主节点再次启动又会自动成为集群的从节点。
策略删除:
rabbitmqctl clear_policy ha-all
总结
rabbitmq集群设置简单,主要包含,交换机高可用和队列高可用,掌握两种集群架构。