Pochopení Azure IoT Edge runtime a jeho architektury

Platí pro:  ikona Ano IoT Edge 1,1 jiných verzí: IoT Edge 1,2

Platí pro:  ikona Ano IoT Edge 1,2 jiných verzí: IoT Edge 1,1

Modul runtime IoT Edge je kolekce programů, které ze zařízení udělají zařízení IoT Edge. Souhrnně IoT Edge komponenty modulu runtime umožňují zařízením IoT Edge přijímat kód, který se má spustit na hranici a sdělit výsledky.

IoT Edge runtime zodpovídá za následující funkce na IoT Edge zařízeních:

  • Instalace a aktualizace úloh na zařízení.

  • Udržujte na zařízení standardy zabezpečení Azure IoT Edge.

  • Ujistěte se, že moduly IoT Edge jsou vždycky spuštěné.

  • Oznamte stav modulu v cloudu pro vzdálené monitorování.

  • Spravujte komunikaci mezi zařízeními pro příjem dat a IoT Edgemi zařízeními.

  • Spravujte komunikaci mezi moduly na zařízení IoT Edge.

  • Spravujte komunikaci mezi IoT Edgem zařízením a cloudem.

  • Spravujte komunikaci mezi IoT Edgemi zařízeními.

Modul runtime komunikuje s přehledy a stavem modulu IoT Hub

Odpovědnosti modulu runtime IoT Edge spadají do dvou kategorií: komunikace a Správa modulů. Tyto dvě role provádí dvě komponenty, které jsou součástí modulu runtime IoT Edge. Agent IoT Edge nasazuje a monitoruje moduly, zatímco Centrum IoT Edge zodpovídá za komunikaci.

Agent IoT Edge i Centrum IoT Edge jsou moduly, stejně jako jakýkoli jiný modul běžící na IoT Edgem zařízení. Někdy se označují jako běhové moduly.

Agent IoT Edge

Agent IoT Edge je jedním ze dvou modulů, které tvoří modul runtime Azure IoT Edge. Zodpovídá za vytváření instancí modulů, zajišťuje, že budou nadále běžet, a oznamuje stav modulů zpět do IoT Hub. Tato konfigurační data jsou zapsána jako vlastnost vlákna modulu IoT Edgeho agenta.

Démon zabezpečení IoT Edge spustí agenta IoT Edge při spuštění zařízení. Agent z IoT Hub načte svůj modul s nevlákenou a zkontroluje manifest nasazení. Manifest nasazení je soubor JSON, který deklaruje moduly, které musí být spuštěny.

Každá položka v manifestu nasazení obsahuje konkrétní informace o modulu, kterou používá agent IoT Edge k řízení životního cyklu modulu. Další informace o všech vlastnostech, které používá agent IoT Edge k řízení modulů, najdete v článku o vlastnostech IoT Edge agenta a o tom, IoT Edge modul rozbočovače.

Agent IoT Edge odesílá odezvu modulu runtime do IoT Hub. Tady je seznam možných odpovědí:

  • 200 – OK
  • 400 – konfigurace nasazení je poškozená nebo neplatná.
  • 417 – zařízení nemá nastavenou konfiguraci nasazení.
  • 412 – verze schématu v konfiguraci nasazení není platná.
  • 406 – IoT Edge zařízení je offline nebo neodesílá zprávy o stavu.
  • 500 – při IoT Edge modulu runtime došlo k chybě.

Další informace o vytváření manifestů nasazení najdete v tématu Naučte se nasadit moduly a vytvořit trasy v IoT Edge.

Zabezpečení

Agent IoT Edge hraje důležitou roli v zabezpečení zařízení IoT Edge. Například provede akce, jako je ověření obrázku modulu před jeho spuštěním.

Další informace o rozhraní Azure IoT Edge Security Framework najdete v článku o IoT Edge Security Manager.

Centrum IoT Edge

IoT Edge centrum je druhý modul, který tvoří modul runtime Azure IoT Edge. Funguje jako místní proxy server pro IoT Hub tím, že zveřejňuje stejné koncové body protokolu jako IoT Hub. Tato konzistence znamená, že se klienti mohou připojit k modulu IoT Edge runtime stejným způsobem jako IoT Hub.

Centrum IoT Edge není plná verze IoT Hub spuštěná místně. Centrum IoT Edge tiše deleguje některé úkoly, které je potřeba IoT Hub. Například Centrum IoT Edge automaticky stáhne informace o autorizaci z IoT Hub při prvním připojení, aby bylo možné zařízení připojit. Po navázání prvního připojení se informace o autorizaci ukládají místně do mezipaměti IoT Edge hub. Budoucí připojení z tohoto zařízení mají oprávnění, aniž byste museli stahovat autorizační informace z cloudu znovu.

