zoukankan      html  css  js  c++  java
  • Mosquito集群模式

    参考链接:

    http://blog.csdn.net/z729685731/article/details/70142182

    http://blog.csdn.net/yuhaiyang457288/article/details/73927889

    集群效果:无论在哪台服务器中订阅的信息,无论在哪台服务器上发布了信息,订阅者都可以收到发布的信息。

    集群部署:桥接模式

    • 桥接方式的实现需要修改config.mk与mosquitto.conf文件。
    • 每台服务器都开启了“桥接”模式,更改任何一台服务器上的Mosquitto.conf文件,其他服务器的Mosquitto.conf文件随之变化。
    • 新服务器的加入或删除只需要修改主服务器的Mosquitto.conf即可。

    一、双节点模式

    1、开启服务器桥接模式(默认开启)

    进入安装目录
    cd mosquitto-1.4.9/
    vi config.mk
    找到WITH_BRIDGE:=yes 去掉#注释。

    2、配置Mosquitto.conf的桥连接属性

    进入etc目录,并且打开Mosquitto.conf文件

    cd /etc/mosquitto/
    vi mosquitto.conf

    找到Bridges节点,在下面加入如下代码:


    connection mytest
    address 10.19.22.53:1883
    topic room1/# both 2 sensor/ myhouse/
    bridge_protocol_version mqttv311
    notifications true
    cleansession true
    try_private true
    start_type automatic

    ---------------------------------------------------------------------------------

    connection 连接名称,可以随便取

    address 连接的另外服务器地址和端口号,如果有多台服务器,可以写多个address

    topic 主题名称,“#”为通配符,表示发布端可以在room1/后面接任何文字

    both 服务质量,2代表只有一次

    sensor/ 本地前缀标识,可以随便命名

    myhouse/ 远程前缀标识,可以随便命名

    bridge_protocol_version mqttv311 桥连接协议版本MQTT3.11

    notifications 是否发布桥接的状态信息

    cleansession 桥接断开时,是否清除远程服务器中的消息

    start_type 桥接模式,目前有三种:automatic、lazy、once

    设置好之后保存退出。

    3、开启服务器

    第一步先确保从服务器先开启,第二步重新启动主服务器的Mosquitto服务。如果配置无误主服务器在开启的时候,会自动连接所有从服务器

    Mytest是在Mosquitto.conf配置中设定的我的连接名称,后面是从服务器的地址与端口号。主服务器与从服务器已经桥接完成。

    4、验证发布/订阅

    集群的特点在任何服务器上都可以订阅与发布,并且订阅者可以收到在任何服务器中发送去信息。

    测试场景:在从服务器中订阅一条信息,在主服务器中发布一条信息,从服务器的订阅者可以收到从主服务器中发布的消息。

    (1)在从服务器中键入一下命令:

    mosquitto_sub -t myhouse/room1/#
    注意:myhouse/ 是编写Mosquitto.conf中topic的远程前缀,room1/#是topic中的订阅主题


    (2)在主服务器中键入一下命令:
    mosquitto_pub -t sensor/room1/temperature -m '26.3'
    注意:sensor/ 是编写Mosquitto.conf中topic的本地前缀,room1/ 是topic中的订阅主题,temperature 相当与“#”通配符 

    如果Mosquitto.conf配置无误,并且本地前缀与远程前缀拼写正确,在从服务器订阅主题,在主服务器发布消息,从服务器订阅者收到信息。

    二、多节点集群

    配置3台服务集群与3+n台理论一样,所以这里配置3台服务集群作为演示。

    1、安装服务器

    首先在上述2台服务器基础上,再增加一台服务器,配置步骤请参考第二篇博文。

    2、配置服务器

    假设有3台服务器分别是

    192.168.0.53
    192.168.0.88
    192.168.0.89
    其中53为主服务器,88与89为从服务器。
    所以在88与89上只需要正常安装Mosquitto服务即可,其他不需要做任何配置。
    重点还是在53的mosquitto.conf中配置。

    依然打开mosquitto.conf,找到Bridge节点,每个配置项的含义

    #connection <name>
    #address <host>[:<port>] [<host>[:<port>]]
    #topic <topic> [[[out | in | both] qos-level] local-prefix remote-prefix]

    如果想增加一台服务器只需要重新添加connection、address、topic节点即可。因此Bridge节点变成下面形式:

    connection mytest
    address 192.168.0.88:1883
    topic room1/# both 2 sensor/ myhouse/

    connection mytest2
    address 192.168.0.89:1883
    topic room1/# both 2 sensor/ myhouse/

    bridge_protocol_version mqttv311
    notifications true
    cleansession true
    try_private true
    start_type automatic

    红色部分为新增加的服务器。重启Mosquitto服务器即可。

    3、测试订阅、发布

    分别在88与89服务器中输入mosquitto_sub -t myhouse/room1/# 订阅信息

    在53服务器中输入mosquitto_pub -t sensor/room1/temperature -m '26.3' 发布消息

    同事88与89都会收到“26.3”这条信息。如果只有一台服务器收到说明配置有问题。

  • 相关阅读:
    前后端分离方式渲染数据(2018/11/12)
    vue.js 2.0 --- 安装node环境,webpack和脚手架(入门篇)
    css 布局,过渡
    java.lang.InstantiationException: com.lch.commder.entity.Car 已解决
    [Err] 1146
    js简单图片切换
    HTML5布局篇
    IntelliJ IDEA(快捷键)
    hibernate检索策略
    hibernate(一对多关系)
  • 原文地址:https://www.cnblogs.com/lexiaofei/p/8297775.html
Copyright © 2011-2022 走看看