
EMQX 是一款全球下载量超千万的大规模分布式物联网 MQTT 服务器,自 2013 年在 GitHub 发布开源版本以来,获得了来自 50 多个国家和地区的 20000 余家企业用户的广泛认可,累计连接物联网关键设备超过 1 亿台。
不久前,EMQX 发布了 5.0 版本,该版本在消息传输的可靠性、产品体验的易用性等方面也进行了大幅优化升级,是 MQTT 领域的一个里程碑式的成果。在发布前性能测试中,EMQX 团队通过一个 23 节点的集群达成了 1 亿 MQTT 连接+每秒 100 万消息吞吐,这使得 EMQX 5.0 成为目前为止全球最具扩展性的 MQTT 服务器。
EMQX 目前支持在 Linux、Windows、macOS、Raspbian 等系统中运行,也支持使用 Docker、Kubernetes、Terraform 部署。本文将以 EMQX 开源版 5.0.4 为例,介绍如何在 Bianbu 系统中搭建一个单节点的 MQTT 服务器,并对搭建过程中容易遇到的常见问题进行逐一演示。
安装 EMQX
本文使用的演示环境为:K1 单板电脑
emqx没有提供riscv版本的安装包,我们可以按照如下方法安装:
1、安装依赖
sudo apt install libssl-dev
sudo apt install libcurl4-openssl-dev
sudo apt-get install autoconf
移植 emqx 编译所需的 erlang/OTP
$ git clone https://github.com/erlang/otp.git
$ git checkout OTP-26.2.4
$ ./configure
$ make –j$(nproc)
$ make install
移植 emqx
$ git clone https://github.com/emqx/emqx.git
$ git checkout v5.6.0
$ make –j$(nproc)
构建完成后,输入以下命令启动 emqx shell
$ _build/emqx/rel/emqx/bin/emqx console
EMQX 运行情况检查
端口监听情况
使用命令 netstat -tunlp
检查 EMQX 端口运行情况,默认情况下 EMQX 会启动如下端口,若有异常请检查端口占用情况。
该命令也可在 EMQX 安装前执行,确保相关端口未被占用。


访问 Dashboard
EMQX 提供了 Dashboard,以方便用户通过 Web 页面管理、监控 EMQX 并配置所需的功能。EMQX 成功启动之后可以通过浏览器打开 http://localhost:18083/
(将 localhost 替换为实际 IP 地址)访问 Dashboard。
访问 Dashboard 之前需要确保服务器的防火墙打开了 18083 端口
Dashboard 的默认用户名为 admin
,密码为 public
,第一次登录成功后会提示修改密码。密码修改完成后,我们也可以在 Settings 页面将 Dahshboard 的语言改为 简体中文
。

MQTT 连接测试
接下来我们点击左侧菜单栏里面的 WebSocket 客户端
,该客户端可测试 MQTT over Websocket,验证 MQTT 服务器是否已部署成功。
需要确保防火墙已打开 8083 端口访问权限
连接至 MQTT 服务器
如下图,该工具已根据访问地址自动填充了主机名,我们直接点击连接
按钮。

如下图,提示连接成功。

订阅主题
如下图,订阅一个 testtopic
主题。

消息发布
如下图,我们向 testtopic
发布了两条消息,且接收成功,表明 MQTT 服务器已部署成功且在正常运行。

至此,我们已完成了 MQTT 服务器的搭建及连接测试,但是该服务器仅仅只能用于测试,若要部署生产环境下可用的 MQTT 服务器,我们还需要进行最重要的认证配置。
配置认证
默认情况下,EMQX 将允许任何客户端连接,直到用户创建了认证器。认证器将根据客户端提供的认证信息对其进行身份验证,只有认证通过,客户端才能成功连接。接下来我们将演示如何使用 EMQX 内置的数据库进行用户名、密码认证。
EMQX 也提供了与多种后端数据库的认证集成支持,包括 MySQL、PostgreSQL、MongoDB 和 Redis。
查看文档了解更多认证方式:https://www.emqx.io/docs/zh/v5.0/security/authn/authn.html
创建认证
EMQX 从 5.0 开始支持在 Dashbaord 配置认证,以方便用户能更加方便、快速的创建安全的 MQTT 服务。我们点击 访问控制
菜单下的 认证
进入认证配置页面,然后点击最右侧的 创建
按钮。

选择 Password-Based
选项,然后点击 下一步
。

数据库选择 Built-in Database
,然后点击 下一步
。

接下来选择账户类型、加密方式、加盐方式,并点击 创建
。
这里我们使用默认配置,读者可根据业务实际需求进行选择。

添加用户
认证创建成功后如下图。接下来我们点击 用户管理
添加用户。

进入用户管理页面后,我们点击最右侧的 添加
按钮,并在弹出框里设置用户名与密码,之后点击 保存
。

如下图表示创建成功。

测试认证
接下来我们使用 Dashboard 提供的 Websocket 工具来测试认证是否已配置成功。在连接配置里输入刚才创建的用户名与密码,然后点击连接
。

将会看到右侧弹窗提示已连接。

接下来我们使用一个未创建的用户名 test1
,点击连接将会看到如下连接失败信息。

至此,我们已完成了 EMQX 的认证配置,搭建了一台可用于生产环境的单节点 MQTT 服务器。若要保证 MQTT 服务器的高可用,还需要创建多个节点的 EMQX 集群,创建集群的具体细节本文不再详述,读者可参考 EMQX 集群文档 进行配置。