天天看点

mosquitto配置桥接

单个mosquitto服务器端的流量是有限的,面对大流量的情况,我们可以使用桥接(bridge)的方式来搭建mosquitto集群。

选取任意一个mosquitto服务器作为bridge节点,在/etc/mosquitto目录下mosquitto.conf文件里,找到Bridges(大概756行),能阅读一下Bridges里面的内容最好,不喜欢阅读英文或者英文能力有限的同学,可以按照一下的配置,来搭建自己的集群。
connection bridge129	#connection是关键字, bridge129可以随便命名
address 192.168.19.129:1883	#address是关键字 url:port根据实际的配置
topic # both 2	#topic是关键字,#表示所有的主题, both对应的有in,out,both 2表示qos消息质量

connection bridge130
address 192.168.19.130:1883
topic # both 2
           

需要注意的是:每个服务器的1883端口一定要开放,否则连接出错!

桥接模式类似于主从模式,bridge相当于主节点,当bridge节点宕机,其他的所有节点也就失去了转发中心,称为独立节点,因此,使用桥接需要选择一个可靠的节点作为bridge。

以下是我搭建后的测试结果,128(bridge节点)订阅了topic129和topic130主题,129节点订阅了topic129主题,向topic130发送消息,130节点订阅了topic130主题,向topic129发送消息。可以看到,各个节点都收到了想收到的消息。

mosquitto配置桥接
mosquitto配置桥接
mosquitto配置桥接

以上的配置是没有使用密码的,接下来的配置是使用密码的。

1.在mosquitto.conf中,关闭匿名

2.指定密码文件

password_file /etc/mosquitto/pwfile.conf
           

3.拷贝并改名pwfile.example

cp pwfile.example pwfile.conf
           

4.添加账号密码

mosquitto_passwd -b /etc/mosquitto/pwfile.conf admin admin
           

5.bridge中修改

#129节点配置了账号密码,bridge中有修改
connection bridge129
address 192.168.19.129:1883
topic # both 2
remote_username admin	#账号
remote_password admin	#密码

#130节点没有配置账号密码,和之前的配置一样
connection bridge130
address 192.168.19.130:1883
topic # both 2
           
下图是我在学习mqtt桥接时看到的,大意:brokers中只有一个需要充当bridge的角色,例如:当你把broker1配置成bridge,然后broker2订阅了broker1的消息,并且在broker2上发布消息,同样的,在broker1中订阅了broker2的消息并且在broker1上发布消息。
mosquitto配置桥接