Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
La funzionalità di persistenza dei dati è progettata come meccanismo complementare al sistema di replica. Mentre il broker replica i dati in più nodi, un arresto a livello di cluster può comunque comportare una perdita di dati.
Per ridurre questo rischio, il broker MQTT supporta l'archiviazione permanente, che consente di scrivere i dati critici su disco e conservarli tra i riavvii. Questa funzionalità di persistenza dei dati è diversa dal buffer dei messaggi supportato dal disco, che usa il disco come estensione della memoria, ma è temporaneo e non offre garanzie di durabilità.
L'archiviazione dei dati su disco comporta un costo delle prestazioni. L'impatto varia a seconda del tipo e della velocità del supporto di archiviazione sottostante.
È possibile configurare la persistenza dei dati durante la distribuzione iniziale usando il portale di Azure o l'interfaccia della riga di comando di Azure. È anche possibile modificare alcune opzioni di persistenza dopo la distribuzione.
Metodi di configurazione
Configurare la persistenza dei dati per il broker MQTT usando uno di questi metodi:
- Portale di Azure: configurare le impostazioni di persistenza tramite l'interfaccia utente grafica durante la distribuzione delle operazioni IoT.
-
Azure CLI: Usare un file di configurazione JSON con il
--broker-config-fileflag quando si distribuisce operazioni IoT usando ilaz iot ops createcomando.
Per un elenco completo delle impostazioni disponibili, vedere la documentazione dell'API operazioni di Azure IoT.
Opzioni di configurazione in fase di distribuzione
È necessario impostare queste opzioni durante la distribuzione e non modificarle in un secondo momento.
Importante
La persistenza viene impostata durante la distribuzione e non è possibile disattivarla in un secondo momento. È possibile modificare alcune opzioni correlate alla persistenza dopo la distribuzione.
Volume e dimensioni del volume
Il broker MQTT usa un volume permanente (PV) per archiviare i dati su disco. Due impostazioni controllano la modalità di provisioning di questo volume:
maxSize(obbligatorio): imposta le dimensioni massime del volume permanente per l'archiviazione dei dati del broker. Questo campo è sempre obbligatorio, anche se si specifica un'attestazione di volume personalizzata. Il valore deve essere maggiore di 100 MB.Esempio:
10GiBpersistentVolumeClaimSpec(facoltativo): consente di definire un modello PersistentVolumeClaim (PVC) personalizzato per controllare la modalità di provisioning del volume permanente. Se non si imposta questa opzione, il broker crea un‘attestazione di volume permanente predefinita usando la classemaxSizespecificata e la classe di archiviazione predefinita, condizione che può comportare prestazioni non ottimali se la classe predefinita non è supportata da un gestore del percorso locale.
Importante
Quando si specifica persistentVolumeClaimSpec, la modalità di accesso deve essere impostata su ReadWriteOncePod.
Per configurare le impostazioni del volume nel portale di Azure:
Durante la distribuzione di Operazioni IoT, passare alla sezione di configurazione Broker MQTT.
Nelle impostazioni di persistenza dei dati :
- Impostare la dimensione massima per il volume permanente (obbligatorio).
- Facoltativamente, configurare le impostazioni della specifica di attestazione volume permanente per i requisiti della classe di archiviazione personalizzata.
Encryption
Per proteggere i dati, il broker MQTT crittografa tutti i dati di persistenza su disco per impostazione predefinita usando la crittografia AES-256-GCM avanzata. In questo modo, anche se un utente malintenzionato ottiene l'accesso al volume sottostante, lo stato del broker sensibile o i dati della sessione rimangono protetti.
La crittografia è facoltativa ed è attivata per impostazione predefinita. Se necessario, è possibile disattivare la crittografia. La crittografia protegge solo i dati inattivi; i dati in memoria non vengono crittografati. L'uso della crittografia ha un costo minimo per le prestazioni, ma la rotazione delle chiavi non è ancora supportata.
La crittografia è abilitata per impostazione predefinita durante la distribuzione tramite il portale di Azure. è possibile disabilitare la crittografia nel file di configurazione del broker se si distribuisce usando l'interfaccia della riga di comando di Azure.
Opzioni di configurazione del runtime
Queste opzioni possono essere aggiornate dopo la distribuzione del broker MQTT per le operazioni IoT di Azure.
Persistenza dei messaggi conservati
I messaggi conservati sono messaggi MQTT che il broker archivia e consegna ai nuovi sottoscrittori quando essi si connettono a un argomento. Questi messaggi consentono di garantire che i sottoscrittori ricevano i dati più recenti anche se non sono stati connessi quando il messaggio è stato originariamente pubblicato. Ciò è particolarmente utile per gli aggiornamenti dello stato, i dati di configurazione o gli ultimi valori noti necessari per i nuovi sottoscrittori immediatamente dopo la connessione.
La persistenza dei messaggi conservati su disco garantisce che questi messaggi importanti superino i riavvii del broker e non vengano persi durante la manutenzione o arresti imprevisti. Senza persistenza, i messaggi conservati esistono solo in memoria e vengono persi al riavvio del broker. Ciò può lasciare nuovi sottoscrittori senza dati iniziali critici.
Questa impostazione controlla quali messaggi conservati vengono salvati in modo permanente su disco.
mode(obbligatorio seretainè impostato): le opzioni sonoNone,AlloCustom.-
None: Nessun messaggio conservato è persistente. -
All: tutti i messaggi conservati vengono salvati in modo permanente. -
Custom: vengono mantenuti solo gli argomenti elencati inretainSettings.topics.
-
Se si seleziona
Custom:retainSettings.topics(facoltativo): elenco di modelli di argomento da rendere persistenti. Sono supportati i caratteri jolly#e+.retainSettings.dynamic.mode(facoltativo, impostazione predefinita:Enabled): consente ai client MQTT di richiedere la persistenza del disco per i messaggi conservati usando una proprietà utente MQTT v5.
Per configurare la persistenza dei messaggi conservati nel portale di Azure:
Passare all’istanza di Operazioni IoT.
Passare aMqTT Broker Data Persistence (Persistenza dei dati di>).
Nella sezione Messaggi conservati :
- Selezionare la modalità: Nessuna, Tutto o Personalizzata.
- Se è selezionata l'opzione Personalizzata, specificare i modelli di argomento e le impostazioni della modalità dinamica.
Persistenza delle code dei sottoscrittori
Le code dei sottoscrittori contengono messaggi in attesa di essere consegnati ai client MQTT con sottoscrizioni QoS 1. Quando un client sottoscrive QoS 1, il broker garantisce il recapito dei messaggi accodando i messaggi fino a quando il client non riconosce la ricezione. Queste code sono particolarmente importanti per i client che potrebbero essere temporaneamente disconnessi o che elaborano i messaggi lentamente.
Rendere persistenti su disco le code dei sottoscrittori garantisce che i messaggi in attesa di consegna non vadano persi durante il riavvio del broker. Questa funzionalità è fondamentale per gli scenari IoT in cui i dispositivi possono avere connettività intermittente, elaborazione lenta o sessioni persistenti che devono mantenere le garanzie di recapito dei messaggi tra i riavvii di Broker. Senza persistenza, i messaggi in coda vengono persi, causando la perdita di dati per comunicazioni importanti del dispositivo.
Per altre informazioni sulle code dei sottoscrittori e sul recapito dei messaggi, consultare Configurare le opzioni client del broker MQTT.
Questa impostazione controlla quali code di messaggi dei sottoscrittori vengono rese persistenti su disco. I metadati dello stato della sessione vengono sempre mantenuti indipendentemente da queste impostazioni.
mode(obbligatorio sesubscriberQueueè impostato): le opzioni sonoNone,AlloCustom.Se si seleziona
Custom:subscriberQueueSettings.subscriberClientIds(facoltativo): elenco di ID client sottoscrittori da rendere persistenti. Sono supportati i caratteri jolly*.subscriberQueueSettings.dynamic.mode(facoltativo, impostazione predefinita:Enabled): consente ai client MQTT di richiedere la persistenza in modo dinamico.
Per configurare la persistenza della coda dei sottoscrittori nel portale di Azure:
Passare all’istanza di Operazioni IoT.
Passare aMqTT Broker Data Persistence (Persistenza dei dati di>).
Nella sezione Coda abbonato :
- Selezionare la modalità: Nessuna, Tutto o Personalizzata.
- Se l'opzione Personalizzata è selezionata, specificare gli ID client del sottoscrittore e le impostazioni della modalità dinamica.
Importante
Un client che prima non era persistente può diventare persistente in qualsiasi momento. Tuttavia, solo i messaggi pubblicati ricevuti dopo l'abilitazione della persistenza per tale client specifico vengono archiviati su disco. Se la persistenza viene disabilitata in un secondo momento per il client, tale modifica non avrà effetto finché il client non si riconnette con il flag mqTT clean start = true.
Scadenza della sessione e persistenza della coda del sottoscrittore
Per rendere persistenti su disco le code dei messaggi dei sottoscrittori, l'intervallo di scadenza della sessione e la configurazione di persistenza del broker devono essere allineati. In particolare:
Client MQTTv5: consente di specificare l'intervallo di scadenza della sessione usando la proprietà Session Expiry Interval dei pacchetti CONNECT o DISCONNECT. Possono anche richiedere il comportamento di persistenza del disco con una proprietà utente specificata.
Client MQTTv3: se il flag Clean Session è true, l'intervallo di scadenza della sessione è impostato su 0. In caso contrario, viene usato il valore di configurazione
maxSessionExpirySecondsnel broker.
Il broker gestisce la persistenza della coda dei sottoscrittori in modo diverso in base alla modalità di configurazione e all'intervallo di scadenza della sessione:
Quando la modalità è impostata su None
- Tutte le code dei sottoscrittori rimangono solo in memoria, indipendentemente dall'intervallo di scadenza della sessione
Quando la modalità è impostata su All
- Se l'intervallo di scadenza della sessione è = 0: le code rimangono in memoria
- Se l'intervallo di scadenza della sessione è > 0: le code vengono rese persistenti su disco per la durata dell'intervallo
Quando la modalità è impostata su Custom
- Se l'intervallo di scadenza della sessione è = 0: le code rimangono in memoria
- Se l'intervallo di scadenza della sessione è > 0: le code vengono rese persistenti su disco per la durata dell'intervallo solo se:
- L'ID client corrisponde all'elenco configurato in
subscriberQueueSettings.subscriberClientIds, OR - La modalità dinamica è abilitata e un client MQTTv5 ha fornito la proprietà utente corrispondente nel pacchetto CONNECT
- L'ID client corrisponde all'elenco configurato in
Per essere certi che le code dei sottoscrittori vengano rese persistenti su disco, tenere presenti questi punti chiave:
- Le code degli abbonati vengono mantenute solo quando l'intervallo di scadenza della sessione è maggiore di 0
- Per
Customla modalità, l'ID client deve essere elencato in modo esplicito o la persistenza dinamica deve essere abilitata con la proprietà utente corretta - I client MQTTv5 possono usare la persistenza dinamica includendo la proprietà utente configurata (impostazione predefinita:
aio-persistence=true) nel pacchetto CONNECT
Persistenza dell’archivio stati
L'archivio di stato è un componente interno del broker MQTT che gestisce vari tipi di dati operativi e metadati oltre ai messaggi MQTT standard. Sono inclusi lo stato di configurazione del broker, le informazioni sulla sessione, i dettagli della sottoscrizione e altre strutture di dati interne usate dal broker per gestire in modo efficiente le connessioni client e il routing dei messaggi.
La persistenza dei dati dell'archivio stati su disco garantisce che il broker possa mantenere la continuità operativa tra i riavvii. Ciò è particolarmente importante per le distribuzioni IoT complesse in cui la perdita di stato interno potrebbe causare problemi di connessione, perdite di sottoscrizioni o riduzione delle prestazioni quando il broker ricompila le sue strutture di dati interne da zero.
La persistenza dello stato di archiviazione è particolarmente utile negli ambienti di produzione in cui ridurre al minimo i tempi di ripristino e mantenere la coerenza dei servizi è cruciale. Senza persistenza, il broker deve ricostruire tutto lo stato interno al riavvio e questo può causare interruzioni temporanee del servizio e un impatto sulle prestazioni.
Per altre informazioni sull'archivio stati, vedere Informazioni sul protocollo dell'archivio stati del broker MQTT.
Questa impostazione controlla quali chiavi nell'archivio stati interno sono persistenti.
mode(obbligatorio se stateStore è impostato): le opzioni sonoNone,AlloCustom.Se si seleziona
Custom:stateStoreSettings.stateStoreResources(facoltativo): elenco di tipi di chiave e chiavi da rendere persistenti.keyType: criterio, stringa o binariokeys: elenco di chiavi/modelli da rendere persistenti.
stateStoreSettings.dynamic.mode(facoltativo, impostazione predefinita:Enabled): consente ai client MQTT di richiedere la persistenza in modo dinamico.
Per configurare la persistenza dell'archivio stati nel portale di Azure:
- Passare all’istanza di Operazioni IoT.
- Passare aMqTT Broker Data Persistence (Persistenza dei dati di>).
- Nella sezione Archivio stati:
- Selezionare la modalità: Nessuna, Tutto o Personalizzata.
- Se è selezionata l'opzione Personalizzato, specificare le risorse dell'archivio stati con tipi di chiavi, chiavi e impostazioni di modalità dinamica.
Richiedere la persistenza da un client usando l'impostazione di persistenza dinamica
I client possono richiedere la persistenza dei dati inviando una proprietà utente MQTT v5 nei messaggi. Ciò consente ai client di abilitare dinamicamente la persistenza per i messaggi, le code dei sottoscrittori o le voci dell'archivio stati senza modificare la configurazione del broker.
Quando un client richiede la persistenza, il broker controlla le impostazioni di persistenza correnti e le applica. Se la modalità di persistenza richiesta è abilitata e impostata su consenti richieste dinamiche, il broker mantiene i dati del client come specificato nella configurazione.
È possibile abilitare o disabilitare l'impostazione di persistenza dinamica per ogni tipo di dati (messaggi conservati, code del sottoscrittore e voci dell'archivio stati) impostando su dynamic.modeEnabled nelle rispettive sezioni di configurazione. La chiave e il valore della proprietà utente MQTT usati per le richieste di persistenza dinamica vengono configurati separatamente a livello di broker.
Per configurare le impostazioni di persistenza dinamica nel portale di Azure:
Passare all’istanza di Operazioni IoT.
Passare aMqTT Broker Data Persistence (Persistenza dei dati di>).
Configurare le impostazioni globali delle proprietà utente MQTT:
- Impostare la chiave proprietà utente (impostazione predefinita:
aio-persistence) - Impostare il valore della proprietà User (impostazione predefinita:
true)
- Impostare la chiave proprietà utente (impostazione predefinita:
In ogni sezione di persistenza (Messaggi non distribuiti, Coda sottoscrittori, Archivio stati):
- Impostare La persistenza dinamica su abilitata per consentire ai client di richiedere la persistenza per tale tipo di dati.
Contenuti correlati
Per altre informazioni sul supporto dell'interfaccia della riga di comando di Azure per la configurazione avanzata del broker MQTT, vedere Supporto dell'interfaccia della riga di comando di Azure per la configurazione avanzata del broker MQTT.