Die Menge der Daten, die wir heute über alle Domänen generieren, explodiert mit Millionen von Geräten immer täglich mit dem Internet verbunden. Jede IoT-Anwendung muss täglich mit Terabytes von Daten umgehen. Eine solche große Datenmenge ist mit einem Single-Node-Server nicht durchführbar. Auch wenn MQTT Broker in der Markt für Durchsatz gut skaliert ist, große Produktionsumgebungen erfordern MQTT hohe Verfügbarkeit Cluster, um die Anforderungen effektiv zu erfüllen.

Die SaaS-Ära der Cloud hat die Art und Weise neu definiert, wie die Server für eine hohe Verfügbarkeit des Systems eingesetzt werden. Die vor dem Internet der Dinge erstellten Anwendungen waren alle HTTP-basierten Lösungen, bei denen 99% der Anfragen wurden in einem einzigen Server (oder einem Pfad von Servern) bedient. MQTT hohe Verfügbarkeit stellt eine andere Reihe von Herausforderungen für die Datenkonsistenz. Das Protokoll macht es verbindlich, dass die Nachrichten, die auf einem Ein bestimmter Serverknoten im MQTT Cluster sollte allen Knoten im Cluster zur Verfügung gestellt werden, um es zu machen für den mit diesem System verbundenen Client schneller und zuverlässiger verfügbar. Nach Aussage des MQTT Cluster sollte auch die Daten für die Benutzer über REST oder die anderen Modi, die auch Teil der Gesamtökosystem von IoT/IIoT Data.

MQTT Cluster Architecture

 MQTT Cluster Architecture

MQTT-ProtokollDie Spezifikation unterstützt die Speicherung der Daten nicht. Der hohe Verfügbarkeitscluster benötigt eine klare Datenspeicherung für die transienten Daten, um sicherzustellen, dass die Datenlieferung gemäßMQTT QoS Levelsin den MQTT Packets angewiesen. Die Speicherung kann nicht erforderlich sein, wenn ein einziger Knoten vorhanden ist Bereitstellung, da die Daten im transienten Speicher liegen können. MQTT Broker Cluster brauchen mehr Komponenten über die MQTT Implementierung. Auf hohem Niveau wird im folgenden der Datenspeicher für die transienten Daten benötigt Fälle:


  • Wann ein neuesMQTT Brokermit dem Cluster
  • Wenn ein MQTT Broker aufgrund des physischen oder funktionalen Neustarts neu gestartet wird.

Wenn alle Broker gut laufen, gibt es eine Notwendigkeit fürInteressierte Medien (IBC):


  • Daten an den anderen sendenMQTT ServerBeispiele im Cluster
  • Daten von den anderen MQTT-Instanzen im Cluster empfangen

Load Balancer ist etwas, das in allen hochverfügbaren Bereitstellungen unabhängig vom Protokoll obligatorisch ist. verwendet für die Kommunikation zwischen den Clients und dem Server. Es spielt eine wichtige Rolle bei der Einrichtung des MQTT Cluster sowie die Verteilung von Daten über die MQTT-Knoten im Cluster und die REST-APIs über sie. Es gibt zwei Modi, in denen der MQTT-Cluster eingesetzt werden kann. Load Balancer Unterstützung spielt eine signifikante Rolle in diesen Konfigurationen.


Aktiver Modus

Bei dieser Einrichtung werden zwei MQTT Brokers hinter einem Lastausgleich eingesetzt werden. Einer der MQTT-Knoten werden als Active konfiguriert und dienen der Anfrage. Der sekundäre Knoten hält den Status und Daten synchron mit der primären und werden im Stand-by-Modus sein. Wann immer es eine funktionale oder physische Fehler auf dem primären Server übernimmt der sekundäre Server.

Dieses Setup ist ideal für moderate Datenaustauschszenarien und wo ein einzelner MQTT-Knoten mit der Last. Sie können auch Energie und Kosten sparen, indem Sie den Sekundärknoten in einem minimalen Konfiguration.


Multi Master Mode

Wenn die Anforderung mehr Datenaustausch hat, bei dem ein einzelner Knoten die Produktionsdatenbelastung nicht bewältigen kann, haben wir müssen mehrere Master hinter dem Load Balancer bereitstellen und alle MQTT Brokers werden den Kunden in parallel. Da es sich um ein TCP-basiertes Protokoll handelt, unabhängig von der Konfiguration, werden die Clients klebrig an den MQTT-Server, an den er angeschlossen ist. Die Konfiguration kann eine gewichtete Runde Robin gemacht werden, um die besser laden.


