MQTT集群部署方式

[复制链接]
查看688 | 回复2 | 2024-9-17 15:10:21 | 显示全部楼层 |阅读模式
       爱星物联社区版使用的MQTT是开源版的VerneMQ,它支持多节点集群部署,本文简要介绍VerneMQ的集群部署。

      VerneMQ搭建集群很简单,客户端可以连接任一集群节点并从另外的节点接受消息。 但是,MQTT规范提供了一些在分布式环境中难以满足的保证,特别是在发生网络分区时。后面会提及到网络分区的情况。

      设置Cookie参数。 所以的集群节点都需要配置使用相同的cookie值。可以通过在vernemq.conf设置`distributed_cookie`实现。出于安全的原因,需要将cookies设置为私有值。

      设置节点名称。给所有部署节点设置恰当的VerneMQ节点名称很重要。在vernemq.conf配置文中,可以将nodename = VerneMQ@127.0.0.1更改为适当的值。 确保节点名称在集群内是唯一的。


       配置好参数后,执行以下指令操作集群。

        加入集群

vmq-admin cluster join discovery-node=<OtherClusterNode>

        离开集群

vmq-admin cluster leave node=<NodeThatShouldGo> (这是第一步)

         假如集群比较简单。离开集群稍微复杂点,我们重点介绍下。

      活动节点离开集群
活动节点离开集群实际上会做很多工作,节点会花费大部分时间来尝试将其现有的队列迁移到其他节点。由于队列是VerneMQ的实时进程,他只会在队列迁移完成后才会退出。
让我们来看看实际的步骤:

      1. vmq-admincluster leave node=<NodeThatShouldGo>
      第一步将会停止MQTT监听器来确保不会在有新的客户端连接进来,这时不会中断现有连接。后台的节点也暂时不会离开集群。已连接的客户端仍然可以发布和接  收消息。然后给出一个宽限期(时间长短取决于您),等待现有的客户端re-connect到其他节点。 如果您认为这个宽限期可以结束,执行第二步:断开其他客户端。

      2. vmq-admincluster leave node=<NodeThatShouldGo> -k
      -k将删除节点的MQTT监听器,并取消所有活动连接。 如果你一开始就想这么做,可以把这当做第一步。
现在,队列迁移由客户端重新连接到其他节点触发。他们会要求他们的队列来做迁移。不过在离开节点上可能还存在部分离线队列。因为它们是预先存在的,或者某些客户端不重新连接,并且不回收它们的队列。
超过配置的超时时间后,如果有剩余的脱机队列,VerneMQ会抛出一个异常。默认超时时间是60秒,可以在leave集群时设置。 当有异常显示在控制台或console.log时,请重试命令(包括设置迁移超时(-t),打印到console.log的迁移进度信息的频率(秒)(-i)):

      3. vmq-admincluster leave node=<NodeThatShouldGo> -k -i 5 -t 120
这步结束后,VerneMQ会使用轮询的方式强行将剩余的离线队列迁移到其他的集群节点。 此流程到此全部结束。

      注1:在进行cluster leaving时,使用console.log来查看队列迁移进度。

      注2:如果您想重新加入集群或将节点重新启动为单个节点,需要备份&重命名/删除整个VerneMQ数据目录并创建一个新目录。 (它将由VerneMQ自动创建)。

      已停止节点离开集群
上一种场景是可控的情况。您以受控的方式使节点离开集群,并且一切正常,包括将完整的队列(和消息)传输到其他节点。
我们来看看节点已经关闭的第二种可能性。你的集群仍然依赖它,关闭的节点会阻止新的订阅,所以你想让这个坏节点离开集群。
请使用与上一场景相同的命令。这会造成一个比较重要的后果:使停止的节点离开会丢弃持久队列内容,因为VerneMQ无法迁移或传递它,请三思。
重要的事情再说一遍:
本场景的危险性:持久化的QoS 1和QoS 2消息不会被复制到其他节点,所以会丢失此节点的离线消息。

      获取集群状态信息
       vmq-admin clustershow

回复

使用道具 举报

一只呆头鹅 | 2024-9-17 16:12:04 | 显示全部楼层
太棒了
回复

使用道具 举报

WangChong | 2024-9-17 18:58:24 | 显示全部楼层
这都整到集群了, 马上就高可用了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则