MQTT如何仅将消息发送到群集服务器之一?

时间:2019-01-25 09:28:44

标签: mqtt haproxy docker-swarm

上下文:

我确实有一个看起来像这样的PUBSUB系统:

Client -- PUB on Topic A/1 ---> MQTT Broker <--- SUB on A/# -- SERVER A

一个容器正在SERVER A上运行,用于发布处理内容, 通信使用TLS 1.2和QoS 2完成。一切正常。

进化:

为了实现负载平衡,我计划添加SERVER B和SERVERC。为了更加方便,将SERVER A,B和C部署在SWARM中。

Client -- PUB on Topic A/1 ---> MQTT Broker <--- SUB on A/# -- SERVER A
                                            <--- SUB on A/# -- SERVER B
                                            <--- SUB on A/# -- SERVER C

想法1:

想法仅处理一次消息。 当时我以为QoS = 2将对我有帮助,因为我认为消息将由SERVER A,B或C处理。服务器A,B和C上的分布式证书是相同的。

运行此命令,服务器A,B和C正在接收消息。

结论:QoS = 2确保订户只收到一次消息。

想法2:

我认为这可能是由于所有服务器上的证书相同。 与1相同,不同之处在于,已经为每个服务器A,B和C生成了唯一的具有相同名称的证书。

运行此命令,服务器A,B和C正在接收消息。

结论:在这种情况下,QoS不会帮助我。

想法3 :(尚未测试)

在8883端口(前端)上使用HAProxy,然后分派到后端(服务器A,B和C)

问题:

有人可以给我一些有关如何正确执行此操作的见解吗?

关于, 皮埃尔

0 个答案:

没有答案