Wie erhalten die MQTT-Cluster Datenkonsistenz?

MQT Broker unterstützt einen integrierten Datenaustauschmechanismus, den wir als Inter Broker Communication bezeichnen. Motor (IBC). IBC ist in jedem MQTT-Knoten im Cluster aktiviert, so dass er die Daten von die anderen MQTT-Clusterknoten. Alle Knoten speichern Daten parallel zur Datenbank, sorgen für Redundanz und Ermöglichen der Datenwiederherstellung bei Ausfall.

MQTT Broker Redundanz

Wie bereits dargelegt, sind die Spezifikationen des MQTT-Protokolls und dieInternet und Internetüber MQTT gebaut haben Anforderungen an die skalierbare und zuverlässigere Datenkonsistenz in M2M und Integration mit den Datenanalyse-Plattformen, die zu einem inhärenten Bestandteil jeder durchgeführten Bereitstellung werden Heute. Wir bitten unsere Kunden immer, die Daten hinter dem Broker zu speichern und nicht als Abonnent. Dies wird helfen sie reduzieren die Bandbreitenkosten sowie die Größe ihrer Bereitstellungen.


Physikalische Redundanz

Physikalische MQTT-Redundanz hilft, wenn ein oder zwei Knoten ausfällt und bis zu der Zeit, die Sie einen neuen Server oder der gleiche physische Server kommt lebendig zurück, der Cluster sollte voll funktionsfähig sein.


Funktionelle Redundanz

Mehr als die physikalische Überwachung der Knoten ist die Funktionsüberwachung entscheidend für die Clusterunterstützung SLA. Jeder und jeder Knoten sollte für alle überwacht werdenMQTFunktionen sowie die Reaktionsfähigkeit der Knoten. Diese Kontrollen müssen sowohl auf der Cluster-Ebene als auch auf der gesamten durchgeführt werden.


Wenn wir große MQTT-Cluster bereitstellen, sollten wir die Gesamtkonfiguration so haben, dass jeder Knoten Server 60 bis 70% der Gesamtlast. Damit ist die MQTT Cluster Gesundheit optimal. Über 80% hinausgehen wird Clusterversagen verursachen, wenn ein oder zwei Knoten während der Produktion ausfallen.


Das HA-Setup ist flexibel und kann auf jeder Cloud oder auf Premise-Servern mit einem diversifizierten Set vonDatenspeicherungund Load Balancer Optionen. Die Konfiguration im Lastausgleich hängt davon ab, wie die Verbindungen und Daten müssen ausgewogen werden. Allerdings hängt die beste Wahl auch davon ab, wie und wo die Cluster-Setup wird eingesetzt.

Sicherung Ihrer MQTT Installation

Die Gewährleistung der Sicherheit Ihrer MQTT-Installation ist entscheidend für den Schutz sensibler Daten und Aufrechterhaltung der Integrität Ihrer Anwendungen. Es ist nur durch effektivMQT SicherheitMaßnahmen, können wir nicht nur unsere Daten vor unbefugtem Zugriff schützen, sondern auch die Integrität der Daten im gesamten den gesamten Kommunikationsprozess. Dieser proaktive Ansatz ist unvermeidlich, um potenzielle Bedrohungen zu mildern und Sicherstellung eines nahtlosen Betriebs im IoT-Ökosystem.

