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 为例,介绍如何在 Ubuntu 系统中搭建一个单节点的 MQTT 服务器,并对搭建过程中容易遇到的常见问题进行逐一演示。
本文使用的演示环境为:Jetson Orin nx,Ubuntu 20.04 ARM64位
APT 是 Ubuntu 自带的包管理器,建议优先使用 APT 安装 EMQX。同时,EMQX 也提供了官方的 APT 源及一键式配置脚本,方便用户快速安装 EMQX。
安装地址
1
Download the EMQX repository
curl -s https://assets.emqx.com/scripts/install-emqx-deb.sh | sudo bash
2
Install EMQX
sudo apt-get install emqx
3
Run EMQX
sudo systemctl start emqx
若启动成功,将会提示:EMQX 5.0.4 is started successfully!
。若命令长时间无响应,请通过 EMQX 运行情况检查https://www.emqx.com/zh/blog/how-to-install-emqx-mqtt-broker-on-ubuntu#emqx-%E8%BF%90%E8%A1%8C%E6%83%85%E5%86%B5%E6%A3%80%E6%9F%A5 章节说明查看相关端口是否被占用。
EMQX 管理命令
EMQX 提供了命令行工具,方便用户对 EMQX 进行启动、关闭、进入控制台等操作。如下图,在终端执行 sudo emqx
查看 EMQX 相关管理命令。
安装包安装
当服务器无公网接入或需要快速部署、验证 EMQX 功能时可使用 tag.gz
包安装,该安装方式无任何第三方依赖且管理方便。
下载安装包
访问 EMQX 下载地址 下载 EMQX。选中 Package
标签,安装包类型选择 Ubuntu20.04 arm64/tag.gz
,然后点击右边的复制图标(这将会复制整行 wget 下载命令)。
EMQX 提供了 Dashboard,以方便用户通过 Web 页面管理、监控 EMQX 并配置所需的功能。EMQX 成功启动之后可以通过浏览器打开 http://localhost:18083/
(将 localhost 替换为实际 IP 地址)访问 Dashboard。
访问 Dashboard 之前需要确保服务器的防火墙打开了 18083 端口
Dashboard 的默认用户名为 admin
,密码为 public
,第一次登录成功后会提示修改密码。密码修改完成后,我们也可以在 Settings 页面将 Dahshboard 的语言改为 简体中文
。
接下来我们点击左侧菜单栏里面的 WebSocket 客户端
,该客户端可测试 MQTT over Websocket,验证 MQTT 服务器是否已部署成功。
需要确保防火墙已打开 8083 端口访问权限
如下图,该工具已根据访问地址自动填充了主机名,我们直接点击连接
按钮。
如下图,订阅一个 testtopic
主题
如下图,我们向 testtopic
发布了两条消息,且接收成功,表明 MQTT 服务器已部署成功且在正常运行。
至此,我们已完成了 MQTT 服务器的搭建及连接测试,但是该服务器仅仅只能用于测试,若要部署生产环境下可用的 MQTT 服务器,我们还需要进行最重要的认证配置。
默认情况下,EMQX 将允许任何客户端连接,直到用户创建了认证器。认证器将根据客户端提供的认证信息对其进行身份验证,只有认证通过,客户端才能成功连接。接下来我们将演示如何使用 EMQX 内置的数据库进行用户名、密码认证。
EMQX 也提供了与多种后端数据库的认证集成支持,包括 MySQL、PostgreSQL、MongoDB 和 Redis。
查看文档了解更多认证方式:介绍 | EMQX 5.0 文档
EMQX 从 5.0 开始支持在 Dashbaord 配置认证,以方便用户能更加方便、快速的创建安全的 MQTT 服务。我们点击 访问控制
菜单下的 认证
进入认证配置页面,然后点击最右侧的 创建
按钮。选择 Password-Based
选项,然后点击 下一步
。 数据库选择 Built-in Database
,然后点击 下一步
。
接下来选择账户类型、加密方式、加盐方式,并点击 创建
。
这里我们使用默认配置,读者可根据业务实际需求进行选择。
认证创建成功后如下图。接下来我们点击 用户管理
添加用户。如下图:
进入用户管理页面后,我们点击最右侧的 添加
按钮,并在弹出框里设置用户名与密码,之后点击 保存
。
如看到新建用户test表示创建成功。
接下来我们使用 Dashboard 提供的 Websocket 工具来测试认证是否已配置成功。在连接配置里输入刚才创建的用户名与密码,然后点击连接
。
接下来我们使用一个未创建的用户名 test1
,点击连接将会看到如下连接失败信息。
至此,我们已完成了 EMQX 的认证配置,搭建了一台可用于生产环境的单节点 MQTT 服务器。若要保证 MQTT 服务器的高可用,还需要创建多个节点的 EMQX 集群,创建集群的具体细节本文不再详述,读者可参考 EMQX 集群文档 进行配置。
根据以读文章已注明原文链接:如何在 Ubuntu 上安装 EMQX MQTT 服务器 | EMQ