Kurz: Vytvoření hierarchie zařízení IoT Edge

Platí pro:Značka zaškrtnutí IoT Edge 1.5 IoT Edge 1.5 Značka zaškrtnutí IoT Edge 1.4 IoT Edge 1.4

Důležité

Podporované verze ioT Edge 1.5 LTS a IoT Edge 1.4 LTS. IoT Edge 1.4 LTS je konec životnosti 12. listopadu 2024. Pokud používáte starší verzi, podívejte se na článek Aktualizace IoT Edge.

Uzly Azure IoT Edge můžete nasadit napříč sítěmi uspořádanými v hierarchických vrstvách. Každá vrstva v hierarchii je zařízení brány, které zpracovává zprávy a požadavky ze zařízení ve vrstvě pod ní. Tato konfigurace se také označuje jako vnořená hrana.

Můžete strukturovat hierarchii zařízení tak, aby se k cloudu mohl připojit jenom horní vrstva a nižší vrstvy můžou komunikovat pouze se sousedními nadřazenými a podřízenými vrstvami. Toto síťové vrstvení je základem většiny průmyslových sítí, které se řídí standardem ISA-95.

Tento kurz vás provede vytvořením hierarchie zařízení IoT Edge, nasazením kontejnerů modulu runtime IoT Edge do zařízení a místní konfigurací zařízení. Provedete následující úlohy:

  • Vytvořte a definujte vztahy v hierarchii zařízení IoT Edge.
  • Nakonfigurujte modul runtime IoT Edge na zařízeních ve vaší hierarchii.
  • Nainstalujte konzistentní certifikáty napříč hierarchií zařízení.
  • Přidejte úlohy do zařízení v hierarchii.
  • Pomocí modulu proxy rozhraní API služby IoT Edge můžete bezpečně směrovat provoz HTTP přes jeden port ze zařízení nižší vrstvy.

Tip

Tento kurz obsahuje kombinaci ručních a automatizovaných kroků, které poskytují prezentace vnořených funkcí IoT Edge.

Pokud byste chtěli zcela automatizovaný pohled na nastavení hierarchie zařízení IoT Edge, postupujte podle skriptované ukázky Azure IoT Edge pro průmyslové IoT. Tento skriptovaný scénář nasadí virtuální počítače Azure jako předkonfigurovaná zařízení pro simulaci prostředí továrny.

Pokud se chcete podrobněji podívat na ruční kroky pro vytvoření a správu hierarchie zařízení IoT Edge, projděte si průvodce hierarchiemi bran zařízení IoT Edge.

V tomto kurzu jsou definovány následující síťové vrstvy:

  • Horní vrstva: Zařízení IoT Edge v této vrstvě se můžou připojit přímo ke cloudu.

  • Nižší vrstvy: Zařízení IoT Edge ve vrstvách pod horní vrstvou se nemůžou připojit přímo ke cloudu. Musí projít jedním nebo více zprostředkujícími zařízeními IoT Edge, aby mohli odesílat a přijímat data.

V tomto kurzu se pro zjednodušení používá dvě hierarchie zařízení. Zařízení nejvyšší vrstvy představuje zařízení v horní vrstvě hierarchie, které se může připojit přímo ke cloudu. Toto zařízení se označuje jako nadřazené zařízení. Zařízení nižší vrstvy představuje zařízení v nižší vrstvě hierarchie, které se nemůže připojit přímo ke cloudu. Podle potřeby můžete přidat další zařízení, která představují vaše produkční prostředí. Zařízení v nižších vrstvách se označují jako podřízená zařízení.

Struktura hierarchie kurzů obsahující dvě zařízení: zařízení nejvyšší vrstvy a zařízení nižší vrstvy

Poznámka:

Podřízené zařízení může být podřízené zařízení nebo zařízení brány v vnořené topologii.

Požadavky

