Inzicht in Azure IoT Edge-runtime en de architectuur ervan

Van toepassing op:IoT Edge 1.4 checkmark IoT Edge 1.4

Belangrijk

IoT Edge 1.4 is de ondersteunde release. Raadpleeg IoT Edge bijwerken als u een eerdere versie hebt.

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 dat IoT Edge-modules altijd worden uitgevoerd.

  • De status van de module aan de cloud rapporteren voor externe bewaking.

  • Communicatie tussen:

    • Downstreamapparaten en IoT Edge-apparaten
    • Modules op een IoT Edge-apparaat
    • Een IoT Edge-apparaat en de cloud
    • IoT Edge-apparaten

Screenshot of how runtime communicates insights and module health to I o T Hub.

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 zoals elke andere module die wordt uitgevoerd op een IoT Edge-apparaat. Ze worden soms de runtimemodules genoemd.

IoT Edge-agent

De IoT Edge-agent is een van de twee modules waaruit de Azure IoT Edge-runtime bestaat. Het is verantwoordelijk voor het instantiëren van modules, ervoor zorgen dat ze blijven worden uitgevoerd en de status van de modules weer rapporteren aan IoT Hub. Deze configuratiegegevens worden geschreven als een eigenschap van de IoT Edge-agentmoduledubbel.

De IoT Edge-beveiligingsdaemon start de IoT Edge-agent bij het opstarten van het apparaat. De agent haalt de moduledubbel 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. Lees voor meer informatie over alle eigenschappen die door de IoT Edge-agent worden gebruikt om modules te beheren, meer informatie over de eigenschappen van de IoT Edge-agent en ioT Edge-hubmoduledubbels.

De IoT Edge-agent verzendt runtime-respons naar IoT Hub. Hier volgt een lijst met mogelijke antwoorden:

  • 200 - OK
  • 400: de implementatieconfiguratie is ongeldig of ongeldig.
  • 417 : op het apparaat is geen configuratieset voor implementaties ingesteld.
  • 412: de schemaversie in de implementatieconfiguratie is ongeldig.
  • 406: het IoT Edge-apparaat is offline of verzendt geen statusrapporten.
  • 500: er is een fout opgetreden in de IoT Edge-runtime.

Zie Meer informatie over het maken van implementatiemanifesten voor meer informatie over het implementeren van modules en het tot stand brengen van routes in IoT Edge.

Beveiliging

De IoT Edge-agent speelt een belangrijke rol bij de beveiliging van een IoT Edge-apparaat. Het voert bijvoorbeeld acties uit zoals het verifiëren van de installatiekopieën van een module voordat deze wordt gestart.

Meer informatie over het Azure IoT Edge-beveiligingsframework vindt u in het IoT Edge-beveiligingsbeheer.

IoT Edge-hub

De IoT Edge-hub is de andere module waaruit de Azure IoT Edge-runtime bestaat. Het fungeert als een lokale proxy voor IoT Hub door dezelfde protocoleindpunten beschikbaar te maken als IoT Hub. Deze consistentie betekent dat clients verbinding kunnen maken met de IoT Edge-runtime, net als met IoT Hub.

De IoT Edge-hub is geen volledige versie van IoT Hub die lokaal wordt uitgevoerd. IoT Edge Hub delegeert een aantal taken op de achtergrond naar IoT Hub. IoT Edge Hub downloadt bijvoorbeeld automatisch autorisatiegegevens van IoT Hub op de eerste verbinding om een apparaat in staat te stellen verbinding te maken. Nadat de eerste verbinding tot stand is gebracht, wordt autorisatiegegevens lokaal in de cache opgeslagen door de IoT Edge-hub. Toekomstige verbindingen van dat apparaat worden geautoriseerd zonder dat u autorisatiegegevens opnieuw uit de cloud hoeft te downloaden.

Cloudcommunicatie

Om de bandbreedte te verminderen die uw IoT Edge-oplossing gebruikt, optimaliseert de IoT Edge-hub hoeveel werkelijke verbindingen er in de cloud worden gemaakt. IoT Edge-hub neemt 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. Clients denken dat ze hun eigen verbinding met de cloud hebben, ook al worden ze allemaal via dezelfde verbinding verzonden. De IoT Edge-hub kan de AMQP of het 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 het upstream-protocol en de multiplexing-mogelijkheden. AMQP is het standaard upstream-protocol.

Screenshot showing relationships to I o T Edge hub as a gateway between physical devices and I o T Hub.

IoT Edge-hub kan bepalen of deze is verbonden met IoT Hub. Als de verbinding is verbroken, worden in IoT Edge-hub berichten of updates van dubbels lokaal opgeslagen. Zodra een verbinding opnieuw tot stand is gebracht, worden alle gegevens gesynchroniseerd. De locatie die wordt gebruikt voor deze tijdelijke cache, wordt bepaald door een eigenschap van de moduledubbel van de IoT Edge-hub. De grootte van de cache wordt niet beperkt en groeit zolang het apparaat opslagcapaciteit heeft. Zie Offline-mogelijkheden voor meer informatie.

Lokale communicatie

De IoT Edge-hub vereenvoudigt lokale communicatie. Het maakt apparaat-naar-module- en module-naar-module-communicatie mogelijk door berichten te brokeren om apparaten en modules onafhankelijk van elkaar te houden. De IoT Edge-hub ondersteunt de berichtrouteringsfuncties die worden ondersteund door IoT Hub.

Routering gebruiken

