Compreender o runtime do IoT Edge e a arquitetura

Aplica-se a: Marca de verificação do IoT Edge 1.5 IoT Edge 1.5 Marca de verificação do IoT Edge 1.4 IoT Edge 1.4

Importante

IoT Edge 1.5 LTS e IoT Edge 1.4 LTS são versões suportadas. O IoT Edge 1.4 LTS termina a vida útil em 12 de novembro de 2024. Se tiver uma versão anterior, consulte Atualizar IoT Edge.

O runtime do IoT Edge é uma coleção de programas que transformam um dispositivo num dispositivo do IoT Edge. Coletivamente, os componentes do runtime do IoT Edge permitem que os dispositivos IoT Edge recebam código para funcionar no edge e comunicar os resultados.

O tempo de execução do IoT Edge é responsável pelas seguintes funções em dispositivos IoT Edge:

  • Instale e atualize cargas de trabalho no dispositivo.

  • Mantenha os padrões de segurança do Azure IoT Edge no dispositivo.

  • Certifique-se de que os módulos do IoT Edge estejam sempre em execução.

  • Reporte a integridade do módulo para a nuvem para monitoramento remoto.

  • Gerencie a comunicação entre:

    • Dispositivos downstream e dispositivos IoT Edge
    • Módulos em um dispositivo IoT Edge
    • Um dispositivo IoT Edge e a nuvem
    • Dispositivos do IoT Edge

Captura de tela de como o tempo de execução comunica insights e a integridade do módulo para o I o T Hub.

As responsabilidades do tempo de execução do IoT Edge se dividem em duas categorias: comunicação e gerenciamento de módulos. Essas duas funções são executadas por dois componentes que fazem parte do tempo de execução do IoT Edge. O agente IoT Edge implanta e monitora os módulos, enquanto o hub IoT Edge é responsável pela comunicação.

Tanto o agente do IoT Edge quanto o hub do IoT Edge são módulos, assim como qualquer outro módulo em execução em um dispositivo IoT Edge. Eles às vezes são chamados de módulos de tempo de execução.

Agente IoT Edge

O agente do IoT Edge é um dos dois módulos que compõem o tempo de execução do Azure IoT Edge. Ele é responsável por instanciar módulos, garantir que eles continuem a ser executados e relatar o status dos módulos de volta ao Hub IoT. Esses dados de configuração são gravados como uma propriedade do gêmeo do módulo do agente do IoT Edge.

O daemon de segurança do IoT Edge inicia o agente do IoT Edge na inicialização do dispositivo. O agente recupera seu módulo gêmeo do Hub IoT e inspeciona o manifesto de implantação. O manifesto de implantação é um arquivo JSON que declara os módulos que precisam ser iniciados.

Cada item no manifesto de implantação contém informações específicas sobre um módulo e é usado pelo agente IoT Edge para controlar o ciclo de vida do módulo. Para obter mais informações sobre todas as propriedades usadas pelo agente do IoT Edge para controlar módulos, leia sobre as Propriedades do agente do IoT Edge e dos gêmeos do módulo do hub IoT Edge.

O agente IoT Edge envia a resposta de tempo de execução para o Hub IoT. Aqui está uma lista de respostas possíveis:

  • 200 - Aceito
  • 400 - A configuração de implantação está malformada ou é inválida.
  • 417 - O dispositivo não tem um conjunto de configurações de implantação.
  • 412 - A versão do esquema na configuração de implantação é inválida.
  • 406 - O dispositivo IoT Edge está offline ou não está enviando relatórios de status.
  • 500 - Ocorreu um erro no tempo de execução do IoT Edge.

Para obter mais informações sobre como criar manifestos de implantação, consulte Saiba como implantar módulos e estabelecer rotas no IoT Edge.

Segurança

O agente IoT Edge desempenha um papel crítico na segurança de um dispositivo IoT Edge. Por exemplo, ele executa ações como verificar a imagem de um módulo antes de iniciá-lo.

Para obter mais informações sobre a estrutura de segurança do Azure IoT Edge, leia sobre o gerenciador de segurança do IoT Edge.

Hub IoT Edge

O hub IoT Edge é o outro módulo que compõe o tempo de execução do Azure IoT Edge. Ele atua como um proxy local para o Hub IoT, expondo os mesmos pontos de extremidade de protocolo do Hub IoT. Essa consistência significa que os clientes podem se conectar ao tempo de execução do IoT Edge da mesma forma que se conectariam ao Hub IoT.

