使用EMQX 安装、部署MQTT 服务器详解

关于Linux下使用EMQX 安装、部署MQTT 服务器详解本文从如下几个方面进行详细说明

1. EMQX整体说明

1.1. EMQX产品概览

EMQX (Erlang/Enterprise/Elastic MQTT Broker) 是基于 Erlang/OTP 平台开发的开源物联网 MQTT 消息服务器。

Erlang/OTP是出色的软实时 (Soft-Realtime)、低延时 (Low-Latency)、分布式 (Distributed)的语言平台。

MQTT 是轻量的 (Lightweight)、发布订阅模式 (PubSub) 的物联网消息协议。

EMQX 设计目标是实现高可靠,并支持承载海量物联网终端的 MQTT 连接,支持在海量物联网设备间低延时消息路由:


1.2. EMQX版本选择

EMQX 提供开源版和企业版下载安装,也提供了全托管的 MQTT 云服务 EMQX Cloud,您可以选择合适您的部署方式,快速开始使用。

1.2.1. EMQX 开源版

大规模可弹性伸缩的云原生分布式物联网 MQTT 消息服务器,高效可靠连接海量物联网设备,高性能实时处理消息与事件流数据,助力构建关键业务的物联网平台与应用。






1.2.2. EMQX Cloud

通过可靠、实时的物联网数据移动、处理和集成,连接您的海量物联网设备。加快您的物联网应用开发,免除基础设施管理维护负担。






1.2.3. EMQX 企业版

「随处运行,无限连接,任意集成」 云原生分布式物联网接入平台,一体化的分布式 MQTT 消息服务和强大的 IoT 规则引擎,为高可靠、高性能的物联网实时数据移动、处理和集成提供动力,助力企业快速构建关键业务的 IoT 平台与应用。






2. 安装EQMX(MQTT服务器)

2.1. 通过源码编译安装

2.1.1. 获取源码
$ git clone https://github.com/emqx/emqx.git
2.1.2. 切换到最近的 Tag
$ cd emqx
$ git checkout $(git describe --abbrev=0 --tags)
2.1.3. 编译
make
2.1.4. 启动 EMQX Broker
$ cd _build/emqx/rel/emqx

$ ./bin/emqx start
EMQX Broker 4.3-beta.1 is started successfully!

$ ./bin/emqx_ctl status
Node 'emqx@127.0.0.1' is started
emqx 4.3-beta.1 is running

2.2. 通过 .deb 包安装

2.2.1. 下载 EMQX 版本的二进制包

