Grundlegendes zur Azure IoT Edge-Runtime und ihrer ArchitekturUnderstand the Azure IoT Edge runtime and its architecture

Die Azure IoT Edge-Runtime ist eine Sammlung von Programmen, die aus einem Gerät ein IoT Edge-Gerät machen.The IoT Edge runtime is a collection of programs that turn a device into an IoT Edge device. 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.Collectively, the IoT Edge runtime components enable IoT Edge devices to receive code to run at the edge and communicate the results.

Die IoT Edge-Runtime führt auf IoT Edge-Geräten die folgenden Funktionen aus:The IoT Edge runtime is responsible for the following functions on IoT Edge devices:

  • Installieren und Aktualisieren von Workloads auf dem GerätInstall and update workloads on the device.
  • Aufrechterhalten von Azure IoT Edge-Sicherheitsstandards auf dem GerätMaintain Azure IoT Edge security standards on the device.
  • Sicherstellen, dass die IoT Edge-Module immer ausgeführt werdenEnsure that IoT Edge modules are always running.
  • Melden der Modulintegrität an die Cloud für die RemoteüberwachungReport module health to the cloud for remote monitoring.
  • Verwalten der Kommunikation zwischen nachgeschalteten Geräten und IoT Edge-Geräten.Manage communication between downstream devices and IoT Edge devices.
  • Verwalten der Kommunikation zwischen Modulen auf dem IoT Edge-Gerät.Manage communication between modules on the IoT Edge device.
  • Verwalten der Kommunikation zwischen dem IoT Edge-Gerät und der Cloud.Manage communication between the IoT Edge device and the cloud.

Die IoT Edge-Runtime übermittelt an IoT Hub Einblicke und Informationen zur Modulintegrität

Die Aufgaben der IoT Edge-Laufzeit fallen in zwei Kategorien: Kommunikation und Modulverwaltung.The responsibilities of the IoT Edge runtime fall into two categories: communication and module management. Diese beiden Rollen werden von zwei Komponenten ausgeführt, die Bestandteil der IoT Edge-Runtime sind.These two roles are performed by two components that are part of the IoT Edge runtime. Der IoT Edge-Hub ist für die Kommunikation verantwortlich, während der IoT Edge-Agent die Module bereitstellt und überwacht. The IoT Edge hub is responsible for communication, while the IoT Edge agent deploys and monitors the modules.

Der IoT Edge-Hub und der IoT Edge-Agent sind Module wie jedes andere auf einem IoT Edge-Gerät ausgeführte Modul.Both the IoT Edge hub and the IoT Edge agent are modules, just like any other module running on an IoT Edge device. Manchmal werden sie auch als die Runtimemodule bezeichnet.They're sometimes referred to as the runtime modules.

IoT Edge-HubIoT Edge hub

Der IoT Edge-Hub ist eines der beiden Module, aus denen die Azure IoT Edge-Runtime besteht.The IoT Edge hub is one of two modules that make up the Azure IoT Edge runtime. Er fungiert als lokaler Proxy für IoT Hub, indem er die gleichen Protokollendpunkte wie IoT Hub verfügbar macht.It acts as a local proxy for IoT Hub by exposing the same protocol endpoints as IoT Hub. Diese Konsistenz bedeutet, dass Clients (ob Geräte oder Module) auf die gleiche Weise eine Verbindung mit der IoT Edge-Laufzeit wie mit IoT Hub herstellen können.This consistency means that clients (whether devices or modules) can connect to the IoT Edge runtime just as they would to IoT Hub.

Hinweis

Der IoT Edge-Hub unterstützt Clients, die sich über MQTT oder AMQP verbinden.IoT Edge hub supports clients that connect using MQTT or AMQP. Clients, die HTTP verwenden, werden jedoch nicht unterstützt.It does not support clients that use HTTP.

