Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:
IoT Edge 1.5
Importante
IoT Edge 1.5 LTS é a versão suportada. O IoT Edge 1.4 LTS atingiu o fim de vida útil a 12 de novembro de 2024. Se estiveres a usar uma versão anterior, vê Update IoT Edge.
Implementar nós Azure IoT Edge em redes organizadas em camadas hierárquicas. Cada camada em uma hierarquia é um dispositivo de gateway que lida com mensagens e solicitações de dispositivos na camada abaixo dela. Essa configuração também é conhecida como borda aninhada.
Estruture uma hierarquia de dispositivos para que apenas a camada superior tenha conectividade com a nuvem, e as camadas inferiores possam se comunicar apenas com as camadas norte e sul adjacentes. Esta camada de rede é a base da maioria das redes industriais, que seguem o padrão ISA-95.
Este tutorial mostra-lhe como criar uma hierarquia de dispositivos IoT Edge usando IoT Edge for Linux no Windows, implementar containers de runtime IoT Edge nos seus dispositivos e configurar os seus dispositivos localmente. Neste tutorial, você executa as seguintes tarefas:
- Crie e defina as relações numa hierarquia de dispositivos IoT Edge.
- Configure o runtime do IoT Edge nos dispositivos da sua hierarquia.
- Instale certificados consistentes em toda a hierarquia de dispositivos.
- Adicione cargas de trabalho aos dispositivos na sua hierarquia.
- Use o módulo API Proxy IoT Edge para encaminhar o tráfego HTTP de forma segura através de uma única porta a partir dos seus dispositivos de camada inferior.
Gorjeta
Este tutorial inclui uma combinação de passos manuais e automatizados para apresentar funcionalidades aninhadas do IoT Edge.
Se quiser uma perspetiva totalmente automatizada da configuração de uma hierarquia de dispositivos IoT Edge, pode orientar-se com o seu próprio script a partir do exemplo de IoT Edge da Azure para IoT Industrial. Este cenário scriptado implementa máquinas virtuais Azure como dispositivos pré-configurados para simular um ambiente de fábrica.
Se quiser um olhar aprofundado sobre os passos manuais para criar e gerir uma hierarquia de dispositivos IoT Edge, veja o guia prático sobre hierarquias de gateway de dispositivos IoT Edge.
Neste tutorial, as seguintes camadas de rede são definidas:
camada superior: IoT Edge dispositivos nesta camada podem ligar-se diretamente à cloud.
Camadas inferiores: dispositivos IoT Edge em camadas abaixo da camada superior não conseguem conectar-se diretamente à nuvem. Precisam de passar por um ou mais dispositivos IoT Edge intermédios para enviar e receber dados.
Este tutorial usa uma hierarquia de dois dispositivos para simplificar. O dispositivo de camada superior representa um dispositivo na camada superior da hierarquia que pode se conectar diretamente à nuvem. Este dispositivo é chamado de dispositivo pai. O dispositivo de camada inferior representa um dispositivo na camada inferior da hierarquia que não pode se conectar diretamente à nuvem. Adicione mais dispositivos para representar seu ambiente de produção, conforme necessário. Os dispositivos nas camadas inferiores são chamados de dispositivos subordinados.
Nota
Um dispositivo filho pode ser um dispositivo descendente ou uma porta de ligação numa topologia aninhada.
Pré-requisitos
Para criar uma hierarquia de dispositivos IoT Edge, precisa de:
- Um shell Bash no Azure Cloud Shell usando Azure CLI v2.3.1 com a extensão Azure IoT v0.10.6 ou superior instalada. Este tutorial utiliza Azure Cloud Shell. Para verificar as versões atuais dos módulos e extensões da Azure CLI, execute az version.
- Dois dispositivos Windows a executar Azure IoT Edge para Linux no Windows. Implante ambos os dispositivos usando um comutador virtual externo.
Gorjeta
Pode usar um switch virtual interno ou default se o encaminhamento de portas estiver configurado no sistema operativo Windows anfitrião. Mas para manter este tutorial simples, use um comutador virtual externo para ambos os dispositivos e conecte-os à mesma rede externa.
Para mais informações sobre redes, consulte Azure IoT Edge para Linux em rede Windows e Configuração de rede para Azure IoT Edge para Linux em Windows.
Se precisar de configurar os dispositivos EFLOW numa DMZ, veja
- Uma conta no Azure com uma subscrição válida. Se não tiver uma subscrição Azure, crie uma conta gratuita antes de começar.
- Um nível gratuito ou padrão de IoT Hub no Azure.
- Certifique-se de que as seguintes portas estão abertas de entrada para todos os dispositivos, exceto o dispositivo de camada mais baixa: 443, 5671 e 8883:
- 443: Usado entre hubs de borda parental e filial através de chamadas de API REST e para transferir conteúdos de contêiner Docker.
- 5671, 8883: Usado para AMQP e MQTT.
Gorjeta
Para mais informações sobre o firewall de máquinas virtuais EFLOW, consulte IoT Edge para Linux sobre segurança Windows.
Crie a hierarquia do seu dispositivo IoT Edge
Os dispositivos IoT Edge constituem as camadas da sua hierarquia. Este tutorial cria uma hierarquia de dois dispositivos IoT Edge: o dispositivo camada superior e o dispositivo camada inferior. Você pode criar mais dispositivos downstream conforme necessário.
Para criar e configurar a sua hierarquia de dispositivos IoT Edge, utiliza o comando az iot edge dispositivos create Azure CLI. O comando simplifica a configuração da hierarquia automatizando e condensando várias etapas:
- Cria dispositivos no seu IoT Hub
- Define as relações pai-filho para autorizar a comunicação entre dispositivos
- Aplica o manifesto de implantação a cada dispositivo
- Gera uma cadeia de certificados para cada dispositivo para estabelecer uma comunicação segura entre eles
- Gera arquivos de configuração para cada dispositivo
Criar configuração do dispositivo
Você cria um grupo de dispositivos de borda aninhados que contém um dispositivo pai e um dispositivo filho. Neste tutorial, usamos manifestos básicos de exemplo para implantação. Para outros exemplos de cenários, consulte os modelos de exemplo de configuração.
Antes de usar o comando az iot edge devices create, precisa definir o manifesto de implantação para os dispositivos de camada superior e inferior. Descarregue o ficheiro de exemplo deploymentTopLayer.json para a sua máquina local.
O manifesto de implementação do dispositivo da camada superior define o módulo Proxy da API IoT Edge e declara o route do dispositivo da camada inferior para IoT Hub.
Descarregue o ficheiro de exemplo deploymentLowerLayer.json para a sua máquina local.
O manifesto de implantação do dispositivo de camada inferior inclui o módulo de sensor de temperatura simulado e declara a rota para o dispositivo de camada superior. Você pode ver na secção systemModules que os módulos de runtime estão definidos para extrair de $upstream:443, em vez de mcr.microsoft.com. O dispositivo da camada inferior envia pedidos de imagem Docker para o módulo API Proxy IoT Edge na porta 443, pois não pode obter diretamente as imagens da cloud. O outro módulo implantado no dispositivo de camada inferior, o módulo Simulated Temperature Sensor, também faz seu pedido de imagem para
$upstream:443.Para obter mais informações sobre como criar um manifesto de implementação de camada inferior, consulte Ligar dispositivos IoT Edge do Azure para criar uma hierarquia.
Na Azure Cloud Shell, utiliza o comando az iot edge devices create Azure CLI para criar dispositivos no IoT Hub e pacotes de configuração para cada dispositivo na sua hierarquia. Substitua os seguintes espaços reservados pelos valores apropriados:
Marcador de Posição Descrição <nome do hub> O nome do seu IoT Hub. <caminho-de-saída-do-pacote-configuração> O caminho da pasta onde você deseja salvar os pacotes de configuração. <nome do dispositivo pai> O nome do ID do dispositivo pai da camada superior. <manifesto de implantação pai> O ficheiro de manifesto de implementação do dispositivo pai. <pai-fqdn-ou-ip> FQDN (nome de domínio totalmente qualificado) ou endereço IP do dispositivo pai. <nome-do-dispositivo-filho> O nome da ID do dispositivo filho da camada inferior. <filho-implantação-manifesto> O arquivo de manifesto de implantação do dispositivo filho. <child-fqdn-ou-ip> FQDN (nome de domínio totalmente qualificado) ou endereço IP do dispositivo filho. 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>Por exemplo, o comando seguinte cria uma hierarquia de dois dispositivos IoT Edge no IoT Hub. Um dispositivo de camada superior chamado pai-1 e um dispositivo de camada inferior chamado filho-1*. O comando salva os pacotes de configuração para cada dispositivo no diretório de saída . O comando também gera certificados de teste autoassinados e os inclui no pacote de configuração. Os pacotes de configuração são instalados em cada dispositivo usando um script de instalação.
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
Depois de executar o comando, você pode encontrar os pacotes de configuração do dispositivo no diretório de saída. Por exemplo:
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
Você pode usar seus próprios certificados e chaves passados como argumentos para o comando ou criar uma hierarquia de dispositivo mais complexa. Para obter mais informações sobre como criar dispositivos aninhados usando o comando az, consulte az iot edge devices create. Se você não estiver familiarizado com a forma como os certificados são usados em um cenário de gateway, consulte a seção de certificados do guia de instruções.
Neste tutorial, você usa argumentos embutidos para criar os dispositivos e pacotes de configuração. Você também pode usar um arquivo de configuração no formato YAML ou JSON. Para obter um arquivo de configuração de exemplo, consulte o exemplo sample_devices_config.yaml.
Configurar o tempo de execução do IoT Edge
Além do provisionamento de seus dispositivos, as etapas de configuração estabelecem uma comunicação confiável entre os dispositivos em sua hierarquia usando os certificados criados anteriormente. As etapas também começam a estabelecer a estrutura de rede da sua hierarquia. O dispositivo de camada superior mantém conectividade com a Internet, permitindo que ele extraia imagens para seu tempo de execução da nuvem, enquanto os dispositivos de camada inferior passam pelo dispositivo de camada superior para acessar essas imagens.
Para configurar o runtime do IoT Edge, precisa de aplicar os pacotes de configuração aos seus dispositivos. As configurações diferem entre o dispositivo de camada superior e um dispositivo de camada inferior, portanto, esteja atento ao arquivo de configuração do dispositivo que você está aplicando a cada dispositivo.
Cada dispositivo precisa de seu pacote de configuração correspondente. Você pode usar uma unidade USB ou uma cópia segura do arquivo para mover os pacotes de configuração para cada dispositivo. Tens de copiar o pacote de configuração para o sistema operativo anfitrião Windows de cada dispositivo EFLOW e depois copiá-lo para a VM EFLOW.
Aviso
Certifique-se de enviar o pacote de configuração correto para cada dispositivo.
Configuração de dispositivo de camada superior
Liga-te ao teu dispositivo anfitrião top level Windows e copia o ficheiro parent-1.tgz para o dispositivo.
Inicie uma sessão elevada do PowerShell usando Executar como administrador.
Copie o parent-1.tgz para a VM do EFLOW.
Copy-EflowVmFile -fromFile parent-1.tgz -toFile ~/ -pushFileConecte-se à sua máquina virtual EFLOW
Connect-EflowVmExtraia o arquivo do pacote de configuração. Por exemplo, use o comando tar para extrair o arquivo pai-1 :
tar -xzf ./parent-1.tgzDefina a permissão de execução para o script de instalação.
chmod +x install.shExecute o script install.sh .
sudo sh ./install.shAplique as permissões de certificado corretas e reinicie o runtime do IoT Edge.
sudo chmod -R 755 /etc/aziot/certificates/ sudo iotedge system restartVerifique se todos os serviços IoT Edge estão a funcionar corretamente.
sudo iotedge system statusFinalmente, adicione as regras de firewall apropriadas para habilitar a conectividade entre o dispositivo de camada inferior e o dispositivo de camada superior.
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/ip4saveExecute as verificações de configuração e conectividade em seus dispositivos.
sudo iotedge check
No seu dispositivo de camada superior, deve esperar ver um output com várias avaliações aprovadas. Poderá ver alguns avisos sobre políticas de registos e, dependendo da sua rede, políticas de DNS.
Se quiser ver mais de perto que modificações estão a ser feitas no ficheiro de configuração do seu dispositivo, consulte a secção de configurar IoT Edge nos dispositivos do guia prático.
Configuração de dispositivo de camada inferior
Ligue-se ao seu dispositivo host Windows de nível inferior e copie o ficheiro child-1.tgz para o dispositivo.
Inicie uma sessão elevada do PowerShell usando Executar como administrador.
Copie child-1.tgz para a VM EFLOW.
Copy-EflowVmFile -fromFile child-1.tgz -toFile ~/ -pushFileConecte-se à sua máquina virtual EFLOW
Connect-EflowVmExtraia o arquivo do pacote de configuração. Por exemplo, use o comando tar para extrair o arquivo child-1 :
tar -xzf ./child-1.tgzDefina a permissão de execução para o script de instalação.
chmod +x install.shExecute o script install.sh .
sudo sh ./install.shAplique as permissões de certificado corretas e reinicie o runtime do IoT Edge.
sudo chmod -R 755 /etc/aziot/certificates/ sudo iotedge system restartVerifique se todos os serviços IoT Edge estão a funcionar corretamente.
sudo iotedge system statusExecute as verificações de configuração e conectividade em seus dispositivos. Para o dispositivo de camadas inferiores, a imagem diagnóstica deve ser manualmente inserida no comando.
sudo iotedge check --diagnostics-image-name <parent_device_fqdn_or_ip>:443/azureiotedge-diagnostics:1.5
Se você concluiu as etapas anteriores corretamente, poderá verificar se seus dispositivos estão configurados corretamente. Quando estiver satisfeito que suas configurações estão corretas em cada dispositivo, você estará pronto para continuar.
Implantação do módulo de dispositivo
A implementação de módulos para os seus dispositivos foi aplicada quando os dispositivos foram criados no IoT Hub. O comando az iot edge devices create aplicou os ficheiros JSON de implementação para os dispositivos de camada superior e inferior. Após a conclusão destas implementações, o dispositivo camada inferior utiliza o módulo IoT Edge API Proxy para obter as imagens necessárias.
Além disso, os módulos de execução
O módulo Docker registry aponta para um Azure Container Registry existente. Nesse caso, REGISTRY_PROXY_REMOTEURL aponta para o Microsoft Container Registry. Por padrão, Docker Registry escuta na porta 5000.
O módulo API Proxy IoT Edge encaminha pedidos HTTP para outros módulos, permitindo que dispositivos de camada inferior extraiam imagens de contentores ou enviem blobs para armazenamento. Neste tutorial, ele se comunica na porta 443 e está configurado para enviar a rota de solicitações pull de imagem de contêiner do Docker para o módulo de registro do Docker na porta 5000. Além disso, qualquer solicitação de carregamento de blobs é direcionada ao módulo AzureBlobStorageonIoTEdge na porta 11002. Para mais informações sobre o módulo API Proxy IoT Edge e como o configurar, consulte o guia how-to do módulo.
Para saber como criar uma implementação deste tipo no portal Azure ou no Azure Cloud Shell, consulte a secção do dispositivo da camada superior do guia de instruções.
Veja o estado dos seus módulos com o seguinte comando:
az iot hub module-twin show --device-id <edge-device-id> --module-id '$edgeAgent' --hub-name <iot-hub-name> --query "properties.reported.[systemModules, modules]"
Este comando mostra todas as propriedades relatadas do edgeAgent. As propriedades úteis para monitorar o status do dispositivo incluem: status do tempo de execução, hora de início do tempo de execução, hora da última saída do tempo de execução e contagem de reinicialização do tempo de execução.
Também vê o estado dos seus módulos no portal Azure. Vai à secção Dispositivos do teu IoT Hub para veres os teus dispositivos e módulos.
Ver os dados gerados
O módulo Sensor de Temperatura Simulado que você enviou gera dados de ambiente de amostra. Ele envia mensagens que incluem temperatura e umidade ambiente, temperatura e pressão da máquina e um carimbo de data/hora.
Também pode visualizar estas mensagens usando Azure Cloud Shell:
az iot hub monitor-events -n <iot-hub-name> -d <lower-layer-device-name>
Por exemplo:
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\"}"
}
}
Resolução de Problemas
Execute o iotedge check comando para verificar a configuração e solucionar erros.
Você pode executar iotedge check em uma hierarquia aninhada, mesmo que os dispositivos downstream não tenham acesso direto à Internet.
Quando se executa iotedge check a partir da camada inferior, o programa tenta obter a imagem da camada superior através da porta 443.
sudo iotedge check --diagnostics-image-name $upstream:443/azureiotedge-diagnostics:1.5
O azureiotedge-diagnostics valor é extraído do registro de contêiner vinculado ao módulo do Registro. Este tutorial define-o por predefinição para https://mcr.microsoft.com:
| Nome | Valor |
|---|---|
REGISTRY_PROXY_REMOTEURL |
https://mcr.microsoft.com |
Se você usar um registro de contêiner privado, verifique se todas as imagens (IoTEdgeAPIProxy, edgeAgent, edgeHub, Sensor de Temperatura Simulado e diagnóstico) estão no registro de contêiner.
Se um dispositivo downstream tiver uma arquitetura de processador diferente do dispositivo pai, use a imagem de arquitetura apropriada. Use um registro conectado ou especifique a imagem correta para os módulos edgeAgent e edgeHub no arquivo config.toml do dispositivo downstream. Por exemplo, se o dispositivo pai for executado em uma arquitetura ARM32v7 e o dispositivo downstream for executado em uma arquitetura AMD64, especifique a versão correspondente e a marca de imagem da arquitetura no arquivo config.toml do dispositivo downstream.
[agent.config]
image = "$upstream:443/azureiotedge-agent:1.5.15-linux-amd64"
"systemModules": {
"edgeAgent": {
"settings": {
"image": "$upstream:443/azureiotedge-agent:1.5.15-linux-amd64"
},
},
"edgeHub": {
"settings": {
"image": "$upstream:443/azureiotedge-hub:1.5.15-linux-amd64",
}
}
}
Limpar recursos
Pode eliminar as configurações locais e os recursos do Azure que criou neste artigo para evitar cobranças.
Para eliminar os recursos:
Inicie sessão no portal Azure e selecione Resource groups.
Selecione o nome do grupo de recursos que contém os seus recursos de teste IoT Edge.
Reveja a lista de recursos que o seu grupo de recursos contém. Se quiser excluir todos eles, selecione Excluir grupo de recursos. Se você quiser excluir apenas alguns deles, você pode selecionar cada recurso para excluí-los individualmente.
Próximos passos
Neste tutorial, configurou dois dispositivos IoT Edge como gateways e definiu um como dispositivo principal do outro. Depois, demonstrou a transferência de uma imagem de contêiner para o dispositivo filho através de um gateway usando o módulo de Proxy da API IoT Edge. Consulte o guia de instruções sobre o uso do módulo proxy se quiser saber mais.
Para saber mais sobre a utilização de gateways para criar camadas hierárquicas de dispositivos IoT Edge, consulte o artigo seguinte.