Grundlegendes zur Azure IoT Edge-Runtime und ihrer Architektur
Gilt für: IoT Edge 1.5 IoT Edge 1.4
Wichtig
IoT Edge 1.5 LTS und IoT Edge 1.4 LTS sind unterstützte Releases. Das Ende der Lebensdauer von IoT Edge 1.4 LTS wird am 12. November 2024 erreicht. Wenn Sie ein früheres Release verwenden, finden Sie weitere Informationen unter Aktualisieren von IoT Edge.
Die Azure IoT Edge-Runtime ist eine Sammlung von Programmen, die aus einem Gerät ein IoT Edge-Gerät machen. Die Sammlung der IoT Edge-Runtime-Komponenten ermöglicht IoT Edge-Geräten den Empfang von Code für die Ausführung im Edgebereich und das Kommunizieren der Ergebnisse.
Die IoT Edge-Runtime führt auf IoT Edge-Geräten die folgenden Funktionen aus:
Installieren und Aktualisieren von Workloads auf dem Gerät
Aufrechterhalten von Azure IoT Edge-Sicherheitsstandards auf dem Gerät
Sicherstellen, dass die IoT Edge-Module immer ausgeführt werden
Melden der Modulintegrität an die Cloud für die Remoteüberwachung
Verwalten der Kommunikation zwischen:
- Nachgeschalteten Geräten und IoT Edge-Geräten
- Modulen auf einem IoT Edge-Gerät
- Einem IoT Edge-Gerät und der Cloud
- IoT Edge-Geräte
Die Aufgaben der IoT Edge-Laufzeit fallen in zwei Kategorien: Kommunikation und Modulverwaltung. Diese beiden Rollen werden von zwei Komponenten ausgeführt, die Bestandteil der IoT Edge-Runtime sind. Der IoT Edge-Agent stellt die Module bereit und überwacht sie, während der IoT Edge-Hub für die Kommunikation verantwortlich ist.
Sowohl der IoT Edge-Agent als auch der IoT Edge-Hub sind Module und können mit jedem anderen auf einem IoT Edge-Gerät ausgeführten Modul verglichen werden. Manchmal werden sie auch als die Runtimemodule bezeichnet.
IoT Edge-Agent
Der IoT Edge-Agent ist eines der beiden Module, aus denen die Azure IoT Edge-Runtime besteht. Er ist für das Instanziieren von Modulen verantwortlich, stellt sicher, dass sie weiterhin ausgeführt werden, und meldet den Status der Module an IoT Hub. Diese Konfigurationsdaten werden als Eigenschaft des Modulzwillings des IoT Edge-Agents geschrieben.
Der IoT Edge-Sicherheits-Daemon startet den IoT Edge-Agent beim Starten des Geräts. Der Agent ruft den Modulzwilling von IoT Hub ab und überprüft das Bereitstellungsmanifest. Das Bereitstellungsmanifest ist eine JSON-Datei, die die Module deklariert, die gestartet werden müssen.
Jedes Element im Bereitstellungsmanifest enthält spezifische Informationen zu einem Modul und wird vom IoT Edge-Agent zum Steuern des Lebenszyklus des Moduls verwendet. Weitere Informationen zu den vom IoT Edge-Agent zur Steuerung der Module verwendeten Eigenschaften finden Sie unter Eigenschaften der Modulzwillinge von IoT Edge-Agent und IoT Edge-Hub.
Der IoT Edge-Agent sendet eine Runtimeantwort an IoT Hub. Im Folgenden sehen Sie eine Liste der möglichen Antworten:
- 200 – OK
- 400 – Die Bereitstellungskonfiguration ist falsch formatiert oder ungültig.
- 417 – Für das Gerät ist keine Bereitstellungskonfiguration festgelegt.
- 412 – Die Schemaversion der Bereitstellungskonfiguration ist ungültig.
- 406 – das IoT Edge-Gerät ist offline oder sendet keine Statusberichte.
- 500 – in der IoT Edge-Runtime ist ein Fehler aufgetreten.
Weitere Informationen zum Erstellen von Bereitstellungsmanifesten finden Sie unter Bereitstellen von Modulen und Einrichten von Routen in IoT Edge.
Sicherheit
Der IoT Edge-Agent hat eine wichtige Funktion für die Sicherheit eines IoT Edge-Geräts. Er überprüft beispielsweise das Image eines Moduls, bevor es gestartet wird.
Weitere Informationen zum Azure IoT Edge-Sicherheitsframework finden Sie in der Dokumentation zu IoT Edge Security Manager.
IoT Edge-Hub
Der IoT Edge-Hub ist das zweite Modul, aus dem die Azure IoT Edge-Runtime besteht. Er fungiert als lokaler Proxy für IoT Hub, indem er die gleichen Protokollendpunkte wie IoT Hub verfügbar macht. Diese Konsistenz bedeutet, dass Clients auf die gleiche Weise eine Verbindung mit der IoT Edge-Runtime wie mit IoT Hub herstellen können.
Der IoT Edge-Hub ist keine vollständige Version des lokal ausgeführten IoT Hub. Der IoT Edge-Hub delegiert einige Aufgaben im Hintergrund an IoT Hub. Der IoT Edge-Hub lädt beispielsweise bei seiner ersten Verbindung automatisch Autorisierungsinformationen von IoT Hub herunter, um einem Gerät die Verbindung zu ermöglichen. Nachdem die erste Verbindung hergestellt wurde, werden die Autorisierungsinformationen vom IoT Edge-Hub lokal zwischengespeichert. Alle anschließenden Verbindungen von diesem Gerät werden autorisiert, ohne dass noch mal Autorisierungsinformationen aus der Cloud heruntergeladen werden müssen.
Cloudkommunikation
Der IoT Edge-Hub optimiert die Anzahl der tatsächlich hergestellten Verbindungen mit der Cloud, um die von der IoT Edge-Lösung genutzte Bandbreite zu verringern. Der IoT Edge-Hub fasst logische Verbindungen von Modulen oder Downstreamgeräten in einer einzelnen physischen Verbindung mit der Cloud zusammen. Die Details dieses Vorgangs sind für den Rest der Lösung transparent. Clients können nicht erkennen, dass statt einer eigenen Verbindung mit der Cloud für alle Clients eine gemeinsame Verbindung verwendet wird. Der IoT Edge-Hub kann für die Upstreamkommunikation mit der Cloud unabhängig der von den nachgeschalteten Geräten verwendeten Protokolle entweder das AMQP- oder das MQTT-Protokoll verwenden. Der IoT Edge-Hub unterstützt aktuell jedoch nur die Kombination logischer Verbindungen in eine einzelne physische Verbindung mit AMQP als Upstreamprotokoll und den dazugehörigen Multiplexingfunktionen. AMQP ist das Standardupstreamprotokoll.
Der IoT Edge-Hub kann ermitteln, ob er mit IoT Hub verbunden ist. Wenn die Verbindung unterbrochen wird, speichert der IoT Edge-Hub Nachrichten oder Zwillingsaktualisierungen lokal. Sobald eine Verbindung wieder hergestellt wurde, werden alle Daten synchronisiert. Der Speicherort für diesen temporären Cache wird durch eine Eigenschaft des Modulzwillings des IoT Edge-Hubs festgelegt. Die Größe des Caches wird nicht begrenzt, solange die Speicherkapazität des Geräts ausreicht. Weitere Informationen finden Sie unter Offlinefunktionen.
Lokale Kommunikation
Der IoT Edge-Hub ermöglicht die lokale Kommunikation. Er ermöglicht die Kommunikation von Gerät zu Modul, von Modul zu Modul und von Gerät zu Gerät durch Verwendung von Nachrichtenbrokern, damit Geräte und Module unabhängig voneinander bleiben. Der IoT Edge Hub unterstützt die Nachrichtenweiterleitungsfeatures, die von IoT Hub unterstützt werden.
Verwenden des Routings
Der erste Brokermechanismus verwendet dieselben Routingfeatures wie IoT Hub, um anzugeben, wie Nachrichten zwischen Geräten oder Modulen übermittelt werden. Geräte oder Module geben zuerst die Eingaben an, für die sie Nachrichten akzeptieren, sowie die Ausgaben, an die sie Nachrichten schreiben. Ein Lösungsentwickler kann Nachrichten dann zwischen einer Quelle, z. B. Ausgaben, und einem Ziel, z. B. Eingaben, mit möglichen Filtern weiterleiten.
Routing kann von Geräten oder Modulen genutzt werden, die mit den Azure IoT-Geräte-SDKs entweder über das AMQP- oder das MQTT-Protokoll erstellt wurden. Alle IoT Hub-Messagingprimitive, z. B. Telemetrie, direkte Methoden, C2D oder Zwillinge, werden unterstützt. Die Kommunikation über benutzerdefinierte Themen wird jedoch nicht unterstützt.
Weitere Informationen zu Routen finden Sie unter Bereitstellen von Modulen und Einrichten von Routen in IoT Edge.
Verfügbare Brokermechanismusfeatures:
Features | Routing |
---|---|
D2C-Telemetrie | ✔ |
Lokale Telemetrie | ✔ |
DirectMethods | ✔ |
Zwilling | ✔ |
C2D für Geräte | ✔ |
Sortieren | ✔ |
Filterung | ✔ |
Benutzerdefinierte Themen | |
Gerät zu Gerät | |
Lokale Übertragung |
Herstellen einer Verbindung zum IoT Edge-Hub
Der IoT Edge-Hub akzeptiert Verbindungen von Geräte- oder Modulclients, entweder über das MQTT-Protokoll oder über das AMQP-Protokoll.
Hinweis
Der IoT Edge-Hub unterstützt Clients, die sich über MQTT oder AMQP verbinden. Clients, die HTTP verwenden, werden jedoch nicht unterstützt.
Wenn ein Client eine Verbindung zum IoT Edge-Hub herstellt, geschieht Folgendes:
- Wenn Transport Layer Security (TLS) verwendet wird (empfohlen), wird ein TLS-Kanal erstellt, um die verschlüsselte Kommunikation zwischen dem Client und dem IoT Edge-Hub zu ermöglichen.
- Der Client sendet Authentifizierungsinformationen an den IoT Edge-Hub, um sich zu identifizieren.
- Basierend auf der Autorisierungsrichtlinie autorisiert der IoT Edge-Hub die Verbindung oder lehnt sie ab.
Sichere Verbindungen (TLS)
Der IoT Edge-Hub akzeptiert standardmäßig nur mit Transport Layer Security (TLS) gesicherte Verbindungen, z. B. verschlüsselte Verbindungen, die ein Drittanbieter nicht entschlüsseln kann.
Wenn ein Client auf Port 8883 (MQTTS) oder 5671 (AMQPS) eine Verbindung zum IoT Edge-Hub herstellt, muss ein TLS-Kanal erstellt werden. Während des TLS-Handshake sendet der IoT Edge-Hub seine Zertifikatkette, die der Client überprüfen muss. Das Stammzertifikat des IoT Edge-Hub muss als vertrauenswürdiges Zertifikat auf dem Client installiert sein, um die Zertifikatkette überprüfen zu können. Wenn das Stammzertifikat nicht vertrauenswürdig ist, wird die Clientbibliothek vom IoT Edge-Hub mit einem Zertifikatüberprüfungsfehler abgelehnt.
Die für die Installation des Stammzertifikats des Brokers auf Geräteclients zu befolgenden Schritte werden unter Konfigurieren eines IoT Edge-Geräts als transparentes Gateway und unter Vorbereiten eines nachgeschalteten Geräts beschrieben. Module können dasselbe Stammzertifikat wie der IoT Edge-Hub nutzen, indem die IoT Edge-Daemon-API verwendet wird.
Authentifizierung
Der IoT Edge Hub akzeptiert nur Verbindungen von Geräten oder Modulen, die über eine IoT Hub-Identität verfügen. Beispielsweise diejenigen, die im IoT Hub registriert wurden und eine der drei Clientauthentifizierungsmethoden von IoT-Hub unterstützt haben, um ihre Identität zu beweisen: Symmetrische Schlüsselauthentifizierung, selbstsignierte X.509 Authentifizierung, von Zertifizierungsstelle signierte X.509 Authentifizierung. Diese IoT Hub-Identitäten können lokal vom IoT Edge-Hub überprüft werden, sodass Verbindungen auch offline hergestellt werden können.
IoT Edge-Module unterstützen aktuell nur die Authentifizierung mit symmetrischen Schlüsseln.
Autorisierung
Es wird überprüft, ob ein Client zu den in IoT Hub definierten vertrauenswürdigen Clients gehört. Diese vertrauenswürdigen Clients werden angegeben, indem Beziehungen in IoT Hub eingerichtet werden (übergeordnet/untergeordnet oder Gerät/Modul). Wenn ein Modul in IoT Edge erstellt wird, wird automatisch eine Vertrauensstellungsbeziehung zwischen diesem Modul und dem dazugehörigen IoT Edge-Gerät hergestellt. Dies ist das einzige vom Routingbrokermechanismus unterstützte Autorisierungsmodell.
Remotekonfiguration
Der IoT Edge-Hub wird vollständig von der Cloud gesteuert. Die Konfiguration wird von IoT Hub über den dazugehörigen Modulzwilling abgerufen. Deshalb enthält der Modulzwilling die gewünschte Eigenschaft „routes“, die deklariert, wie Nachrichten innerhalb einer Bereitstellung übergeben werden. Weitere Informationen über Routen finden Sie unter Deklarieren von Routen.
Außerdem können weitere Konfigurationen über die Einrichtung von Umgebungsvariablen für den IoT Edge-Hub vorgenommen werden.
Telemetrie der Laufzeitqualität
IoT Edge sammelt anonyme Telemetriedaten aus der Host-Laufzeit und Systemmodulen zur Verbesserung der Produktqualität. Diese Informationen werden als „Telemetrie der Laufzeitqualität“ bezeichnet. Die gesammelten Telemetriedaten werden vom IoT Edge-Agent in regelmäßigen Abständen als Gerät-zu-Cloud-Nachrichten an IoT Hub gesendet. Diese Nachrichten werden in der regulären Telemetrie der Kunden nicht angezeigt und verbrauchen kein Nachrichtenkontingent.
Der IoT Edge-Agent und der Hub generieren Metriken, die Sie sammeln können, um die Geräteleistung zu verstehen. Eine Teilmenge dieser Metriken wird vom IoT Edge-Agent im Rahmen der Telemetrie der Laufzeitqualität gesammelt. Die für die Telemetrie der Laufzeitqualität gesammelten Metriken werden mit dem Tag ms_telemetry
gekennzeichnet. Informationen zu allen verfügbaren Metriken finden Sie unter Zugreifen auf integrierte Metriken.
Alle persönlich oder unternehmensweit identifizierbaren Informationen, z. B. Geräte- und Modulnamen, werden vor dem Hochladen entfernt, um die anonyme Natur der Telemetrie der Laufzeitqualität sicherzustellen.
Der IoT Edge-Agent sammelt die Telemetriedaten stündlich und sendet alle 24 Stunden eine einzige Nachricht an IoT Hub.
Wenn Sie das Senden von Laufzeittelemetriedaten von Ihren Geräten deaktivieren möchten, gibt es dafür zwei Möglichkeiten:
- Legen Sie die
SendRuntimeQualityTelemetry
-Umgebungsvariable auffalse
für edgeAgent fest - Deaktivieren Sie die Option während der Bereitstellung im Azure-Portal.