Förstå Azure IoT Edge-körningen och dess arkitektur
Gäller för: IoT Edge 1.5 IoT Edge 1.4
Viktigt!
IoT Edge 1.5 LTS och IoT Edge 1.4 LTS stöds. IoT Edge 1.4 LTS upphör den 12 november 2024. Om du har en tidigare version läser du Uppdatera IoT Edge.
IoT Edge-körningen är en samling program som omvandlar en enhet till en IoT Edge-enhet. Tillsammans gör IoT Edge-körningskomponenterna att IoT Edge-enheter kan ta emot kod som körs vid gränsen och kommunicera resultatet.
IoT Edge-körningen ansvarar för följande funktioner på IoT Edge-enheter:
Installerar och uppdaterar arbetsbelastningar på enheten.
Upprätthåller Azure IoT Edge-säkerhetsstandarder på enheten.
Se till att IoT Edge-moduler alltid körs.
Rapporterar modulens hälsa till molnet för fjärrövervakning.
Hantera kommunikation mellan:
- Underordnade enheter och IoT Edge-enheter
- Moduler på en IoT Edge-enhet
- En IoT Edge-enhet och molnet
- IoT Edge-enheter
Ansvarsområdena för IoT Edge-körningen delas in i två kategorier: kommunikation och modulhantering. Dessa två roller utförs av två komponenter som ingår i IoT Edge-körningen. IoT Edge-agenten distribuerar och övervakar modulerna, medan IoT Edge-hubben ansvarar för kommunikation.
Både IoT Edge-agenten och IoT Edge-hubben är moduler, precis som alla andra moduler som körs på en IoT Edge-enhet. De kallas ibland för körningsmoduler.
IoT Edge-agent
IoT Edge-agenten är en av två moduler som utgör Azure IoT Edge-körningen. Den ansvarar för att instansiera moduler, se till att de fortsätter att köras och rapportera status för modulerna tillbaka till IoT Hub. Dessa konfigurationsdata skrivs som en egenskap för modultvillingen för IoT Edge-agenten.
IoT Edge-säkerhetsdaemonen startar IoT Edge-agenten vid enhetsstart. Agenten hämtar sin modultvilling från IoT Hub och inspekterar distributionsmanifestet. Distributionsmanifestet är en JSON-fil som deklarerar de moduler som måste startas.
Varje objekt i distributionsmanifestet innehåller specifik information om en modul och används av IoT Edge-agenten för att styra modulens livscykel. Mer information om alla egenskaper som används av IoT Edge-agenten för att styra moduler finns i Egenskaper för IoT Edge-agenten och IoT Edge-hubbmodultvillingarna.
IoT Edge-agenten skickar körningssvar till IoT Hub. Här är en lista över möjliga svar:
- 200 - OK
- 400 – Distributionskonfigurationen är felaktig eller ogiltig.
- 417 – Enheten har ingen konfigurationsuppsättning för distribution.
- 412 – Schemaversionen i distributionskonfigurationen är ogiltig.
- 406 – IoT Edge-enheten är offline eller skickar inte statusrapporter.
- 500 – Ett fel uppstod i IoT Edge-körningen.
Mer information om hur du skapar distributionsmanifest finns i Lär dig hur du distribuerar moduler och upprättar vägar i IoT Edge.
Säkerhet
IoT Edge-agenten spelar en viktig roll för säkerheten för en IoT Edge-enhet. Den utför till exempel åtgärder som att verifiera en moduls avbildning innan den startas.
Mer information om Azure IoT Edge-säkerhetsramverket finns i IoT Edge-säkerhetshanteraren.
IoT Edge-hubb
IoT Edge-hubben är den andra modulen som utgör Azure IoT Edge-körningen. Den fungerar som en lokal proxy för IoT Hub genom att exponera samma protokollslutpunkter som IoT Hub. Den här konsekvensen innebär att klienter kan ansluta till IoT Edge-körningen precis som de skulle göra med IoT Hub.
IoT Edge-hubben är inte en fullständig version av IoT Hub som körs lokalt. IoT Edge-hubben delegerar tyst vissa uppgifter till IoT Hub. IoT Edge-hubben laddar till exempel automatiskt ned auktoriseringsinformation från IoT Hub på sin första anslutning för att göra det möjligt för en enhet att ansluta. När den första anslutningen har upprättats cachelagras auktoriseringsinformation lokalt av IoT Edge-hubben. Framtida anslutningar från den enheten är auktoriserade utan att behöva ladda ned auktoriseringsinformation från molnet igen.
Molnkommunikation
För att minska den bandbredd som din IoT Edge-lösning använder optimerar IoT Edge-hubben hur många faktiska anslutningar som görs till molnet. IoT Edge-hubben tar logiska anslutningar från moduler eller underordnade enheter och kombinerar dem för en enda fysisk anslutning till molnet. Informationen om den här processen är transparent för resten av lösningen. Klienterna tror att de har en egen anslutning till molnet trots att alla skickas via samma anslutning. IoT Edge-hubben kan antingen använda AMQP eller MQTT-protokollet för att kommunicera uppströms med molnet, oberoende av protokoll som används av underordnade enheter. IoT Edge-hubben har dock för närvarande endast stöd för att kombinera logiska anslutningar till en enda fysisk anslutning med hjälp av AMQP som uppströmsprotokoll och dess multiplexingfunktioner. AMQP är standarduppströmsprotokollet.
IoT Edge-hubben kan avgöra om den är ansluten till IoT Hub. Om anslutningen går förlorad sparar IoT Edge-hubben meddelanden eller tvillinguppdateringar lokalt. När en anslutning har återupprättats synkroniseras alla data. Den plats som används för den här tillfälliga cachen bestäms av en egenskap för IoT Edge-hubbens modultvilling. Cachens storlek är inte begränsad och växer så länge enheten har lagringskapacitet. Mer information finns i Offlinefunktioner.
Lokal kommunikation
IoT Edge-hubben underlättar lokal kommunikation. Den möjliggör kommunikation från enhet till modul och modul-till-modul genom att asynkrona meddelanden för att hålla enheter och moduler oberoende av varandra. IoT Edge-hubben stöder de meddelanderoutningsfunktioner som stöds av IoT Hub.
Använda routning
Koordinatormekanismen använder samma routningsfunktioner som IoT Hub för att ange hur meddelanden skickas mellan enheter eller moduler. De första enheterna eller modulerna anger de indata som de accepterar meddelanden på och de utdata som de skriver meddelanden till. Sedan kan en lösningsutvecklare dirigera meddelanden mellan en källa (till exempel utdata) och ett mål (till exempel indata) med potentiella filter.
Routning kan användas av enheter eller moduler som skapats med Azure IoT Device SDK:er med hjälp av AMQP-protokollet. Alla meddelande-IoT Hub-primitiver (till exempel telemetri), direkta metoder, C2D, tvillingar, stöds men kommunikation över användardefinierade ämnen stöds inte.
Mer information om vägar finns i Lär dig hur du distribuerar moduler och upprättar vägar i IoT Edge.
Tillgängliga funktioner för koordinatormekanism:
Funktioner | Routning |
---|---|
D2C-telemetri | ✔ |
Lokal telemetri | ✔ |
DirectMethods | ✔ |
Tvilling | ✔ |
C2D för enheter | ✔ |
Ordna profiler | ✔ |
Filtrering | ✔ |
Användardefinierade ämnen | |
Enhet till enhet | |
Lokal sändning |
Ansluta till IoT Edge-hubben
IoT Edge-hubben accepterar anslutningar från enhets- eller modulklienter, antingen via MQTT-protokollet eller AMQP-protokollet.
Kommentar
IoT Edge-hubben stöder klienter som ansluter med MQTT eller AMQP. Det stöder inte klienter som använder HTTP.
När en klient ansluter till IoT Edge-hubben händer följande:
- Om TLS (Transport Layer Security) används (rekommenderas) skapas en TLS-kanal för att upprätta en krypterad kommunikation mellan klienten och IoT Edge-hubben.
- Autentiseringsinformation skickas från klienten till IoT Edge-hubben för att identifiera sig själv.
- IoT Edge-hubben auktoriserar eller avvisar anslutningen baserat på dess auktoriseringsprincip.
Säkra anslutningar (TLS)
Som standard accepterar IoT Edge-hubben endast anslutningar som skyddas med TLS (Transport Layer Security), till exempel krypterade anslutningar som en tredje part inte kan dekryptera.
Om en klient ansluter på port 8883 (MQTTS) eller 5671 (AMQPS) till IoT Edge-hubben måste en TLS-kanal skapas. Under TLS-handskakningen skickar IoT Edge-hubben sin certifikatkedja som klienten behöver verifiera. För att verifiera certifikatkedjan måste rotcertifikatet för IoT Edge-hubben installeras som ett betrott certifikat på klienten. Om rotcertifikatet inte är betrott avvisas klientbiblioteket av IoT Edge-hubben med ett certifikatverifieringsfel.
Stegen som ska följas för att installera det här rotcertifikatet för asynkron meddelandekö på enhetsklienter beskrivs i den transparenta gatewayen och i dokumentationen för att förbereda en nedströmsenhet . Moduler kan använda samma rotcertifikat som IoT Edge-hubben med hjälp av daemon-API:et för IoT Edge.
Autentisering
IoT Edge Hub accepterar endast anslutningar från enheter eller moduler som har en IoT Hub-identitet. Till exempel de som är registrerade i IoT Hub och har någon av de tre klientautentiseringsmetoderna som stöds av IoT Hub för att bevisa sin identitet: Autentisering med symmetriska nycklar, självsignerad X.509-autentisering, X.509 CA-signerad autentisering. Dessa IoT Hub-identiteter kan verifieras lokalt av IoT Edge-hubben så att anslutningar fortfarande kan göras offline.
IoT Edge-moduler stöder för närvarande endast symmetrisk nyckelautentisering.
Auktorisering
Genom att verifiera att en klient tillhör dess uppsättning betrodda klienter som definierats i IoT Hub. Uppsättningen betrodda klienter anges genom att konfigurera överordnade/underordnade eller enhets-/modulrelationer i IoT Hub. När en modul skapas i IoT Edge upprättas automatiskt en förtroenderelation mellan den här modulen och dess IoT Edge-enhet. Det här är den enda auktoriseringsmodell som stöds av routningsutjämningsmekanismen.
Fjärrkonfiguration
IoT Edge-hubben styrs helt av molnet. Den hämtar sin konfiguration från IoT Hub via sin modultvilling. Tvillingen innehåller en önskad egenskap som kallas vägar som deklarerar hur meddelanden skickas i en distribution. Mer information om vägar finns i deklarera vägar.
Dessutom kan flera konfigurationer göras genom att konfigurera miljövariabler på IoT Edge-hubben.
Telemetri för körningskvalitet
IoT Edge samlar in anonym telemetri från värdkörnings- och systemmodulerna för att förbättra produktkvaliteten. Den här informationen kallas telemetri för körningskvalitet. Den insamlade telemetrin skickas regelbundet som meddelanden från enhet till molnet till IoT Hub från IoT Edge-agenten. Dessa meddelanden visas inte i kundens vanliga telemetri och förbrukar ingen meddelandekvot.
IoT Edge-agenten och hubben genererar mått som du kan samla in för att förstå enhetens prestanda. En delmängd av dessa mått samlas in av IoT Edge-agenten som en del av telemetri för körningskvalitet. Måtten som samlas in för telemetri för körningskvalitet är märkta med taggen ms_telemetry
. Information om alla tillgängliga mått finns i Åtkomst till inbyggda mått.
All personlig eller organisatoriskt identifierbar information, till exempel enhets- och modulnamn, tas bort före uppladdning för att säkerställa den anonyma karaktären hos telemetrin för körningskvalitet.
IoT Edge-agenten samlar in telemetrin varje timme och skickar ett meddelande till IoT Hub var 24:e timme.
Om du vill avregistrera dig från att skicka runtime-telemetri från dina enheter finns det två sätt att göra det:
SendRuntimeQualityTelemetry
Ange miljövariabeln tillfalse
för edgeAgent- Avmarkera alternativet i Azure-portalen under distributionen.