ADC

Equilibrio de carga MQTT

El transporte telemétrico en cola de mensajes (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 eficaz dentro de un sistema de IoT. MQTT es un protocolo basado en un corredor y se usa ampliamente para facilitar el intercambio de mensajes entre los clientes y el corredor.

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

  • Fiabilidad
  • Tiempo de respuesta rápido
  • Capacidad para admitir dispositivos ilimitados
  • Publica o suscríbete mensajes que son perfectos para la comunicación de muchos a muchos

El IoT es la red de dispositivos interconectados que están integrados con sensores, software, conectividad de red y la electrónica necesaria. Los componentes integrados permiten a los dispositivos de IoT recopilar e intercambiar datos. El aumento en el uso de dispositivos de IoT plantea múltiples desafíos para la infraestructura de red, siendo Scale el principal. En una implementación a gran escala de dispositivos de IoT, los datos generados por cada dispositivo de 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 NetScaler 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 NetScaler para equilibrar la carga del tráfico de MQTT.

Sistema MQTT

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

  • Bróker MQTT. Un servidor que recibe todos los mensajes de los clientes y, a continuación, los dirige a los clientes de destino correspondientes. El corredor es responsable de recibir todos los mensajes, filtrarlos, determinar quién está suscrito a cada mensaje y enviar el mensaje a estos clientes suscritos. El corredor es el eje central a través del cual debe pasar cada mensaje.
  • Cliente MQTT. Cualquier dispositivo, desde un microcontrolador hasta un servidor completo, que ejecute una biblioteca MQTT y se conecte a un intermediario de MQTT a través de una red. Tanto los editores como los suscriptores son clientes de MQTT. Las etiquetas de publicador y suscriptor indican si el cliente publica mensajes o está suscrito para recibir mensajes.
  • Balanceador de cargas MQTT. El dispositivo NetScaler 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 NetScaler 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 NetScaler equilibre la carga del tráfico MQTT, realice las siguientes tareas de configuración:

  1. Configure los servicios o grupos de servicios de 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. Configure una acción de conmutación de contenido que especifique el servidor virtual de equilibrio de carga de destino
  6. Configure una directiva de cambio 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 de MQTT mediante la CLI

Configure los servicios o grupos de servicios de 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 de 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-->

Configure una directiva de cambio 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 de MQTT mediante la interfaz gráfica de usuario

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

Límite de longitud de mensajes MQTT

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

Para configurar el dispositivo ADC para gestionar paquetes gigantes mediante la CLI:

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

Ejemplo:

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