下载安装包
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”这条信息。如果只有一台服务器收到说明配置有问题。

Centos7.2 MQTT的学习之Mosquitto搭建&集群搭建&使用的更多相关文章

  1. ZooKeeper学习笔记一:集群搭建

    作者:Grey 原文地址:ZooKeeper学习笔记一:集群搭建 说明 单机版的zk安装和运行参考:https://zookeeper.apache.org/doc/r3.6.3/zookeeperS ...

  2. 【Spark-core学习之三】 Spark集群搭建 & spark-shell & Master HA

    环境 虚拟机:VMware 10 Linux版本:CentOS-6.5-x86_64 客户端:Xshell4 FTP:Xftp4 jdk1.8 scala-2.10.4(依赖jdk1.8) spark ...

  3. redis 学习笔记(6)-cluster集群搭建

    上次写redis的学习笔记还是2014年,一转眼已经快2年过去了,在段时间里,redis最大的变化之一就是cluster功能的正式发布,以前要搞redis集群,得借助一致性hash来自己搞shardi ...

  4. spark学习5(hbase集群搭建)

    第一步:Hbase安装 hadoop,zookeeper前面都安装好了 将hbase-1.1.3-bin.tar.gz上传到/usr/HBase目录下 [root@spark1 HBase]# chm ...

  5. spark学习1(hadoop集群搭建)

    把原先搭建的集群环境给删除了,自己重新搭建了一次,将笔记整理在这里,方便自己以后查看 第一步:安装主节点spark1 第一个节点:centos虚拟机安装,全名spark1,用户名hadoop,密码12 ...

  6. redis学习五,redis集群搭建及添加主从节点

    redis集群 java架构师项目实战,高并发集群分布式,大数据高可用,视频教程 在redis3.0之前,出现了sentinel工具来监控各个Master的状态(可以看上一篇博客).如果Master异 ...

  7. Etcd学习(二)集群搭建Clustering

    1.单个etcd节点(测试开发用) 之前我一直开发测试一直是用的一个Etcd节点,然后启动命令一直都是直接打一个etcd(我已经将etcd安装目录的bin目录加入到PATH环 境变量中),然后启动信息 ...

  8. CentOS7.X安装Redis-4.0.8以及Redis集群搭建

    安装redis 安装前的准备 yum install \ vim \ wget \ make \ gcc \ gcc-c++ \ automake \ autoconf \ -y \ 下载解压并安装 ...

  9. 初试 Centos7 上 Ceph 存储集群搭建

    转载自:https://cloud.tencent.com/developer/article/1010539 1.Ceph 介绍 Ceph 是一个开源的分布式存储系统,包括对象存储.块设备.文件系统 ...

随机推荐

  1. spring的finishBeanFactoryInitialization方法分析

    spring源码版本5.0.5 概述 该方法会实例化所有剩余的非懒加载单例 bean.除了一些内部的 bean.实现了 BeanFactoryPostProcessor 接口的 bean.实现了 Be ...

  2. 适配器模式(Adapter)---结构型

    1 基础知识 定义:将一个类的接口(被适配者)转换成客户期望的另一个接口(目标).特征:使原本接口不兼容的类可以一起工作. 本质:转换匹配,复用功能.把不兼容的接口转换为客户端期望的样子从而实现功能的 ...

  3. nginx大概工作机制

    1.master和worker nginx启动后,会有2种进程:worker和master;worker可能有多个:

  4. CI环境搭建下-Jenkis与git结合

     设置权限:  也可以通过公私钥的方式,添加权限,公私钥填写在gitblit用户中心:  Jenkins中填写私钥: 添加: 添加后如果仍然报错,是因为windows下要使用http的地址. 在此,可 ...

  5. 虚拟视点demo

    2019年7月16日15:55:11 感觉虚拟视点也是视觉slam里头一个重要的需求和应该实现的功能,但是好像 没看到什么资料. 百度的全景地图,或者有些公司网站上的3d装修效果图,可以用鼠标拖动查看 ...

  6. 初次使用自己写的testbench 验证了简单的NOT门。

    先是简单的非门模型: module notgate(a,b); input a; output b; assign b=~a; endmodule 下面是自己写的简陋的testbench: `time ...

  7. [转载]作为理工科学生,我们为什么要练就好的文笔?我们需要发blog来记录学习历程?

    文/JoeyChen 工程师该怎样才能突破自己的能力瓶颈?写 blog! 工程师该怎样精进自己在职涯上所需要的能力?写 blog! 工程师该怎样才能保持学习与成长的动能?写 blog! 工程师该怎样才 ...

  8. 宝塔apache设置泛目录的反向代理/莲花泛目录

    反向解析目标站-泛目录站一般用ip或者ip:端口来搭建,这样可以节省一个域名,当然也可以用域名,看个人爱好.主站和泛站可以同一个服务器和可以不同服务器,看个人实际情况.先来看宝塔的反向代理的步骤:点击 ...

  9. Apache反向代理解析二级目录/泛目录教程/apache反向代理/apache泛目录反向代理

    同nginx一样,apache解析目录不需要安装任何东西,在配置文件里加入解析规则即可.解析规则: <IfModule mod_proxy.c> ProxyPreserveHost On ...

  10. matlab 计算灰度图像的一阶矩、二阶矩、三阶矩

    ​   一阶矩,定义了每个颜色分量的平均强度 ​  二阶矩,反映待测区域颜色方差,即不均匀性 ​  三阶矩,定义了颜色分量的偏斜度,即颜色的不对称性 close all;clear all;clc; ...