EMQ X Broker

emq_logo

EMQ X Broker 是 EMQ 系列产品的开源物联网 MQTT 消息件(MQTT Broker),基于高并发的 Erlang/OTP 语言开发,支持百万级连接和分布式集群架构,支持多平台使用。我们将消息发送到服务器时,MQTT Broker 帮助我们对消息进行鉴权、过滤、存储等操作,并能根据数据反馈相关消息给终端设备。


![MQTT Broker 图](MQTT(三)/MQTT Broker 图.png)


Ubuntu 下安装演示

安装过程完全参考官方文档,为保证安装成功请查看最新的 官方文档 进行安装,这里只做演示,建议 [跳过安装教程](#EMQ X Dashboard) 。

演示环境如下

WSL Ubuntu 20.04.2 LTS


安装依赖包

1
2
3
4
5
6
sudo apt update && sudo apt install -y \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common

由于我安装过了,这里提示已是最新版本

u_emqx_install1


添加 EMQ GPG 秘钥

1
curl -fsSL https://repos.emqx.io/gpg.pub | sudo apt-key add -

u_emqx_install2

验证秘钥,与官方一致即可

1
sudo apt-key fingerprint 3E640D53
1
2
3
4
pub   rsa2048 2019-04-10 [SC]
FC84 1BA6 3775 5CA8 487B 1E3C C0B4 0946 3E64 0D53
uid [ unknown] emqx team <support@emqx.io>

u_emqx_install3


更新索引并安装 EMQX

1
sudo apt update && sudo apt install emqx

启动 EMQX,多种方式

1
sudo emqx start
1
sudo emqx_ctl status

u_emqx_start

1
sudo systemctl start emqx
1
sudo service emqx start

停止 EMQX

1
sudo emqx stop

卸载 EMQX

1
sudo apt remove emqx

Windows EMQX使用

Windwos 下解压可直接运行,根目录下

启动 EMQX

1
.\bin\emqx start

停止 EMQX

1
.\bin\emqx stop

Dashboard 常用设置

通过 Dashboard 可以方便地查看与管理服务器

Dashboard 默认访问地址:http://localhost:18083

默认账号:admin

默认密码:public


进入 Dashboard 后主页面会显示系统的信息,EMQX版本,节点连接状态等,到此 EMQX 服务已经搭建完毕。

db_main


修改样式和语言,导航栏 选择 设置/Setting

db_setting


修改 Dashboard 账号密码,导航栏 -> 通用 -> 用户

点击编辑可修改 admin 账号密码,此账号不能删除

db_setting2

新创建的用户可编辑其他用户,可删除除admin与本账号以外的账号

db_setting3


查看 EMQX 服务使用的端口,导航栏 -> 通用 -> 监听器

db_setting4

端口说明
18083Dashboard 端口
1883MQTT/TCP 协议端口
11883MQTT/TCP 协议内部端口,仅用于本机客户端连接
8883MQTT/SSL 协议端口
8083MQTT/WS 协议端口
8084MQTT/WSS 协议端口

在服务器搭建使用时记得开放对应端口


通过配置文件修改账号密码以及访问端口号:

Dshboard 配置文件 sudo vim /etc/emqx/plugins/emqx_dashboard.conf

dashboard_config


修改 EMQX 监听端口

打开 EMQX 配置文件 sudo vim /etc/emqx/emqx.conf

如修改 MQTT/TCP 协议默认的 1883 端口为 1884

  1. 按下 / 搜索字符,可快速定位到相关字符,回车后按 n 匹配下一个,N 匹配上一下

    u_emqx_port1


  2. 找到后按下 i 进入编辑模式((回车退出搜索情况下)

    u_emqx_port2


  3. 修改为 1884 后 ESC 退出编辑模式,:wq 退出并保存

    u_emqx_port3


  4. 重启 EMQX,sudo emqx restart

    u_emqx_restart


  5. Dshboard 配置文件 sudo vim /etc/emqx/plugins/emqx_dashboard.conf ,修改端口号同理。


EMQX MQTT用户验证

EMQX 默认是允许匿名接入的,这种环境下容易导致服务器被攻击,被恶意占用资源。建议使用一种身份验证去过滤。EMQX 提供了多种的认证方式,数据库、HTTP、JWT 等等。

EMQX认证


这里介绍最最轻量的认证方式——Mnesia 认证。在 EMQX 4.3.0 版本(2021-05-06)开始 emqx_auth_clientidemqx_auth_usernmae 合并为 emqx_auth_mnesia


关闭匿名认证

sudo vim /etc/emqx/emqx.conf

找到 allow_anonymous = true

匿名连接关闭

修改为 false

重启 EMQX sudo emqx restart

重启完毕后使用客户端连接测试,我使用的是 Dashboard 内的 Websocket 连接工具,提示没有授权,连接失败

匿名连接测试


开启 mnesia

dashboard 下开启:插件 -> emqx_auth_mnesia -> 启动

配置文件开启:sudo vim /var/lib/emqx/loaded_plugins ,按照已有项格式添加,重启一下 EMQX 生效。

plugin_config


添加账号

sudo vim /etc/emqx/plugins/emqx_auth_mnesia.conf

初始文件里面有一些 Examples ,根据格式填写

mnesia_config


另外 EMQX 有认证链机制,即允许多种认证方式存在,认证顺序根据认证开启顺序进行(最后一步为匿名认证,所以务必关闭允许匿名连接)。在传输层上,支持 TLS 认证,TLS 可以保证使用客户端证书的客户端到服务器的身份验证,并确保服务器向客户端验证服务器证书,也支持基于 PSK 的 TLS/DTLS 认证。配置详情请参考官方文档:点击这里