Sdílet prostřednictvím


Kurz: Vytvoření hierarchie zařízení IoT Edge pomocí IoT Edge pro Linux ve Windows

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

Důležité

Podporované verze azure IoT Edge 1.5 LTS a IoT Edge 1.4. IoT Edge 1.4 LTS končí 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 severními a jižními vrstvami. Tato síťová vrstva 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 pomocí IoT Edge pro Linux ve Windows, 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, provedete vlastní skript založený na skriptované ukázce Azure IoT Edge for Industrial 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:

  • Prostředí Bash v Azure Cloud Shellu s nainstalovaným rozšířením Azure IoT v0.10.6 nebo novějším pomocí Azure CLI v2.3.1. 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 Windows, na kterých běží Azure IoT Edge pro Linux ve Windows Obě zařízení by se měla nasadit pomocí externího virtuálního přepínače.

Tip

Pokud je přesměrování portů nakonfigurované na hostitelském operačním systému Windows, je možné použít interní nebo výchozí virtuální přepínač. Pro zjednodušení tohoto kurzu by ale obě zařízení měla používat externí virtuální přepínač a být připojená ke stejné externí síti.

Další informace o netowrkingu najdete v tématu Azure IoT Edge pro Linux v síťové a síťové konfiguraci Windows pro Azure IoT Edge pro Linux ve Windows.

Pokud potřebujete nastavit zařízení EFLOW na DMZ, přečtěte si, jak nakonfigurovat Azure IoT Edge pro Linux v konfiguraci Windows Industrial IoT &DMZ.

  • Úč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.
  • 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.

Tip

Další informace o bráně firewall virtuálních počítačů EFLOW najdete v tématu Zabezpečení IoT Edge pro Linux.

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.4" \
       --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.4" \
       --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í.

Každé zařízení potřebuje odpovídající konfigurační sadu. Ke přesunutí konfiguračních sad do každého zařízení můžete použít usb disk nebo zabezpečenou kopii souboru. Konfigurační sadu musíte zkopírovat do hostitelského operačního systému Windows každého zařízení EFLOW a pak ho zkopírovat do virtuálního počítače EFLOW.

Upozorňující

Nezapomeňte do každého zařízení odeslat správnou sadu konfigurace.

Konfigurace zařízení nejvyšší vrstvy

  1. Připojte se k hostitelskému zařízení s Windows nejvyšší úrovně a zkopírujte do zařízení soubor parent-1.tzg.

  2. Spusťte relaci PowerShellu se zvýšenými oprávněními pomocí příkazu Spustit jako správce.

  3. Zkopírujte nadřazený-1.tzg do virtuálního počítače EFLOW.

    Copy-EflowVmFile -fromFile parent-1.tzg -toFile ~/ -pushFile
    
  4. Připojení k virtuálnímu počítači EFLOW

    Connect-EflowVm
    
  5. Extrahujte archiv konfigurační sady. Například pomocí příkazu tar extrahujte archivní soubor parent-1 :

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

    chmod +x install.sh
    
  7. Spusťte skript install.sh.

    sudo sh ./install.sh
    
  8. Použijte správná oprávnění k certifikátu a restartujte modul runtime IoT Edge.

    sudo chmod -R 755 /etc/aziot/certificates/
    sudo iotedge system restart
    
  9. Zkontrolujte, jestli jsou všechny služby IoT Edge správně spuštěné.

    sudo iotedge system status
    
  10. Nakonec přidejte příslušná pravidla brány firewall, která umožní připojení mezi zařízením nižší vrstvy a zařízením nejvyšší vrstvy.

    sudo iptables -A INPUT -p tcp --dport 5671 -j ACCEPT
    sudo iptables -A INPUT -p tcp --dport 8883 -j ACCEPT
    sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
    sudo iptables -A INPUT -p icmp --icmp-type 8 -s 0/0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
    sudo iptables-save | sudo tee /etc/systemd/scripts/ip4save
    
  11. Spusťte konfiguraci a kontroly připojení na vašich zařízeních.

    sudo iotedge check
    

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.

Pokud se chcete blíže podívat, jaké změny se provádí v konfiguračním souboru vašeho zařízení, přečtěte si část s návody ke konfiguraci IoT Edge na zařízeních.

Konfigurace zařízení nižší vrstvy

  1. Připojte se k hostitelskému zařízení s Windows nižší úrovně a zkopírujte do zařízení soubor child-1.tzg .

  2. Spusťte relaci PowerShellu se zvýšenými oprávněními pomocí příkazu Spustit jako správce.

  3. Zkopírujte podřízený-1.tzg do virtuálního počítače EFLOW.

    Copy-EflowVmFile -fromFile child-1.tzg -toFile ~/ -pushFile
    
  4. Připojení k virtuálnímu počítači EFLOW

    Connect-EflowVm
    
  5. Extrahujte archiv konfigurační sady. Například pomocí příkazu tar extrahujte archivní soubor child-1 :

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

    chmod +x install.sh
    
  7. Spusťte skript install.sh.

    sudo sh ./install.sh
    
  8. Použijte správná oprávnění k certifikátu a restartujte modul runtime IoT Edge.

    sudo chmod -R 755 /etc/aziot/certificates/
    sudo iotedge system restart
    
  9. Zkontrolujte, jestli jsou všechny služby IoT Edge správně spuštěné.

    sudo iotedge system status
    
  10. Spusťte konfiguraci a kontroly připojení na vašich zařízeních. V případě zařízení nižší vrstvy musí být ručně předána image diagnostiky v příkazu:

    sudo iotedge check --diagnostics-image-name <parent_device_fqdn_or_ip>:443/azureiotedge-diagnostics:1.2
    

Pokud jste dokončili předchozí kroky správně, můžete ověřit, že jsou vaše zařízení správně nakonfigurovaná. Jakmile budete spokojeni se správnými konfiguracemi na každém zařízení, můžete pokračovat.

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á zařízení 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.

sudo iotedge check --diagnostics-image-name $upstream:443/azureiotedge-diagnostics:1.2

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.4.10-linux-amd64"

"systemModules": {
   "edgeAgent": {
      "settings": {
            "image": "$upstream:443/azureiotedge-agent:1.4.10-linux-amd64"
      },
   },
   "edgeHub": {
      "settings": {
            "image": "$upstream:443/azureiotedge-hub:1.4.10-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é. Pak jste ukázali načtení image kontejneru do podřízeného zařízení prostřednictvím brány 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.