loading...
rabbitmq双活
Published in:2022-04-29 | category: 中间件

rabbitmq双活

前置准备

rabbitmq的双活是通过federation插件来实现的,因此需要激活rabbitmq_federation和rabbitmq_federation_management插件,可以在命令行直接用rabbitmq-plugins enable rabbitmq_federationrabbitmq-plugins enable rabbitmq_federation_management来激活,如果提示rabbitmq_plugins是只读文件,则可以通过修改config来激活这两个插件
最终激活后进入manage页面,在admin可以看到这个
image.png

配置Federation

进入Federation Upstreams,新建一个upstream,输入name和URI即可,URI中以amqp协议为例,IP是目标集群的clusterIP。
image.png
随后配置policy,在definition中添加federation-upstream-set = all,用正则表达式匹配想要匹配的队列作为接收upstream消息的队列。
image.png
这时候检查一下exchange和queue的policy应用情况
image.png
image.png
再检查一下federation status
image.png
都在running了,至此已经配置成功

测试

检查upstream的exchange和queue
image.png
image.png
向downstream-queue队列发送消息
image.png
再去downstream看看
image.png
至此federation插件测试成功

双活+镜像

双活是通过federation插件实现的,而镜像是通过policy实现的,因此虽然exchange和queue都只能应用一个policy,但我们可以把policy中的definition合并
image.png
此时应用upmirror这个policy的队列既可以从upstream接受消息,也可以将消息镜像同步到本集群的所有节点。
PS:尽管federation实现了跨集群的消息传输,但federation是单向的,因此如果想要实现消息的双向同步,需要将两个集群中都配置为downstream,并各自作为对方的upstream。

Prev:
代价函数
Next:
rabbitmq简介