Řešení běžných problémů s IoT Edge

Upozornění

Tento článek odkazuje na CentOS, linuxovou distribuci, která se blíží stavu Konec životnosti (EOL). Zvažte své použití a plánování odpovídajícím způsobem. Další informace najdete v doprovodných materiálech CentOS End Of Life.

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.

Tento článek slouží k identifikaci a řešení běžných problémů při používání řešení IoT Edge. Pokud potřebujete informace o tom, jak najít protokoly a chyby ze zařízení IoT Edge, přečtěte si téma Řešení potíží se zařízením IoT Edge.

Zřizování a nasazení

Modul IoT Edge se nasadí úspěšně a pak zmizí ze zařízení

Příznaky

Po nastavení modulů pro zařízení IoT Edge se moduly úspěšně nasadí, ale po několika minutách zmizí ze zařízení a z podrobností o zařízení na webu Azure Portal. Na zařízení se můžou objevit i jiné moduly, než jsou definované moduly.

Příčina

Pokud automatické nasazení cílí na zařízení, má přednost před ručním nastavením modulů pro jedno zařízení. Funkce Sady modulů na webu Azure Portal nebo Vytvoření nasazení pro funkce jednoho zařízení v editoru Visual Studio Code se projeví na chvíli. Zobrazí se moduly, které jste definovali, se spustí v zařízení. Potom se spustí priorita automatického nasazení a přepíše požadované vlastnosti zařízení.

Řešení

Pro každé zařízení používejte pouze jeden typ mechanismu nasazení, a to buď automatické nasazení, nebo jednotlivá nasazení zařízení. Pokud máte více automatických nasazení, která cílí na zařízení, můžete změnit popisy priority nebo cíle, abyste měli jistotu, že se na dané zařízení vztahuje správná nasazení. Můžete také aktualizovat dvojče zařízení tak, aby se přestalo shodovat s cílovým popisem automatického nasazení.

Další informace najdete v tématu Vysvětlení automatických nasazení IoT Edge pro jednotlivá zařízení nebo ve velkém měřítku.

Modul runtime IoT Edge

Agent IoT Edge se zastaví po minutě.

Příznaky

Modul edgeAgent se spustí a úspěšně spustí přibližně minutu a pak se zastaví. Protokoly označují, že se agent IoT Edge pokusí připojit k IoT Hubu přes AMQP a pak se pokusí připojit pomocí AMQP přes WebSocket. Pokud se to nezdaří, agent IoT Edge se ukončí.

Příklady protokolů edgeAgent:

2017-11-28 18:46:19 [INF] - Starting module management agent.
2017-11-28 18:46:19 [INF] - Version - 1.0.7516610 (03c94f85d0833a861a43c669842f0817924911d5)
2017-11-28 18:46:19 [INF] - Edge agent attempting to connect to IoT Hub via AMQP...
2017-11-28 18:46:49 [INF] - Edge agent attempting to connect to IoT Hub via AMQP over WebSocket...

Příčina

Konfigurace sítě v hostitelské síti brání agentu IoT Edge v dosažení sítě. Agent se nejprve pokusí připojit přes protokol AMQP (port 5671). Pokud se připojení nezdaří, pokusí se webSockets (port 443).

Modul runtime IoT Edge nastaví pro každý z modulů síť, na které budou komunikovat. V Linuxu je tato síť síťovým mostem. Ve Windows využívá překlad adres (NAT). K tomuto problému častěji dochází na zařízeních s Windows využívajících kontejnery Windows a síť s překladem adres (NAT).

Řešení

Ujistěte se, že existuje trasa k internetu pro IP adresy přiřazené k této síti mostu nebo překladu adres (NAT). Někdy konfigurace sítě VPN na hostiteli přepíše síť IoT Edge.

Modul agenta Edge hlásí prázdný konfigurační soubor a na zařízení se nespouštějí žádné moduly

