Citrix ADC

Equilibrio de carga MQTT

El transporte de telemetría de Message Queue Server (MQTT) es un protocolo de mensajería estándar de OASIS para Internet de las cosas (IoT). MQTT es una tecnología flexible y fácil de usar que proporciona una comunicación efectiva dentro de un sistema IoT. MQTT es un protocolo basado en intermediarios y es ampliamente utilizado para facilitar el intercambio de mensajes entre clientes y bróker.

Las siguientes ventajas clave de MQTT lo convierten en una opción adecuada para su dispositivo IoT:

  • Fiabilidad
  • Tiempo de respuesta rápido
  • Capacidad para admitir dispositivos ilimitados
  • Publicar/suscribir mensajes que son perfectos para la comunicación de muchos a muchos

IoT es la red de dispositivos interconectados que están integrados con sensores, software, conectividad de red y electrónica necesaria. Los componentes integrados permiten a los dispositivos IoT recopilar e intercambiar datos. El aumento en el uso de dispositivos IoT trae consigo múltiples desafíos para la infraestructura de red, siendo Scale el más destacado. En una implementación a gran escala de dispositivos IoT, los datos generados por cada dispositivo IoT deben analizarse rápidamente. Para lograr el requisito de escala y el uso eficiente de los recursos, la carga en el grupo de broker debe distribuirse de manera uniforme. Con la compatibilidad del protocolo MQTT, puede utilizar el dispositivo Citrix ADC en implementaciones de IoT para equilibrar la carga del tráfico MQTT.

En la siguiente ilustración se muestra la arquitectura MQTT que utiliza un dispositivo Citrix ADC para equilibrar la carga del tráfico de MQTT.

Sistema MQTT

Una implementación de IoT con protocolo MQTT tiene los siguientes componentes:

  • Intermediario MQTT. Servidor que recibe todos los mensajes de los clientes y, a continuación, los enruta a los clientes de destino apropiados. El intermediario es responsable de recibir todos los mensajes, filtrar los mensajes, determinar quién está suscrito a cada mensaje y enviar el mensaje a estos clientes suscritos. El intermediario es el centro central a través del cual debe pasar cada mensaje.
  • Cliente MQTT. Cualquier dispositivo, desde un microcontrolador hasta un servidor completo, que ejecuta una biblioteca MQTT y se conecta a un broker de MQTT a través de una red. Tanto los editores como los suscriptores son clientes de MQTT. Las etiquetas de publicador y suscriptor hacen referencia a si el cliente está publicando mensajes o si está suscrito para recibir mensajes.
  • Equilibrador de carga MQTT. El dispositivo Citrix ADC está configurado con un servidor virtual de equilibrio de carga MQTT para equilibrar la carga del tráfico de MQTT.

En una implementación típica de IoT, el agente (clúster de servidores) administra el grupo de dispositivos IoT (clientes de IoT). La carga del dispositivo Citrix ADC equilibra el tráfico de MQTT con los agentes en función de varios parámetros, como ID de cliente, tema y nombre de usuario.

Configurar el equilibrio de carga para el tráfico MQTT

Para que el dispositivo Citrix ADC pueda equilibrar la carga del tráfico de MQTT, realice las siguientes tareas de configuración:

  1. Configure los servicios o grupos de servicios MQTT/MQTT_TLS.
  2. Configure el servidor virtual de equilibrio de carga MQTT/MQTT_TLS.
  3. Enlazar los servicios MQTT/MQTT_TLS al servidor virtual de equilibrio de carga MQTT/MQTT_TLS.
  4. Configure el servidor virtual de conmutación de contenido MQTT/MQTT_TLS.
  5. Configurar una acción de conmutación de contenido que especifique el servidor virtual de equilibrio de carga de destino
  6. Configurar una directiva de conmutación de contenido.
  7. Enlazar la directiva de conmutación de contenido a un servidor virtual de conmutación de contenido que ya está configurado para redirigir al servidor virtual de equilibrio de carga específico.
  8. Guarde la configuración.

