71 lines
3.0 KiB
Markdown
71 lines
3.0 KiB
Markdown
# 单节点部署
|
||
|
||
该项目用于模拟 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)
|