Broker MQTT locale predefinito per le operazioni IoT di Azure
Importante
Questa pagina include istruzioni per la gestione dei componenti di Operazioni IoT di Azure usando i manifesti di distribuzione kubernetes, disponibile in anteprima. Questa funzionalità viene fornita con diverse limitazioni e non deve essere usata per i carichi di lavoro di produzione.
Vedere le condizioni per l'utilizzo supplementari per le anteprime di Microsoft Azure per termini legali aggiuntivi che si applicano a funzionalità di Azure in versione beta, in anteprima o in altro modo non ancora disponibili a livello generale.
Le operazioni di Azure IoT sono dotate di un broker MQTT di livello aziendale e conforme agli standard. Il broker MQTT è scalabile, a disponibilità elevata e nativo di Kubernetes. Fornisce il piano di messaggistica per le operazioni IoT, abilita la comunicazione bidirezionale perimetrale/cloud e supporta le applicazioni guidate dagli eventi all'perimetro.
Conformità MQTT
MQTT è emerso come linguaggio comune usato tra i protocolli nello spazio IoT. La progettazione semplice di MQTT consente a un singolo broker di servire decine di migliaia di client contemporaneamente, con la semplice creazione e gestione degli argomenti di pubblicazione-sottoscrizione. Molti dispositivi IoT supportano MQTT in modo nativo. I gateway di conversione downstream razionalizzano la lunga parte finale dei protocolli IoT in MQTT.
Il broker MQTT supporta il livello di messaggistica nelle operazioni IoT e supporta sia MQTT v3.1.1 che MQTT v5. Per altre informazioni sulle funzionalità MQTT supportate, vedere supporto delle funzionalità MQTT nel broker MQTT.
Architettura
Il broker MQTT ha due livelli principali:
- Livello front-end senza stato
- Livello back-end con stato e partizionato
Il livello front-end gestisce le connessioni client e le richieste e le indirizza al back-end. Il livello back-end partiziona i dati in base a chiavi diverse, ad esempio un ID client per le sessioni client e un nome di argomento per i messaggi di argomento. Usa la replica a catena per replicare i dati all'interno di ogni partizione.
Gli obiettivi dell'architettura sono:
- Tolleranza di errore e isolamento: la pubblicazione dei messaggi continua se i pod back-end hanno esito negativo e impediscono la propagazione degli errori al resto del sistema.
- Ripristino degli errori: ripristino automatico degli errori senza intervento dell'operatore.
- Nessuna perdita di messaggi: recapito di messaggi se almeno un pod front-end e un pod back-end in una partizione è in esecuzione.
- Scalabilità elastica: scalabilità orizzontale della velocità effettiva di pubblicazione e sottoscrizione per supportare le distribuzioni perimetrali e cloud.
- Prestazioni coerenti su larga scala: limitare il sovraccarico della latenza dei messaggi a causa della replica a catena.
- Semplicità operativa: dipendenza minima da componenti esterni per semplificare la manutenzione e la complessità.
Impostazione
Per la configurazione, il broker MQTT è costituito da diverse risorse personalizzate di Kubernetes che definiscono aspetti diversi del comportamento e delle funzionalità del broker:
- La risorsa principale è Broker, che definisce le impostazioni globali come cardinalità, profilo di utilizzo della memoria e impostazioni di diagnostica.
- Una risorsa Broker può avere fino a tre BrokerListeners, ognuna delle quali è in ascolto delle connessioni MQTT in ingresso nel tipo di servizio specificato (
NodePort
,LoadBalancer
oClusterIP
). Ogni risorsa BrokerListener può avere più porte. - Ogni porta all'interno di una risorsa BrokerListener può essere associata a una risorsa BrokerAuthentication e a una risorsa BrokerAuthorization . Questi criteri di autenticazione e autorizzazione determinano quali client possono connettersi alla porta e quali azioni possono eseguire sul broker.
La relazione tra Broker e BrokerListener è uno-a-molti. La relazione tra BrokerListener e BrokerAuthentication/BrokerAuthorization è molti-a-molti. Il diagramma delle relazioni tra entità per queste risorse è:
Per impostazione predefinita, le operazioni IoT distribuiscono un broker predefinito, un BrokerListener predefinito e un BrokerAuthentication predefinito. Tutte queste risorse sono denominate predefinite. Insieme, queste risorse forniscono una configurazione di base del broker MQTT necessaria per il funzionamento delle operazioni IoT. L'impostazione predefinita è:
Importante
Per evitare interruzioni involontarie con la comunicazione tra i componenti interni delle operazioni IoT, è consigliabile non modificare alcuna configurazione predefinita.
Per personalizzare la distribuzione del broker MQTT, aggiungere nuove risorse come BrokerListeners, BrokerAuthentication e BrokerAuthorization al broker predefinito.
La risorsa Broker stessa non è modificabile e non può essere modificata dopo la distribuzione, ma richiede solo la personalizzazione in scenari avanzati. Per altre informazioni sulla personalizzazione della risorsa broker, vedere Personalizzare Broker predefinito.
In una distribuzione completa, è possibile avere più BrokerListeners, ognuno con più porte e ogni porta potrebbe avere diverse risorse BrokerAuthentication e BrokerAuthorization associate.
Ad esempio, a partire dall'installazione predefinita, si aggiunge:
- LoadBalancer BrokerListener denominato example-lb-listener, con le due porte 1883 e 8883.
- NodoPort BrokerListener denominato example-nodeport-listener, con la singola porta 1884 (
nodePort
31884). - Una risorsa BrokerAuthentication denominata example-authn, con un metodo di autenticazione personalizzato.
- Una risorsa BrokerAuthorization denominata example-authz, con le impostazioni di autorizzazione personalizzate.
Quindi, se si configurano tutte le nuove porte usando le stesse risorse BrokerAuthentication e BrokerAuthorization, il programma di installazione sarà simile al seguente:
In questo modo, si mantiene intatta la configurazione predefinita e si aggiungono nuove risorse per personalizzare la distribuzione del broker MQTT in base alle proprie esigenze.
Risorsa Broker predefinita
Ogni distribuzione di operazioni IoT può avere un solo broker e deve essere denominata predefinita. La risorsa Broker predefinita è necessaria per il funzionamento delle operazioni IoT. Non è modificabile e non può essere modificato dopo la distribuzione.
Attenzione
Non eliminare la risorsa Broker predefinita. In questo modo si interrompe la comunicazione tra i componenti interni delle operazioni IoT e la distribuzione smette di funzionare.
Personalizzare broker predefinito
La personalizzazione della risorsa broker predefinita non è necessaria per la maggior parte delle configurazioni. Le impostazioni che richiedono la personalizzazione includono:
- Cardinalità: determina la capacità del broker di gestire più connessioni e messaggi e migliora la disponibilità elevata in caso di errori di pod o nodi.
- Profilo di memoria: imposta l'utilizzo massimo della memoria del broker e come gestire l'utilizzo della memoria quando il broker aumenta.
- Buffer dei messaggi con backup su disco: configurazione per il buffering dei messaggi su disco quando la RAM si riempie.
- Impostazioni di diagnostica: configurazione per impostazioni di diagnostica come l'endpoint del livello di log e delle metriche.
- Opzioni avanzate del client MQTT: configurazione per le opzioni avanzate del client MQTT, ad esempio la scadenza della sessione, la scadenza del messaggio e le impostazioni keep-alive.
- Crittografia del traffico interno: configurazione per la crittografia del traffico interno tra il front-end broker e i pod back-end.
È possibile personalizzare il broker predefinito solo durante il tempo di distribuzione iniziale, usando l'interfaccia della riga di comando di Azure o il portale di Azure. Se sono necessarie impostazioni di configurazione di Broker diverse, è necessaria una nuova distribuzione.
Per personalizzare il broker predefinito durante la distribuzione:
Quando si segue la guida per distribuire le operazioni IoT, nella sezione Configurazione esaminare la configurazione del broker MQTT. Qui è possibile personalizzare le impostazioni del profilo di cardinalità e memoria. Per configurare altre impostazioni, incluso il buffer dei messaggi basato su disco e le opzioni avanzate del client MQTT, usare l'interfaccia della riga di comando di Azure.
Visualizzare le impostazioni predefinite di Broker
Per visualizzare le impostazioni per il broker predefinito:
- Nella portale di Azure passare all'istanza di Operazioni IoT.
- In Componenti selezionare MqTT Broker.
- In Dettagli broker selezionare Visualizzazione JSON.