Der IoT Edge-Hub ist keine vollständige Version des lokal ausgeführten IoT Hub.The IoT Edge hub isn't a full version of IoT Hub running locally. Der IoT Edge-Hub delegiert einige Aufgaben im Hintergrund an IoT Hub.IoT Edge hub silently delegates some tasks to IoT Hub. Beispielsweise leitet der IoT Edge-Hub Authentifizierungsanforderungen an IoT Hub weiter, wenn ein Gerät zum ersten Mal eine Verbindung herzustellen versucht.For example, IoT Edge hub forwards authentication requests to IoT Hub when a device first tries to connect. Nachdem die erste Verbindung hergestellt wurde, werden die Sicherheitsinformationen vom IoT Edge-Hub lokal zwischengespeichert.After the first connection is established, security information is cached locally by IoT Edge hub. Zukünftige Verbindungen von diesem Gerät sind zulässig, ohne dass eine erneute Authentifizierung bei der Cloud erforderlich ist.Future connections from that device are allowed without having to authenticate to the cloud again.

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.To reduce the bandwidth that your IoT Edge solution uses, the IoT Edge hub optimizes how many actual connections are made to the cloud. Der IoT Edge-Hub fasst logische Verbindungen von Modulen oder Downstreamgeräten in einer einzelnen physischen Verbindung mit der Cloud zusammen.IoT Edge hub takes logical connections from modules or downstream devices and combines them for a single physical connection to the cloud. Die Details dieses Vorgangs sind für den Rest der Lösung transparent.The details of this process are transparent to the rest of the solution. Clients können nicht erkennen, dass statt einer eigenen Verbindung mit der Cloud für alle Clients eine gemeinsame Verbindung verwendet wird.Clients think they have their own connection to the cloud even though they are all being sent over the same connection.

Der IoT Edge-Hub ist ein Gateway zwischen physischen Geräten und IoT Hub

Der IoT Edge-Hub kann ermitteln, ob er mit IoT Hub verbunden ist.IoT Edge hub can determine whether it's connected to IoT Hub. Wenn die Verbindung unterbrochen wird, speichert der IoT Edge-Hub Nachrichten oder Zwillingsaktualisierungen lokal.If the connection is lost, IoT Edge hub saves messages or twin updates locally. Sobald eine Verbindung wieder hergestellt wurde, werden alle Daten synchronisiert.Once a connection is reestablished, it syncs all the data. Der Speicherort für diesen temporären Cache wird durch eine Eigenschaft des Modulzwillings des IoT Edge-Hubs festgelegt.The location used for this temporary cache is determined by a property of the IoT Edge hub's module twin. Die Größe des Caches wird nicht begrenzt, solange die Speicherkapazität des Geräts ausreicht.The size of the cache is not capped and will grow as long as the device has storage capacity. Weitere Informationen finden Sie unter Offlinefunktionen. For more information, see Offline capabilities.

ModulkommunikationModule communication

Der IoT Edge-Hub ermöglicht die Kommunikation zwischen Modulen.IoT Edge hub facilitates module to module communication. Die Verwendung des IoT Edge-Hubs als Nachrichtenbroker sorgt dafür, dass die Module voneinander unabhängig bleiben.Using IoT Edge hub as a message broker keeps modules independent from each other. Module müssen nur die Eingänge, an denen sie Nachrichten akzeptieren, und die Ausgänge, an die sie Nachrichten schreiben, angeben.Modules only need to specify the inputs on which they accept messages and the outputs to which they write messages. Ein Lösungsentwickler kann diese Eingänge und Ausgänge zusammenfügen, damit die Module Daten in der speziellen Reihenfolge für diese Lösung verarbeiten.A solution developer can stitch these inputs and outputs together so that the modules process data in the order specific to that solution.

Der IoT Edge-Hub ermöglicht die Kommunikation zwischen Modulen.

Ein Modul ruft zum Senden von Daten an den IoT Edge-Hub die SendEventAsync-Methode auf.To send data to the IoT Edge hub, a module calls the SendEventAsync method. Das erste Argument gibt an, an welchen Ausgang die Nachricht gesendet werden soll.The first argument specifies on which output to send the message. Mit dem folgenden Pseudocode wird eine Nachricht an output1 gesendet:The following pseudocode sends a message on output1:

ModuleClient client = await ModuleClient.CreateFromEnvironmentAsync(transportSettings);
await client.OpenAsync();
await client.SendEventAsync("output1", message);

Um eine Nachricht zu empfangen, registrieren Sie einen Rückruf, der eingehende Nachrichten an einem speziellen Eingang verarbeitet.To receive a message, register a callback that processes messages coming in on a specific input. Mit dem folgenden Pseudocode wird die Funktion „messageProcessor“ registriert, die für die Verarbeitung aller an input1 empfangenen Nachrichten verwendet werden soll:The following pseudocode registers the function messageProcessor to be used for processing all messages received on input1:

await client.SetInputMessageHandlerAsync("input1", messageProcessor, userContext);

Weitere Informationen zur ModuleClient-Klasse und ihre Kommunikationsmethoden finden Sie in der API-Referenz für Ihre bevorzugte SDK-Sprache: C#, C, Python, Java oder Node.js.For more information about the ModuleClient class and its communication methods, see the API reference for your preferred SDK language: C#, C, Python, Java, or Node.js.