O hub IoT Edge não é uma versão completa do Hub IoT em execução local. O hub IoT Edge delega silenciosamente algumas tarefas ao Hub IoT. Por exemplo, o hub IoT Edge baixa automaticamente informações de autorização do Hub IoT em sua primeira conexão para permitir que um dispositivo se conecte. Depois que a primeira conexão é estabelecida, as informações de autorização são armazenadas em cache localmente pelo hub IoT Edge. Conexões futuras desse dispositivo são autorizadas sem a necessidade de baixar informações de autorização da nuvem novamente.

Comunicação na nuvem

Para reduzir a largura de banda que sua solução IoT Edge usa, o hub IoT Edge otimiza quantas conexões reais são feitas à nuvem. O hub IoT Edge usa conexões lógicas de módulos ou dispositivos downstream e as combina para uma única conexão física com a nuvem. Os detalhes deste processo são transparentes para o resto da solução. Os clientes pensam que têm a sua própria ligação à nuvem, apesar de estarem todos a ser enviados através da mesma ligação. O hub IoT Edge pode usar o AMQP ou o protocolo MQTT para se comunicar upstream com a nuvem, independentemente dos protocolos usados por dispositivos downstream. No entanto, o hub IoT Edge atualmente só suporta a combinação de conexões lógicas em uma única conexão física usando AMQP como o protocolo upstream e seus recursos de multiplexação. AMQP é o protocolo upstream padrão.

Captura de tela mostrando relações com o hub I o T Edge como um gateway entre dispositivos físicos e I o T Hub.

O hub IoT Edge pode determinar se ele está conectado ao Hub IoT. Se a conexão for perdida, o hub IoT Edge salvará mensagens ou atualizações gêmeas localmente. Depois que uma conexão é restabelecida, ela sincroniza todos os dados. O local usado para esse cache temporário é determinado por uma propriedade do módulo gêmeo do hub IoT Edge. O tamanho do cache não é limitado e cresce desde que o dispositivo tenha capacidade de armazenamento. Para obter mais informações, consulte Recursos offline.

Comunicação local

O hub IoT Edge facilita a comunicação local. Permite comunicações dispositivo-a-módulo e módulo-a-módulo através da intermediação de mensagens para manter dispositivos e módulos independentes uns dos outros. O hub IoT Edge suporta os recursos de roteamento de mensagens suportados pelo Hub IoT.

Usando o roteamento

O mecanismo de corretagem usa os mesmos recursos de roteamento do Hub IoT para especificar como as mensagens são passadas entre dispositivos ou módulos. Primeiro, os dispositivos ou módulos especificam as entradas nas quais aceitam mensagens e as saídas para as quais escrevem mensagens. Em seguida, um desenvolvedor de soluções pode rotear mensagens entre uma origem (por exemplo, saídas) e um destino (por exemplo, entradas), com filtros potenciais.

Captura de tela mostrando como as rotas entre módulos passam pelo hub I o T Edge.

O roteamento pode ser usado por dispositivos ou módulos criados com os SDKs de Dispositivo IoT do Azure usando o protocolo AMQP. Todas as primitivas do Hub IoT de mensagens (por exemplo, telemetria), métodos diretos, C2D, gêmeos, são suportadas, mas a comunicação sobre tópicos definidos pelo usuário não é suportada.

Para obter mais informações sobre rotas, consulte Saiba como implantar módulos e estabelecer rotas no IoT Edge.

Recursos do mecanismo de corretagem disponíveis:

Funcionalidades Encaminhamento
Telemetria D2C
Telemetria local
Métodos DirectMethods
Duplo
C2D para dispositivos
Ordenação
Filtragem
Tópicos definidos pelo usuário
Dispositivo-a-dispositivo
Radiodifusão local

Conectando-se ao hub IoT Edge

O hub IoT Edge aceita conexões de clientes de dispositivo ou módulo, seja pelo protocolo MQTT ou pelo protocolo AMQP.

Nota

O hub IoT Edge suporta clientes que se conectam usando MQTT ou AMQP. Ele não suporta clientes que usam HTTP.

