Citrix ADC

MQTT负载均衡

消息队列遥测传输(MQTT)是用于物联网(IoT)的OASIS标准消息传递协议。MQTT是一种灵活且易于使用的技术,可在物联网系统中提供有效的通信。MQTT是一种基于代理的协议,广泛用于促进客户机和代理之间的消息交换。

MQTT的以下主要优点使其非常适合您的物联网设备:

  • 可靠性
  • 快速响应时间
  • 支持无限设备的能力
  • 发布/订阅消息,非常适合多对多通信

物联网是由嵌入传感器、软件、网络连接和必要电子设备的互联设备组成的网络。嵌入式组件使物联网设备能够收集和交换数据。物联网设备使用的增加给网络基础设施带来了多重挑战,其中规模是最突出的挑战。在物联网设备的大规模部署中,需要对每个物联网设备产生的数据进行快速分析。为了满足规模需求和资源的有效使用,代理池上的负载必须均匀分布。在MQTT协议的支持下,您可以在物联网部署中使用Citrix ADC设备来负载平衡MQTT流量。

下图描述了使用Citrix ADC设备对MQTT流量进行负载平衡的MQTT体系结构。

MQTT系统

使用MQTT协议的物联网部署包含以下组件:

  • MQTT代理。接收来自客户机的所有消息,然后将消息路由到适当的目标客户机的服务器。代理负责接收所有消息,过滤消息,确定谁订阅了每条消息,并将消息发送给这些订阅的客户端。代理是每个消息都必须经过的中心集线器。
  • MQTT客户机。任何运行MQTT库并通过网络连接到MQTT代理的设备,从微控制器到成熟的服务器。发布者和订阅者都是MQTT客户机。发布者和订阅者标签指的是客户端是发布消息还是订阅接收消息。
  • MQTT负载平衡器。Citrix ADC设备配置了MQTT负载平衡虚拟服务器,以对MQTT流量进行负载平衡。

在典型的物联网部署中,代理(服务器集群)管理物联网设备组(物联网客户端)。Citrix ADC设备根据各种参数(如Client ID、主题和用户名)对到代理的MQTT流量进行负载平衡。

为MQTT流量配置负载平衡

要使Citrix ADC设备负载平衡MQTT流量,请执行以下配置任务:

  1. 配置MQTT/MQTT_TLS服务或服务组。
  2. 配置MQTT/MQTT_TLS负载均衡虚拟服务器。
  3. 将MQTT/MQTT_TLS服务绑定到MQTT/MQTT_TLS负载平衡虚拟服务器。
  4. 配置MQTT/MQTT_TLS内容交换虚拟服务器。
  5. 配置内容切换动作,指定目标负载均衡虚拟服务器
  6. 配置内容切换策略。
  7. 将内容交换策略绑定到已配置为重定向到特定负载均衡虚拟服务器的内容交换虚拟服务器。
  8. 保存配置。

使用CLI为MQTT流量配置负载均衡

配置MQTT/MQTT_TLS服务或服务组。

add service     add servicegroup   bind servicegroup    

例子:

添加服务srvc1 10.106.163.3 MQTT 1883添加服务组srvcg1 MQTT绑定服务组srvcg1 10.106.163.3 1883 

配置MQTT/MQTT_TLS负载均衡虚拟服务器。

添加lb vserver     

例子:

添加lb vserver lb1 MQTT 10.106.163.9 1883 

将MQTT/MQTT_TLS服务或服务组绑定到MQTT负载平衡虚拟服务器。

绑定lb vserver  绑定lb vserver   

例子:

绑定lb vserver lb1 srvcg1 

配置MQTT/MQTT_TLS内容交换虚拟服务器。

添加cs vserver     

例子:

添加cs vserver cs1 MQTT 10.106.163.13 1883 

配置内容切换动作,指定目标负载均衡虚拟服务器。

add cs action  -targetLBVserver  [-comment ] 

例子:

添加cs动作act1 -targetlbvserver lbv1 

配置内容切换策略。

add cs policy  [-url  | -rule ] -action  

例子:

“MQTT.COMMAND.EQ(CONNECT) && MQTT.CONNECT.FLAGS.QOS.eq(2)”-action act1 

将内容交换策略绑定到已配置为重定向到特定负载均衡虚拟服务器的内容交换虚拟服务器。

bind cs vserver  -policyName  -priority  

例子:

bind cs vserver cs1 -policyName cspol1 -priority 20 

保存配置。

保存nsconfig 

通过使用GUI为MQTT流量配置负载平衡

  1. 导航到交通管理>负载平衡>虚拟服务器,并创建类型为。的负载均衡虚拟服务器MQTTMQTT_TLS
  2. 创建MQTT类型的服务或服务组。
  3. 将服务绑定到MQTT虚拟服务器。
  4. 点击保存

MQTT消息长度限制

Citrix ADC设备将消息长度大于65536字节的消息视为巨型数据包,并在默认情况下丢弃它们。的dropmqttjumbomessageLb参数决定是否处理超长报文。该参数默认设置为是的,这意味着默认情况下会丢弃大型MQTT数据包。如果该参数设置为没有, ADC设备甚至处理消息长度大于65536字节的数据包。

使用命令行将ADC设备配置为处理超大数据包:

设置lb参数- dropqttjumbomessage [YES | NO] 

例子:

设置lb参数-dropMqttJumboMessage no 
MQTT负载均衡