连接管理mqtt broker kubernetes?

6rqinv9w  于 2023-08-03  发布在  Kubernetes
关注(0)|答案(1)|浏览(113)

我们正在使用Mosquitto MQTT代理,一个物联网服务器实现和连接到代理作为客户端的设备。设备和IoT服务器都将发布到代理。
设备将请求发布到主题:/req/<device-id>/<server-id>
设备订阅响应:/resp/<device-id>/<server-id>
如果IoT服务器向特定设备发送通知,则它会发布到设备也订阅的通知主题:

/req/<server-id>/<device-id>

字符串


的数据
因此,这个场景到目前为止运行良好,但我们希望将我们的实现转移到Kubernetes上,以便MQTT代理和IoT服务器都将运行多个Pod。
现在任何设备都可以连接到任何mosquitto pod示例,任何IoT server pod都可以连接到mosquitto pod示例。
因此,如果IoT server的pod2生成通知并将其发送到我们的设备未连接到的mosquitto pod示例,则连接到mosquitto pod1和IoT server pod1的设备可能不会收到通知。
所以IoT server需要知道哪个device连接到哪个pod示例来发送通知。
如何在Kubernetes环境下实现这一点??

nkoocmlb

nkoocmlb1#

对此的简短回答是:你不容易。
更长的答案是:
你可能需要选择一个不同于mosquito的MQTT代理,mosquito不支持集群,所以没有(简单)的方法来运行多个示例,会话和消息可以分布在这些示例上。
您可以在多个代理示例之间设置桥接,以确保消息最终到达所有示例,但最好的方法是采用星星型结构,使用“中央”代理,然后将所有消息重新分发到星型结构的点。然后设备将连接到这些星星示例。这并不能解决分布式会话的任何问题。
您可能还需要查看共享订阅,以便消息仅由IoT服务器的单个示例使用。
还有其他几个MQTT代理实现支持适当的集群,如HiveMQ和emqx

相关问题