Citrix ADC

Équilibrage de charge MQTT

Message Queuing Telemetry Transport (MQTT) est un protocole de messagerie standard OASIS pour l’Internet des objets (IoT). MQTT est une technologie flexible et facile à utiliser qui fournit une communication efficace au sein d’un système IoT. MQTT est un protocole basé sur un courtier et est largement utilisé pour faciliter l’échange de messages entre les clients et le courtier.

Les avantages clés suivants de MQTT en font une option idéale pour votre appareil IoT :

  • Fiabilité
  • Temps de réponse rapide
  • Capacité de prendre en charge des appareils illimités
  • Publier ou abonner des messages qui sont parfaits pour les communications plusieurs-à-plusieurs

L’IoT est le réseau d’appareils interconnectés qui sont intégrés avec des capteurs, des logiciels, une connectivité réseau et des appareils électroniques nécessaires. Les composants intégrés permettent aux périphériques IoT de collecter et d’échanger des données. L’augmentation de l’utilisation des périphériques IoT pose de multiples défis pour l’infrastructure réseau, Scale étant le principal. Dans un déploiement à grande échelle d’appareils IoT, les données générées par chaque périphérique IoT doivent être analysées rapidement. Pour atteindre les exigences d’échelle et l’utilisation efficace des ressources, la charge sur le pool de courtiers doit être répartie uniformément. Avec la prise en charge du protocole MQTT, vous pouvez utiliser l’appliance Citrix ADC dans les déploiements IoT pour équilibrer la charge du trafic MQTT.

La figure suivante illustre l’architecture MQTT utilisant une appliance Citrix ADC pour équilibrer la charge du trafic MQTT.

Système MQTT

Un déploiement IoT avec protocole MQTT comporte les composants suivants :

  • Courtier MQTT. Serveur qui reçoit tous les messages des clients, puis achemine les messages vers les clients de destination appropriés. Le courtier est responsable de recevoir tous les messages, de filtrer les messages, de déterminer qui est abonné à chaque message et d’envoyer le message à ces clients abonnés. Le courtier est le centre central par lequel chaque message doit passer.
  • Client MQTT. Tout appareil, depuis un micro contrôleur jusqu’à un serveur à part entière, qui exécute une bibliothèque MQTT et se connecte à un courtier MQTT sur un réseau. Les éditeurs et les abonnés sont des clients MQTT. Les étiquettes de l’éditeur et de l’abonné désignent si le client publie des messages ou s’est abonné à recevoir des messages.
  • Équilibreur de charge MQTT. L’appliance Citrix ADC est configurée avec un serveur virtuel d’équilibrage de charge MQTT pour équilibrer la charge du trafic MQTT.

Dans un déploiement IoT typique, un groupe de périphériques IoT (clients IoT) est géré par le courtier (cluster de serveurs). La charge de l’appliance Citrix ADC équilibre le trafic MQTT vers les courtiers en fonction de divers paramètres, tels que l’ID client, la rubrique et le nom d’utilisateur.

Configurer l’équilibrage de charge pour le trafic MQTT

Pour que l’appliance Citrix ADC puisse équilibrer la charge du trafic MQTT, effectuez les tâches de configuration suivantes :

  1. Configurez les services MQTT/MQTT_TLS ou les groupes de services.
  2. Configurez le serveur virtuel d’équilibrage de charge MQTT/MQTT_TLS.
  3. Liez les services MQTT/MQTT_TLS au serveur virtuel d’équilibrage de charge MQTT/MQTT_TLS.
  4. Configurer le serveur virtuel de commutation de contenu MQTT/MQTT_TLS.
  5. Configurer une action de commutation de contenu qui spécifie le serveur virtuel d’équilibrage de charge cible
  6. Configurez une stratégie de commutation de contenu.
  7. Liez la stratégie de commutation de contenu à un serveur virtuel de commutation de contenu déjà configuré pour rediriger vers le serveur virtuel d’équilibrage de charge spécifique.
  8. Enregistrez la configuration.

Pour configurer l’équilibrage de charge pour le trafic MQTT à l’aide de l’interface de ligne de commande

Configurez les services MQTT/MQTT_TLS ou les groupes de services.

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

Exemple :

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

Configurez le serveur virtuel d’équilibrage de charge MQTT/MQTT_TLS.

add lb vserver <name> <protocol> <IPAddress> <port>

Exemple :

add lb vserver lb1 MQTT 10.106.163.9 1883

Liez les services ou groupes de services MQTT/MQTT_TLS au serveur virtuel d’équilibrage de charge MQTT.

bind lb vserver <name> <serviceName>
bind lb vserver <name> <servicegroupName>

Exemple :

bind lb vserver lb1 srvc1
bind lb vserver lb1 srvcg1

Configurer le serveur virtuel de commutation de contenu MQTT/MQTT_TLS.

add cs vserver <name> <protocol> <IPAddress> <port>

Exemple :

add cs vserver cs1 MQTT 10.106.163.13 1883

Configurez une action de commutation de contenu qui spécifie le serveur virtuel d’équilibrage de charge cible.

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

Exemple :

add cs action act1 -targetlbvserver lbv1

Configurez une stratégie de commutation de contenu.

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

Exemple :

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

Liez la stratégie de commutation de contenu à un serveur virtuel de commutation de contenu déjà configuré pour rediriger vers le serveur virtuel d’équilibrage de charge spécifique.

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

Exemple :

bind cs vserver cs1 –policyName cspol1 -priority 20

Enregistrez la configuration.

save ns config

Pour configurer l’équilibrage de charge pour le trafic MQTT à l’aide de l’interface graphique

  1. Accédez à Gestion du trafic > Équilibrage de charge > Serveurs virtuelset créez un serveur virtuel d’équilibrage de charge de type MQTT ou MQTT_TLS.
  2. Créez un service ou un groupe de services de type MQTT.
  3. Liez le service au serveur virtuel MQTT.
  4. Cliquez sur Enregistrer.

Limite de longueur de message MQTT

L’appliance Citrix ADC traite les messages dont la longueur de message est supérieure à 65536 octets comme des paquets jumbo et les rejette par défaut. Le paramètre dropmqttjumbomessage lb décide de traiter les paquets jumbo ou non. Ce paramètre est par défaut défini sur YES, ce qui implique que les paquets MQTT jumbo sont supprimés par défaut. Si ce paramètre est défini sur NO, l’appliance ADC gère même les paquets dont la longueur du message est supérieure à 65536 octets.

Pour configurer l’appliance ADC de manière à gérer les paquets jumbo à l’aide de l’interface de ligne de commande :

Set lb parameter –dropMqttJumboMessage [YES | NO]

Exemple :

set lb parameter –dropMqttJumboMessage no
Équilibrage de charge MQTT