Inzicht in Azure IoT Edge runtime en de architectuur ervan
Van toepassing op:
IoT Edge 1,1 andere versies: IOT Edge 1,2
Van toepassing op:
IoT Edge 1,2 andere versies: IOT Edge 1,1
De IoT Edge-runtime is een verzameling programma's die ervoor zorgt dat u een apparaat als een IoT Edge-apparaat kunt gebruiken. Gezamenlijk zorgen de IoT Edge runtime-onderdelen ervoor dat IoT Edge-apparaten code kunnen ontvangen om aan de rand te worden uitgevoerd en de resultaten te communiceren.
De IoT Edge runtime is verantwoordelijk voor de volgende functies op IoT Edge apparaten:
Workloads op het apparaat installeren en bijwerken.
De Azure IoT Edge-beveiligingsstandaarden op het apparaat onderhouden.
Zorg ervoor IoT Edge modules altijd worden uitgevoerd.
De status van de module aan de cloud rapporteren voor externe bewaking.
De communicatie tussen downstreamapparaten en IoT Edge beheren.
De communicatie tussen modules op een IoT Edge beheren.
De communicatie tussen een IoT Edge apparaat en de cloud beheren.
- De communicatie tussen IoT Edge beheren.

De verantwoordelijkheden van de IoT Edge runtime vallen in twee categorieën: communicatie en modulebeheer. Deze twee rollen worden uitgevoerd door twee onderdelen die deel uitmaken van de IoT Edge runtime. De IoT Edge agent implementeert en bewaakt de modules, terwijl de IoT Edge hub verantwoordelijk is voor communicatie.
Zowel de IoT Edge agent als de IoT Edge hub zijn modules, net als elke andere module die wordt uitgevoerd op een IoT Edge apparaat. Ze worden ook wel de runtimemodules genoemd.
IoT Edge agent
De IoT Edge agent is een van de twee modules die de Azure IoT Edge runtime. Het is verantwoordelijk voor het instantiëren van modules, ervoor zorgen dat ze blijven worden uitgevoerd en het rapporteren van de status van de modules aan IoT Hub. Deze configuratiegegevens worden geschreven als een eigenschap van de IoT Edge agentmodule dubbel.
De IoT Edge de beveiligingsdeemon start de IoT Edge agent bij het opstarten van het apparaat. De agent haalt de module dubbel op uit IoT Hub en inspecteert het implementatiemanifest. Het implementatiemanifest is een JSON-bestand dat de modules declareert die moeten worden gestart.
Elk item in het implementatiemanifest bevat specifieke informatie over een module en wordt gebruikt door de IoT Edge-agent voor het beheren van de levenscyclus van de module. Voor meer informatie over alle eigenschappen die door de IoT Edge-agent worden gebruikt voor het beheer van modules, leest u over de eigenschappen van de IoT Edge-agent en IoT Edge hub-module twins.
De IoT Edge verzendt runtime-reactie naar IoT Hub. Hier is een lijst met mogelijke antwoorden:
- 200 - OK
- 400: de implementatieconfiguratie is ongeldig of ongeldig.
- 417- Het apparaat heeft geen implementatieconfiguratieset.
- 412: de schemaversie in de implementatieconfiguratie is ongeldig.
- 406- Het IoT Edge is offline of verstuurt geen statusrapporten.
- 500: er is een fout opgetreden in de IoT Edge runtime.
Zie Meer informatie over het implementeren van modules en het maken van routes in IoT Edge voor meer informatie over het maken van implementatiemanifests.
Beveiliging
De IoT Edge-agent speelt een cruciale rol in de beveiliging van een IoT Edge apparaat. Er worden bijvoorbeeld acties uitgevoerd zoals het verifiëren van de afbeelding van een module voordat deze wordt uitgevoerd.
Meer informatie over het Azure IoT Edge security framework vindt u in IoT Edge security manager.
IoT Edge hub
De IoT Edge hub is de andere module waar de runtime Azure IoT Edge is. Het fungeert als een lokale proxy voor IoT Hub door dezelfde protocol-eindpunten weer te geven als IoT Hub. Deze consistentie betekent dat clients verbinding kunnen maken met de IoT Edge runtime, net zoals ze zouden IoT Hub.
De IoT Edge hub is geen volledige versie van de IoT Hub lokaal wordt uitgevoerd. IoT Edge hub delegeert een aantal taken op de IoT Hub. Zo downloadt IoT Edge hub automatisch autorisatiegegevens van IoT Hub bij de eerste verbinding, zodat een apparaat verbinding kan maken. Nadat de eerste verbinding tot stand is gebracht, worden autorisatiegegevens lokaal in de cache opgeslagen door IoT Edge hub. Toekomstige verbindingen vanaf dat apparaat worden geautoriseerd zonder dat autorisatiegegevens opnieuw moeten worden gedownload uit de cloud.
Cloudcommunicatie
Om de bandbreedte te verminderen die uw IoT Edge oplossing gebruikt, optimaliseert IoT Edge hub hoeveel werkelijke verbindingen er met de cloud worden gemaakt. IoT Edge hub maakt logische verbindingen van modules of downstreamapparaten en combineert deze voor één fysieke verbinding met de cloud. De details van dit proces zijn transparant voor de rest van de oplossing. Klanten denken dat ze hun eigen verbinding met de cloud hebben, ook al worden ze allemaal via dezelfde verbinding verzonden. De IoT Edge hub kan het AMQP- of MQTT-protocol gebruiken om upstream te communiceren met de cloud, onafhankelijk van protocollen die worden gebruikt door downstreamapparaten. De IoT Edge-hub ondersteunt momenteel echter alleen het combineren van logische verbindingen in één fysieke verbinding met behulp van AMQP als upstream-protocol en de mogelijkheden voor multiplexing. AMQP is het standaard upstream-protocol.

