docker-compose部署emqx集群 配置带mysql授权认证
要使用docker-compose部署EMQX集群并配置MySQL作为授权认证,你需要创建一个docker-compose.yml
文件,并配置EMQX的相关配置。以下是一个基本的例子:
version: '3'
services:
emqx1:
image: emqx/emqx:latest
container_name: emqx1
ports:
- "1883:1883"
- "8083:8083"
- "8084:8084"
- "18083:18083"
environment:
- EMQX_NODE_NAME=emqx1@emqx-cluster
- EMQX_CLUSTER__DISCOVERY=emqx-cluster@1
- EMQX_CLUSTER__STATIC_SEEDS=emqx1@emqx1:4369,emqx2@emqx2:4369
- EMQX_CLUSTER__LISTEN_ON=0.0.0.0:4369
- EMQX_CLUSTER__KERNEL=on
- EMQX_AUTH__USER__SQL_AUTH__SERVER=mysql://username:password@mysql-server:3306/emqx_auth
- EMQX_AUTH__USER__SQL_AUTH__QUERY=select password from mqtt_user where username = '%u'
networks:
- emqx-net
emqx2:
image: emqx/emqx:latest
container_name: emqx2
ports:
- "1884:1883"
environment:
- EMQX_NODE_NAME=emqx2@emqx-cluster
- EMQX_CLUSTER__DISCOVERY=emqx-cluster@1
- EMQX_CLUSTER__STATIC_SEEDS=emqx1@emqx1:4369,emqx2@emqx2:4369
- EMQX_CLUSTER__LISTEN_ON=0.0.0.0:4369
- EMQX_CLUSTER__KERNEL=on
- EMQX_AUTH__USER__SQL_AUTH__SERVER=mysql://username:password@mysql-server:3306/emqx_auth
- EMQX_AUTH__USER__SQL_AUTH__QUERY=select password from mqtt_user where username = '%u'
networks:
- emqx-net
mysql-server:
image: mysql:5.7
container_name: mysql-server
environment:
- MYSQL_ROOT_PASSWORD=root_password
- MYSQL_DATABASE=emqx_auth
- MYSQL_USER=username
- MYSQL_PASSWORD=password
volumes:
- ./emqx_auth.sql:/docker-entrypoint-initdb.d/emqx_auth.sql
networks:
- emqx-net
networks:
emqx-net:
driver: bridge
确保你有一个emqx_auth.sql
文件,它包含了MySQL数据库的初始化脚本,用于创建mqtt_user
表等。
注意事项:
- 确保将
username
、password
和root_password
替换为你的MySQL凭据。 - 确保你的MySQL用户有权限访问数据库和执行查询。
- 确保你的EMQX节点名称、发现机制和静态种子配置正确。
- 确保你的MySQL服务和EMQX实例在同一个网络中,以便它们可以通信。
这个配置是一个基本的例子,根据你的实际需求,你可能需要调整配置,例如端口
评论已关闭