Im Folgenden sind die wichtigsten Strategien zur Verbesserung der Sicherheit Ihrer MQTT-Installation :


  • Angemeldet bleiben- Ja. DurchführungTLS/SSL(Transport Layer Security/Secure Sockets Layer) um die Daten im Transit zwischen den Kunden und den Broker, verhindern das Eavesdropping und Tampering.
  • Authentifizierung- Überprüfen Sie die Identität der Kunden, die verbinden an den Broker durch starke UmsetzungMQT AuthentisierungMechanismen wie Benutzername/Passwort, OAuth, tokenbasierte Authentifizierung, etc.
  • Das ist nicht möglich.- Stellen Sie sicher, dass nur autorisierte Benutzer veröffentlichen oder abonnieren spezifische Themen durch die Einrichtung von Granular Access Control Lists (ACLs) zur Einschränkung des Clients Berechtigungen basierend auf Rollen.
  • Sichern Sie den Load Balancer- Schützen Sie den Lastausgleich gegen unbefugt Zugriff und Angriffe mit Sicherheitsmaßnahmen wie IP Whitelisting und Firewall-Regeln.
  • Kundenbezogene Daten- Beschränken Sie die Anzahl der gleichzeitigen Verbindungen und die Rate der Nachricht Veröffentlichung zur Minderung des Risikos von Denial-of-Service (DOS)-Angriffen.
  • Das ist der Weg.- Verfolgen und analysieren Sie den MQTT Traffic für ungewöhnlich Muster oder unberechtigter Zugriff Versuche durch die Nutzung von Netzwerk-Überwachungstools.
  • Schutz der Kommunikation- Aufbau eines virtuellen privaten Netzwerks (VPN) zu sichern intern Kommunikation zwischen MQTT-Broker und Kunden, Hinzufügen einer zusätzlichen Schutzschicht.

MQT Clustering auf Cloud


MQTT Cluster in AWS

Amazon Web Services bietet einen guten Satz von Optionen für die Hardware (EC2) Instanzen für Ihr MQTT Knoten des Clusters. AWS EC2 kommt mit einer Reihe von internen IP-Adressen, die verwendet werden müssen, um zu kommunizieren intern. Der elastische Lastausgleich hat die Möglichkeit, TCP-Last auf Port 1883 oder 8883 (für TLS) umzuleiten.

Elastic Load Balancer (ELB) der AWS sollte für den Lastausgleich verwendet werden. Aus den 4 Arten der Optionen ELB bietet, für MQTT muss der Netzlastausgleich konfiguriert werden. Die Netzlastwaage unterstützt TCP. BevywiseMQTT Broker( CrystalMQ) unterstützt den Benutzer Schnittstelle, die sein muss über den Application Load Balancer konfiguriert. Sie können jedoch den gleichen Netzlastausgleich für dieDashboard für das Internetauch.


MQTT High Verfügbarkeit in Azure

Azure Cloud bietet eine große Reihe von Werkzeugen, die Ihnen helfen, den MQTT Broker auf einem hoch redundant Architektur. Wie AWS gibt es VMs, zuverlässige Datenbankdienste und Azure Load Balancer, die verwendet werden können die erschwinglichsten MQTT-Cluster auf der Azure-Cloud in der Region Ihrer Wahl einzurichten. Azure, wie AWS bietet langfristiges Engagement basierende Rabattpreise, um Kosten auf den Servern zu sparen.

Detaillierte Schritt-für-Schritt-Anweisungen zur Einrichtung derAzure IoT High Wie man siehtAnwendung kann verwendet werden um Ihre Anwendungsproduktion fertig zu machen.


Hohe Verfügbarkeit Clustering in DigitalOcean

Seit einigen Jahren nutzen wir Digital Ocean für unsere Gastgeber. UnsereCloud Hosted MQTT BrokerBereitstellungen unterstützen Digital Ocean zusätzlich zu AWS. Wir haben eine tolle Zeit mit ihnen zu arbeiten. Digitaler Ozean bietet die kostengünstigsten Droplets (äquivalent zu EC2) für die Bereitstellung von MQTT Broker auf Ihrem bevorzugten OS. Der Satz des MQTT Servers ist gleich wie alle anderen Server. Der Netzlastwaager von Digital Ocean unterstützt die L3 / TCP Load Sharing zwischen den MQTT Servern dahinter.

Insgesamt, wenn Sie auf der Cloud-basierten Bereitstellungen suchen, würden wir empfehlen ein Ubuntu oder Redhat basierende Server für die Ausführung Ihrer MQTT-Instanzen und die MySQL oder PostgreSQL auf einem separaten Server oder Service wie RDS, wo die Redundanz der Datenschicht berücksichtigt wird.

MQTT High Availability on-premise


Windows NLB Setup:

Die meisten Unternehmen führen alle ihre Workloads auf einer Windows-basierten Umgebung aus. Wenn Sie einer von solche Unternehmen, dann sollte die Kombination von Windows Server und Network Load Balancer (NLB) bei der Erstellung eines robusten MQT Cluster für Ihre Produktionsumgebung.

