张建平 9adaacb84d feat: 初始化项目结构
添加 README.MD、images目录、single_node目录及其配置文件,multi_node目录及各节点配置。
2025-02-22 18:03:33 +08:00

3.0 KiB
Raw Blame History

单节点部署

该项目用于模拟 EMQX 集群环境下的单节点部署。通过 Docker Compose 启动三个 EMQX 实例,并利用 Nginx 实现负载均衡和协议代理,帮助你快速体验 EMQX 集群的基本功能。

目录结构

  • api_key.conf: 存放 EMQX API 密钥配置信息,格式为 用户名:密码
  • certs/: 存放 Nginx 使用的 SSL 证书文件,用于支持 TLS/SSL 加密连接。
  • docker-compose.yaml: Docker Compose 配置文件,定义了三个 EMQX 实例emqx1、emqx2、emqx3及一个 Nginx 服务。
  • nginx.conf: Nginx 配置文件,配置了 TCP、TLS、WebSocket、WSS 的代理规则。
  • README.md: 本说明文档。

前置要求

  • 安装 Docker 和 Docker Compose。
  • 确保主机端口未被其他服务占用(如 18083、1883、8883、8083、8084、8888

部署步骤

  1. 将本项目克隆或下载到本地。
  2. 在命令行中进入 single_node 目录:
    cd single_node
    
  3. 使用 Docker Compose 启动所有服务:
    docker-compose up -d
    
  4. 检查容器状态和日志,确保各服务正常启动:
    docker-compose logs -f
    
  5. 访问 EMQX Dashboard
  6. 测试 MQTT 连接:
    • 使用 TCP 连接测试端口 1883 或 TLS 连接测试端口 8883。
    • 使用 WebSocket 连接测试端口 8083 或 WSS 连接测试端口 8084需支持 SSL

文件说明

  • docker-compose.yaml
    定义了三个 EMQX 实例,各实例通过环境变量设置节点名称、集群静态种子以及 Dashboard 默认密码。API 密钥文件通过 volume 挂载到容器内指定位置。

  • nginx.conf
    配置了 Nginx 的 TCP/TLS 和 WebSocket/WSS 代理。

    • TCP/TLS:利用 upstream 分发到各 EMQX 实例,支持普通 TCP 连接和 TLS 加密连接。
    • WebSocket/WSS:配置了 WebSocket 升级、请求头转发等,确保 MQTT over WebSocket 连接正常工作。
  • api_key.conf
    包含 EMQX 服务所需的 API 密钥信息,格式为 admin:admin123456。根据实际需要,可修改为自定义值。

更新和扩展

  • 若需扩展成多节点部署,可参照其他目录(如 multi_node的配置进行修改和扩展。
  • 若需要更新 SSL 证书,请将新的证书文件替换 certs 目录中的对应文件,并检查 nginx.conf 中的证书路径是否正确。

常见问题

  • 容器启动失败或服务异常
    检查 docker-compose 文件中的环境变量、网络配置及端口映射是否正确;同时确认主机上的相关端口无冲突。

  • Nginx 代理错误
    验证 nginx.conf 文件中的代理和证书配置;确保挂载的证书文件有效且路径正确。

参考资料