Příznaky

  • Zařízení má potíže se spouštěním modulů definovaných v nasazení. Běží pouze agent edgeAgent , ale hlásí prázdný konfigurační soubor....

  • Při spuštění sudo iotedge check na zařízení hlásí , že modul kontejneru není nakonfigurovaný s nastavením serveru DNS, což může mít vliv na připojení ke službě IoT Hub. Projděte si https://aka.ms/iotedge-prod-checklist-dns osvědčené postupy.

Příčina

  • IoT Edge ve výchozím nastavení spouští moduly ve vlastní izolované kontejnerové síti. Zařízení může mít problémy s překladem názvů DNS v rámci této privátní sítě.
  • Pokud používáte instalaci přichycení IoT Edge, konfigurační soubor Dockeru je jiné umístění. Viz možnost řešení 3.

Řešení

Možnost 1: Nastavení serveru DNS v nastavení kontejnerového stroje

V nastavení modulu kontejneru zadejte server DNS pro vaše prostředí, který bude platit pro všechny moduly kontejneru spuštěné modulem. Vytvořte soubor s názvem daemon.jsona zadejte server DNS, který se má použít. Příklad:

{
    "dns": ["1.1.1.1"]
}

Tento server DNS je nastavený na veřejně přístupnou službu DNS. Některé sítě, jako jsou podnikové sítě, ale mají nainstalované vlastní servery DNS a nepovolují přístup k veřejným serverům DNS. Proto pokud vaše hraniční zařízení nemá přístup k veřejnému serveru DNS, nahraďte ho dostupnou adresou serveru DNS.

Umístěte daemon.json adresář do /etc/docker zařízení.

Pokud už umístění obsahuje daemon.json soubor, přidejte do něj klíč DNS a soubor uložte.

Restartujte modul kontejneru, aby se aktualizace projevily.

sudo systemctl restart docker

Možnost 2: Nastavení serveru DNS v nasazení IoT Edge na modul

Server DNS pro vytváření jednotlivých modulů můžete nastavit v nasazení IoT Edge. Příklad:

"createOptions": {
  "HostConfig": {
    "Dns": [
      "x.x.x.x"
    ]
  }
}

Upozorňující

Pokud použijete tuto metodu a zadáte nesprávnou adresu DNS, edgeAgent ztratí připojení ke službě IoT Hub a nemůže přijmout nová nasazení, aby se problém vyřešil. Pokud chcete tento problém vyřešit, můžete přeinstalovat modul runtime IoT Edge. Před instalací nové instance IoT Edge nezapomeňte odebrat všechny kontejnery edgeAgent z předchozí instalace.

Nezapomeňte tuto konfiguraci nastavit i pro moduly edgeAgent a edgeHub .

Možnost 3: Předání umístění konfiguračního souboru Dockeru ke kontrole příkazu

Pokud je IoT Edge nainstalovaný jako přichycení, zadejte umístění konfiguračního souboru Dockeru pomocí --container-engine-config-file parametru. Pokud je například konfigurační soubor Dockeru umístěný na /var/snap/docker/current/config/daemon.jsonadrese , spusťte následující příkaz: iotedge check --container-engine-config-file '/var/snap/docker/current/config/daemon.json'.

Zpráva upozornění se v současné době zobrazuje ve výstupu kontroly iotedge i po nastavení umístění konfiguračního souboru. Zkontrolujte chybu, protože přichycení IoT Edge nemá přístup pro čtení k modulu snap-in Docker. Pokud v procesu vydání použijete kontrolu iotedge, můžete zprávu upozornění potlačit pomocí parametru --ignore container-engine-dns container-engine-logrotate .

Modul agenta Edge s sestavami připojení LTE nahlásí prázdnou konfiguraci agenta Edge a způsobí přechodnou chybu sítě.

Příznaky

Zařízení nakonfigurované s připojením LTE má problémy se spouštěním modulů definovaných v nasazení. EdgeAgent se nemůže připojit ke službě IoT Hub a hlásí prázdnou konfiguraci agenta Edge a došlo k přechodné chybě sítě.