IoT Edge hub kan bepalen of deze is verbonden met IoT Hub. Als de verbinding is verloren, IoT Edge de hub berichten of dubbele updates lokaal op. Zodra een verbinding opnieuw is gemaakt, worden alle gegevens gesynchroniseerd. De locatie die voor deze tijdelijke cache wordt gebruikt, wordt bepaald door een eigenschap van IoT Edge module dubbel van de hub. De grootte van de cache wordt niet afgekapt en wordt groter zolang het apparaat opslagcapaciteit heeft. Zie Offlinemogelijkheden voor meer informatie.
Modulecommunicatie
IoT Edge-hub vereenvoudigt de communicatie tussen modules. Door IoT Edge hub als berichtenbroker te gebruiken, blijven modules onafhankelijk van elkaar. Modules hoeven alleen de invoer op te geven waarmee de berichten worden geaccepteerd en de uitvoer waarmee ze berichten schrijven. Een ontwikkelaar van oplossingen kan deze invoer en uitvoer samenbrengen, zodat de modules gegevens verwerken in de volgorde die specifiek is voor die oplossing.

Voor het verzenden van gegevens naar IoT Edge hub roept een module de SendEventAsync-methode aan. Het eerste argument geeft aan op welke uitvoer het bericht moet worden verzenden. Met de volgende pseudocode wordt een bericht naar output1 gestuurd:
ModuleClient client = await ModuleClient.CreateFromEnvironmentAsync(transportSettings);
await client.OpenAsync();
await client.SendEventAsync("output1", message);
Als u een bericht wilt ontvangen, registreert u een callback die berichten verwerkt die binnen komen via een specifieke invoer. Met de volgende pseudocode wordt de functie messageProcessor geregistreerd die moet worden gebruikt voor het verwerken van alle berichten die bij invoer zijn ontvangen1:
await client.SetInputMessageHandlerAsync("input1", messageProcessor, userContext);
Zie de API-verwijzing voor de SDK-taal van uw voorkeur: C#, C, Python, JavaofNode.jsvoor meer informatie over de moduleclientklasse en de communicatiemethoden.
De ontwikkelaar van de oplossing is verantwoordelijk voor het opgeven van de regels die bepalen hoe IoT Edge hub berichten tussen modules doorgeeft. Routeringsregels worden gedefinieerd in de cloud en naar de IoT Edge hub in de module dubbel ge pusht. Dezelfde syntaxis voor IoT Hub routes wordt gebruikt voor het definiëren van routes tussen modules in Azure IoT Edge. Zie Meer informatie over het implementeren van modules en het maken van routes in IoT Edge.

Lokale communicatie
IoT Edge hub faciliteert lokale communicatie. Hiermee kunt u apparaat-naar-module-, module-naar-module-, apparaat-naar-apparaat-communicatie mogelijk maken door berichten te brokeren om apparaten en modules onafhankelijk van elkaar te houden.
Notitie
De functie MQTT Broker is beschikbaar als openbare preview met IoT Edge versie 1.2. Deze moet expliciet zijn ingeschakeld.
De IoT Edge hub ondersteunt twee brokeringmechanismen:
- De functies voor berichtroutering die worden ondersteund door IoT Hub en,
- Een algemene MQTT-broker die voldoet aan de MQTT-standaard v3.1.1
Routering gebruiken
Het eerste mechanisme voor brokering maakt gebruik van dezelfde routeringsfuncties als IoT Hub om op te geven hoe berichten tussen apparaten of modules worden doorgegeven. De eerste apparaten of modules geven de invoer op waarop ze berichten accepteren en de uitvoer waarop ze berichten schrijven. Vervolgens kan een oplossingsontwikkelaar berichten tussen een bron, bijvoorbeeld uitvoer, en een doel, bijvoorbeeld invoer, met potentiële filters door sturen.

