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-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:
Wenn alle Broker gut laufen, gibt es eine Notwendigkeit fürInteressierte Medien (IBC):
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.
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.
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.
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.
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 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.
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.
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 :
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.
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.
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.
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.
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.
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!