Het brokering-mechanisme gebruikt dezelfde routeringsfuncties als IoT Hub om op te geven hoe berichten worden doorgegeven tussen apparaten of modules. De eerste apparaten of modules geven de invoer op waarop ze berichten accepteren en de uitvoer waarnaar ze berichten schrijven. Vervolgens kan een oplossingsontwikkelaar berichten routeren tussen een bron (bijvoorbeeld uitvoer) en een bestemming (bijvoorbeeld invoer), met potentiële filters.

Screenshot showing how routes between modules go through I o T Edge hub.

Routering kan worden gebruikt door apparaten of modules die zijn gebouwd met de Azure IoT Device SDK's met behulp van het AMQP-protocol. Alle ioT Hub-primitieven voor berichten (bijvoorbeeld 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 tot stand brengen van routes in IoT Edge.

Brokering mechanisme functies beschikbaar:

Functies Routering
D2C-telemetrie
Lokale telemetrie
DirectMethods
Twin
C2D voor apparaten
Ordenen
Filteren
Door de gebruiker gedefinieerde onderwerpen
Apparaat-naar-apparaat
Lokale uitzending

Verbinding maken naar de IoT Edge-hub

De IoT Edge-hub accepteert verbindingen van apparaat- of moduleclients, via het MQTT-protocol of het AMQP-protocol.

Notitie

IoT Edge-hub ondersteunt clients die verbinding maken met 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:

  1. Als TLS (Transport Layer Security) wordt gebruikt (aanbevolen), wordt een TLS-kanaal gebouwd om een versleutelde communicatie tussen de client en de IoT Edge-hub tot stand te brengen.
  2. Verificatiegegevens worden van de client naar de IoT Edge-hub verzonden om zichzelf te identificeren.
  3. IoT Edge Hub autoriseert of weigert de verbinding op basis van het autorisatiebeleid.

Beveiligde verbindingen (TLS)

De IoT Edge-hub accepteert standaard alleen verbindingen die zijn beveiligd met TLS (Transport Layer Security), bijvoorbeeld versleutelde verbindingen die een derde partij niet kan ontsleutelen.

Als een client verbinding maakt op poort 8883 (MQTTS) of 5671 (AMQPS) met de IoT Edge-hub, moet er een TLS-kanaal worden gebouwd. Tijdens de TLS-handshake verzendt de 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 apparaatclients te installeren, worden beschreven in de transparante gateway en in de voorbereiding van een downstreamapparaatdocumentatie . Modules kunnen hetzelfde basiscertificaat gebruiken als de IoT Edge-hub met behulp van de IoT Edge-daemon-API.

Verificatie

De IoT Edge Hub accepteert alleen verbindingen van apparaten of modules met een IoT Hub-identiteit. Bijvoorbeeld de methoden die zijn geregistreerd in IoT Hub en een van de drie methoden voor clientverificatie die door IoT Hub worden ondersteund om hun identiteit te bewijzen: Verificatie met symmetrische sleutels, zelfondertekende X.509-verificatie, X.509 CA-ondertekende verificatie. Deze IoT Hub-identiteiten kunnen lokaal worden geverifieerd door de IoT Edge-hub, zodat verbindingen nog steeds offline kunnen worden gemaakt.

IoT Edge-modules ondersteunen momenteel alleen verificatie met symmetrische sleutels.

Autorisatie

Door te controleren of een client deel uitmaakt van de set vertrouwde clients die zijn gedefinieerd in IoT Hub. De set vertrouwde clients wordt opgegeven door bovenliggende/onderliggende of apparaat-/modulerelaties in IoT Hub in te stellen. Wanneer een module wordt gemaakt in IoT Edge, wordt er automatisch een vertrouwensrelatie tot stand gebracht tussen deze module en het Bijbehorende IoT Edge-apparaat. Dit is het enige autorisatiemodel dat wordt ondersteund door het mechanisme voor routering brokering.

Externe configuratie

De IoT Edge-hub wordt volledig beheerd door de cloud. De configuratie van IoT Hub wordt opgehaald via de moduledubbel. De dubbel bevat een gewenste eigenschap met de naam routes waarmee wordt aangegeven hoe berichten binnen een implementatie worden doorgegeven. Zie routes declareren voor meer informatie over routes.

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 vanuit de IoT Edge-agent. Deze berichten worden niet weergegeven in de normale telemetrie van de klant en verbruiken geen berichtquotum.

De IoT Edge-agent en -hub genereren metrische gegevens die u kunt verzamelen om inzicht te hebben in de prestaties van apparaten. Een subset van deze metrische gegevens wordt verzameld door de IoT Edge-agent als onderdeel van telemetrie van runtimekwaliteit. De metrische gegevens die worden verzameld voor telemetrie van runtimekwaliteit, worden gelabeld met de tag ms_telemetry. Zie ingebouwde metrische gegevens van Access voor informatie over alle beschikbare metrische gegevens.

Eventuele persoonlijk of organisatiegegevens, zoals apparaat- en modulenamen, worden verwijderd voordat ze worden geüpload om ervoor te zorgen dat de telemetrie van runtimekwaliteit anoniem is.

De IoT Edge-agent verzamelt de telemetrie elk uur en verzendt elke 24 uur één bericht naar IoT Hub.

Als u zich wilt afmelden voor het verzenden van runtime-telemetrie van uw apparaten, zijn er twee manieren om dit te doen:

  • Stel de SendRuntimeQualityTelemetry omgevingsvariabele in op false voor edgeAgent of
  • Schakel de optie in Azure Portal uit tijdens de implementatie.

Volgende stappen