Rabbitmq之Federation配置
当我们有多个rabbitmq集群的时候,如果想要单向的同步集群的消息,也就是说把新集群当作老集群的镜像集群,实时的同步老集群的消息,在老集群消息被消费的时候不会影响同步到新集群的消息。在外部看上去就像每次写入消息的时候,同时向新老两个集群写入一样,不论mq的跨版本,不论mq的用户。一般我们会将这种情况应用于存在两个不同的系统,但是老数据来源只能向一个队列写入数据,此时为了在新系统上也可以实时同步到老系统队列中的数据的时候。
Federation介绍
特点
松耦合性(Loose coupling)
WAN 友好性(WAN-friendly)
扩展性(Scalability)
federation能做什么?
配置的种类
身份验证
操作步骤说明
1. 在集群的每一个node开启federation插件(同步和被同步集群都需要)
2. 登录到同步集群的管理界面::http://x.x.x.:15672/#/
3. 创建upstream
4. 创建policy
5. 查看状态图
6. 查看连接
高级
参考
Federation介绍
federation 插件的最终目标是,在不同 broker 之间进行消息传递而无需建立集群;该功能在很多场景下非常有用:
注意:当你在一个cluster中使用federation插件,所有在集群中 的nodes都需要安装federation插件
特点
松耦合性(Loose coupling)
federation 插件能够在分属不同管理域的 broker 或 cluster 之间传递消息:
他们可能设置了不同的 user 和 vhost ;
他们可能运行在不同版本的 RabbitMQ 和 Erlang 上; WAN 友好性(WAN-friendly) federation 插件基于 AMQP 0-9-1 协议在不同 broker 之间进行通信,并设计成能够容忍不稳定的网络连通情况; 扩展性(Scalability) federation 不需要在 n 个 broker 之间建立 O(n^2) 个连接(尽管这是最简单的使用模式),这也就意味着 federation 在使用时更容易扩展 federation能做什么? federation 插件允许你将多个 exchange 或多个 queue 进行 federate ;federated exchange 或 federated queue 能够从一个或多个 upstream 接收到消息;
也就是说,你的队列可以和其他集群的队列建立一种关系,他们之间可以相互的同步数据,可以是我同步给你,也可以是你同步给我,不过这种关系有两个角色一个是上游一个是下游,数据流向是上游流向下流。 这里有三个名词,federation 插件允许你将多个 exchange 或多个 queue 进行 federate:
upstream: 上游,是指位于其他 broker 上的、远端 exchange 和 queue ; federated exchange: 到exchange的关系,能够将发给 upstream 的消息路由到本地的某个 queue 中; federated queue: 到queue的关系,则允许一个本地消费者接收到来自 upstream queue 的消息; 配置的种类 关于 federation upstream 的信息全都保存在 RabbitMQ 的数据库中,其中包括了 user 信息、permission 信息、queue 信息等等; 在 federation 中存在 3 种界别的配置:
Upstreams - 每一个 upstream 用于定义如何与另外的 broker 建立连接; Upstream sets - 每一个 upstream set 用于针对一系列使用 federation 功能 upstream 进行了分组; Policies - 每一种 policy 会限定(过滤)出一组 exchange ,或者一组 queue ,或者同时针对两者进行限定;policy 最终将作用于一个单独的 upstream 上,或者一个 upstream set 上,并对其他对象发挥作用; 实际上,在最简单的使用情况下,你可以忽略已经存在的upstream设置,因为有一个隐含的默认upstream叫做“all”,他会添加所有的upstream。
身份验证 我们讨论的是免身份验证的方式,如果有身份难的需求请参考官网:Authentication Mechanisms — RabbitMQ
操作步骤说明 parameter 和 policy 可以通过 3 种方式进行设置:
- 通过 rabbitmqctl 脚本;
- 通过 management 插件提供的 HTTP API ;
- 通过 rabbitmq_federation_management 插件提供的 Web UI(更通用的方式,我们也是通过页面来配置就可以了);
注意:基于 Web UI 的方式不能提供全部功能,尤其无法针对 upstream set 进行管理;
1. 在集群的每一个node开启federation插件(同步和被同步集群都需要) 参考命令:
- rabbitmq-plugins enable rabbitmq_federation
- rabbitmq-plugins enable rabbitmq_federation_management
2. 登录到同步集群的管理界面::http://x.x.x.:15672/#/
3. 创建upstream tips:
UI操作:
Admin->Federation Upstreams->Add a new upstream
Name:随意填写
URI:填被同步集群(例如:amqp://user1:xxx@x.x.x.x,xxx为连接密码)
Expires:默认填写3600000 单位ms
其余字段可不用填写
Expires:是代表缓存时间,如果说网络连通性不好的时候,消息会在上游的队列中缓存的时间,超时丢弃,设置为空则表示,永远缓存不会丢弃数据(但是如果长时候不恢复内存会占用越来越大,建议设置上)
Acknowledgement Mode: 代表消息确认方式,用来防止消息在传输过程中丢失,有三个值,on-confirm、on-publish、no-ack,对传输速度的影响是从慢速到快速,对安全性是不会丢失到可能会丢失。通常使用on-publish,不然on-confirm太慢了。
4. 创建policy tips:在下游,也就是新队列(被同步队列)上操作
UI操作:
Admin->Policies->Add / update a policy
Name:随意填写(sync_data)
Pattern:匹配表达式(例如:^(?!amq.).* 剔除系统队列后的所有队列)
Apply to: 默认选择Exchange and queues
Definition:federation-upstream-set = all (选定federation规则)
5. 查看状态图 现在,所有内置的 exchange 都应该建立了 federation ,因为他们都能匹配上面的 policy,可以通过页面查看状态
UI操作:
Admin > Federation Status > Running Links
查看针对每个 exchange 的 federation 连接。
配置成功可以看到匹配的Exchange / Queue, state:running
也可以通过下面的命令查看状态图:
rabbitmqctl eval 'rabbit_federation_status:status().'
也可以通过 management 插件中的 exchange 列表,或者下面的命令输出,确认上述 policy 已经作用到了 exchange 上;
rabbitmqctl list_exchanges name policy | grep federate-me
通常情况下,针对每个 upstream 都会有一条 federation 连接,该 federation 连接对应到一个 exchange 上;例如 3 个 exchange 与 2 个 upstream 分别建立 federation 的情况下,会有 6 条连接。
6. 查看连接 登录到被同步集群(上游)的管理界面::http://x.x.x.:15672/#/ 前往 Connections选项 配置成功可以看到来自同步集群的连接
高级
更复杂的配置:Federation Reference — RabbitMQ
Rabbitmq之Federation配置相关推荐
- RabbitMQ——RabbitMQ的Federation 和 Shovel原理
摘要 主要讲述Federation和 Shovel这两个插件的使用.细节及相关原理.相对于集群的部署方式,Federation和Shovel可以部署在广域网中,为RabbitMQ提供更广泛的应用空间. ...
- Mq安装服务器文件传输,RabbitMQ学习:安装RabbitMQ及RabbitMQ的初步配置(一)
RabbitMQ基础含义 RabbitMQ是一种消息中间件,用于处理来自客户端的异步消息.服务端将要发送的消息放入到队列池中.接收端可以根据RabbitMQ配置的转发机制接收服务端发来的消息.Rabb ...
- RabbitMQ快速安装配置指南
RabbitMQ快速安装配置指南 官网的安装教程由于需要解释原理很多废话,这里总结一下在CentOS7环境下的安装配置过程.如需理解原理,请看官网原文的安装指南或翻译 1. 安装RabbitMQ se ...
- RabbitMQ之Shovel配置(python模拟Producer、Consumer)
一.Shovel Shovel能够可靠.持续地从一个Broker中的队列(source端)拉取数据并转发至另一个Broker(destination).这个过程中Shovel就是一个客户端,它负责连接 ...
- rabbitMQ插件shovel配置(数据同步)
扣扣技术分享交流群:1125844267 一.shovel是什么? 其实,shovel和上一篇博客中的federation的功能是类似的,都是为了MQ间的消息同步.不同的是,federation需要每 ...
- RabbitMQ的Federation和Shovel的使用
一.跨越集群的界限 RabbitMQ可以通过3种方式实现分布式部署:集群.Federation.Shovel.Federation和Shovel可以为RabbitMQ的分布式部署提供更高的灵活性,但也 ...
- Win10 下 RabbitMQ 的 安装 配置
记录下本人在win10环境下安装RabbitMQ的步骤,以作备忘. 第一步:下载并安装erlang 原因:RabbitMQ服务端代码是使用并发式语言Erlang编写的,安装Rabbit MQ的前提是安 ...
- rabbitmq安装与配置(windows)亲测有效!!!
第一步安装erlang环境 国内下载地址:https://erl.uip6.com/ 下载最新的 然后 傻瓜式安装 一直点Next 第二部安装rabbitmq 这个需要官网下:https://www. ...
- RabbitMQ学习系列(二): RabbitMQ安装与配置
1.安装 Rabbit MQ 是建立在强大的Erlang OTP平台上,因此安装RabbitMQ之前要先安装Erlang. erlang:http://www.erlang.org/download. ...
最新文章
- linux吃鸡游戏下载,沙雕糖豆人吃鸡战场
- linux nfs 读写性能,linux – Debian上的NFS性能问题
- IIS网站打不开错误解决方案集锦(一):编译器错误消息: 编译器失败,错误代码为 -1073741502。...
- DELL XPS 9350 无线网卡DW1820A WIN7驱动异常解决
- idea 搜索不到gsonformat_Idea中GsonFormat插件安装
- 华为云的“大招”——Euler开源 Gauss开放 旨在建立云生态
- WebApi实现验证授权Token,WebApi生成文档等 - CSDN博客
- 问题八:C++中this是干嘛用的
- Android 测试入门之---Monkey test
- 华为od与中软外包哪个更好_真惨!入职中软一个月(外包华为)就离职了~
- Android:layout_weight详解
- 【解析无线路由器信号消失原因】
- 五、传输层(三)TCP
- PDF文件如何编辑?这两种方法是我一直在用的
- Scrum: 时间框 (Timeboxing) 是什么?
- 2.Elasticsearch-增删改
- 宏录制流程——例:生成工资条
- js 通过传入 开始时间和结束时间 算出相差多少秒 分钟 相差时间
- LeetCode-1264. 页面推荐(中等)
- python 爬取当当网商品价格并写入数据库
热门文章
- 智慧停车将再次迎来发展的春天
- 计算机关机慢什么原因,电脑关机慢是什么原因,小编教你电脑关机慢是什么原因...
- chmod + 数字 的含义
- 2014年中国市场智能手机销量排行榜,前十国外品牌只剩两
- html5游戏透视,透视世界(Perspective)
- 【泡泡一分钟】间歇的GPS辅助VIO:在线初始化和标定
- linux系统基础命令使用,linux基础命令(linux必学的60个命令)
- python psycopg2使用_psycopg2 (python与postgresql)
- 分支-13. 计算天数(15)
- 自制电吉他效果器 DIY PCB(四)原理图与封装 下