docker-EMQX数据持久化
emqx版本:4.4.18
emqx通常会创建一下规则引擎或者一些应用账户的信息,这些信息会保存在emqx的容器节点内部
这些数据通常在重启宿主机或者重建容器后,数据丢失;故需要持久化
持久化方案
- docker启动固定ip
- 容器卷挂载
docker启动emqx
docker run -itd --name emqService -p 18083:18083 -p 1883:1883 -p 8084:8084 -p 8883:8883 -p 8083:8083 emqx/emqx
容器卷挂载并修改文件权限
docker cp emqx:/opt/emqx/bin /home/emqx
docker cp emqx:/opt/emqx/etc /home/emqx
docker cp emqx:/opt/emqx/lib /home/emqx
docker cp emqx:/opt/emqx/data /home/emqx
docker cp emqx:/opt/emqx/log /home/emqx
- chmod –R 777 /home/emqx/data/configs
- chmod –R 777 /home/emqx/data/mnesia
重建容器并固定ip
docker rm -rf emqx
version: "3.0"
#网桥
networks:
dmkb-bridge:
driver: bridge
ipam:
driver: default
config:
- subnet: 172.20.0.0/16
services:
emqx:
image: emqx:4.4.18
restart: unless-stopped
container_name: emqx
environment:
EMQX_ADMIN_PASSWORD: xxxxx # 设置admin账户,密码为admin
TZ: Asia/Shanghai
EMQX_NODE_NAME: emqx@172.20.0.20
ports:
- "1883:1883"
- "8083:8083"
- "8084:8084"
- "8883:8883"
- "8081:8081"
- "18083:18083"
volumes:
- "/home/emqx/etc:/opt/emqx/etc"
- "/home/emqx/data:/opt/emqx/data"
- "/home/emqx/lib:/opt/emqx/lib"
- "/home/emqx/log:/opt/emqx/log"
networks:
dmkb-bridge:
ipv4_address: 172.20.0.20
这样不论是重启服务器,还是重新构建容器,只要挂载对应文件以及设置对应ip,就能找到之前的数据
Mnesia 认证
EMQX 中的认证指的是当一个客户端连接到 EMQX 的时候,通过服务器端的配置来控制客户端连接服务器的权限。
Mnesia 认证使用 EMQX 内置 Mnesia 数据库存储客户端 Client ID/Username 与密码,支持通过 HTTP API 管理认证数据。
关闭默认匿名认证
emqx默认是开启匿名登录
vim /home/emqx/etc/emqx.conf
找到 allow_anonymous = true 改为allow_anonymous = false
配置Mnesia账户
vim /home/emqx/etc/plugins/emqx_auth_mnesia.conf
预设认证数据
预设认证数据格式兼容 emqx_auth_clientid 与 emqx_auth_username 插件的配置格式
## clientid 认证数据
auth.client.1.clientid = admin
auth.client.1.password = public
## username 认证数据
auth.user.2.username = admin
auth.user.2.password = public
认证开启
登录emqx Dashboard,将插件emqx_auth_mnesia启动
登录测试
用工具连接测试成功