ADC

équilibrage de charge MQTT

Le transport télémétrique MQTT (Message Queuing Telemetry Transport) est un protocole de messagerie standard OASIS pour l’Internet des objets (IoT). Le MQTT est une technologie flexible et facile à utiliser qui permet une communication efficace au sein d’un système IoT. Le 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 principaux avantages suivants du MQTT en font une option parfaitement adaptée à votre appareil IoT :

  • Fiabilité
  • Temps de réponse rapide
  • Possibilité de prendre en charge un nombre illimité d’appareils
  • Messagerie de publication/d’abonnement idéale pour les communications entre plusieurs utilisateurs

L’IoT est un réseau d’appareils interconnectés intégrant des capteurs, des logiciels, une connectivité réseau et les composants électroniques nécessaires. Les composants intégrés permettent aux appareils IoT de collecter et d’échanger des données. L’utilisation croissante des appareils IoT pose de multiples défis à l’infrastructure réseau, le principal étant Scale. Dans le cadre d’un déploiement à grande échelle d’appareils IoT, les données générées par chaque appareil 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. Grâce à la prise en charge du protocole MQTT, vous pouvez utiliser l’appliance NetScaler dans les déploiements IoT pour équilibrer la charge du trafic MQTT.

La figure suivante décrit l’architecture MQTT utilisant une appliance NetScaler pour équilibrer la charge du trafic MQTT.

Système MQTT

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

  • Courtier MQTT. Un serveur qui reçoit tous les messages des clients, puis les achemine vers les clients de destination appropriés. Le courtier est chargé de recevoir tous les messages, de les filtrer, de déterminer qui est abonné à chaque message et d’envoyer le message aux clients abonnés. Le courtier est le hub central par lequel chaque message doit passer.
  • Client MQTT. Tout appareil, qu’il s’agisse d’un microcontrôleur ou d’un serveur à part entière, qui exécute une bibliothèque MQTT et se connecte à un courtier MQTT via un réseau. Les éditeurs et les abonnés sont des clients MQTT. Les étiquettes d’éditeur et d’abonné indiquent si le client publie des messages ou s’il est abonné pour recevoir des messages.
  • Équilibreur de charge MQTT. L’appliance NetScaler 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, le broker (cluster de serveurs) gère le groupe de périphériques IoT (clients IoT). L’appliance NetScaler équilibre la charge du 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 NetScaler équilibre la charge du trafic MQTT, effectuez les tâches de configuration suivantes :

  1. Configurez les services ou groupes de services MQTT/MQTT_TLS.
  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. Configurez 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 ou groupes de services MQTT/MQTT_TLS.

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

Exemple :

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

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

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

Exemple :

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

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>
<!--NeedCopy-->

Exemple :

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

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

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

Exemple :

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

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>]
<!--NeedCopy-->

Exemple :

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

Configurez une stratégie de commutation de contenu.

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

Exemple :

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

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>
<!--NeedCopy-->

Exemple :

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

Enregistrez la configuration.

save ns config
<!--NeedCopy-->

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 des messages MQTT

L’appliance NetScaler traite les messages dont la longueur est supérieure à 65 536 octets comme des paquets Jumbo et les supprime par défaut. Le paramètre dropmqttjumbomessage lb décide s’il faut traiter les paquets Jumbo ou non. Ce paramètre est défini par défaut 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 afin qu’elle gère les paquets Jumbo à l’aide de l’interface de ligne de commande :

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

Exemple :

set lb parameter –dropMqttJumboMessage no
<!--NeedCopy-->
équilibrage de charge MQTT