zoukankan      html  css  js  c++  java
  • Centos7.2 MQTT的学习之Mosquitto搭建&集群搭建&使用

    下载安装包
    http://mosquitto.org/files/source/

    安装依赖
    yum install -y gcc gcc-c++ libstdc++-devel
    yum install -y openssl-devel
    yum install -y c-ares-devel
    yum install -y uuid-devel
    yum install -y libuuid-devel
    yum install -y wget
    yum install -y cmake
    yum install -y build-essential python quilt devscripts python-setuptools python3?
    yum install -y libssl-dev libc-ares-dev uuid-dev daemon openssl-devel

    安装mosquitto:
    tar zxvf mosquitto-1.4.tar.gz
    cd mosquitto-1.4
    make
    make install
    cd /etc/mosquitto/
    cp mosquitto.conf.example mosquitto.conf

    修改配置文件 mosquitto.conf
    1、修改用户(或增加用户mosquitto,adduser mosquitto)
    user mosquitto 修改为 user root

    2、修改端口号
    port 1883

    启动mosquitto服务:
    mosquitto -c /etc/mosquitto/mosquitto.conf

    重启Mosquitto
    在网上找了很多资料都没有提起怎样重启服务器,并且在官网上也没有相应命令提示。
    所以我们使用Liunx终止进程命令,强行退出。
    先kill掉,再重启:
    kill -9 21674

    调测问题:
    报错./mosquitto_sub: error while loading shared libraries: libmosquitto.so.1: cannot open shared object file: No such file or directory
    解决:执行以下命令:
    sudo ln -s /usr/local/lib/libmosquitto.so.1 /usr/lib/libmosquitto.so.1
    ldconfig

    调试步骤:
    1、先开启一个客户端,模拟broker
    mosquitto -c /etc/mosquitto/mosquitto.conf -v

    2、再开启一个客户端,模拟订阅
    mosquitto_sub -v -t topic01

    3、最后开启一个客户端,模拟发布
    mosquitto_pub -t topic01 -m mmmmmmmmsss

    4、订阅界面可以实时收到发布消息
    安装成功

    集群搭建:
    1、开启服务器桥连接
    进入安装目录
    cd mosquitto-1.4.9/
    打开config.mk文件
    vi config.mk
    找到WITH_BRIDGE:=yes 将签名的“#”号去掉开启桥连接模式。(默认是开启的,为了无误查看一下)


    2、配置Mosquitto.conf的桥连接属性
    进入etc目录,并且打开Mosquitto.conf文件
    cd /etc/mosquitto/
    vi mosquitto.conf
    找到Bridges节点,在下面加入如下代码:
    connection mytest
    address 172.30.60.11: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代表只有一次(可以查看第一篇博文对MQTT的详细介绍)
    sensor/ 本地前缀标识,可以随便命名
    myhouse/ 远程前缀标识,可以随便命名
    bridge_protocol_version mqttv311 桥连接协议版本MQTT3.11
    notifications 是否发布桥接的状态信息
    cleansession 桥接断开时,是否清除远程服务器中的消息
    start_type 桥接模式,目前有三种:automatic、lazy、once
    设置好之后保存退出。


    3、开启服务器
    第一步先确保从服务器先开启,第二步重新启动主服务器的Mosquitto服务。


    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台服务器分别是

    172.30.60.1

    172.30.60.11

    172.30.60.13

    其中1为主服务器,11与13为从服务器。

    所以在11与13上只需要正常安装Mosquitto服务即可,其他不需要做任何配置。

    重点还是在1的mosquitto.conf中配置。

    依然打开mosquitto.conf,找到Bridge节点,重新复习一下节点中每个配置项的含义

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

    笔者一开始错误的认为红色字体部分是配置第二台服务器使用的,但是笔者错了。每一个connection只能有一个IP地址,address红色的部分是留有多个ip的保存。(貌似是对前地址的一个备份,如果前地址服务器挂了可以立马接手备用服务器,笔者尚未证实)

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

    复制代码
    connection mytest
    address 172.30.60.11:1883
    topic room1/# both 2 sensor/ myhouse/

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

    bridge_protocol_version mqttv311
    notifications true
    cleansession true
    try_private true
    start_type automatic
    复制代码
    红色部分为新增加的服务器。重启Mosquitto服务器即可。

    3、测试订阅、发布

    测试理论与第一节类似:

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

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

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

    每一个你不满意的当下,都有一个你不曾努力的曾经!
  • 相关阅读:
    MO 中的imagelayer
    GDAL之OGR入门(转载)
    OGR体系结构
    C++与C# 以及指针
    如何用C#编程实现动态生成Word文档并填充数据?
    C++的类与C#的类[zt]
    arcmap vba 实现“卫星立体测图”高度字段值的计算,今天的一点小成就
    lib 和 dll from baidu
    ping and netstat
    Visual Basic6.0 中的类模块和标准模块
  • 原文地址:https://www.cnblogs.com/shiqiangqiang/p/8820484.html
Copyright © 2011-2022 走看看