访问 Github (https://github.com/emqx/emqx/releases) 下载EMQX 版本的二进制包

emqtt_benchmark下载 emq mqtt服务器_emqtt_benchmark下载

emqtt_benchmark下载 emq mqtt服务器_EMQX_02

2.2.2. 安装 EMQX Broker

安装 EMQX Broker,将下面的路径更改为您下载 EMQX 软件包的路径。

sudo apt install ./emqx-4.4.3-otp24.1.5-3-ubuntu20.04-amd64.deb

或者

./emqx-4.4.3-otp24.1.5-3-ubuntu20.04-amd64.deb
2.2.3. 启动 EMQX Broker
2.2.3.1. 直接启动(后台启动 EMQX)
$ emqx start
emqx 4.0.0 is started successfully!
$ emqx_ctl status
Node 'emqx@127.0.0.1' is started
emqx v4.0.0 is running
2.2.3.2. systemctl 启动
$ sudo systemctl start emqx
2.2.3.3. service 启动
$ sudo service emqx start
2.2.4. 停止 EMQX Broker
$ emqx stop
ok
2.2.5. 卸载 EMQX Broker
sudo apt remove --purge emqx

2.3. 通过docker自动安装

2.3.1. 获取
$ docker pull emqx/emqx:v4.0.0  #通过 Docker Hub获取
2.3.2. 启动 docker 容器
#启动 docker 容器,通过 Docker 运行
$ docker run -d --name emqx -p 1883:1883 -p 8081:8081 -p 8083:8083 -p 8883:8883 -p 8084:8084 -p 18083:18083 emqx/emqx:v4.0.0

若尚未安装docker,请通过如下操作进行docker安装:

sudo su
apt-get update
curl -sSL https://get.docker.com | sh  # 安装docker
2.3.3. EMQ的启动和结束

因为我们是用docker下载的,所以需要用docker的一些命令启动和停止EMQ

docker ps -a #查看所有容器
docker start <CONTAINER ID>
docker stop <CONTAINER ID>
docker restart <CONTAINER ID>

emqtt_benchmark下载 emq mqtt服务器_EMQX_03

2.4. 通过docker手工安装

wget -O emqx-docker.zip https://www.emqx.com/en/downloads/broker/v4.0.0/emqx-docker-v4.0.0-alpine3.10-arm32v7.zip #通过 emqx.io下载 Docker 镜像,并手动加载,这边要注意自己的实际情况
unzip emqx-docker.zip
docker load < emqx-docker-v4.0.0-alpine3.10-arm32v7
#启动 docker 容器,通过 Docker 运行
$ docker run -d --name emqx -p 1883:1883 -p 8081:8081 -p 8083:8083 -p 8883:8883 -p 8084:8084 -p 18083:18083 emqx/emqx:v4.0.0
2.4.1. EMQ的启动和结束

详见 “通过docker自动安装” 章节中的描述。

3. EMQX 常用命令

EMQX 提供了 emqx 命令行工具,方便用户对 EMQX 进行启动、关闭、进入控制台等操作。


  • 后台启动 EMQX Broker;

  • 关闭 EMQX Broker;

  • 重启 EMQX Broker;

  • 使用控制台启动 EMQX Broker;

  • 使用控制台启动 EMQX Broker,与 emqx console 不同,emqx foreground 不支持输入 Erlang 命令;

  • Ping EMQX Broker。

  • 查看 EMQX 的状态。

EMQX 正常启动:

$ emqx_ctl status
Node 'emqx@127.0.0.1' is started
emqx 4.0.0 is running

EMQX 未能正常启动:

$ emqx_ctl status
Node 'emqx@127.0.0.1' not responding to pings。

你可以查看 logs 下的日志文件并确认是否属于 常见错误

以上命令为用户常用命令,此外 emqx 命令还有一些其他选项为方便开发者使用,普通用户无需关心

4. 登录EMQX(MQTT服务器)

打开浏览器,输入你的ip:18083,如: http://localhost:18083 或者 http://127.0.0.1:18083

网 址:http://127.0.0.1:18083
用户名:admin
密 码:public

4.1. 设置中英文

emqtt_benchmark下载 emq mqtt服务器_emqtt_benchmark下载_04

4.2. 查看订阅情况

5. 通过 mqttbox 工具,进行MQTT消息的订阅、发布测试

前提:已启动 MQTT 服务器(EMQX)

5.1. 下载mqttbox

下载地址:http://workswithweb.com/mqttbox.html

官网打不开的话
链接:https://pan.baidu.com/s/1cKPgbV7OeQisNyNbm-GZYw
提取码:izaw

5.2. 创建 MQTT 客户端

点击Create MQTT Client 按钮来创建一个 MQTT 客户端;

emqtt_benchmark下载 emq mqtt服务器_MQTT_05

接下来对 MQTT 客户端进行配置,主要是配置好协议端口、连接用户名密码和 QoS 即可;

emqtt_benchmark下载 emq mqtt服务器_emqtt_benchmark下载_06





5.3. 配置MQTT订阅者

再配置一个订阅者,订阅者订阅 testTopicA 这个主题,我们会向这个主题发送消息;

emqtt_benchmark下载 emq mqtt服务器_服务器_07

6. 通过MQTTX工具,进行MQTT消息的订阅、发布测试

MQTTX是一款带图形界面的客户端模拟工具,其使用方式与mqttbox类似。

emqtt_benchmark下载 emq mqtt服务器_服务器_08

参考:
参考: https://www.emqx.io/docs/zh/v4.3/
参考:https://www.emqx.io/docs/zh/v4.3/getting-started/start.html#%E6%9F%A5%E7%9C%8B-emqx-%E7%9A%84%E7%8A%B6%E6%80%81