Der Lösungsentwickler muss die Regeln angeben, die festlegen, wie Nachrichten vom IoT Edge-Hub zwischen Modulen übergeben werden.The solution developer is responsible for specifying the rules that determine how IoT Edge hub passes messages between modules. Routingregeln werden in der Cloud definiert und an den IoT Edge-Hub in dessen Modulzwilling übertragen.Routing rules are defined in the cloud and pushed down to IoT Edge hub in its module twin. Zum Definieren von Routen zwischen Modulen in Azure IoT Edge wird die gleiche Syntax wie für IoT Hub-Routen verwendet.The same syntax for IoT Hub routes is used to define routes between modules in Azure IoT Edge. Weitere Informationen finden Sie unter Informationen zum Bereitstellen von Modulen und Einrichten von Routen in IoT Edge.For more information, see Learn how to deploy modules and establish routes in IoT Edge.

Das Routing zwischen Modulen erfolgt über den IoT Edge-Hub

IoT Edge-AgentIoT Edge agent

Der IoT Edge-Agent ist das zweite Modul, aus dem die Azure IoT Edge-Laufzeit besteht.The IoT Edge agent is the other module that makes up the Azure IoT Edge runtime. 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.It is responsible for instantiating modules, ensuring that they continue to run, and reporting the status of the modules back to IoT Hub. Diese Konfigurationsdaten werden als Eigenschaft des Modulzwillings des IoT Edge-Agents geschrieben.This configuration data is written as a property of the IoT Edge agent module twin.

Der IoT Edge-Sicherheits-Daemon startet den IoT Edge-Agent beim Starten des Geräts.The IoT Edge security daemon starts the IoT Edge agent on device startup. Der Agent ruft den Modulzwilling von IoT Hub ab und überprüft das Bereitstellungsmanifest.The agent retrieves its module twin from IoT Hub and inspects the deployment manifest. Das Bereitstellungsmanifest ist eine JSON-Datei, die die Module deklariert, die gestartet werden müssen.The deployment manifest is a JSON file that declares the modules that need to be started.