Pokud chcete vytvořit hierarchii zařízení IoT Edge, potřebujete:

  • Počítač (Windows nebo Linux) s připojením k internetu.

  • Účet Azure s platným předplatným. Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet před tím, než začnete.

  • IoT Hub úrovně Free nebo Standard v Azure.

  • Prostředí Bash v Azure Cloud Shellu s nainstalovaným rozšířením Azure IoT pomocí Azure CLI V tomto kurzu se používá Azure Cloud Shell. Pokud chcete zobrazit aktuální verze modulů a rozšíření Azure CLI, spusťte příkaz az version.

  • Dvě zařízení s Linuxem pro konfiguraci hierarchie Pokud nemáte k dispozici zařízení, můžete vytvořit virtuální počítače Azure pro každé zařízení ve vaší hierarchii pomocí šablony Azure Resource Manageru pro IoT Edge. IoT Edge verze 1.5 je předinstalovaná s touto šablonou Resource Manageru. Pokud instalujete IoT Edge na vlastní zařízení, přečtěte si téma Instalace Azure IoT Edge pro Linux nebo aktualizace IoT Edge.

  • Aby se zjednodušila síťová komunikace mezi zařízeními, měly by být virtuální počítače ve stejné virtuální síti nebo používat partnerský vztah virtuálních sítí.

  • Ujistěte se, že jsou pro všechna zařízení s nejnižší vrstvou otevřené příchozí porty: 443, 5671, 8883:

    • 443: Používá se mezi nadřazené a podřízené hraniční rozbočovače pro volání rozhraní REST API a k vyžádání imagí kontejneru Dockeru.
    • 5671, 8883: Používá se pro AMQP a MQTT.

    Další informace najdete v tématu otevření portů pro virtuální počítač pomocí webu Azure Portal.

    Tip

    Pro konfiguraci v pozdějších krocích použijete popisovač SSH a buď plně kvalifikovaný název domény, nebo IP adresu každého virtuálního počítače, abyste měli přehled o těchto informacích. IP adresu a plně kvalifikovaný název domény najdete na webu Azure Portal. Pro IP adresu přejděte do svého seznamu virtuálních počítačů a poznamenejte si pole Veřejná IP adresa. V případě plně kvalifikovaného názvu domény přejděte na stránku přehledu jednotlivých virtuálních počítačů a vyhledejte pole názvu DNS. U popisovače SSH přejděte na stránku připojení jednotlivých virtuálních počítačů.

Vytvoření hierarchie zařízení IoT Edge

Zařízení IoT Edge tvoří vrstvy vaší hierarchie. Tento kurz vytvoří hierarchii dvou zařízení IoT Edge: zařízení nejvyšší vrstvy a zařízení nižší vrstvy. Podle potřeby můžete vytvořit další podřízená zařízení.

K vytvoření a konfiguraci hierarchie zařízení IoT Edge použijte příkaz az iot edge devices create Azure CLI. Příkaz zjednodušuje konfiguraci hierarchie automatizací a kondenzováním několika kroků:

  • Vytvoří zařízení ve službě IoT Hub.
  • Nastaví vztahy nadřazenosti a podřízenosti pro autorizaci komunikace mezi zařízeními.
  • Použije manifest nasazení na každé zařízení.
  • Vygeneruje řetěz certifikátů pro každé zařízení za účelem vytvoření zabezpečené komunikace mezi nimi.
  • Generuje konfigurační soubory pro každé zařízení.

Vytvoření konfigurace zařízení