Routering kan worden gebruikt door apparaten of modules die zijn gebouwd met de Azure IoT Device SDK's via het AMQP- of MQTT-protocol. Alle berichten IoT Hub primitieven, zoals telemetrie, directe methoden, C2D, tweelingen, worden ondersteund, maar communicatie via door de gebruiker gedefinieerde onderwerpen wordt niet ondersteund.
Zie Voor meer informatie over routes Informatie over het implementeren van modules en het maken van routes in IoT Edge
De MQTT-broker gebruiken
Het tweede brokeringmechanisme is gebaseerd op een standaard MQTT-broker. MQTT is een lichtgewicht protocol voor berichtoverdracht dat optimale prestaties garandeert op apparaten met beperkte resources en een populaire standaard is voor publiceren en abonneren. Apparaten of modules abonneren zich op onderwerpen om berichten te ontvangen die zijn gepubliceerd door andere apparaten of modules. IoT Edge hub implementeert een eigen MQTT-broker die de specificaties van MQTT-versie 3.1.1 volgt.
De MQTT-broker maakt twee extra communicatiepatronen mogelijk in vergelijking met routering: lokale broadcasting en point-to-point-communicatie. Lokale broadcasting is handig wanneer één apparaat of module meerdere andere apparaten of modules lokaal moet waarschuwen. Met punt-naar-puntcommunicatie kunnen twee IoT Edge of twee IoT-apparaten lokaal communiceren zonder retour naar de cloud.

