• mosquitto集群配置


    --------------------------------------------------------前言-------------------------------------------------------------------

    目前,官方的版本中,是没有集群功能的。官方说,可以使用bridge功能,将多个mqtt broker连接在一起。

    笔者查找了网上的配置,大部分为如下配置:

                                              图一

     在主节点192.168.1.1的mosquitto.conf中,配置:

    connection nodeA
    address 192.168.1.5:1883
    topic # both 0
    
    connection nodeB
    address 192.168.1.6:1883
    topic # both 0

      

    如上图所示,确实可以实现集群,但是有一个问题,如果主(192.1638.1.3)服务器down机,则所有的从服务器将会变成孤立的节点。

    这个时候,笔者第一反应是,在添加一个主服务器,不就可以了吗,如下图所示:

     

                                              图二

     bridge-2与bridge的配置相同。在笔者沾沾自喜之际,同组的同事问我,是我一直在向mosquitto中写消息吗。

     仔细检查配置,怎么会一直写消息呢,查看消息,是一样的。是的,死循环了。

    mosquitto的桥接模式,本质上是pub/sub。

    桥接配置中,在topic后有一个both/in/out的配置,是配置topic中的消息被转发的方向的,both:双向,in:进,out:出

    笔者在图二中,都配置了both,则出现了死循环。如消息发送到3 , 3--->5 , 5--->4 , 4--->3  。

    ------------------------------------------------正文-----------------------------------------------------------------------------------------

    仍然存在的问题:

    (1)如果在增加bridge节点,需要修改多个节点的配置,并且重启,维护成本高。

    (2)tcp长连接的负载均衡,由客户端来建立连接。客户端连接断开后,再次请求会重新建立连接,这时候,lvs将连接转发到存活节点,并建立长链接。当down机节点启动后,已经连接到其他节点的连接,不会再被负载到这台机器,只能等待重新连接,容易造成负载不均衡。

    (3)keepalived的检查。keepalived在检查时,会不停的请求1883端口。

     参考:

    https://blog.csdn.net/Z729685731/article/details/70142182

    https://stackoverflow.com/questions/26280208/cluster-forming-with-mosquitto-broker

  • 相关阅读:
    Leetcode刷题有感
    [博客迁移] 准备将博客从CSDN迁移至博客园
    加快Linux上yum下载安装包的速度(以CentOS 7,安装gcc为例)
    Linux能ping主机,但ping不了网关以及外网,显示包全丢失解决方案
    如何设置centos7的ip地址配置信息,让我的主机和它互Ping,以及远程登陆
    线程池 ThreadPoolTaskExecutor
    java Http请求
    java排序
    java的代理
    java的反射机制
  • 原文地址:https://www.cnblogs.com/yimiyan/p/9896612.html
Copyright © 2020-2023  润新知