Para configurar el equilibrio de carga para el tráfico MQTT mediante la CLI

Configure los servicios o grupos de servicios MQTT/MQTT_TLS.

add service <name> <IP> <protocol> <port>
add servicegroup <ServiceGroupName> <Protocol>
bind servicegroup <serviceGroupName> <IP> <port>
<!--NeedCopy-->

Ejemplo:

add service srvc1 10.106.163.3 MQTT 1883
add servicegroup srvcg1 MQTT
bind servicegroup srvcg1 10.106.163.3 1883
<!--NeedCopy-->

Configure el servidor virtual de equilibrio de carga MQTT/MQTT_TLS.

add lb vserver <name> <protocol> <IPAddress> <port>
<!--NeedCopy-->

Ejemplo:

add lb vserver lb1 MQTT 10.106.163.9 1883
<!--NeedCopy-->

Enlazar los servicios o grupos de servicios MQTT/MQTT_TLS al servidor virtual de equilibrio de carga de MQTT.

bind lb vserver <name> <serviceName>
bind lb vserver <name> <servicegroupName>
<!--NeedCopy-->

Ejemplo:

bind lb vserver lb1 srvc1
bind lb vserver lb1 srvcg1
<!--NeedCopy-->

Configure el servidor virtual de conmutación de contenido MQTT/MQTT_TLS.

add cs vserver <name> <protocol> <IPAddress> <port>
<!--NeedCopy-->

Ejemplo:

add cs vserver cs1 MQTT 10.106.163.13 1883
<!--NeedCopy-->

Configure una acción de conmutación de contenido que especifique el servidor virtual de equilibrio de carga de destino.

add cs action <name> -targetLBVserver <string> [-comment <string>]
<!--NeedCopy-->

Ejemplo:

add cs action act1 -targetlbvserver lbv1
<!--NeedCopy-->

Configurar una directiva de conmutación de contenido.

add cs policy <policyName> [-url <string> | -rule <expression>] –action <actName>
<!--NeedCopy-->

Ejemplo:

add cs policy cspol1  -rule  “MQTT.COMMAND.EQ(CONNECT) && MQTT.CONNECT.FLAGS.QOS.eq(2)” -action act1
<!--NeedCopy-->

Enlazar la directiva de conmutación de contenido a un servidor virtual de conmutación de contenido que ya está configurado para redirigir al servidor virtual de equilibrio de carga específico.

bind cs vserver <virtualServerName> -policyName <policyName> -priority <positiveInteger>
<!--NeedCopy-->

Ejemplo:

bind cs vserver cs1 –policyName cspol1 -priority 20
<!--NeedCopy-->

Guarde la configuración.

save ns config
<!--NeedCopy-->

Para configurar el equilibrio de carga para el tráfico MQTT mediante la GUI

  1. Vaya a Administración del tráfico > Equilibrio de carga > Servidores virtualesy cree un servidor virtual de equilibrio de carga de tipo MQTT o MQTT_TLS.
  2. Cree un servicio o grupo de servicios de tipo MQTT.
  3. Enlazar el servicio al servidor virtual MQTT.
  4. Haga clic en Guardar.

Límite de longitud de mensaje MQTT

El dispositivo Citrix ADC trata los mensajes con una longitud de mensaje superior a 65536 bytes como paquetes jumbo y los descarta de forma predeterminada. El parámetro dropmqttjumbomessage lb decide si se procesan los paquetes jumbo o no. Este parámetro se establece de forma predeterminada en YES, lo que implica que los paquetes MQTT jumbo se descartan de forma predeterminada. Si este parámetro se establece en NO, el dispositivo ADC maneja incluso los paquetes con una longitud de mensaje superior a 65536 bytes.

Para configurar el dispositivo ADC para que gestione paquetes jumbo mediante CLI:

Set lb parameter –dropMqttJumboMessage [YES | NO]
<!--NeedCopy-->

Ejemplo:

set lb parameter –dropMqttJumboMessage no
<!--NeedCopy-->
Equilibrio de carga MQTT