RabbitMq集群
上一节我们讲了通过手动确认保证了消息的可靠性。本文将介绍通过安装RabbitMQ集群来保证RabbitMQ高可用(镜像集群)。
文章目录
一、普通集群
部署多个rabbitmq实例,多个实例互相通信。 优点:提供了消息的吞吐量。 缺点:无法保证高可用。
$ docker network create rabbit_net
ccdaf0a7e5c31a0f42ac0ad87075285c035b7bc9a067dcd3365ce46e9ee81cf1
$ docker run -d --hostname rabbit01 --name mq01 -p 5673:5672 -p 15673:15672 --network rabbit_net -e RABBITMQ_ERLANG_COOKIE="mq_cookie" rabbitmq:3-management
3cbd4ccb3c670967a65cb22b5ba7f343162dc4b2391e32379229fcfb9e67c1a0
$ docker run -d --hostname rabbit02 --name mq02 -p 5674:5672 -p 15674:15672 --network rabbit_net -e RABBITMQ_ERLANG_COOKIE="mq_cookie" rabbitmq:3-management
55f96bfd213182dcf5eefbe14173a09346d96b4030a07bd0484a00ac4cb11553
$ docker run -d --hostname rabbit03 --name mq03 -p 5675:5672 -p 15675:15672 --network rabbit_net -e RABBITMQ_ERLANG_COOKIE="mq_cookie" rabbitmq:3-management
74e8cad5bb84d8fb70cbf531764a7f74d026dae2b2d786536e466573290c86dc
以rabbit01作为主节点将其他两条加入集群(依次进入rabbit02和rabbit03执行)
rabbitmqctl stop_app
rabbitmqctl join_cluster rabbit@rabbit01
rabbitmqctl start_app
查看集群节点状态
配置连接方式
spring:
rabbitmq:
addresses: localhost:5673,localhost:5674,localhost:5675
username: guest
password: guest
二、镜像集群
数据存储在多台RabbitMQ服务上,每次写入数据都会自动将消息同步到其他实例。
镜像集群的配置只需要在之前普通集群的基础上配置一个Policies即可。 在任意一台节点上配置后,其它两台节点同步。