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 三种主题模式

官网:https://mqttx.app/zh

拓展

EMQX 在 Docker 环境中还支持许多其他的环境变量配置(--env ALLOW_ANONYMOUS=true - 允许匿名登录)

主要包括:

  1. 节点名称相关
    EMQX_NAME:设置EMQX节点的节点名称
    EMQX_NODE_NAME: EMQX 节点的名称
    EMQX_NODE_COOKIE: EMQX 节点的 cookie,用于集群间通信
  2. 网络配置
    EMQX_HOST:设置EMQX节点监听的主机名或者IP地址
    EMQX_LISTENERS: EMQX 监听的协议、IP 和端口
    EMQX_MAX_PORTS: EMQX 最大可用端口数
  3. MQTT 协议配置
    EMQX_MQTT_MAX_TOPIC_ALIAS: MQTT 最大主题别名数量
    EMQX_MQTT_KEEPALIVE: MQTTkeepalive心跳间隔
    EMQX_MQTT_MAX_PACKET_SIZE: MQTT最大包大小
  4. 性能调优相关
    EMQX_MAX_CONCURRENT_CLIENTS: EMQX 最大允许的并发客户端数
    EMQX_MAX_MQTT_CONN_RATE: MQTT最大连接速率限制
    EMQX_GC_THRESHOLD: Erlang GC 触发内存阈值
  5. 认证/访问控制相关
    EMQX_ALLOW_ANONYMOUS: 是否允许匿名登录
    EMQX_PASSWORD_HASH: 加密密码的散列算法
    EMQX_AUTH__MYSQL__SERVER: MySQL 后端认证服务器地址
    EMQX_AUTH__MYSQL__USERNAME: MySQL 后端认证用户名
  6. 持久化相关
    EMQX_ZONE__EXTERNAL__SERVER: 外部存储区服务器地址
    EMQX_ZONE__EXTERNAL__POOLSIZE: 外部存储区连接池大小
  7. 扩展插件相关
    EMQX_LOADED_PLUGINS: 加载的 EMQX 插件列表
    以上都是 EMQX 常用的环境变量设置,可以通过环境变量自定义 EMQX 在 Docker 中的行为,实现快速弹性的部署配置。

参考博文:https://www.cnblogs.com/virtulreal/p/14431704.html

posted @ 2023-10-12 10:57  MegaloBox  阅读(21)  评论(0编辑  收藏  举报