MQTT集群间数据桥接使用问题

EMQ版本 5.3
1.EMQ数据桥接是否能将一个集群的事件桥接到另一个集群中,如果可以该如何配置

2.EMQ桥接使用jwt token建连,如果在jwt认证claim中开启了clientid=%c,如何使桥接通过认证,桥接目前没有一个固定的clientid,只能有一个固定的前缀

  1. 可以:参照:与其他 MQTT 服务桥接 | EMQX 文档
  2. 是的,只会支持前缀+随机字串,不会支持固定 clientid,因为如果是集群的话,多个节点使用相同的 clientid 连接其它的 mqttbroker 会导致互相踢下线。

1.这个我还没找到,topic的桥接这块比较清楚,关于事件,比如上线事件从一个集群桥接到另一个集群这个主题该怎么配置呢


2.如果一个集群开启了jwt认证中的claim=%c,桥接可能就连不上了,这个需要使用用户名密码吗?这样后续是否会有安全性问题;有没有什么推荐的方案啊

  1. 你直接创建一个 flow 连起来应该没问题的啊。就你这样配置也可以。

  1. 可以用用户名和密码。担心安全问题,可以用户密码都不用。
    直接在接收的 broker 上多配置一组 tcp 监听器(dashboard 上可新加),用 ip 防火墙来做。只让发送的 broker ip 连接。

1.我也是这么配置的,但是发现事件是没有转过去的,topic的是可以正常转发的
2.好的,防火墙限制确实更安全

关于第2点
你好我测试了下,比如打开了jwt 配置,这个是对所有的tcp连接生效的吧,如果在起一个端口1884来监听专门做桥接使用,但是jwt中的claim依旧对这个端口生效的吧

这个端口如果只做桥接使用,不对外开放,需要对规则进行什么设置吗?

你可以用防火墙去做限制,也可以emqx 里面限制。他是支持 cidr ip规则的。

access_rules: allow 172.100.239.1, deny all
enable_authn: false

上面的access_rules就是说先让172.100.239.1 通过。然后再拒绝其它所有的。
中间用逗号间隔。

好的 感谢

还有个问题请教下,我们桥接如何配置桥接到机群啊,好像看ip只能配置一个

不支持配置为 IP 组。
你的目标集群应该是一个 IP 的。不是一组 IP。
他前面得有负载均衡。

好的,感谢


请教下,这编辑监听器里没有高级设置,在哪里可以设置,问题和这个类似,就是把监听器的这个端口不用认证

更新到 5.6.1

5.6.1 没有windows版本的,还有其他版本可选择吗

推荐 docker

我也这么想的,那边是离线环境,不太好操作 我试试看吧,谢谢