Vytvoříte skupinu vnořených hraničních zařízení s nadřazeným zařízením s jedním podřízeným zařízením. V tomto kurzu používáme základní ukázkové manifesty nasazení. Další příklady scénářů najdete v ukázkových šablonách konfigurace.

  1. Než použijete příkaz az iot edge devices create , musíte definovat manifest nasazení pro zařízení nejvyšší vrstvy a nižší vrstvy. Stáhněte si ukázkový soubor deploymentTopLayer.json do místního počítače.

    Manifest nasazení zařízení nejvyšší vrstvy definuje modul proxy rozhraní API služby IoT Edge a deklaruje trasu ze zařízení nižší vrstvy do ioT Hubu.

  2. Stáhněte si ukázkový soubor deploymentLowerLayer.json do místního počítače.

    Manifest nasazení zařízení nižší vrstvy zahrnuje modul simulovaného senzoru teploty a deklaruje trasu do zařízení nejvyšší vrstvy. V části systemModules můžete vidět, že moduly runtime jsou nastavené tak, aby místo mcr.microsoft.com načítá z $upstream:443. Zařízení nižší vrstvy odesílá dockeru požadavky na modul proxy rozhraní API Služby IoT Edge na portu 443, protože nemůže přímo vyžádat image z cloudu. Druhý modul nasazený do zařízení nižší vrstvy, modul Simulated Temperature Sensor , také vytvoří požadavek na jeho image $upstream:443.

    Další informace o tom, jak vytvořit manifest nasazení nižší vrstvy, najdete v tématu Připojení zařízení Azure IoT Edge k vytvoření hierarchie.

  3. V Azure Cloud Shellu pomocí příkazu az iot edge devices create Azure CLI vytvořte zařízení ve službě IoT Hub a sady konfigurace pro každé zařízení ve vaší hierarchii. Nahraďte následující zástupné symboly příslušnými hodnotami:

    Zástupný symbol Popis
    <název centra> Název ioT Hubu
    <config-bundle-output-path> Cesta ke složce, kam chcete konfigurační sady uložit.
    <název nadřazeného zařízení> Název ID nadřazeného zařízení nejvyšší vrstvy .
    <parent-deployment-manifest> Soubor manifestu nasazení nadřazeného zařízení.
    <parent-fqdn-or-ip> Plně kvalifikovaný název domény (FQDN) nebo IP adresa nadřazeného zařízení
    <název podřízeného zařízení> Název podřízeného zařízení nižší vrstvy .
    <child-deployment-manifest> Soubor manifestu nasazení podřízeného zařízení.
    <child-fqdn-or-ip> Plně kvalifikovaný název domény (FQDN) nebo IP adresa podřízeného zařízení
    az iot edge devices create \
       --hub-name <hub-name> \
       --output-path <config-bundle-output-path> \
       --default-edge-agent "mcr.microsoft.com/azureiotedge-agent:1.5" \
       --device id=<parent-device-name> \
          deployment=<parent-deployment-manifest> \
          hostname=<parent-fqdn-or-ip> \
       --device id=child-1 \
          parent=parent-1 \
          deployment=<child-deployment-manifest> \
          hostname=<child-fqdn-or-ip>
    

    Následující příkaz například vytvoří hierarchii dvou zařízení IoT Edge ve službě IoT Hub. Zařízení nejvyšší vrstvy s názvem parent-1 a nižší vrstvy s názvem child-1*. Příkaz uloží konfigurační sady pro každé zařízení ve výstupním adresáři. Příkaz také vygeneruje testovací certifikáty podepsané svým držitelem a zahrne je do konfigurační sady. Konfigurační sady se instalují na každé zařízení pomocí instalačního skriptu.

    az iot edge devices create \
       --hub-name my-iot-hub \
       --output-path ./output \
       --default-edge-agent "mcr.microsoft.com/azureiotedge-agent:1.5" \
       --device id=parent-1 \
          deployment=./deploymentTopLayer.json \
          hostname=10.0.0.4 \
       --device id=child-1 \
          parent=parent-1 \
          deployment=./deploymentLowerLayer.json \
          hostname=10.1.0.4
    

Po spuštění příkazu najdete sady konfigurace zařízení ve výstupním adresáři. Příklad:

PS C:\nested-edge\output> dir

   Directory: C:\nested-edge\output

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---           4/10/2023  4:12 PM           7192 child-1.tgz
-a---           4/10/2023  4:12 PM           6851 parent-1.tgz

Můžete použít vlastní certifikáty a klíče předané jako argumenty příkazu nebo vytvořit složitější hierarchii zařízení. Další informace o vytváření vnořených zařízení pomocí příkazu az najdete v tématu az iot edge devices create. Pokud neznáte způsob použití certifikátů ve scénáři brány, přečtěte si část s návody k certifikátu.

V tomto kurzu použijete vložené argumenty k vytvoření zařízení a konfiguračních sad. Konfigurační soubor můžete použít také ve formátu YAML nebo JSON. Ukázkový konfigurační soubor najdete v příkladu sample_devices_config.yaml.

