# EMQX 集群配置指南 该目录用于模拟 EMQX 集群环境。每个子文件夹代表集群中的一个服务器节点,节点文件夹包括: - **node20.220/** - **node20.50/** - **node22.85/** ## 主要功能 各节点将使用独立的配置文件(例如各节点下的 `api_key.conf` 和 `docker-compose.yaml`),通过 Docker Compose 方式启动 EMQX 服务,并构建一个集群环境以实现消息同步与负载均衡。 ## nginx 负载均衡配置 新增的 nginx.conf 文件用于配置负载均衡,支持 TCP、TLS 以及 WebSocket 协议转发。请根据实际部署环境调整证书路径与后端服务配置。 ## DNS 负载均衡配置 除了nginx方案,另一种常见方案是采用DNS服务器进行负载均衡。DNS负载均衡通过在DNS解析记录中配置多个后端节点,实现流量的轮询分发。此方案配置简单,无需额外的反向代理软件,但在健康检查和故障切换方面存在不足,并且受DNS缓存影响,更新较慢。 ## 端口要求 确保你的服务器或虚拟机开放以下端口,以便 EMQX 正常运行及集群节点间的通信: - **EMQX 客户端端口**(用于 MQTT/WS/HTTPS 协议接入): - 1883 - 8083 - 8084 - 8883 - 18083 - **集群同步端口**(用于节点间状态同步与集群通信): - 4370 - 5369 - 5370 ## 发布订阅测试 使用 MQTTX 工具,可以分别从不同节点发起发布和订阅请求,验证不同节点之间的消息传递。测试结果显示,三个节点均能实现消息的成功发布与订阅,证明集群内的消息同步功能正常。 ## 控制台访问 任意节点均可通过管理端口(例如,访问 `http://<节点IP>:18083`)进入 EMQX 控制台。通过控制台可以监控集群状态、管理配置及进行其他操作,不必限定于单一节点。 ![集群概览](../images/集群概览.png) ## 启动集群 1. 分别进入各节点目录,例如 `node20.220/`、`node20.50/` 或 `node22.85/`。 2. 检查并配置各节点下的 `api_key.conf` 文件,确保各节点使用正确的认证信息。 3. 启动 Docker Compose 服务: ```bash docker-compose up -d ``` 4. 各节点将自动相互发现并建立集群,完成后即可通过任意节点的管理端口(如 18083)访问 EMQX 管理界面。 ## 注意事项 - 请确保所有要求的端口在宿主机或虚拟机中均已开放,避免防火墙阻止集群内部通信。 - 集群节点配置应保持一致,某些配置如集群名称和共享认证方式应统一设置。 - 若在启动过程中遇到问题,请检查各节点日志信息以定位问题。 ## 负载均衡方案对比及推荐 ### nginx 负载均衡方案 优势: - 支持TCP、TLS及WebSocket协议; - 支持健康检测和故障转移; - 可灵活配置转发规则; - 高性能且成熟稳定。 劣势: - 需要额外配置nginx服务及证书管理; - 配置较复杂,需针对不同协议单独调优; ### DNS 负载均衡方案 优势: - 配置简单,无需额外软件安装; - 实现多节点轮询较为容易; 劣势: - 缺乏实时健康检查能力; - 更新较慢,受DNS缓存影响,故障切换不够及时; ### 推荐方案 综合对比,推荐采用nginx负载均衡方案以实现更高效、稳定的负载分发和故障切换,适合对性能和可靠性要求较高的生产环境。 按照以上说明配置后,即可启动并运行一个基于 Docker 的 EMQX 集群。 --- ## EMQX测试 ### 多节点链接 ![多节点链接](../images/多节点链接.png) ### 单节点发布订阅 ![单节点发布订阅](../images/单节点发布订阅.png) ### 多节点发布订阅 ![1节点发布2节点订阅](../images/1节点发布2节点订阅.png)