NLB läuft als integraler Bestandteil aller Windows Server-Instanzen. Es gibt keine Notwendigkeit für einen separaten Satz von Server zum Ausführen der Lastwaagen. Allerdings muss eine spezielle Windows NLB-Konfiguration auf der Switch / Router Sie verwenden, um sicherzustellen, dass reibungslose Datenfreigabe mit allen Windows MQTT Broker läuft im Cluster. Wie bereits erwähnt, muss MySQL oder MSSQL auf einer separaten Reihe von Servern in entweder Master-Slave-Modus oder Multi Master. Wenn Sie auf Multi-Master laufen, müssen Sie möglicherweise die IDs einzigartig mit der ungerade Konfiguration auf den beiden DB-Instanzen.


Ubuntu Nginx Setup:

In der Linux-Umgebung benötigen wir zusätzliche Server für den Load Balancer. Der Lastausgleichsbedarf im Ausfallmodus konfiguriert werden, um die Zuverlässigkeit zu gewährleisten. Nginx ist die zuverlässigste und TCP-basierte Last Auswuchtung. Verweise auf das DetailNginx-Konfiguration Handbuchdie MQTT Cluster einrichten.


Datenbankkonfiguration:

Trotz der Anzahl der MQTT Brokers, die wir laufen, sollten wir die Fähigkeit haben, die Daten zu einem Sing Datenbank, an die sich alle Broker anschließen. Die Datenbank speichert den eingehenden Datenverkehr von alle Knoten, die es nahtloser macht, Daten innerhalb von Broker zu synchronisieren. Der Schlüsselvorteil davon Zentralisierte Speicherung ist, dass, unabhängig von der Verbindung des Clients mit jedem MQTT-Broker, es hilft in die Daten an alle verfügbaren Broker mit Hilfe von IBC zur Glättung des Publikations-Subscribe-Flows zu umgehen.

Betrachten Sie beispielsweise einen Cluster-Set mit 2 MQTT Brokers, die mit dem Lastwaager verbunden sind. und Datenbank. 'A'-Client, ein Publisher ist mit dem Broker 1 verbunden und 'B'-Client, ein Abonnent, ist mit dem Broker 2 durch Lastausgleich. Jetzt veröffentlicht 'A'-Client Daten im Thema mqt1, und 'B' ist ein Abonnement es. Nach der Einrichtung können MQTT Brokers miteinander sprechen und Daten aus der Datenbank über IBC teilen. Die Datenbank ermöglicht es Broker 2, die in Broker 1 erhaltenen Daten zu erhalten und an den abonnierten Client 'B' zu senden. Damit können alle Broker Daten empfangen und senden, unabhängig davon, mit wem der Kunde verbunden ist?

Übrigens ist es nicht zwingend notwendig, nur eine zentralisierte Lagerung zu haben. Durchführung eines Master/Slave für Ihr Datenspeicher wird auch Gewichtung basierend auf der Anforderung hinzufügen.

Bei der Auswahl Ihrer gewünschten Datenbank können Sie die Auswahl von MySQL oder PSQL berücksichtigen, da es sehr gut kann Guter Maßstab für so gebündelt hohe Verfügbarkeit. Insgesamt wird die verteilte Architektur robuster und robuster zuverlässiges Netzwerk, um den Verkehr von einer Vielzahl von Kunden zu bewältigen.

Sicherung der Datenkonsistenz und Gewährleistung einer reibungslosen Kommunikation über verteilte Knoten entscheidend für umfangreiche IoT-Implementierungen. Nur eine robuste MQTT Cluster-Architektur kann das Vertrauen in den hohen Datenverkehr verwalten, die Verfügbarkeit aufrecht erhalten und Echtzeitdaten ohne Unterbrechung liefern. Mit diesem Verstand, wir haben unsereMQTT Broker(CrystalMQ) widerstandsfähig bleiben, hochverfügbar und zuverlässig unter alle Umstände. Egal, ob Sie skalieren oder Feinabstimmung für missionskritische Anwendungen, wir haben Sie abgedeckt!

Geben Sie unseren MQTT Probieren Sie heute einen Versuch und erleben Sie die nahtlose Vernetzung für Ihre IoT-Bereitstellungen!