Citrix ADC

MQTT负载平衡

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

MQTT的以下主要优势使其成为物联网设备的理想选择:

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

物联网是嵌入传感器、软件、网络连接和必要电子设备的互联设备的网络。嵌入式组件使物联网设备能够收集和交换数据。物联网设备使用率的增加给网络基础设施带来了多种挑战,其中规模是突出的挑战。在物联网设备的大规模部署中,需要快速分析每台IoT设备生成的数据。为了达到规模要求和资源的有效利用,必须均匀分配代理池中的负载。在MQTT协议的支持下,您可以在物联网部署中使用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 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负载平衡虚拟服务器。

绑定lb vserver  绑定lb vserver   

示例:

绑定lb vserver lb1 srvcg1 

配置mqtt / mqtt_tls内容交换虚拟服务器。

add cs vserver     

示例:

add cs vserver cs1 MQTT 10.106.163.13 

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

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 

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

绑定cs vserver  -policyName  -priority  

示例:

绑定cs vserver cs1 -policyName cspol1 -priority 20 

保存配置。

保存ns配置

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

  1. 导航到流量管理>负载平衡>虚拟服务器,然后创建MQTT或mqTT_TLS类型的负载平衡虚拟服务器。
  2. 创建MQTT类型的服务或服务组。
  3. 将服务绑定到MQTT虚拟服务器。
  4. 单击保存

MQTT消息长度限制

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

要使用cli将adc设备配置为处理巨型数据包,请执行以下操作:

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

示例:

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