EMQX 是一款开源的大规模分布式 MQTT 消息服务器,功能丰富,专为物联网和实时通信应用而设计。EMQX 5.0 单集群支持 MQTT 并发连接数高达 1 亿条,单服务器的传输与处理吞吐量可达每秒百万级 MQTT 消息,同时保证毫秒级的低时延。

EMQX 支持多种协议,包括 MQTT (3.1、3.1.1 和 5.0)、HTTP、QUIC 和 WebSocket 等,保证各种网络环境和硬件设备的可访问性。EMQX 还提供了全面的 SSL/TLS 功能支持,比如双向认证以及多种身份验证机制,为物联网设备和应用程序提供可靠和高效的通信基础设施。

内置基于 SQL 的规则引擎,EMQX 可以实时提取、过滤、丰富和转换物联网数据。此外,EMQX 采用了无主分布式架构,以确保高可用性和水平扩展性,并提供操作友好的用户体验和出色的可观测性。

EMQX 拥有来自 50 多个国家的 20,000 多家企业用户,连接全球超过 1 亿台物联网设备,服务企业数字化、实时化、智能化转型。

官网有 Docker部署文档 , 这里我们讲一下如何用 docker-compose 部署

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
version: "3.7" 
services:
service-emqx:
image: emqx/emqx:5.3.0
container_name: emqx
privileged: true
ports:
- 1883:1883
- 8083:8083
- 8084:8084
- 8883:8883
- 18083:18083
volumes:
- /etc/localtime:/etc/localtime:ro
- $PWD/data:/opt/emqx/data
- $PWD/log:/opt/emqx/log
restart: always
networks:
- nginx_ycc
networks:
nginx_ycc:
external: true

不指定网络可以去掉 networks 相关部分

直接部署可能会提示权限不足 mkdir: cannot create directory ‘/opt/emqx/data/configs’: Permission denied 原因很简单,EMQX 的镜像内 Linux 用户为 emqx,组为 emqx,并非 root 用户

解决办法有几个 , 其中一个简单的方法是先手动创建data目录

重置 Dashboard 密码

有时候会忘记 Dashboard 登录密码 , 可以通过命令行重置

进入容器

1
docker exec -it emqx bash

修改密码

1
./bin/emqx_ctl admins passwd admin public123

官方命令

命令 描述
admins add 添加 Dashboard 用户
admins passwd 重置 Dashboard 指定用户的密码
admins del 删除指定 Dashboard 用户

参考链接