部署与运维架构
大约 3 分钟
架构目标
部署架构以“快速交付、依赖清晰、数据可持久化、问题可定位”为目标。商业版常见交付方式是 Docker Compose 编排,包含 Nginx、Java 后端、Redis、MySQL、EMQX、ZLMediaKit、TDengine 等组件。更高可用和更大规模场景请结合 集群版文档。
容器拓扑
部署模式
| 模式 | 适用场景 | 说明 |
|---|---|---|
| Docker 快速部署 | 演示、测试、低成本体验 | 通过 Compose 快速启动完整依赖 |
| 源码开发部署 | 二次开发和联调 | 后端、前端、数据库、中间件分别启动 |
| 商业版生产部署 | 正式交付 | 配置授权、域名、SSL、备份、监控和安全策略 |
| 集群部署 | 高并发、高可用、多节点 | 参考集群版文档规划服务集群、Web 集群和负载均衡 |
服务职责
| 服务 | 职责 | 运维关注 |
|---|---|---|
| Nginx | 静态资源、HTTPS、API 反代、WebSocket 代理 | 证书、路径、超时、日志 |
| Java 后端 | 平台接口、设备接入、规则、通知、视频回调 | JVM、日志、上传目录、授权文件 |
| Redis | 缓存、会话、分布式锁 | 密码、内存、持久化、内网访问 |
| MySQL | 业务主数据 | 初始化、备份、慢 SQL、字符集 |
| EMQX/Netty | MQTT 接入和消息路由 | 认证回调、ACL、连接数、端口 |
| ZLMediaKit | 视频拉流、转推、录制 | Hook 地址、端口范围、录制目录 |
| TDengine | 时序数据存储 | 数据目录、日志目录、磁盘空间 |
端口规划
| 组件 | 常见端口 |
|---|---|
| Nginx | 80、443 |
| Java 后端 | 8080、8081、5683、8888、8889、5061 |
| EMQX | 1883、8083、8084、18083 |
| Redis | 6379 |
| MySQL | 3306 |
| ZLMediaKit | 554、1935、8000、9000、10000、30000-30100 |
| TDengine | 6030、6041、6043-6049 |
生产环境只开放必要端口。数据库、Redis、时序库和内部管理端口应限制在内网或安全组内。
持久化与备份
- Redis、MySQL、TDengine、Nginx 日志、上传目录、视频录制目录都应映射到宿主机或持久化存储。
- 初始化 SQL、升级 SQL、授权文件、证书和配置文件需要进入上线交付清单。
- 数据库备份需要定期恢复演练,避免“有备份但不可用”。
- 视频录制和时序数据增长较快,应配置保留周期和磁盘容量告警。
上线检查
- 域名、SSL 证书、Nginx 反向代理和静态资源路径已验证。
- 后端服务可以访问 MySQL、Redis、EMQX/Netty、TDengine、ZLMediaKit。
- 设备 MQTT/HTTP/CoAP 接入路径和认证流程已验证。
- 规则引擎、告警通知、视频回调和文件上传目录可用。
- 日志目录、数据库备份、监控指标和告警通知已配置。
- 商业授权配置已完成,并保留交付记录。
故障排查顺序
- 页面无法访问:先看 Nginx 访问日志、错误日志和静态资源路径。
- 接口异常:查看 Java 应用日志、数据库连接和 Redis 状态。
- 设备离线:检查 MQTT Broker、认证回调、ACL、Topic 和防火墙。
- 视频不可用:检查 ZLMediaKit Hook、端口映射、流地址和录制目录权限。
- 启动失败:检查挂载目录权限、端口冲突、容器日志和配置文件格式。