Příčina

Některé sítě mají režijní náklady na pakety, což vede k příliš vysoké hodnotě MTU (1500) sítě Dockeru a způsobuje fragmentaci paketů, která brání přístupu k externím prostředkům.

Řešení

  1. Zkontrolujte nastavení MTU pro vaši síť Dockeru.

    docker network inspect <network name>

  2. Zkontrolujte nastavení MTU pro adaptér fyzické sítě na vašem zařízení.

    ip addr show eth0

Poznámka:

MTU pro síť Dockeru nemůže být vyšší než MTU pro vaše zařízení. Další informace získáte od svého zprostředkovatele internetových služeb.

Pokud se pro vaši síť Dockeru a zařízení zobrazí jiná velikost MTU, zkuste následující alternativní řešení:

  1. Vytvořte novou síť. Příklad:

    docker network create --opt com.docker.network.driver.mtu=1430 test-mtu

    V tomto příkladu je nastavení MTU pro zařízení 1430. MtU pro síť Dockeru je proto nastavená na 1430.

  2. Zastavte a odeberte síť Azure.

    docker network rm azure-iot-edge

  3. Znovu vytvořte síť Azure.

    docker network create --opt com.docker.network.driver.mtu=1430 azure-iot-edge

  4. Odeberte všechny kontejnery a restartujte službu aziot-edged .

    sudo iotedge system stop && sudo docker rm -f $(docker ps -aq -f "label=net.azure-devices.edge.owner=Microsoft.Azure.Devices.Edge.Agent") && sudo iotedge config apply

Agent Edge nemá přístup k imagi modulu (403)

Příznaky

Kontejner se nepodaří spustit a agent edgeAgent hlásí chybu 403.

Příčina

Modul agenta IoT Edge nemá oprávnění pro přístup k imagi modulu.

Řešení

Ujistěte se, že přihlašovací údaje registru kontejneru jsou správné v manifestu nasazení zařízení.

Agent IoT Edge provádí nadměrné volání identity

Příznaky

Agent IoT Edge provádí nadměrné volání identity do Azure IoT Hubu.

Příčina

Chybná konfigurace manifestu nasazení zařízení způsobí neúspěšné nasazení v zařízení. Logika opakování agenta IoT Edge pokračuje v nasazení znovu. Každé opakování provede volání identity, dokud nasazení nebude úspěšné. Pokud například manifest nasazení určuje identifikátor URI modulu, který neexistuje v registru kontejneru nebo je chybně zadaný, agent IoT Edge nasazení opakuje, dokud se manifest nasazení neopraví.

Řešení

Ověřte manifest nasazení na webu Azure Portal. Opravte všechny chyby a znovu nasaďte manifest do zařízení.

Centrum služby IoT Edge se nedaří spustit

Příznaky

Modul EdgeHub se nespustí. V protokolech se může zobrazit zpráva podobná jedné z následujících chyb:

