搭建mqtt服务器?MQTT服务器
如何搭建自己的MQTT服务器
搭建个人MQTT服务器,首选轻量级开源项目mosquitto。首先,在Linux系统上安装,可选择使用虚拟机或真机环境。使用命令行安装所需的依赖库:
sudo apt-get install libssl-dev
sudo apt-get install uuid-dev
sudo apt-get install cmake
其次,下载并解压mosquitto最新版本1.5.1。操作步骤如下:
tar xzvf mosquitto-1.5.1.tar.gz
进入解压后的目录,编译并安装:
cd mosquitto-1.5.1/
make
make install
启动mosquitto服务,命令如下:
./mosquitto-v
系统会自动以默认参数启动MQTT服务器,监听端口为1883。如需自定义配置文件启动服务,使用参数-c,命令如下:
./mosquitto-c mosquitto.conf
至此,MQTT服务器搭建完成。使用MQTT客户端进行测试,发布主题“home/garden/fountain/2”,内容为“hello world”。客户端连接服务器后,会记录相关日志信息,包含新连接建立、客户端连接成功、未指定will消息、发送CONNACK、PINGREQ与PONG等交互过程。客户端订阅同一主题后,可接收到发布消息。使用Wireshark抓包工具,验证MQTT报文传递过程,直观展示消息发布与订阅的完整流程。
我的物联网项目(三十六) 自己搭建MQTT服务器
轻量、发布订阅模式的物联网消息协议MQTT在物联网平台中扮演着重要角色。在公司发展的初期,为了加快步伐并利用现有成熟组件,我们选择了阿里云作为服务器和服务提供商,包括MQTT服务。通过阿里云提供的可视化管理平台,我们获得了便捷的接入体验。然而,随着物联网设备的增多,阿里云的MQTT服务在垂直扩展上的费用问题日益凸显。因此,基于成本控制的考量,我们决定自建MQTT集群,利用廉价服务器进行水平扩展以应对日益增长的设备需求。下图展示了公司使用阿里云MQTT服务费用的增长趋势。
鉴于此,我们开始转向EMQ这款百万级分布式开源MQTT消息服务器,它是物联网领域一个广受欢迎的选择。EMQ的官网提供丰富的资料与介绍,我们决定尝试构建一个简单的集群进行测试。以下为我们的准备与实施过程。
软件与服务器准备
我们选择了NGINX与EMQ作为主要组件。NGINX版本为1.11.0,EMQ版本为emqx-centos6.8-v3.0-beta.4.x86_64.rpm。服务器配置为三台:192.168.1.1为NGINX负载均衡服务器,192.168.1.2与192.168.1.3分别作为EMQ服务器1与服务器2。
安装EMQ
在每台服务器上安装EMQ并确保Erlang/OTP R19与lksctp-tools库的依赖关系得到满足。配置文件目录包括EMQ配置文件、插件配置文件、日志文件与数据文件目录。此外,我们需在emqx.conf文件中修改四个关键配置项:节点名称、集群方式(采用基于静态节点列表的自动集群)、集群节点配置与用户名密码认证。EMQ提供了多种认证插件,我们采用简单账号密码认证方式,并在emqx_auth_username.conf文件中进行相应配置。最后,通过命令启动EMQ集群。
安装NGINX
在NGINX负载均衡服务器上安装NGINX,并确保在编译过程中开启与TCP转发相关的模块。接着,配置NGINX负载均衡功能,使得所有EMQ节点共享同一入口,确保即使部分EMQ节点不可用,NGINX也能继续提供服务。
EMQ管理控制台
通过以下地址访问EMQ管理控制台:192.168.1.1:18083(或通过域名:test.abc.com:18083),默认用户:admin,密码:public。这提供了对EMQ集群的集中管理与监控。
EMQ部署架构
最终,我们构建了一个基于NGINX负载均衡与EMQ集群的物联网消息传输架构。NGINX作为入口点,负责转发消息至EMQ集群中的任意一个节点,确保服务的高可用性与负载均衡。通过EMQ管理控制台,我们能够对集群进行有效的管理和监控,确保物联网设备之间的通信流畅、高效。
如何搭建自己的MQTT低成本服务器(Ubuntu)
搭建自己的低成本MQTT服务器(Ubuntu)的关键步骤如下:
首先,确保安装Mosquitto。在Ubuntu上,执行以下操作:
安装mosquitto服务:使用`sudo apt-get install mosquitto`
安装mosquitto-client:`sudo apt-get install mosquitto-clients`
检查服务是否正常:在三个终端中分别运行命令以测试连接和通信,如监听1883端口,订阅和发布消息。
接着,配置MQTT服务以提高安全性并允许公网访问:
关闭认证:编辑mosquitto配置文件(通常是`/etc/mosquitto/mosquitto.conf`),去掉认证相关设置,尽管这可能带来潜在风险。
允许所有端口访问:在配置文件中添加`listener 1883`,以确保frp能正常工作。
重启服务:关闭所有终端,然后通过`sudo systemctl restart mosquitto`重启mosquitto。
为使公网能够访问,利用frp(Forwarded Rules Proxy)进行内网穿透:
创建frp隧道,参考相关教程,记得将frp监听端口改为1883。
设置frp和mosquitto为开机自启动,参考文章《Ubuntu设置脚本开机自启动》进行配置。
获取服务器的公网IP和端口,用于测试。
最后,使用MQTT测试软件连接到你的公网IP和端口,验证服务器之间的通信是否畅通无阻。