Agente MQTT local interno das Operações do Azure IoT
Importante
Esta página inclui instruções para gerenciar componentes do serviço Operações do Azure IoT usando manifestos de implantação do Kubernetes, que estão em versão prévia. Esse recurso é fornecido com várias limitações, e não deve ser usado para cargas de trabalho de produção.
Veja os Termos de Uso Complementares para Versões Prévias do Microsoft Azure para obter termos legais que se aplicam aos recursos do Azure que estão em versão beta, versão prévia ou que, de outra forma, ainda não foram lançados em disponibilidade geral.
As Operações do Azure IoT apresentam um Agente MQTT compatível com padrões de nível empresarial que é escalonável, altamente disponível e nativo do Kubernetes. Ele fornece o plano de mensagens para Operações da Internet das Coisas do Azure, habilita a comunicação bidirecional de borda/nuvem e alimenta aplicativos controlados por eventos na borda.
Conformidade do MQTT
O MQTT (Transporte de Telemetria da Fila de Mensagens) surgiu como o língua franca entre os protocolos no espaço IoT. O design simples do MQTT permite que um único agente atenda dezenas de milhares de clientes simultaneamente, com uma criação e gerenciamento de tópicos de publicação e gerenciamento leves. Muitos dispositivos IoT dão suporte a MQTT nativamente pronto para uso, com a cauda longa dos protocolos IoT sendo racionalizada em MQTT por gateways de tradução downstream.
O Agente MQTT sustenta a camada de mensagens em Operações do IoT e dá suporte ao MQTT v3.1.1 e ao MQTT v5. Para obter mais informações sobre os recursos do MQTT com suporte, confira Suporte a recursos do MQTT no agente MQTT.
Arquitetura
O agente MQTT tem duas camadas principais:
- Camada de front-end sem estado.
- Camada de back-end com estado e fragmentado.
A camada de front-end manipula as conexões e solicitações do cliente e as roteia para o back-end. A camada de back-end particiona dados por chaves diferentes, como ID do cliente para sessões de cliente e nome do tópico para mensagens de tópico. Ele usa a replicação de cadeia para replicar dados em cada partição.
Os objetivos da arquitetura são:
- Tolerância e isolamento de falhas: a publicação de mensagens continuará se os nós de back-end falharem e impedir que falhas se propaguem para o restante do sistema
- Recuperação de falha: recuperação automática de falha sem intervenção do operador
- Sem perda de mensagens: entrega de mensagens se pelo menos um pod front-end e um pod de back-end em uma partição estiver em execução
- Dimensionamento elástico: dimensionamento horizontal da publicação e assinatura da taxa de transferência para dar suporte a implantações de borda e nuvem
- Desempenho consistente em escala: limitar a sobrecarga de latência da mensagem devido à replicação em cadeia
- Simplicidade operacional: dependência mínima em componentes externos para simplificar a manutenção e a complexidade
Configuração
Para a configuração, o agente MQTT é composto por vários recursos personalizados do Kubernetes que definem diferentes aspectos do comportamento e da funcionalidade do agente.
- O recurso principal é Broker, que define as configurações globais, como cardinalidade, perfil de uso de memória e configurações de diagnóstico.
- Um Agente pode ter até três BrokerListeners, cada um dos quais escuta conexões MQTT de entrada no tipo de serviço especificado (NodePort, LoadBalancer ou ClusterIP). Cada BrokerListener pode ter várias portas.
- Cada porta dentro de um BrokerListener pode ser associada a um recurso BrokerAuthentication e a um recurso BrokerAuthorization. Essas são as políticas de autenticação e autorização que determinam quais clientes podem se conectar à porta e quais ações podem ser executadas no agente.
Portanto, a relação entre Broker e BrokerListener é um-para-muitos, e a relação entre BrokerListener e BrokerAuthentication/BrokerAuthorization é muitos para muitos. O diagrama de relação de entidade (ERD) para esses recursos é o seguinte:
Por padrão, as Operações do Azure IoT implantam um Brokerpadrão, um BrokerListener padrão e um BrokerAuthentication padrão. Todos esses recursos são nomeados como padrão. Juntos, esses recursos fornecem uma configuração básica do agente MQTT necessária para que as Operações de IoT do Azure funcionem. A configuração padrão é a seguinte:
Importante
Para evitar interrupções não intencionais com a comunicação entre componentes internos das Operações do Azure IoT, recomendamos não modificar nenhuma configuração padrão.
Para personalizar a implantação do agente MQTT, adicione novos recursos, como BrokerListeners, BrokerAuthentication e BrokerAuthorization, ao Agente padrão.
O recurso Broker em si é imutável e não pode ser modificado após a implantação, mas só precisa de personalização em cenários avançados. Para saber mais sobre como personalizar o recurso do Agente, consulte Personalizar o Agente padrão.
Em uma implantação completa, você pode ter vários BrokerListeners, cada um com várias portas, e cada porta pode ter recursos diferentes de BrokerAuthentication e BrokerAuthorization associados a ela.
Por exemplo, a partir da configuração padrão, você adiciona:
- Um LoadBalancer BrokerListener chamado example-lb-listener com duas portas 1883 e 8883
- Um BrokerListener NodePort chamado example-nodeport-listener com uma única porta 1884 (nodePort 31884)
- Um recurso BrokerAuthentication chamado example-authn, com um método de autenticação personalizado
- Um recurso BrokerAuthorization chamado example-authz, com suas configurações de autorização personalizadas
Em seguida, se você configurar todas as novas portas usando os mesmos recursos BrokerAuthentication e BrokerAuthorization, a configuração será semelhante a:
Dessa forma, você mantém a configuração padrão intacta e adiciona novos recursos para personalizar a implantação do agente MQTT às suas necessidades.
Recurso do Agente Padrão
Cada implantação de Operações IoT do Azure só pode ter um Agente e deve ser nomeada como padrão. O recurso do Agente padrão é necessário para que as Operações de IoT do Azure funcionem. Ele é imutável e não pode ser modificado após a implantação.
Cuidado
Não exclua o recurso do Agente padrão. Isso interromperá a comunicação entre componentes internos do Azure IoT Operations e a implantação interromperá o funcionamento.
Personalizar o Agente padrão
A personalização do recurso do Agente padrão não é necessária para a maioria das configurações. As configurações que exigem personalização incluem:
- Cardinalidade: determina a capacidade do agente de lidar com mais conexões e mensagens e aumenta a alta disponibilidade se houver falhas de pod ou nó.
- Perfil de memória: define o uso máximo de memória do agente e como lidar com o uso de memória à medida que o agente aumenta.
- Buffer de mensagens com suporte em disco: configuração para armazenar mensagens em buffer no disco à medida que a RAM é preenchida.
- Configurações de diagnóstico: configuração para configurações de diagnóstico, como nível de log e ponto de extremidade de métricas.
- Opções avançadas do cliente MQTT: configuração para opções avançadas do cliente MQTT, como expiração da sessão, expiração de mensagem e configurações de keep-alive.
- Criptografia de tráfego interno: configuração para criptografar o tráfego interno entre os pods de front-end e back-end do agente.
A personalização do agente padrão deve ser feita durante o tempo inicial de implantação usando a CLI do Azure ou o portal do Azure. Uma nova implantação será necessária se diferentes configurações do Broker forem necessárias.
Para personalizar o Agente padrão durante a implantação:
Ao seguir o guia para implantar as Operações do Azure IoT, na seção Configuração, examine a Configuração do agente MQTT. Aqui, você pode personalizar as configurações de perfil de cardinalidade e memória. Para definir outras configurações, incluindo o buffer de mensagens com suporte em disco e opções avançadas do cliente MQTT, use a CLI do Azure.
Exibir configurações padrão do Agente
Para exibir as configurações do Agente padrão:
- No portal do Azure, navegue até a instância das Operações do Azure IoT.
- Em Componentes, selecione Agente MQTT.
- Em Detalhes do Agente, selecione Modo de exibição JSON.
Próximas etapas
Início rápido: Implantar Operações do Azure IoT em um cluster do Kubernetes habilitado para Arc