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

Použitelné pro:IoT Edge 1.5 zaškrtnuto IoT Edge 1.5

Důležité

IoT Edge 1.5 LTS je podporovaná verze. IoT Edge 1,4 LTS dosáhl konce životnosti 12. listopadu 2024. Pokud používáte starší verzi, přečtěte si téma Update IoT Edge.

Nasaďte uzly Azure IoT Edge 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.

Strukturujte hierarchii zařízení tak, aby se k cloudu mohl připojit pouze 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.

V tomto kurzu se dozvíte, jak vytvořit hierarchii IoT Edge zařízení, nasadit do zařízení kontejnery IoT Edge runtime a nakonfigurovat zařízení místně. V tomto kurzu provedete následující úlohy:

  • Vytvořte a definujte vztahy v hierarchii IoT Edge zařízení.
  • 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 IoT Edge můžete bezpečně směrovat provoz HTTP přes jeden port ze zařízení nižší vrstvy.

Tip

Tento návod obsahuje kombinaci ručních a automatizovaných kroků, které poskytují ukázku funkcí vnořených v IoT Edge.

Pokud byste chtěli zcela automatizovaně vyzkoušet nastavení hierarchie zařízení IoT Edge, postupujte podle příkladu skriptů Azure IoT Edge pro Industrial IoT. Tento skriptovaný scénář nasadí Azure virtuální počítače jako předkonfigurovaná zařízení pro simulaci prostředí továrny.

Pokud byste se chtěli podrobně podívat na ruční kroky pro vytvoření a správu hierarchie IoT Edge zařízení, přečtěte si příručku o hierarchiích brány zařízení IoT Edge.

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

  • Nejvyšší vrstva: IoT Edge zařízení v této vrstvě se mohou připojit přímo ke cloudu.

  • Nižší vrstvy: IoT Edge zařízení ve vrstvách pod horní vrstvou se nemohou připojit přímo ke cloudu. Musí projít jedním nebo více zprostředkujícími IoT Edge zařízeními pro odesílání a příjem dat.

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 nazývá 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 přidejte další zařízení, která představují vaše produkční prostředí. Zařízení v nižších vrstvách se nazývají 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 IoT Edge zařízení, 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 účet free než začnete.

  • Vrstva Free nebo Standard IoT Hub v Azure.

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

  • Dvě zařízení s Linuxem pro konfiguraci hierarchie Pokud nemáte k dispozici zařízení, můžete vytvořit Azure virtuální počítače pro každé zařízení v hierarchii pomocí šablony IoT Edge Azure Resource Manager. IoT Edge verze 1.5 je předinstalovaná s touto šablonou Resource Manager. Pokud instalujete IoT Edge na vlastní zařízení, přečtěte si téma Instalace Azure IoT Edge pro Linux nebo Update 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í, kromě těch s nejnižší vrstvou, otevřené příchozí porty: 443, 5671, 8883.

    • 443: Používá se mezi nadřazenými a podřízenými hraničními servery pro volání rozhraní REST API a k vyžádání obrazů kontejneru Docker.
    • 5671, 8883: Používá se pro AMQP a MQTT.

    Další informace najdete v tématu w otevření portů na virtuální počítač pomocí portálu Azure.

    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 (FQDN) najdete na portálu Azure. Pro IP adresu přejděte do svého seznamu virtuálních počítačů a poznamenejte si pole Veřejná IP adresa. Pro plně kvalifikovaný název domény (FQDN) přejděte na stránku přehledu jednotlivých virtuálních počítačů a vyhledejte pole název DNS. Pro přístup k SSH přejděte na stránku připojení každého virtuálního počítače.

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

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

Pokud chcete vytvořit a nakonfigurovat hierarchii zařízení IoT Edge, použijte příkaz az iot edge zařízení vytvořit Azure CLI. Příkaz zjednodušuje konfiguraci hierarchie automatizací a kondenzováním několika kroků:

  • Vytvoří zařízení ve vašem IoT centru
  • 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 edge zařízení obsahující nadřazené zařízení 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 , definujte 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 IoT Edge a deklaruje route ze zařízení nižší vrstvy na IoT Hub.

  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 jsou moduly runtime nastavené tak, aby místo mcr.microsoft.com načítá z $upstream:443. Zařízení nižší vrstvy odesílá požadavky na dockerové image do modulu IoT Edge proxy rozhraní API 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é odešle požadavek na svou image $upstream:443.

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

  3. V Azure Cloud Shell použijte příkaz az iot edge devices create Azure CLI k vytvoření zařízení v IoT Hub a konfiguračních sadách pro každé zařízení v hierarchii. Zástupný text v lomených závorkách nahraďte vlastními hodnotami:

    Zástupný symbol Popis
    <název centra> Název vašeho IoT Hub.
    <konfigurační-svazek-výstupní-cesta> 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í v nejvyšší vrstvě.
    <manifest nasazení rodiče> 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 ID podřízeného zařízení v nižší vrstvě.
    <manifest dětského nasazení> 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>
    

    Například následující příkaz vytvoří v IoT Hub hierarchii dvou IoT Edge zařízení. 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 vyhledejte v výstupním adresáři sady konfigurace zařízení. 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

