ADC

MQTT-Lastausgleich

Der Message Queuing Telemetry Transport (MQTT) ist ein OASIS-Standard-Messaging-Protokoll für das Internet der Dinge (IoT). MQTT ist eine flexible und einfach zu bedienende Technologie, die eine effektive Kommunikation innerhalb eines IoT-Systems ermöglicht. MQTT ist ein auf Brokern basierendes Protokoll und wird häufig verwendet, um den Nachrichtenaustausch zwischen Kunden und Broker zu erleichtern.

Die folgenden Hauptvorteile von MQTT machen es zu einer gut geeigneten Option für Ihr IoT-Gerät:

  • Zuverlässigkeit
  • Schnelle Reaktionszeit
  • Fähigkeit, eine unbegrenzte Anzahl von Geräten zu unterstützen
  • Veröffentlichen und abonnieren Sie Nachrichten, die sich perfekt für die Kommunikation von vielen zu vielen eignen

IoT ist das Netzwerk miteinander verbundener Geräte, die mit Sensoren, Software, Netzwerkkonnektivität und der erforderlichen Elektronik ausgestattet sind. Die eingebetteten Komponenten ermöglichen es IoT-Geräten, Daten zu sammeln und auszutauschen. Die zunehmende Nutzung von IoT-Geräten bringt mehrere Herausforderungen für die Netzwerkinfrastruktur mit sich, wobei Skalierung die wichtigste ist. Bei einem groß angelegten Einsatz von IoT-Geräten müssen die von jedem IoT-Gerät generierten Daten schnell analysiert werden. Um die Skalierungsanforderungen und die effiziente Nutzung der Ressourcen zu erfüllen, muss die Belastung des Brokerpools gleichmäßig verteilt werden. Mit Unterstützung des MQTT-Protokolls können Sie die NetScaler Appliance in IoT-Bereitstellungen verwenden, um den MQTT-Datenverkehr auszugleichen.

Die folgende Abbildung zeigt die MQTT-Architektur, die eine NetScaler Appliance verwendet, um den Lastausgleich des MQTT-Datenverkehrs zu verwenden.

MQTT-System

Eine IoT-Bereitstellung mit dem MQTT-Protokoll besteht aus den folgenden Komponenten:

  • MQTT-Broker. Ein Server, der alle Nachrichten von den Clients empfängt und die Nachrichten dann an die entsprechenden Zielclients weiterleitet. Der Broker ist dafür verantwortlich, alle Nachrichten zu empfangen, die Nachrichten zu filtern, festzustellen, wer jede Nachricht abonniert hat, und die Nachricht an diese abonnierten Clients zu senden. Der Broker ist der zentrale Knotenpunkt, über den jede Nachricht weitergeleitet werden muss.
  • MQTT-Client. Jedes Gerät, von einem Mikrocontroller bis hin zu einem vollwertigen Server, auf dem eine MQTT-Bibliothek ausgeführt wird und über ein Netzwerk mit einem MQTT-Broker verbunden ist. Sowohl Herausgeber als auch Abonnenten sind MQTT-Kunden. Die Labels Herausgeber und Abonnenten geben an, ob der Kunde Nachrichten veröffentlicht oder den Empfang von Nachrichten abonniert hat.
  • MQTT-Loadbalancer. Die NetScaler Appliance ist mit einem virtuellen MQTT-Lastausgleichsserver konfiguriert, um den Lastausgleich des MQTT-Datenverkehrs zu erstellen.

In einer typischen IoT-Bereitstellung verwaltet der Broker (Servercluster) die Gruppe der IoT-Geräte (IoT-Clients). Die Last der NetScaler Appliance gleicht den MQTT-Verkehr an die Broker basierend auf verschiedenen Parametern wie Client-ID, Thema und Benutzername aus.

Load Balancing für MQTT-Traffic konfigurieren

Führen Sie die folgenden Konfigurationsaufgaben durch, damit die NetScaler-Appliance den MQTT-Verkehr ausgleichen kann:

  1. Konfigurieren Sie MQTT/MQTT_TLS Dienste oder Dienstgruppen.
  2. Konfigurieren Sie den virtuellen Lastausgleichsserver MQTT/MQTT_TLS.
  3. Binden Sie die MQTT/MQTT_TLS-Dienste an den virtuellen MQTT/MQTT_TLS Load Balancing-Server.
  4. Konfigurieren Sie den virtuellen MQTT/MQTT_TLS Content Switching-Server.
  5. Konfigurieren Sie eine Aktion Content Switching, die den virtuellen Zielserver für den Lastausgleich angibt
  6. Konfigurieren Sie eine Richtlinie für den Content Switching.
  7. Binden Sie die Content Switching-Richtlinie an einen virtuellen Content Switching-Server, der bereits für die Weiterleitung an den bestimmten virtuellen Load-Balancing-Server konfiguriert ist.
  8. Speichern Sie die Konfiguration.

So konfigurieren Sie den Lastenausgleich für MQTT-Verkehr mithilfe der CLI

Konfigurieren Sie MQTT/MQTT_TLS Dienste oder Dienstgruppen.

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

Beispiel:

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

Konfigurieren Sie den virtuellen Lastausgleichsserver MQTT/MQTT_TLS.

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

Beispiel:

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

Binden Sie die MQTT/MQTT_TLS-Dienste oder -Dienstgruppen an den virtuellen MQTT-Load-Balancing-Server.

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

Beispiel:

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

Konfigurieren Sie den virtuellen MQTT/MQTT_TLS Content Switching-Server.

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

Beispiel:

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

Konfigurieren Sie eine Aktion Content Switching, die den virtuellen Zielserver für den Lastausgleich angibt.

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

Beispiel:

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

Konfigurieren Sie eine Richtlinie für den Content Switching.

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

Beispiel:

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

Binden Sie die Content Switching-Richtlinie an einen virtuellen Content Switching-Server, der bereits für die Weiterleitung an den bestimmten virtuellen Load-Balancing-Server konfiguriert ist.

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

Beispiel:

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

Speichern Sie die Konfiguration.

save ns config
<!--NeedCopy-->

So konfigurieren Sie den Lastenausgleich für MQTT-Traffic mithilfe der GUI

  1. Navigieren Sie zuTraffic Management>Load Balancing>Virtuelle Serverund erstellen Sie einen virtuellen Lastausgleichsserver vom TypMQTT oder MQTT_TLS.
  2. Erstellen Sie einen Dienst oder eine Dienstgruppe vom Typ MQTT.
  3. Binden Sie den Dienst an den virtuellen MQTT-Server.
  4. Klicken Sie auf Speichern.

Längenbeschränkung für MQTT-Nachrichten

Die NetScaler-Appliance behandelt die Nachrichten mit einer Nachrichtenlänge von mehr als 65536 Byte als Jumbo-Pakete und verwirft sie standardmäßig. Der Parameter dropmqttjumbomessage lb entscheidet, ob die Jumbo-Pakete verarbeitet werden sollen oder nicht. Dieser Parameter ist standardmäßig auf YESgesetzt, was bedeutet, dass die Jumbo-MQTT-Pakete standardmäßig verworfen werden. Wenn dieser Parameter auf NEINgesetzt ist, verarbeitet die ADC-Appliance sogar Pakete mit einer Nachrichtenlänge von mehr als 65536 Byte.

So konfigurieren Sie die ADC-Appliance für die Verarbeitung von Jumbo-Paketen mithilfe der CLI:

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

Beispiel:

set lb parameter –dropMqttJumboMessage no
<!--NeedCopy-->
MQTT-Lastausgleich