Konfigurace modulu runtime IoT Edge

Kromě zřizování zařízení navazují kroky konfigurace důvěryhodnou komunikaci mezi zařízeními ve vaší hierarchii pomocí certifikátů, které jste vytvořili dříve. Kroky také začínají vytvářet síťovou strukturu vaší hierarchie. Zařízení nejvyšší vrstvy udržuje připojení k internetu, což umožňuje načíst image pro modul runtime z cloudu, zatímco zařízení nižší vrstvy směrují přes zařízení nejvyšší vrstvy pro přístup k těmto imagím.

Pokud chcete nakonfigurovat modul runtime IoT Edge, musíte na zařízení použít konfigurační sady. Konfigurace se liší mezi zařízením nejvyšší vrstvy a zařízením nižší vrstvy, takže mějte na paměti konfigurační soubor zařízení, který používáte na každé zařízení.

  1. Zkopírujte soubor archivu jednotlivých konfiguračních sad do příslušného zařízení. Můžete použít jednotku USB, službu, jako je Azure Key Vault, nebo s funkcí, jako je zabezpečené kopírování souborů. Vyberte jednu z těchto metod, která nejlépe odpovídá vašemu scénáři.

    Pokud například chcete odeslat balíček konfigurace parent-1 do domovského adresáře na virtuálním počítači parent-1 , můžete použít příkaz podobný následujícímu příkladu:

    scp ./output/parent-1.tgz admin@parent-1-vm.westus.cloudapp.azure.com:~
    
  2. Na každém zařízení extrahujte archiv konfigurační sady. Například pomocí příkazu tar extrahujte archivní soubor parent-1 :

    tar -xzf ./parent-1.tgz
    
  3. Nastavte oprávnění ke spuštění instalačního skriptu.

    chmod +x install.sh
    
  4. Na každém zařízení použijte konfigurační sadu na zařízení pomocí kořenového oprávnění:

    sudo ./install.sh
    

    Instalace sad konfigurace aktualizuje soubory config.toml na vašem zařízení a automaticky restartuje všechny služby IoT Edge.

    Pokud se chcete blíže podívat na změny konfiguračního souboru vašeho zařízení, podívejte se, Připojení zařízení Azure IoT Edge společně a vytvořte hierarchii.

Pokud chcete ověřit, že jsou vaše zařízení správně nakonfigurovaná, spusťte na svých zařízeních kontroly konfigurace a připojení.

sudo iotedge check
admin@child-1-vm:~$ sudo iotedge check

Configuration checks (aziot-identity-service)
---------------------------------------------
√ keyd configuration is well-formed - OK
√ certd configuration is well-formed - OK
√ tpmd configuration is well-formed - OK
√ identityd configuration is well-formed - OK
√ daemon configurations up-to-date with config.toml - OK
√ identityd config toml file specifies a valid hostname - OK
√ host time is close to reference time - OK
√ preloaded certificates are valid - OK
√ keyd is running - OK
√ certd is running - OK
√ identityd is running - OK
√ read all preloaded certificates from the Certificates Service - OK
√ read all preloaded key pairs from the Keys Service - OK
√ check all EST server URLs utilize HTTPS - OK
√ ensure all preloaded certificates match preloaded private keys with the same ID - OK

Connectivity checks (aziot-identity-service)
--------------------------------------------
√ host can connect to and perform TLS handshake with iothub AMQP port - OK
√ host can connect to and perform TLS handshake with iothub HTTPS / WebSockets port - OK
√ host can connect to and perform TLS handshake with iothub MQTT port - OK

Configuration checks
--------------------
√ aziot-edged configuration is well-formed - OK
√ configuration up-to-date with config.toml - OK
√ container engine is installed and functional - OK
√ configuration has correct parent_hostname - OK
√ configuration has correct URIs for daemon mgmt endpoint - OK
√ container time is close to host time - OK
‼ DNS server - Warning
    Container engine is not configured with DNS server setting, which may impact connectivity to IoT Hub.
    Please see https://aka.ms/iotedge-prod-checklist-dns for best practices.
    You can ignore this warning if you are setting DNS server per module in the Edge deployment.