Jedes Element im Bereitstellungsmanifest enthält spezifische Informationen zu einem Modul und wird vom IoT Edge-Agent zum Steuern des Lebenszyklus des Moduls verwendet.Each item in the deployment manifest contains specific information about a module and is used by the IoT Edge agent for controlling the module's lifecycle. Einige der wichtigeren Eigenschaften lauten:Some of the more interesting properties are:

  • settings.image: der Container, der vom IoT Edge-Agent zum Starten des Moduls verwendet wird.settings.image – The container image that the IoT Edge agent uses to start the module. Der IoT Edge-Agent muss mit den Anmeldeinformationen für die Containerregistrierung konfiguriert werden, wenn das Image mit einem Kennwort geschützt ist.The IoT Edge agent must be configured with credentials for the container registry if the image is protected by a password. Anmeldeinformationen für die Containerregistrierung können remote mit dem Bereitstellungsmanifest konfiguriert werden oder auf dem IoT Edge-Gerät selbst durch Aktualisieren der Datei config.yaml im IoT Edge-Programmordner.Credentials for the container registry can be configured remotely using the deployment manifest, or on the IoT Edge device itself by updating the config.yaml file in the IoT Edge program folder.

  • settings.createOptions: Eine Zeichenfolge, die beim Starten des Containers eines Moduls direkt an den Moby-Container-Daemon übergeben wird.settings.createOptions – A string that is passed directly to the Moby container daemon when starting a module's container. Das Hinzufügen von Optionen in dieser Eigenschaft ermöglicht erweiterte Konfigurationen, z. B. Portweiterleitung oder das Bereitstellen von Volumes im Container eines Moduls.Adding options in this property allows for advanced configurations like port forwarding or mounting volumes into a module's container.  

  • status: der Status, in den der IoT Edge-Agent das Modul versetzt.status – The state in which the IoT Edge agent places the module. Dieser Wert wird in der Regel auf running festgelegt, da die meisten Personen möchten, dass der IoT Edge-Agent alle Module auf dem Gerät sofort startet.Usually, this value is set to running as most people want the IoT Edge agent to immediately start all modules on the device. Sie können jedoch festlegen, dass der Anfangsstatus eines Moduls „Beendet“ lautet, und den IoT Edge-Agent zu einem zukünftigen Zeitpunkt zum Starten eines Moduls auffordern.However, you could specify the initial state of a module to be stopped and wait for a future time to tell the IoT Edge agent to start a module. Der IoT Edge-Agent meldet der Cloud den Status jedes Moduls in den gemeldeten Eigenschaften. The IoT Edge agent reports the status of each module back to the cloud in the reported properties. Weicht die gemeldete Eigenschaft von der gewünschten Eigenschaft ab, ist dies ein Indikator für ein fehlerhaftes Gerät.A difference between the desired property and the reported property is an indicator of a misbehaving device. Die unterstützten Status lauten:The supported statuses are:

    • HerunterladenDownloading
    • Wird ausgeführtRunning
    • FehlerhaftUnhealthy
    • FehlerFailed
    • BeendetStopped
  • restartPolicy: legt fest, wie der IoT Edge-Agent ein Modul neu startet.restartPolicy – How the IoT Edge agent restarts a module. Mögliche Werte sind:Possible values include:

    • never – Der IoT Edge-Agent führt niemals einen Neustart des Moduls aus.never – The IoT Edge agent never restarts the module.
    • on-failure – Wenn das Modul abstürzt, wird es vom IoT Edge-Agent neu gestartet.on-failure - If the module crashes, the IoT Edge agent restarts it. Wenn das Modul ordnungsgemäß heruntergefahren wird, führt der IoT Edge-Agent keinen Neustart des Moduls aus.If the module shuts down cleanly, the IoT Edge agent doesn't restart it.
    • on-unhealthy – Wenn das Modul abstürzt oder als fehlerhaft betrachtet wird, startet es der IoT Edge-Agent neu.on-unhealthy - If the module crashes or is considered unhealthy, the IoT Edge agent restarts it.
    • always – Wenn das Modul abstürzt, als fehlerhaft betrachtet oder auf irgendeine Weise heruntergefahren wird, startet es der IoT Edge-Agent neu.always - If the module crashes, is considered unhealthy, or shuts down in any way, the IoT Edge agent restarts it.
  • imagePullPolicy – Gibt an, ob der IoT Edge-Agent versucht, das neueste Image für ein Modul automatisch abzurufen.imagePullPolicy - Whether the IoT Edge agent attempts to pull the latest image for a module automatically or not. Wenn Sie keinen Wert angeben, ist der Standardwert onCreate.If you don't specify a value, the default is onCreate. Mögliche Werte sind:Possible values include:

    • on-create – Wenn ein Modul gestartet oder basierend auf einem neuen Bereitstellungsmanifest aktualisiert wird, versucht der IoT Edge-Agent, das Modulimage aus der Containerregistrierung zu pullen.on-create - When starting a module or updating a module based on a new deployment manifest, the IoT Edge agent will attempt to pull the module image from the container registry.
    • never – Der IoT Edge-Agent wird niemals versuchen, das Modulimage aus der Containerregistrierung zu pullen.never - The IoT Edge agent will never attempt to pull the module image from the container registry. Mit dieser Konfiguration können Sie das Modulimage auf das Gerät kopieren und alle Imageaktualisierungen selbst verwalten.With this configuration, then you're responsible for getting the module image onto the device and managing any image updates.

Der IoT Edge-Agent sendet eine Runtimeantwort an IoT Hub.The IoT Edge agent sends runtime response to IoT Hub. Im Folgenden sehen Sie eine Liste der möglichen Antworten:Here is a list of possible responses:

  • 200 – OK200 - OK
  • 400 – Die Bereitstellungskonfiguration ist falsch formatiert oder ungültig.400 - The deployment configuration is malformed or invalid.
  • 417 – Für das Gerät ist keine Bereitstellungskonfiguration festgelegt.417 - The device doesn't have a deployment configuration set.
  • 412 – Die Schemaversion der Bereitstellungskonfiguration ist ungültig.412 - The schema version in the deployment configuration is invalid.
  • 406 – das IoT Edge-Gerät ist offline oder sendet keine Statusberichte.406 - The IoT Edge device is offline or not sending status reports.
  • 500 – in der IoT Edge-Runtime ist ein Fehler aufgetreten.500 - An error occurred in the IoT Edge runtime.

Weitere Informationen finden Sie unter Informationen zum Bereitstellen von Modulen und Einrichten von Routen in IoT Edge.For more information, see Learn how to deploy modules and establish routes in IoT Edge.

SicherheitSecurity

Der IoT Edge-Agent hat eine wichtige Funktion für die Sicherheit eines IoT Edge-Geräts.The IoT Edge agent plays a critical role in the security of an IoT Edge device. Er überprüft beispielsweise das Image eines Moduls, bevor es gestartet wird.For example, it performs actions like verifying a module's image before starting it.

Weitere Informationen zum Azure IoT Edge-Sicherheitsframework finden Sie in der Dokumentation zu IoT Edge Security Manager.For more information about the Azure IoT Edge security framework, read about the IoT Edge security manager.

Nächste SchritteNext steps

Grundlegendes zu Azure IoT Edge-ModulenUnderstand Azure IoT Edge modules