Citrix ADC

MQTT负载平衡

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

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

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

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

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

MQTT系统

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

  • MQTT代理。从客户端接收所有消息,然后将消息路由到适当的目标客户端的服务器。代理负责接收所有消息、筛选消息、确定谁订阅了每个消息,并将消息发送到这些订阅的客户机。代理是每个消息都必须通过的中心集线器。
  • MQTT客户机。任何运行MQTT库并通过网络连接到MQTT代理的设备(从微控制器到功能齐全的服务器)。发布者和订阅者都是MQTT客户机。发布者和订阅者标签指客户机是发布消息还是订阅消息以接收消息。
  • MQTT负载均衡器。Citrix ADC设备配置了一个MQTT负载平衡虚拟服务器,以负载平衡MQTT通信。

在典型的物联网部署中,代理(服务器集群)管理物联网设备组(物联网客户端)。Citrix ADC设备负载基于各种参数(如客户端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    

例子:

add service srvc1 10.106.163.3 MQTT 1883 add servicegroup srvcg1 MQTT bind servicegroup srvcg1 10.106.163.3 1883 

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

add lb vserver     

例子:

add lb vserver lb1 MQTT 10.106.163.9 1883 

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

bind lb vserver   bind lb vserver   

例子:

Bind lb vserver lb1 srvc1 

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

add cs vserver     

例子:

add cs vserver cs1 MQTT 10.106.163.13 1883 

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

add cs action  -targetLBVserver  [-comment ] 

例子:

添加cs action act1 -targetlbvserver lbv1 

配置内容切换策略。

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

例子:

添加cs策略cspol1 -rule " 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 

保存配置。

保存ns config 

使用GUI为MQTT通信配置负载均衡

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

MQTT消息长度限制

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

使用CLI命令配置ADC设备处理巨包。

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

例子:

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