‼ production readiness: logs policy - Warning
    Container engine is not configured to rotate module logs which may cause it run out of disk space.
    Please see https://aka.ms/iotedge-prod-checklist-logs for best practices.
    You can ignore this warning if you are setting log policy per module in the Edge deployment.
‼ production readiness: Edge Agent's storage directory is persisted on the host filesystem - Warning
    The edgeAgent module is not configured to persist its /tmp/edgeAgent directory on the host filesystem.
    Data might be lost if the module is deleted or updated.
    Please see https://aka.ms/iotedge-storage-host for best practices.
‼ production readiness: Edge Hub's storage directory is persisted on the host filesystem - Warning
    The edgeHub module is not configured to persist its /tmp/edgeHub directory on the host filesystem.
    Data might be lost if the module is deleted or updated.
    Please see https://aka.ms/iotedge-storage-host for best practices.
√ Agent image is valid and can be pulled from upstream - OK
√ proxy settings are consistent in aziot-edged, aziot-identityd, moby daemon and config.toml - OK

Connectivity checks
-------------------
√ container on the default network can connect to upstream AMQP port - OK
√ container on the default network can connect to upstream HTTPS / WebSockets port - OK
√ container on the IoT Edge module network can connect to upstream AMQP port - OK
√ container on the IoT Edge module network can connect to upstream HTTPS / WebSockets port - OK
30 check(s) succeeded.
4 check(s) raised warnings. Re-run with --verbose for more details.
2 check(s) were skipped due to errors from other checks. Re-run with --verbose for more details.

Na zařízení nejvyšší vrstvy se očekává, že se zobrazí výstup s několika předáváním vyhodnocení. Může se zobrazit několik upozornění na zásady protokolů a v závislosti na vaší síti, zásadách DNS.

Nasazení modulu zařízení

Nasazení modulu pro vaše zařízení se použilo při vytváření zařízení ve službě IoT Hub. Příkaz az iot edge devices create použil soubory JSON nasazení pro zařízení nejvyšší a nižší vrstvy. Po dokončení těchto nasazení použije zařízení nižší vrstvy modul proxy rozhraní API IoT Edge k načtení potřebných imagí.

Kromě modulů runtime moduly IoT Edge Agent a IoT Edge Hub obdrží zařízení nejvyšší vrstvy modul registru Dockeru a modul proxy rozhraní API IoT Edge.

Modul registru Dockeru odkazuje na existující službu Azure Container Registry. V tomto případě REGISTRY_PROXY_REMOTEURL odkazuje na službu Microsoft Container Registry. Registr Dockeru ve výchozím nastavení naslouchá na portu 5000.

Modul proxy rozhraní API služby IoT Edge směruje požadavky HTTP do jiných modulů, což umožňuje zařízením nižší vrstvy vyžádat image kontejnerů nebo odesílat objekty blob do úložiště. V tomto kurzu komunikuje na portu 443 a je nakonfigurovaný tak, aby odesílal žádosti o přijetí změn image kontejneru Dockeru do modulu registru Dockeru na portu 5000. Všechny požadavky na nahrání do úložiště objektů blob také směrují do modulu AzureBlobStorageonIoTEdge na portu 11002. Další informace o modulu proxy rozhraní API služby IoT Edge a o tom, jak ho nakonfigurovat, najdete v příručce s postupy modulu.

Pokud se chcete podívat, jak vytvořit nasazení podobné prostřednictvím webu Azure Portal nebo Azure Cloud Shellu, přečtěte si část s postupy v části zařízení nejvyšší vrstvy.

Stav modulů můžete zobrazit pomocí příkazu:

az iot hub module-twin show --device-id <edge-device-id> --module-id '$edgeAgent' --hub-name <iot-hub-name> --query "properties.reported.[systemModules, modules]"

Tento příkaz vypíše všechny vlastnosti hlášené agentem edgeAgent. Tady jsou některé užitečné pro monitorování stavu zařízení: stav modulu runtime, čas spuštění modulu runtime, čas posledního ukončení modulu runtime, počet restartování modulu runtime.

