rabbitmq双活
前置准备
rabbitmq的双活是通过federation插件来实现的,因此需要激活rabbitmq_federation和rabbitmq_federation_management插件,可以在命令行直接用rabbitmq-plugins enable rabbitmq_federation
和rabbitmq-plugins enable rabbitmq_federation_management
来激活,如果提示rabbitmq_plugins是只读文件,则可以通过修改config来激活这两个插件
最终激活后进入manage页面,在admin可以看到这个
配置Federation
进入Federation Upstreams,新建一个upstream,输入name和URI即可,URI中以amqp协议为例,IP是目标集群的clusterIP。
随后配置policy,在definition中添加federation-upstream-set = all,用正则表达式匹配想要匹配的队列作为接收upstream消息的队列。
这时候检查一下exchange和queue的policy应用情况
再检查一下federation status
都在running了,至此已经配置成功
测试
检查upstream的exchange和queue
向downstream-queue队列发送消息
再去downstream看看
至此federation插件测试成功
双活+镜像
双活是通过federation插件实现的,而镜像是通过policy实现的,因此虽然exchange和queue都只能应用一个policy,但我们可以把policy中的definition合并
此时应用upmirror这个policy的队列既可以从upstream接受消息,也可以将消息镜像同步到本集群的所有节点。
PS:尽管federation实现了跨集群的消息传输,但federation是单向的,因此如果想要实现消息的双向同步,需要将两个集群中都配置为downstream,并各自作为对方的upstream。