Použijte vlastní certifikáty a klíče předané jako argumenty příkazu nebo vytvořte 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 IoT Edge runtime

Kromě samotného nasazení vašich zařízení zajišťují konfigurační kroky 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í na nejvyšší vrstvě udržuje připojení k internetu, což mu umožňuje načítat obrazy pro běhové prostředí z cloudu, zatímco zařízení na nižší vrstvě využívají zařízení nejvyšší vrstvy k přístupu k těmto obrazům.

Chcete-li nakonfigurovat IoT Edge runtime, použijte konfigurační sady na svá zařízení. Konfigurace se liší pro zařízení nejvyšší vrstvy a zařízení nižší vrstvy, proto se ujistěte, že pro každé zařízení používáte správný konfigurační soubor.

  1. Zkopírujte soubor archivu jednotlivých konfiguračních sad do příslušného zařízení. Můžete použít USB disk, službu, jako je Azure Key Vault nebo s funkcí, jako je Sekuré 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í spusťte instalační skript s oprávněním root k použití konfigurační sady:

    sudo ./install.sh
    

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

    Další podrobnosti o změnách konfiguračního souboru zařízení najdete v tématu Pojení Azure IoT Edge zařízení dohromady a vytvoření hierarchie.

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 vrstvě nejvyšší úrovně vašeho zařízení se zobrazí výstup s několika úspěšně proběhlými kontrolami. Může se zobrazit několik upozornění na zásady logu, a v závislosti na vaší síti na zásady DNS.

Nasazení modulu zařízení

Nasazení modulu pro vaše zařízení se aplikuje při vytvoření zařízení v IoT Hubu. Příkaz az iot edge devices create aplikuje soubory JSON pro nasazení zařízení na horní a dolní úrovni vrstvy. Po dokončení nasazení používá zařízení spodní vrstvy modul IoT Edge API Proxy k načtení obrazů.

Kromě modulů runtime IoT Edge Agent a IoT Edge Hub získá zařízení na nejvyšší vrstvě také modul Docker registry a modul IoT Edge API Proxy.

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

Proxy rozhraní API IoT Edge směruje požadavky HTTP do jiných modulů, takže zařízení s nižší vrstvou můžou vyžádat image kontejnerů nebo odesílat objekty blob do úložiště. V tomto kurzu komunikuje přes port 443 a je nakonfigurován k odesílání požadavků na stažení obrazu kontejneru Docker do modulu registru Dockeru na portu 5000. Požadavky na nahrání do blob úložiště jsou směrovány do modulu AzureBlobStorageonIoTEdge na portu 11002. Další informace o modulu proxy rozhraní API IoT Edge a o tom, jak ho nakonfigurovat, najdete v průvodci.

Další informace o vytvoření takového nasazení na portálu Azure nebo v Azure Cloud Shell najdete v části horní vrstvy návodu.

Pomocí tohoto příkazu zobrazte stav modulů:

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 zobrazí všechny vlastnosti hlášené agentem edgeAgent. Mezi užitečné vlastnosti monitorování stavu zařízení patří : stav modulu runtime, čas spuštění modulu runtime, čas posledního ukončení modulu runtime a počet restartování modulu runtime.

Stav modulů můžete zobrazit také na portálu Azure. Přejděte do části Devices vašeho IoT Hub a zobrazte si zařízení a moduly.

Zobrazit vygenerovaná data

Modul Simulated Temperature Sensor 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é pomocí Azure Cloud Shell:

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.

Spusťte iotedge check v rámci vnořené hierarchie, i když následné stroje nemají přímý přístup k internetu.

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

Hodnota azureiotedge-diagnostics pochází z registru kontejneru, který je propojený s modulem registru. Tento kurz ho ve výchozím nastavení nastaví na https://mcr.microsoft.com:

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

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

Pokud podřízené zařízení používá jinou architekturu procesoru než nadřazené zařízení, použijte příslušnou image architektury. Použijte připojený registr nebo zadejte správnou image pro moduly edgeAgent a edgeHub v souboru config.toml podřízeného zařízení. Pokud například nadřazené zařízení běží na ARM32v7 a podřízené zařízení běží na AMD64, zadejte odpovídající značku image verze a architektury v souboru config.toml podřízeného zařízení.

[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.

Chcete-li odstranit prostředky:

  1. Přihlaste se k portálu Azure a vyberte Zdrojové skupiny.

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

  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ě IoT Edge zařízení jako brány a nastavili jedno jako nadřazené zařízení druhé. Potom jste pomocí modulu proxy rozhraní API IoT Edge stáhli obraz kontejneru na podřízené zařízení prostřednictvím brány. Další informace najdete v průvodci používáním proxy modulu.

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