方案:
1. 在 1 个云服务ECS节点上用 nginx 做反向代理作为MQTT负载均衡器。
2. 在上面的 nginx 后再部署 n 个 MQTT Broker 节点, 每个MQTT Broker 节点最大可连接 5W 个MQTT 客户端。
3. 则 n 个 MQTT Broker 节点理论上可接纳 n * 50000 个 MQTT 客户端, 即这个集群可连接 n * 50000 个MQTT客户端。
从而推断 nginx 负载均衡节点应该能接纳 n * 50000个 TCP 连接。
问题:
(1)这个 nginx 负载均衡节点是否会成为这个 MQTT 集群的瓶颈 (即单个 nginx 节点无法接纳 n * 50000 个TCP连接)?
(2)如果 nginx负载均衡节点构成瓶颈,是否还有其他更好的负载平衡方案?
(3)dns 负载平衡方案是否可以解决单节点 nginx 负责平衡器的瓶颈问题?
答案:
nginx和mqtt broker 在一台ecs上吗?那最多也就6万个连接。如果增加ngnix代理数量,后面的 broker 要在多个地址上,保证四元组至少有一个不一样的。
至于nginx单点问题,可以在前面使用vip或slb做负载,多个nginx组成集群。