Stav modulů můžete zobrazit také na webu Azure Portal. Přejděte do části Zařízení ve službě IoT Hub a zobrazte zařízení a moduly.

Zobrazit vygenerovaná data

Modul Simulated Temperature Sensor , který jste odeslali, generuje ukázková data prostředí. Odesílá zprávy, které zahrnují okolní teplotu a vlhkost, teplotu stroje a tlak a časové razítko.

Tyto zprávy můžete zobrazit také prostřednictvím Azure Cloud Shellu:

az iot hub monitor-events -n <iot-hub-name> -d <lower-layer-device-name>

Příklad:

az iot hub monitor-events -n my-iot-hub -d child-1
{
    "event": {
        "origin": "child-1",
        "module": "simulatedTemperatureSensor",
        "interface": "",
        "component": "",
        "payload": "{\"machine\":{\"temperature\":104.29281270901808,\"pressure\":10.48905461241978},\"ambient\":{\"temperature\":21.086561171611102,\"humidity\":24},\"timeCreated\":\"2023-04-17T21:50:30.1082487Z\"}"
    }
}

Řešení problému

Spuštěním iotedge check příkazu ověřte konfiguraci a vyřešte chyby.

Vnořenou hierarchii můžete spustit iotedge check i v případě, že podřízené počítače nemají přímý přístup k internetu.

Když spustíte iotedge check z nižší vrstvy, program se pokusí načíst image z nadřazeného objektu přes port 443.

Hodnota azureiotedge-diagnostics se načítá z registru kontejneru, který je propojený s modulem registru. V tomto kurzu je ve výchozím nastavení nastaveno:https://mcr.microsoft.com

Jméno Hodnota
REGISTRY_PROXY_REMOTEURL https://mcr.microsoft.com

Pokud používáte privátní registr kontejnerů, ujistěte se, že jsou v registru kontejneru všechny image (IoTEdgeAPIProxy, edgeAgent, edgeHub, Simulated Temperature Sensor a diagnostics).

Pokud podřízené zařízení má jinou architekturu procesoru než nadřazené zařízení, potřebujete odpovídající image architektury. Můžete použít připojený registr nebo můžete zadat správnou image modulů edgeAgent a edgeHub v souboru config.toml podřízeného zařízení. Pokud například nadřazené zařízení běží v architektuře ARM32v7 a podřízené zařízení běží v architektuře AMD64, musíte v souboru config.toml podřízeného zařízení zadat odpovídající značku verze a image architektury.

[agent.config]
image = "$upstream:443/azureiotedge-agent:1.5.0-linux-amd64"

"systemModules": {
   "edgeAgent": {
      "settings": {
            "image": "$upstream:443/azureiotedge-agent:1.5.0-linux-amd64"
      },
   },
   "edgeHub": {
      "settings": {
            "image": "$upstream:443/azureiotedge-hub:1.5.0-linux-amd64",
      }
   }
}

Vyčištění prostředků

Můžete odstranit místní konfigurace a prostředky Azure, které jste vytvořili v tomto článku, abyste se vyhnuli poplatkům.

Odstranění prostředků:

  1. Přihlaste se k webu Azure Portal a potom vyberte Skupiny prostředků.

  2. Vyberte název skupiny prostředků, která obsahuje vaše testovací prostředky služby IoT Edge.

  3. Projděte si seznam prostředků ve vaší skupině prostředků. Pokud chcete odstranit všechny prostředky, můžete vybrat možnost Odstranit skupinu prostředků. Pokud chcete odstranit jenom některé z nich, můžete vybrat jednotlivé prostředky, které chcete odstranit jednotlivě.

Další kroky

V tomto kurzu jste nakonfigurovali dvě zařízení IoT Edge jako brány a nastavili jedno jako nadřazené zařízení druhé. Potom jste image kontejneru natáhli na podřízené zařízení přes bránu pomocí modulu proxy rozhraní API služby IoT Edge. Další informace najdete v průvodci používáním proxy modulu.

Další informace o vytváření hierarchických vrstev zařízení IoT Edge pomocí bran najdete v následujícím článku.