EMQX
简介
EMQX是一个性能优异、功能强大的开源MQTT消息中间件,适合构建IoT、M2M、移动、Web、物联网等方面的应用或服务。主要具有以下特点:
- 支持MQTT、MQTT-SN、TCP、WebSocket等多种协议
- 跨平台,可以运行在Linux、FreeBSD、macOS等多种平台
- 高可用性,支持分布式集群部署
- 低时延、高吞吐量的消息路由和传递能力
- 插件化扩展机制,支持自定义认证、访问控制等
- 支持多种持久化方式,包括内存、Redis、MySQL、PostgreSQL等
Docker安装
运行临时容器
docker run -d \
--name emqx-47 \
-p 9610:1883 \
-p 9611:8883 \
-p 9612:8083 \
-p 9613:8084 \
-p 9615:18083 \
emqx/emqx:latest
注解:
9610: MQTT协议端口
9612: Web管理控制台端口
9611: MQTT TLS端口
9613: WebSocket协议端口
9615: dashboard端口
宿主机创建挂载目录
mkdir -p /opt/emqx/{etc,lib,data,log}
拷贝需持久化的文件
docker cp emqx:/opt/emqx/etc /opt/emqx
docker cp emqx:/opt/emqx/lib /opt/emqx
docker cp emqx:/opt/emqx/data /opt/emqx
docker cp emqx:/opt/emqx/log /opt/emqx
修改挂载目录权限
chown -R 1000:1000 /opt/emqx/
chmod -R 755 /opt/emqx/
## 删除临时容器
```bash
docker rm -f emqx
创建持久化emqx容器
docker run -d \
--name emqx \
-p 9610:1883 \
-p 9611:8883 \
-p 9612:8083 \
-p 9613:8084 \
-p 9615:18083 \
-v /opt/emqx/etc:/opt/emqx/etc \
-v /opt/emqx/lib:/opt/emqx/lib \
-v /opt/emqx/data:/opt/emqx/data \
-v /opt/emqx/log:/opt/emqx/log \
emqx/emqx:latest
MQTT连接添加用户密码验证
cat >> /opt/emqx/etc/emqx.conf << EOF
auth.user.1.username = mqttct
auth.user.1.password = 123456
EOF
# 重启emqx容器
docker restart emqx
访问Dashboard
http:ip:9615
账号:admin
默认密码:public
MQTTX客户端
MQTTX 是由 EMQ 开发的一款开源跨平台 MQTT 5.0 桌面客户端,它兼容 macOS,Linux 以及 Windows 系统。其主要功能如下:
- 采用聊天界面设计,使得操作更加简单明了
- 跨平台兼容,支持在 Windows,macOS,Linux 系统上运行
- 100% 兼容 MQTT v5.0,v3.1.1 和 v3.1 协议
- 订阅的 MQTT 主题支持自定义颜色标签
- 支持单向和双向 SSL 认证,同时支持 CA 和自签名证书
- 支持通过 WebSocket 连接 MQTT 服务器
- 支持 Hex, Base64, JSON, Plaintext 等 Payload 格式转换
- 自定义脚本支持模拟 MQTT 发布/订阅测试
- 提供完整的日志记录功能
- 多语言支持:简体中文、英语、日语、土耳其语及匈牙利语 🇨🇳 🇯🇵 🇺🇸 🇹🇷 🇭🇺
- 自由切换 Light、Dark、Night 三种主题模式
拓展
EMQX 在 Docker 环境中还支持许多其他的环境变量配置(--env ALLOW_ANONYMOUS=true - 允许匿名登录)
主要包括:
- 节点名称相关
EMQX_NAME:设置EMQX节点的节点名称
EMQX_NODE_NAME: EMQX 节点的名称
EMQX_NODE_COOKIE: EMQX 节点的 cookie,用于集群间通信 - 网络配置
EMQX_HOST:设置EMQX节点监听的主机名或者IP地址
EMQX_LISTENERS: EMQX 监听的协议、IP 和端口
EMQX_MAX_PORTS: EMQX 最大可用端口数 - MQTT 协议配置
EMQX_MQTT_MAX_TOPIC_ALIAS: MQTT 最大主题别名数量
EMQX_MQTT_KEEPALIVE: MQTTkeepalive心跳间隔
EMQX_MQTT_MAX_PACKET_SIZE: MQTT最大包大小 - 性能调优相关
EMQX_MAX_CONCURRENT_CLIENTS: EMQX 最大允许的并发客户端数
EMQX_MAX_MQTT_CONN_RATE: MQTT最大连接速率限制
EMQX_GC_THRESHOLD: Erlang GC 触发内存阈值 - 认证/访问控制相关
EMQX_ALLOW_ANONYMOUS: 是否允许匿名登录
EMQX_PASSWORD_HASH: 加密密码的散列算法
EMQX_AUTH__MYSQL__SERVER: MySQL 后端认证服务器地址
EMQX_AUTH__MYSQL__USERNAME: MySQL 后端认证用户名 - 持久化相关
EMQX_ZONE__EXTERNAL__SERVER: 外部存储区服务器地址
EMQX_ZONE__EXTERNAL__POOLSIZE: 外部存储区连接池大小 - 扩展插件相关
EMQX_LOADED_PLUGINS: 加载的 EMQX 插件列表
以上都是 EMQX 常用的环境变量设置,可以通过环境变量自定义 EMQX 在 Docker 中的行为,实现快速弹性的部署配置。
本文来自博客园,作者:MegaloBox,转载请注明原文链接:https://www.cnblogs.com/cpw6/p/17759011.html