Cloudová komunikace

Aby se snížila šířka pásma, kterou používá vaše IoT Edge řešení, Centrum IoT Edge optimalizuje, kolik skutečných připojení se do cloudu provedlo. Centrum IoT Edge přijímá logická připojení z modulů nebo podřízených zařízení a kombinuje je s jedním fyzickým připojením ke cloudu. Podrobnosti tohoto procesu jsou pro zbytek řešení transparentní. Klienti si budou myslet, že mají vlastní připojení ke cloudu, i když se všechny odesílají přes stejné připojení. Rozbočovač IoT Edge může buď použít protokol AMQP nebo MQTT ke komunikaci s cloudem, nezávisle na protokolech používaných zařízeními pro příjem dat. Centrum IoT Edge aktuálně podporuje pouze kombinování logických připojení do jednoho fyzického připojení pomocí AMQP jako nadřazeného protokolu a jeho možností multiplexování. AMQP je výchozí nadřazený protokol.

Centrum IoT Edge je brána mezi fyzickými zařízeními a IoT Hub

Centrum IoT Edge může určit, jestli je připojené k IoT Hub. Pokud dojde ke ztrátě připojení, IoT Edge centrum ukládá zprávy nebo bude mít zdvojené aktualizace místně. Jakmile je připojení znovu navázáno, synchronizuje všechna data. Umístění používané pro tuto dočasnou mezipaměť je určeno vlastností vlákna modulu IoT Edgeového rozbočovače. Velikost mezipaměti není omezené a bude růst, dokud má zařízení kapacitu úložiště. Další informace najdete v tématu Možnosti offline.

Komunikace s modulem

Centrum IoT Edge usnadňuje komunikaci s modulem. Použití centra IoT Edge jako zprostředkovatel zpráv uchovává moduly nezávislé na sobě. Moduly stačí pouze zadat vstupy, na kterých přijímá zprávy, a výstupy, na které zapisují zprávy. Vývojář řešení může spojit tyto vstupy a výstupy, aby moduly zpracovával data v pořadí určeném pro toto řešení.

IoT Edge hub usnadňuje komunikaci mezi moduly a moduly.

Chcete-li odesílat data do centra IoT Edge, modul volá metodu SendEventAsync. První argument určuje, na který výstup bude zpráva odeslána. Následující pseudokódu odešle zprávu na output1:

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

Chcete-li získat zprávu, zaregistrujte zpětné volání, které zpracovává zprávy přicházející do konkrétního vstupu. Následující pseudokódu zaregistruje funkci messageProcessor, která se má použít ke zpracování všech zpráv přijatých v input1:

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

Další informace o třídě ModuleClient a jejích metodách komunikace najdete v referenčních informacích k rozhraní API pro preferovaný jazyk sady SDK: C#, C, Python, Javanebo Node.js.

Vývojář řešení zodpovídá za zadání pravidel, která určují, jak IoT Edge hub předává zprávy mezi moduly. Pravidla směrování jsou definovaná v cloudu a jsou vložená dolů do IoT Edgeho centra v jeho modulu. Stejná syntaxe pro IoT Hub trasy se používá k definování tras mezi moduly v Azure IoT Edge. Další informace najdete v tématu Naučte se nasazovat moduly a navázat trasy v IoT Edge.

Trasy mezi moduly procházejí prostřednictvím centra IoT Edge.

Místní komunikace

Centrum IoT Edge usnadňuje místní komunikaci. Umožňuje vzájemnou komunikaci zařízení s modulem, modulu-modulu a komunikace zařízení a zařízení prostřednictvím zprostředkovatelských zpráv, aby se zařízení a moduly nezávisle na sobě navzájem nezávislá.

Poznámka

Funkce MQTT Broker je ve verzi Public Preview s IoT Edge verze 1,2. Musí být explicitně povolen.

Centrum IoT Edge podporuje dva mechanismy zprostředkovatele:

  1. Funkce směrování zpráv podporované nástrojem IoT Hub a,
  2. Zprostředkovatel MQTT pro obecné účely, který splňuje MQTT standard v 3.1.1

Použití směrování

První mechanismus zprostředkovatele využívá stejné funkce směrování jako IoT Hub k určení toho, jak se zprávy předávají mezi zařízeními nebo moduly. První zařízení nebo moduly určují vstupy, na kterých budou přijímat zprávy, a výstupy, na které zapisují zprávy. Vývojář řešení pak může směrovat zprávy mezi zdrojem, například výstupy, a cílem, např. vstupy, s potenciálními filtry.

