mqtt mosquitto桥水平缩放

时间:2016-03-29 11:37:31

标签: mqtt mosquitto

我有一个负载均衡器,即aws elb 所有的酒吧/子将来自那个榆树 两名蚊子经纪人A&蚊子经纪人B在elb下 一个mosquitto经纪人在这两个经纪人之间同步主题(mosquitto.broker.sync)

尝试一下

这就是mosquitto代理在节点A和B之间同步主题的配置看起来很相似

mosquitto.broker.sync: ##
connection mosquitto-bridge
try_private false
address mosquitto.broker.A:1883 mosquitto.broker.B:1883
start_type automatic
round_robin true
notifications true
topic # both 2 "" ""

但这不起作用,只能连接到mosquitto.broker.A而不连接mosquitto.broker.B

尝试两次

首先撤消所有尝试

所以我尝试了其他方式 从mosquitto.broker.sync中删除了所有桥接配置(只是为了避免循环)

并将此配置添加到节点

mosquitto.broker.A:##

connection mosquitto-bridge
try_private false
address mosquitto.broker.sync:1883
start_type automatic
round_robin true
notifications true
topic # both 2 "" ""

mosquitto.broker.B:##

connection mosquitto-bridge
try_private false
address mosquitto.broker.sync:1883
start_type automatic
round_robin true
notifications true
topic # both 2 "" ""

mosquitto.broker.sync:##

#connection mosquitto-bridge
#try_private false
#address mosquitto.broker.A:1883 mosquitto.broker.B:1883
#start_type automatic
#round_robin true
#notifications true
#topic # both 2 "" ""

但在这种情况下,我发送邮件的节点已经复制到它上面

1 个答案:

答案 0 :(得分:4)

对于第一次尝试,问题是因为address字段是按顺序尝试连接的代理列表,而不是同时连接的代理列表。

如何解释此列表取决于round_robin设置。

如果设置为 true ,则代理将连接到列表中的第一个,当连接断开时,它将尝试列表中的下一个,在每次重新连接时向下移动列表。

如果设置为 false ,它将连接到第一个并将其视为首选连接。当连接断开时,它将尝试重新连接,如果失败则会向下移动列表,但会定期尝试重新连接到列表中的拳头。

要真正解决您的问题,请尝试以下方法:

mosquitto.broker.A

connection sync-a
try_private false
address mosquitto.broker.sync:1883
notifications true
topic # out 2 "" A/
topic # in 2 "" B/

mosquitto.broker.B

connection sync-b
try_private false
address mosquitto.broker.sync:1883
notifications true
topic # out 2 "" B/
topic # in 2 "" A/

保持同步机原样。

这使用主题前缀来确保不形成循环。这也意味着您可以跟踪哪个代理正在同步机上执行什么操作,因为所有主题都以它们来自的机器为前缀。