Quando um cliente se conecta ao hub IoT Edge, acontece o seguinte:

  1. Se o Transport Layer Security (TLS) for usado (recomendado), um canal TLS será criado para estabelecer uma comunicação criptografada entre o cliente e o hub IoT Edge.
  2. As informações de autenticação são enviadas do cliente para o hub IoT Edge para se identificar.
  3. O hub IoT Edge autoriza ou rejeita a conexão com base em sua política de autorização.

Conexões seguras (TLS)

Por padrão, o hub IoT Edge só aceita conexões protegidas com Transport Layer Security (TLS), por exemplo, conexões criptografadas que um terceiro não pode descriptografar.

Se um cliente se conectar na porta 8883 (MQTTS) ou 5671 (AMQPS) ao hub IoT Edge, um canal TLS deverá ser criado. Durante o handshake TLS, o hub IoT Edge envia sua cadeia de certificados que o cliente precisa validar. Para validar a cadeia de certificados, o certificado raiz do hub IoT Edge deve ser instalado como um certificado confiável no cliente. Se o certificado raiz não for confiável, a biblioteca do cliente será rejeitada pelo hub IoT Edge com um erro de verificação de certificado.

As etapas a serem seguidas para instalar esse certificado raiz do broker em clientes de dispositivo são descritas no gateway transparente e na documentação de preparação de um dispositivo downstream. Os módulos podem usar o mesmo certificado raiz que o hub do IoT Edge usando a API do daemon do IoT Edge.

Autenticação

O Hub IoT Edge só aceita conexões de dispositivos ou módulos que tenham uma identidade do Hub IoT. Por exemplo, aqueles que estão registrados no Hub IoT e têm um dos três métodos de autenticação de cliente suportados pelo Hub IoT para provar sua identidade: autenticação de chaves simétricas, autenticação autoassinada X.509, autenticação assinada por CA X.509. Essas identidades do Hub IoT podem ser verificadas localmente pelo hub IoT Edge para que as conexões ainda possam ser feitas offline.

Atualmente, os módulos do IoT Edge suportam apenas a autenticação de chave simétrica.

Autorização

Verificando se um cliente pertence ao seu conjunto de clientes confiáveis definidos no Hub IoT. O conjunto de clientes confiáveis é especificado pela configuração de relações pai/filho ou dispositivo/módulo no Hub IoT. Quando um módulo é criado no IoT Edge, uma relação de confiança é estabelecida automaticamente entre esse módulo e seu dispositivo IoT Edge. Este é o único modelo de autorização suportado pelo mecanismo de corretagem de roteamento.

Configuração remota

O hub IoT Edge é totalmente controlado pela nuvem. Ele obtém sua configuração do Hub IoT por meio de seu módulo gêmeo. O gêmeo contém uma propriedade desejada chamada rotas que declara como as mensagens são passadas dentro de uma implantação. Para obter mais informações sobre rotas, consulte declarar rotas.

Além disso, várias configurações podem ser feitas configurando variáveis de ambiente no hub IoT Edge.

Telemetria de qualidade de tempo de execução

O IoT Edge coleta telemetria anônima do tempo de execução do host e dos módulos do sistema para melhorar a qualidade do produto. Essas informações são chamadas de telemetria de qualidade de tempo de execução. A telemetria coletada é enviada periodicamente como mensagens do dispositivo para a nuvem para o Hub IoT a partir do agente do IoT Edge. Essas mensagens não aparecem na telemetria regular do cliente e não consomem nenhuma cota de mensagem.

O agente e o hub do IoT Edge geram métricas que você pode coletar para entender o desempenho do dispositivo. Um subconjunto dessas métricas é coletado pelo IoT Edge Agent como parte da telemetria de qualidade de tempo de execução. As métricas coletadas para telemetria de qualidade de tempo de execução são rotuladas com a tag ms_telemetry. Para obter informações sobre todas as métricas disponíveis, consulte Métricas internas de acesso.

Qualquer informação pessoal ou organizacionalmente identificável, como nomes de dispositivos e módulos, é removida antes do upload para garantir a natureza anônima da telemetria de qualidade de tempo de execução.

O agente IoT Edge coleta a telemetria a cada hora e envia uma mensagem para o Hub IoT a cada 24 horas.

Se você deseja desativar o envio de telemetria de tempo de execução de seus dispositivos, há duas maneiras de fazer isso:

  • Definir a SendRuntimeQualityTelemetry variável de ambiente como false edgeAgent
  • Desmarque a opção no portal do Azure durante a implantação.

Próximos passos