One or more errors occurred.
(Docker API responded with status code=InternalServerError, response=
{\"message\":\"driver failed programming external connectivity on endpoint edgeHub (6a82e5e994bab5187939049684fb64efe07606d2bb8a4cc5655b2a9bad5f8c80):
Error starting userland proxy: Bind for 0.0.0.0:443 failed: port is already allocated\"}\n)

Nebo

info: edgelet_docker::runtime -- Starting module edgeHub...
warn: edgelet_utils::logging -- Could not start module edgeHub
warn: edgelet_utils::logging --     caused by: failed to create endpoint edgeHub on network nat: hnsCall failed in Win32:
        The process cannot access the file because it is being used by another process. (0x20)

Příčina

Některé další procesy na hostitelském počítači vázaly port, který se modul EdgeHub pokouší svázat. Centrum IoT Edge mapuje porty 443, 5671 a 8883 pro použití ve scénářích brány. Modul se nepovede spustit, pokud už jeden z těchto portů vázal jiný proces.

Řešení

Tento problém můžete vyřešit dvěma způsoby:

Pokud zařízení IoT Edge funguje jako zařízení brány, musíte najít a zastavit proces, který používá port 443, 5671 nebo 8883. Chyba portu 443 obvykle znamená, že druhý proces je webový server.

Pokud zařízení IoT Edge nepotřebujete používat jako bránu, můžete odebrat vazby portů z možností vytvoření modulu EdgeHubu. Možnosti vytvoření můžete změnit na webu Azure Portal nebo přímo v souboru deployment.json.

Na webu Azure Portal:

  1. Přejděte do centra IoT a v nabídce Správa zařízení vyberte Zařízení.

  2. Vyberte zařízení IoT Edge, které chcete aktualizovat.

  3. Vyberte Nastavit moduly.

  4. Vyberte modul runtime Nastavení.

  5. V nastavení modulu Edge Hub odstraňte všechno z textového pole Možnosti vytvoření kontejneru.

  6. Výběrem možnosti Použít uložte změny a vytvořte nasazení.

V souboru deployment.json:

  1. Otevřete soubor deployment.json, který jste použili na zařízení IoT Edge.

  2. edgeHub Vyhledejte nastavení v části požadovaných vlastností edgeAgent:

      "edgeHub": {
          "restartPolicy": "always",
          "settings": {
             "image": "mcr.microsoft.com/azureiotedge-hub:1.5",
             "createOptions": "{\"HostConfig\":{\"PortBindings\":{\"443/tcp\":[{\"HostPort\":\"443\"}],\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}]}}}"
          },
          "status": "running",
          "type": "docker"
       }
    
  3. Odeberte čáru createOptions a koncovou čárku na konci image řádku před ní:

      "edgeHub": {
          "restartPolicy": "always",
          "settings": {
          "image": "mcr.microsoft.com/azureiotedge-hub:1.5",
          "status": "running",
          "type": "docker"
    }
    
  4. Pokud ho chcete znovu použít na zařízení IoT Edge, vyberte Vytvořit .

Modul IoT Edge nemůže poslat zprávu centru služby edgeHub kvůli chybě 404

Příznaky

Vlastní modul IoT Edge se nepodaří odeslat zprávu do centra IoT Edge s chybou 404 Module not found . Modul runtime IoT Edge vypíše do protokolů následující zprávu:

Error: Time:Thu Jun  4 19:44:58 2018 File:/usr/sdk/src/c/provisioning_client/adapters/hsm_client_http_edge.c Func:on_edge_hsm_http_recv Line:364 executing HTTP request fails, status=404, response_buffer={"message":"Module not found"}u, 04 )

Příčina

Modul runtime IoT Edge vynucuje identifikaci procesů pro všechny moduly připojující se k hraničnímuHubu z bezpečnostních důvodů. Ověřuje, že všechny zprávy odeslané modulem pocházejí z ID hlavního procesu modulu. Pokud modul odesílá zprávu z jiného ID procesu, než je původně navázáno, odmítne zprávu s chybovou zprávou 404.

Řešení

Od verze 1.0.7 jsou všechny procesy modulů autorizované k připojení. Další informace najdete v protokolu změn vydané verze 1.0.7.

Pokud upgrade na verzi 1.0.7 není možný, proveďte následující kroky. Ujistěte se, že vlastní modul IoT Edge vždy používá stejné ID procesu k odesílání zpráv do edgeHubu. Nezapomeňte ENTRYPOINTCMD například místo příkazu v souboru Dockeru. Příkaz CMD vede k jednomu ID procesu modulu a k jinému ID procesu pro příkaz Bash, který spouští hlavní program, ale ENTRYPOINT vede k jednomu ID procesu.

Problémy se stabilitou na menších zařízeních

Příznaky

Na zařízeních s omezenými prostředky, jako je Raspberry Pi, může docházet k problémům se stabilitou, zejména pokud se používá jako brána. Mezi příznaky patří výjimky z nedostatku paměti v modulu centra IoT Edge, podřízená zařízení se nedaří připojit nebo zařízení, které po několika hodinách neodesílá telemetrické zprávy.

Příčina

Centrum IoT Edge, které je součástí modulu runtime IoT Edge, je ve výchozím nastavení optimalizované pro výkon a pokouší se přidělit velké bloky paměti. Tato optimalizace není ideální pro omezená hraniční zařízení a může způsobit problémy se stabilitou.

Řešení

Pro centrum IoT Edge nastavte proměnnou prostředí OptimizeForPerformance na false. Proměnné prostředí můžete nastavit dvěma způsoby:

Na webu Azure Portal:

  1. Ve službě IoT Hub vyberte své zařízení IoT Edge a na stránce s podrobnostmi o zařízení vyberte Nastavení Nastavit moduly>runtime.

  2. Vytvořte proměnnou prostředí pro modul centra IoT Edge s názvem OptimizeForPerformance s typem True/False , který je nastavený na False.

  3. Chcete-li uložit změny, vyberte Zkontrolovat a vytvořit.

    Proměnná prostředí je teď ve edgeHub vlastnosti manifestu nasazení:

       "edgeHub": {
          "env": {
                "OptimizeForPerformance": {
                   "value": false
                }
          },
          "restartPolicy": "always",
          "settings": {
                "image": "mcr.microsoft.com/azureiotedge-hub:1.5",
                "createOptions": "{\"HostConfig\":{\"PortBindings\":{\"443/tcp\":[{\"HostPort\":\"443\"}],\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}]}}}"
          },
          "status": "running",
          "type": "docker"
       }
    
  4. Výběrem možnosti Vytvořit uložte změny a nasaďte modul.

Proces démon zabezpečení se nepodařilo spustit úspěšně

Příznaky

Proces démon zabezpečení se nespustí a kontejnery modulů se nevytvořily. edgeHub Služba edgeAgentIoT Edge nespustit moduly a další vlastní moduly. V aziot-edged protokolech se zobrazí tato chyba:

  • Proces démon se nepodařilo úspěšně spustit: Nepodařilo se spustit službu správy.
  • způsobené: Došlo k chybě pro cestu /var/run/iotedge/mgmt.sock
  • způsobené: Oprávnění odepřeno (chyba operačního systému 13)

Příčina

Pro všechny distribuce Linuxu s výjimkou CentOS 7 je výchozí konfigurace IoT Edge používat systemd aktivaci soketu. K chybě oprávnění dojde v případě, že změníte konfigurační soubor tak, aby nepoužít aktivaci soketu, ale adresy URL ponecháte jako /var/run/iotedge/*.sock, protože iotedge uživatel nemůže zapisovat, což /var/run/iotedge znamená, že nemůže odemknout a připojit samotné sokety.

Řešení

Aktivaci soketu v distribuci, ve které se podporuje aktivace soketu, není nutné zakázat. Pokud však raději nepoužíváte aktivaci soketu vůbec, vložte sokety do /var/lib/iotedge/.

  1. Spuštěním systemctl disable iotedge.socket iotedge.mgmt.socket zakažte jednotky soketů, aby se systém nespustí zbytečně.
  2. Změna konfigurace iotedge tak, aby se používala /var/lib/iotedge/*.sock v obou connectlisten částech
  3. Pokud už máte moduly, mají staré /var/run/iotedge/*.sock přípojky, takže docker rm -f jsou.

Sítě

Proces démon zabezpečení IoT Edge selže s neplatným názvem hostitele

Příznaky

Pokus o kontrolu protokolů správce zabezpečení IoT Edge se nezdaří a vytiskne následující zprávu:

Error parsing user input data: invalid hostname. Hostname cannot be empty or greater than 64 characters

Příčina

Modul runtime IoT Edge může podporovat pouze názvy hostitelů, které jsou kratší než 64 znaků. Fyzické počítače obvykle nemají dlouhé názvy hostitelů, ale problém je častější na virtuálním počítači. Automaticky generované názvy hostitelů pro virtuální počítače s Windows hostované v Azure jsou zejména dlouhé.

Řešení

Když se zobrazí tato chyba, můžete ji vyřešit konfigurací názvu DNS virtuálního počítače a následným nastavením názvu DNS jako názvu hostitele v příkazu nastavení.

  1. Na webu Azure Portal přejděte na stránku s přehledem vašeho virtuálního počítače.

  2. Otevřete konfigurační panel výběrem možnosti Nenakonfigurováno (pokud je váš virtuální počítač nový) pod názvem DNS nebo vyberte existující název DNS. Pokud už váš virtuální počítač má nakonfigurovaný název DNS, nemusíte ho konfigurovat.

    Snímek obrazovky znázorňuje, jak otevřít konfigurační panel vašeho názvu DNS.

  3. Zadejte hodnotu pro popisek názvu DNS, pokud ho ještě nemáte, a vyberte Uložit.

  4. Zkopírujte nový název DNS, který by měl být ve formátu:
    <DNSnamelabel>.<vmlocation.cloudapp.azure.com>.

  5. Na zařízení IoT Edge otevřete konfigurační soubor.

    sudo nano /etc/aziot/config.toml
    
  6. Nahraďte hodnotu hostname názvem DNS.

  7. Uložte a zavřete soubor a pak použijte změny na IoT Edge.

    sudo iotedge config apply
    

Modul IoT Edge hlásí chyby připojení

Příznaky

Moduly IoT Edge, které se připojují přímo ke cloudovým službám, včetně modulů runtime, přestanou fungovat podle očekávání a vrací chyby související s připojením nebo selháním sítě.

Příčina

Kontejnery spoléhají na předávání paketů PROTOKOLU IP, aby se mohly připojit k internetu, aby mohly komunikovat s cloudovými službami. Předávání paketů IP je ve výchozím nastavení v Dockeru povolené, ale pokud se zakáže, nebudou všechny moduly, které se připojují ke cloudovým službám, fungovat podle očekávání. Další informace najdete v tématu Vysvětlení komunikace kontejneru v dokumentaci k Dockeru.

Řešení

Pomocí následujících kroků povolte předávání paketů PROTOKOLU IP.

  1. Otevřete soubor sysctl.conf.

    sudo nano /etc/sysctl.conf
    
  2. Do souboru přidejte následující řádek.

    net.ipv4.ip_forward=1
    
  3. Soubor uložte a zavřete.

  4. Restartujte síťovou službu a službu Dockeru, aby se změny použily.

IoT Edge za bránou nemůže provádět požadavky HTTP a spouštět modul edgeAgent

Příznaky

Modul runtime IoT Edge je aktivní s platným konfiguračním souborem, ale nemůže spustit modul edgeAgent . Příkaz iotedge list vrátí prázdný seznam. Sestavy modulu runtime Could not perform HTTP request IoT Edge v protokolech.

Příčina

Zařízení IoT Edge za bránou získávají image modulů z nadřazeného zařízení IoT Edge zadaného v parent_hostname poli konfiguračního souboru. Tato Could not perform HTTP request chyba znamená, že podřízené zařízení se nemůže spojit s nadřazeným zařízením přes protokol HTTP.

Řešení

Ujistěte se, že nadřazené zařízení IoT Edge může přijímat příchozí požadavky z podřízeného zařízení IoT Edge. Otevřete síťový provoz na portech 443 a 6617 pro požadavky přicházející z podřízeného zařízení.

IoT Edge za bránou nemůže provádět požadavky HTTP a spouštět modul edgeAgent

Příznaky

Démon IoT Edge je aktivní s platným konfiguračním souborem, ale nemůže spustit modul edgeAgent. Příkaz iotedge list vrátí prázdný seznam. Sestava Could not perform HTTP requestprotokolů démona IoT Edge .

Příčina

Zařízení IoT Edge za bránou získávají image modulů z nadřazeného zařízení IoT Edge zadaného v parent_hostname poli konfiguračního souboru. Tato Could not perform HTTP request chyba znamená, že podřízené zařízení se nemůže spojit s nadřazeným zařízením přes protokol HTTP.

Řešení

Ujistěte se, že nadřazené zařízení IoT Edge může přijímat příchozí požadavky z podřízeného zařízení IoT Edge. Otevřete síťový provoz na portech 443 a 6617 pro požadavky přicházející z podřízeného zařízení.

IoT Edge se nemůže připojit při migraci z jednoho centra IoT do jiného

Příznaky

Při pokusu o migraci hierarchie zařízení IoT Edge z jednoho centra IoT do jiného se nadřazené zařízení IoT Edge nejvyšší úrovně může připojit ke službě IoT Hub, ale podřízená zařízení IoT Edge nemůžou. Sestava Unable to authenticate client downstream-device/$edgeAgent with module credentialsprotokolů .

Příčina

Přihlašovací údaje pro podřízená zařízení se při migraci do nového centra IoT neaktualizovaly správně. Z tohoto důvodu byly nastaveny moduly tak, edgeAgentedgeHub aby měly typ none ověřování (výchozí, pokud není nastaven explicitně). Během připojení moduly na podřízených zařízeních používají staré přihlašovací údaje, což způsobuje selhání ověřování.

Řešení

Při migraci na nové centrum IoT (za předpokladu, že nepoužíváte DPS), postupujte takto:

  1. Podle tohoto průvodce exportujte a importujte identity zařízení ze starého centra IoT do nového.
  2. Změna konfigurace všech nasazení a konfigurací IoT Edge v novém ioT Hubu
  3. Změna konfigurace všech relací zařízení nadřazených a podřízených v novém centru IoT
  4. Aktualizujte každé zařízení tak, aby odkazovat na nový název hostitele služby IoT Hub (iothub_hostnamev části [provisioning] )config.toml
  5. Pokud jste se rozhodli vyloučit ověřovací klíče během exportu zařízení, překonfigurujte každé zařízení pomocí nových klíčů, které poskytne nové centrum IoT (device_id_pk v části [provisioning.authentication] in config.toml).
  6. Nejprve restartujte nadřazené zařízení Edge nejvyšší úrovně, ujistěte se, že je spuštěné.
  7. Restartujte každé zařízení na úrovni hierarchie podle úrovně shora dolů.

IoT Edge má nízkou propustnost zpráv, když je geograficky vzdálená od IoT Hubu

Příznaky

Zařízení Azure IoT Edge, která jsou geograficky vzdálená od Azure IoT Hubu, mají nižší, než se očekávala propustnost zpráv.

Příčina

Vysoká latence mezi zařízením a IoT Hubem může způsobit nižší, než očekávanou propustnost zpráv. IoT Edge používá výchozí velikost dávky zpráv 10. Tím se omezí počet zpráv odesílaných v jedné dávce, což zvyšuje počet odezv mezi zařízením a IoT Hubem.

Řešení

Zkuste zvýšit proměnnou prostředí IoT Edge Hub MaxUpstreamBatchSize . To umožňuje odesílání více zpráv v jedné dávce, což snižuje počet odezv mezi zařízením a IoT Hubem.

Nastavení proměnných prostředí Azure Edge Hubu na webu Azure Portal:

  1. Přejděte do služby IoT Hub a v nabídce Správa zařízení vyberte Zařízení.
  2. Vyberte zařízení IoT Edge, které chcete aktualizovat.
  3. Vyberte Nastavit moduly.
  4. Vyberte modul runtime Nastavení.
  5. Na kartě Nastavení modulu Edge Hub přidejte proměnnou prostředí MaxUpstreamBatchSize jako typ Číslo s hodnotou 20.
  6. Vyberte Použít.

Další kroky

Myslíte si, že jste v platformě IoT Edge našli chybu? Odešlete problém , abychom mohli pokračovat v vylepšování.

Pokud máte další otázky, vytvořte žádost o pomoc.