Trasy mezi moduly procházejí prostřednictvím centra IoT Edge.

Směrování můžou používat zařízení nebo moduly sestavené pomocí sad SDK pro zařízení Azure IoT prostřednictvím protokolu AMQP nebo MQTT. Všechna zasílání zpráv IoT Hub primitivních, např. telemetrie, přímé metody, C2D a vlákna, jsou podporovány, ale komunikace prostřednictvím uživatelsky definovaných témat není podporována.

Další informace o trasách najdete v tématu Naučte se nasazovat moduly a navázat trasy v IoT Edge

Použití zprostředkovatele MQTT

Druhý mechanismus zprostředkování je založen na standardním zprostředkovateli MQTT. MQTT je jednoduchý protokol pro přenos zpráv, který zaručuje optimální výkon na zařízeních s omezenými prostředky a je oblíbeným standardem publikování a odběru. Zařízení nebo moduly se přihlašuje k odběru témat pro příjem zpráv publikovaných jinými zařízeními nebo moduly. IoT Edge Hub implementuje vlastního zprostředkovatele MQTT, který dodržuje specifikace MQTT verze 3.1.1.

Zprostředkovatel MQTT umožňuje v porovnání se směrováním dva další komunikační vzory: místní všesměrové vysílání a komunikace mezi dvěma bodu. Místní vysílání je užitečné, když jedno zařízení nebo modul potřebuje místně upozornit více dalších zařízení nebo modulů. Komunikace mezi dvěma počítači umožňuje dvěma IoT Edge nebo dvěma zařízeními IoT komunikovat místně bez zpátečního přenosu do cloudu.

Místní publikování a přihlášení k odběru pomocí IoT Edge Hubu

Zprostředkovatele MQTT mohou používat zařízení nebo moduly sestavené pomocí buď se soubory SDK pro zařízení Azure IoT, které komunikují přes protokol MQTT, nebo pro všechny klienty MQTT pro obecné účely. S výjimkou C2D se podporují všechny IoT Hub primitiv, např. telemetrie, přímé metody nebo dvojčata. IoT Hub témata používaná IoT Hub primitiv jsou podporována, stejně jako uživatelsky definovaná témata. Toto téma může IoT Hub speciální téma nebo uživatelem definované téma.

Na rozdíl od mechanismu směrování je řazení zpráv pouze s vynaloženým úsilím a nezaručuje se a zprostředkovatel nepodporuje filtrování zpráv. Chybějící tyto funkce ale umožňují, aby zprostředkovatel MQTT byl rychlejší než směrování.

Další informace o zprostředkovateli MQTT najdete v tématu Publikování a přihlášení k odběru pomocí IoT Edge

Porovnání mezi mechanismy zprostředkování

U každého mechanismu zprostředkování jsou k dispozici tyto funkce:

Funkce Směrování Zprostředkovatel MQTT
Telemetrie D2C
Místní telemetrie
DirectMethods
Twin
C2D pro zařízení
Řazení
Filtrování
Uživatelsky definovaná témata
Připojení zařízení k zařízení
Místní všesměrové vysílání
Výkon

Připojení k IoT Edge hubu

Centrum IoT Edge přijímá připojení ze zařízení nebo klientů modulů, a to buď přes protokol MQTT, nebo protokol AMQP.

Poznámka

IoT Edge Hub podporuje klienty, kteří se připojují pomocí MQTT nebo AMQP. Nepodporuje klienty, kteří používají protokol HTTP.

Když se klient připojí k IoT Edge centru, stane se toto:

  1. Pokud se používá protokol TLS (Transport Layer Security) (doporučeno), vytvoří se kanál TLS, který vytvoří šifrovanou komunikaci mezi klientem a IoT Edge hubem.
  2. Ověřovací informace se odesílaují z klienta do IoT Edge, aby se identifikovaly.
  3. IoT Edge hub autorizuje nebo odmítne připojení na základě zásad autorizace.

Zabezpečená připojení (TLS)

Ve výchozím nastavení centrum IoT Edge přijímá pouze připojení zabezpečená protokolem TLS (Transport Layer Security), např. šifrovaná připojení, která třetí strana nemůže dešifrovat.