De MQTT-broker kan worden gebruikt door apparaten of modules die zijn gebouwd met de Azure IoT Device SDK's die communiceren via het MQTT-protocol of een MQTT-client voor algemeen gebruik. Met uitzondering van C2D worden alle berichten IoT Hub primitieven, zoals telemetrie, directe methoden en tweelingen ondersteund. IoT Hub speciale onderwerpen die door IoT Hub worden gebruikt, worden ondersteund en door de gebruiker gedefinieerde onderwerpen ook. Dit onderwerp kan een speciaal IoT Hub of een door de gebruiker gedefinieerd onderwerp zijn.
In tegenstelling tot het routeringsmechanisme is het orden van berichten alleen best effort en wordt het filteren van berichten niet gegarandeerd en wordt het filteren van berichten niet ondersteund door de broker. Door het ontbreken van deze functies kan de MQTT-broker echter sneller zijn dan routering.
Zie Publiceren en abonneren met de MQTT-broker voor meer informatie IoT Edge
Vergelijking tussen brokeringmechanismen
Hier zijn de functies die beschikbaar zijn bij elk brokering-mechanisme:
| Functies | Routering | MQTT-broker |
|---|---|---|
| D2C-telemetrie | ✔ | |
| Lokale telemetrie | ✔ | ✔ |
| DirectMethods | ✔ | ✔ |
| Twin | ✔ | ✔ |
| C2D voor apparaten | ✔ | |
| Ordenen | ✔ | |
| Filteren | ✔ | |
| Door de gebruiker gedefinieerde onderwerpen | ✔ | |
| Apparaat-naar-apparaat | ✔ | |
| Lokale uitzending | ✔ | |
| Prestaties | ✔ |
Verbinding maken met IoT Edge hub
De IoT Edge hub accepteert verbindingen van apparaat- of module-clients, via het MQTT-protocol of het AMQP-protocol.
Notitie
IoT Edge hub ondersteunt clients die verbinding maken met behulp van MQTT of AMQP. Het biedt geen ondersteuning voor clients die HTTP gebruiken.
Wanneer een client verbinding maakt met de IoT Edge hub, gebeurt het volgende:
- Als Transport Layer Security (TLS) wordt gebruikt (aanbevolen), wordt er een TLS-kanaal gebouwd om een versleutelde communicatie tot stand te brengen tussen de client en de IoT Edge hub.
- Verificatiegegevens worden van de client verzonden naar IoT Edge hub om zichzelf te identificeren.
- IoT Edge hub autorisatie of weigert de verbinding op basis van het autorisatiebeleid.
Beveiligde verbindingen (TLS)
Standaard accepteert de IoT Edge-hub alleen verbindingen die zijn beveiligd met Transport Layer Security (TLS), bijvoorbeeld versleutelde verbindingen die een derde partij niet kan ontsleutelen.
Als een client verbinding maakt via poort 8883 (MQTTS) of 5671 (AMQPS) met de IoT Edge-hub, moet er een TLS-kanaal worden gebouwd. Tijdens de TLS-handshake verzendt IoT Edge hub de certificaatketen die de client moet valideren. Als u de certificaatketen wilt valideren, moet het basiscertificaat van de IoT Edge hub worden geïnstalleerd als een vertrouwd certificaat op de client. Als het basiscertificaat niet wordt vertrouwd, wordt de clientbibliotheek geweigerd door de IoT Edge hub met een certificaatverificatiefout.
De stappen die u moet volgen om dit basiscertificaat van de broker op apparaat-clients te installeren, worden beschreven in de transparante gateway en in de documentatie voor een downstreamapparaat voorbereiden. Modules kunnen hetzelfde basiscertificaat gebruiken als de IoT Edge hub door gebruik te maken van IoT Edge daemon-API.
Verificatie
De IoT Edge Hub accepteert alleen verbindingen van apparaten of modules die een IoT Hub-identiteit hebben, bijvoorbeeld die zijn geregistreerd in IoT Hub en een van de drie clientverificatiemethoden hebben die door IoT Hub worden ondersteund om hun identiteit aan te tonen:Verificatie met symmetrische sleutels , X.509zelf-ondertekende verificatie, X.509CA-ondertekende verificatie . Deze IoT Hub kunnen lokaal worden geverifieerd door de IoT Edge hub, zodat er nog steeds offline verbindingen kunnen worden gemaakt.
Opmerkingen:
- IoT Edge bieden momenteel alleen ondersteuning voor verificatie met symmetrische sleutels.
- MQTT-clients met alleen lokale gebruikersnaam en wachtwoorden worden niet geaccepteerd door de MQTT-broker van de IoT Edge-hub. Ze moeten gebruikmaken van IoT Hub identiteiten.
Autorisatie
Na verificatie heeft de IoT Edge hub twee manieren om clientverbindingen te autoriseren:
Door te controleren of een client behoort tot de set vertrouwde clients die zijn gedefinieerd in IoT Hub. De set vertrouwde clients wordt opgegeven door bovenliggende/onderliggende of apparaat-/modulerelaties in te stellen in IoT Hub. Wanneer een module wordt gemaakt in IoT Edge, wordt er automatisch een vertrouwensrelatie tot stand gebracht tussen deze module en het IoT Edge apparaat. Dit is het enige autorisatiemodel dat wordt ondersteund door het routeringsbrokermechanisme.
Door een autorisatiebeleid in te stellen. Dit autorisatiebeleid is een document met alle geautoriseerde clientidentiteiten die toegang hebben tot resources op de IoT Edge hub. Dit is het primaire autorisatiemodel dat wordt gebruikt door de MQTT-broker van de IoT Edge-hub, hoewel bovenliggende/onderliggende relaties en apparaat-/modulerelaties ook kunnen worden begrepen door de MQTT Broker for IoT Hub onderwerpen.
Externe configuratie
De IoT Edge hub wordt volledig beheerd door de cloud. De configuratie wordt van de IoT Hub via de module dubbel. Het omvat:
- Routes configureren
- Autorisatiebeleid
- Configuratie van MQTT Bridge
Daarnaast kunnen verschillende configuraties worden uitgevoerd door omgevingsvariabelen in te stellen op de IoT Edge hub.
Telemetrie van runtimekwaliteit
IoT Edge verzamelt anonieme telemetrie van de hostruntime en systeemmodules om de productkwaliteit te verbeteren. Deze informatie wordt telemetrie van runtimekwaliteit genoemd. De verzamelde telemetrie wordt periodiek verzonden als apparaat-naar-cloud-berichten naar IoT Hub van de IoT Edge agent. Deze berichten worden niet weergegeven in de normale telemetrie van de klant en verbruiken geen quotum voor berichten.
De IoT Edge agent en hub genereren metrische gegevens die u kunt verzamelen om inzicht te krijgen in de prestaties van het apparaat. Een subset van deze metrische gegevens wordt verzameld door de IoT Edge Agent als onderdeel van de telemetrie van runtimekwaliteit. De metrische gegevens die worden verzameld voor de telemetrie van runtimekwaliteit worden gelabeld met de tag ms_telemetry . Zie Toegang tot ingebouwde metrische gegevens voor meer informatie over alle beschikbare metrische gegevens.
Persoonlijke of organisatiegegevens, zoals apparaat- en modulenamen, worden verwijderd voordat ze worden geüpload om de anonieme aard van de telemetrie van runtimekwaliteit te garanderen.
De IoT Edge-agent verzamelt de telemetrie elk uur en verzendt om IoT Hub 24 uur één bericht naar de IoT Hub.
Als u zich wilt af melden voor het verzenden van runtime-telemetrie vanaf uw apparaten, kunt u dit op twee manieren doen:
- Stel de
SendRuntimeQualityTelemetryomgevingsvariabelefalsein op voor edgeAgent of - Vink de optie in de Azure Portal tijdens de implementatie uit.