# 单节点部署 该项目用于模拟 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: - 打开浏览器,访问 [http://localhost:18083](http://localhost:18083) - 默认用户名为 `admin`,默认密码为 `admin123456` 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 文件中的代理和证书配置;确保挂载的证书文件有效且路径正确。 ## 参考资料 - [EMQX 官方网站](https://www.emqx.io) - [Docker Compose 文档](https://docs.docker.com/compose/) - [Nginx 官方文档](https://nginx.org)