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管理控制台,我们能够对集群进行有效的管理和监控,确保物联网设备之间的通信流畅、高效。
如何使用rocketmq搭建一台mqtt服务器
搭建MQTT服务器,利用RocketMQ技术实现过程如下:
首先安装MQTT相关组件,包括mosquitto与mosquitto-client。确保终端能够正常运行。
启动一个终端,执行指令开启MQTT服务,注意监听端口通常为1883,这是关键点。
在第二个终端执行指令订阅节点,这里以“Hello”作为演示节点,可以自定义。
第三个终端在“Hello”节点发布消息,观察第二个终端是否接收到消息,这验证了MQTT局域网功能正常。
配置MQTT服务,关闭认证以简化流程,但需注意潜在安全风险,修改相关文件添加配置。
允许监听所有端口,否则后续的frp操作可能无法正常运行,同样修改对应文件。
重启MQTT服务,确保更改生效。
使用frp创建内网穿透隧道,将MQTT端口1883共享到公网,参考相关教程。
将frp与MQTT服务设置为开机自启动,便于后续使用。
获取服务器的公网IP与端口,这是连接公网的关键信息。
最后,测试MQTT服务与公网连接,使用MQTT测试软件连接到公网IP与端口,实现互相通信。