ADC

MQTT Load Balancing

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 Broker-basiertes Protokoll und wird häufig verwendet, um den Austausch von Nachrichten zwischen Kunden und Brokern zu erleichtern.

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

  • Zuverlässigkeit
  • Schnelle Reaktionszeit
  • Möglichkeit zur Unterstützung einer unbegrenzten Anzahl von Geräten
  • Veröffentlichen/Abonnieren von Nachrichten, die perfekt für Viele-zu-Viele-Kommunikation geeignet sind

IoT ist das Netzwerk von miteinander verbundenen Geräten, die in Sensoren, Software, Netzwerkkonnektivität und notwendige Elektronik eingebettet sind. Die eingebetteten Komponenten ermöglichen es IoT-Geräten, Daten zu sammeln und auszutauschen. Die zunehmende Nutzung von IoT-Geräten bringt die Netzwerkinfrastruktur mit sich aus, wobei Scale die herausragende darstellt. Bei einer großen Bereitstellung 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 Citrix ADC Appliance in IoT-Bereitstellungen verwenden, um den MQTT-Datenverkehr auszugleichen.

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

MQTT-System

Eine IoT-Bereitstellung mit MQTT-Protokoll besteht aus 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, zu bestimmen, wer jede Nachricht abonniert hat, und das Senden der Nachricht an diese abonnierten Clients. Der Broker ist der zentrale Knotenpunkt, durch den jede Nachricht hinausgehen muss.
  • MQTT-Client. Jedes Gerät, von einem Mikrocontroller bis zu einem vollwertigen Server, der eine MQTT-Bibliothek betreibt und über ein Netzwerk mit einem MQTT-Broker verbunden ist. Sowohl Publisher als auch Abonnenten sind MQTT-Kunden. Die Verlags- und Abonnentenlabels beziehen sich darauf, ob der Kunde Nachrichten veröffentlicht oder Nachrichten abonniert hat.
  • MQTT Load Balancer Die Citrix ADC 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 Citrix ADC Appliance gleicht den MQTT-Verkehr an die Broker basierend auf verschiedenen Parametern wie Client-ID, Thema und Benutzername aus.

Konfigurieren des Load Balancing für MQTT-Datenverkehr

Damit die Citrix ADC Appliance den Lastausgleich von MQTT-Datenverkehr ermöglicht, führen Sie die folgenden Konfigurationsaufgaben aus:

  1. Konfigurieren Sie die Dienste oder Dienstgruppen von MQTT/MQTT_TLS.
  2. Konfigurieren Sie den virtuellen Lastenausgleichsserver MQTT/MQTT_TLS.
  3. Binden Sie die MQTT/MQTT_TLS-Dienste an den virtuellen Server des Lastenausgleichs MQTT/MQTT_TLS.
  4. Konfigurieren Sie den virtuellen MQTT/MQTT_TLS-Content Switching-Server.
  5. Konfigurieren einer Content Switching-Aktion, die den virtuellen Ziel-Lastausgleichsserver angibt
  6. Konfigurieren Sie eine Content Switching-Richtlinie.
  7. Binden Sie die Content Switching-Richtlinie an einen virtuellen Content Switching-Server, der bereits für die Umleitung auf den spezifischen virtuellen Lastausgleichsserver konfiguriert ist.
  8. Speichern Sie die Konfiguration.

So konfigurieren Sie den Lastenausgleich für MQTT-Datenverkehr mit der CLI

Konfigurieren Sie die Dienste oder Dienstgruppen von MQTT/MQTT_TLS.

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 Lastenausgleichsserver 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 Dienste oder Dienstgruppen von MQTT/MQTT_TLS an den virtuellen MQTT-Lastausgleichserver.

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 Content Switching-Aktion, die den virtuellen Ziel-Lastausgleichsserver angibt

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

Beispiel:

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

Konfigurieren Sie eine Content Switching-Richtlinie.

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 Umleitung auf den spezifischen virtuellen Lastausgleichsserver 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 Load Balancing für MQTT-Datenverkehr mit der GUI

  1. Navigieren Sie zu Traffic Management > Load Balancing > Virtuelle Server, und erstellen Sie einen virtuellen Lastausgleichsserver vom Typ MQTT 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.

MQTT-Nachrichtenlängenbegrenzung

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

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

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

Beispiel:

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