Pokud se klient připojí na portu 8883 (MQTTS) nebo 5671 (AMQPS) k centru IoT Edge, musí být sestaven kanál TLS. Během metody handshake protokolu TLS odešle centrum IoT Edge svůj řetěz certifikátů, který klient potřebuje ověřit. Aby bylo možné ověřit řetěz certifikátů, musí být kořenový certifikát centra IoT Edge nainstalován jako důvěryhodný certifikát na klientovi. Pokud kořenový certifikát není důvěryhodný, klientská knihovna bude odmítnuta centrem IoT Edge s chybou ověření certifikátu.

Postup instalace tohoto kořenového certifikátu zprostředkovatele na klienty zařízení je popsaný v transparentní bráně a v dokumentaci k přípravě podřízeného zařízení. Moduly mohou používat stejný kořenový certifikát jako IoT Edge hub s využitím rozhraní API IoT Edge démona.

Authentication

Centrum IoT Edge Přijímá připojení pouze ze zařízení nebo modulů s identitou IoT Hub, např. zařízení zaregistrovaná v IoT Hub a mají jednu ze tří metod ověřování klientů podporovaných centrem IoT, aby bylo možné prokázat svoji identitu: ověřování pomocí symetrických klíčů , ověřování podepsané svým držitelem X.509,ověřování podepsané certifikační autoritou X.509. Tyto IoT Hub identity mohou být ověřeny místně centrem IoT Edge, takže je stále možné vytvořit připojení v režimu offline.

Poznámky:

  • IoT Edge moduly aktuálně podporují pouze ověřování pomocí symetrického klíče.
  • Zprostředkovatel MQTT centra IoT Edge nepřijímá klienty MQTT pouze s místním uživatelským jménem a hesly, IoT Hub identity.

Autorizace

Po ověření má centrum IoT Edge dva způsoby autorizace připojení klientů:

  • Ověřením, že klient patří do sady důvěryhodných klientů definovaných v IoT Hub. Sada důvěryhodných klientů se určuje nastavením vztahů nadřazený/podřízený nebo zařízení/modul v IoT Hub. Při vytvoření modulu v IoT Edge se mezi tímto modulem a jeho zařízením automaticky vytvoří vztah IoT Edge důvěryhodnosti. Toto je jediný autorizační model podporovaný mechanismem zprostředkování směrování.

  • Nastavením zásad autorizace. Tato zásada autorizace je dokument se seznamem všech autorizovaných identit klientů, které mají přístup k prostředkům v IoT Edge centru. Toto je primární autorizační model používaný zprostředkovatelem MQTT IoT Edge Hubu, i když vztahy nadřazený/podřízený a zařízení/modul zprostředkovatel MQTT zprostředkovatelem MQTT pro IoT Hub témata.

Vzdálená konfigurace

Centrum IoT Edge je zcela řízené cloudem. Získá svou konfiguraci z IoT Hub prostřednictvím dvojčete modulu. Obsahuje:

  • Konfigurace tras
  • Zásady autorizace
  • Konfigurace mostu MQTT

Kromě toho je možné několik konfigurací provést nastavením proměnných prostředí na IoT Edge hubu.

Telemetrie kvality modulu runtime

IoT Edge produktu shromažďuje anonymní telemetrii z modulu runtime hostitele a systémových modulů. Tyto informace se nazývají telemetrie kvality modulu runtime. Shromážděná telemetrie se pravidelně odesílá jako zprávy zařízení-cloud do IoT Hub z IoT Edge agenta. Tyto zprávy se nezobrazují v běžné telemetrii zákazníka a nevyužívají žádnou kvótu zpráv.

Agent IoT Edge a centrum generují metriky, které můžete shromažďovat, abyste porozuměli výkonu zařízení. Podmnožinu těchto metrik shromažďuje agent IoT Edge v rámci telemetrie kvality modulu runtime. Metriky shromážděné pro telemetrii kvality modulu runtime jsou označené značkou ms_telemetry . Informace o všech dostupných metrikách najdete v tématu Přístup k integrovaným metrikám.

Všechny osobní nebo organizační identifikovatelné informace, jako jsou názvy zařízení a modulů, se před nahrávkou odstraní, aby se zajistila anonymní povaha telemetrie kvality modulu runtime.

Agent IoT Edge každou hodinu shromažďuje telemetrii a každých 24 hodin odešle jednu zprávu do IoT Hub zpráv.

Pokud chcete vyjádřit výslovný nesouhlas s odesíláním telemetrie modulu runtime ze zařízení, můžete to udělat dvěma způsoby:

  • Nastavte SendRuntimeQualityTelemetry proměnnou prostředí false na hodnotu pro edgeAgent nebo .
  • Zrušte zaškrtnutí možnosti v Azure Portal během nasazování.

Další kroky