Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Funktionen för datapersistence är utformad som en kompletterande mekanism för replikeringssystemet. Medan mäklaren replikerar data över flera noder kan avstängning av hela klustret fortfarande leda till dataförlust.
För att minska den här risken stöder MQTT-koordinatorn beständig lagring, vilket gör att kritiska data kan skrivas till disk och bevaras över omstarter. Den här funktionen för datapersistence skiljer sig från den diskstödda meddelandebufferten, som använder disken som ett tillägg av minne men är tillfälliga och ger inte hållbarhetsgarantier.
Lagring av data på disk medför en prestandakostnad. Effekten varierar beroende på typ och hastighet för det underliggande lagringsmediet.
Du kan konfigurera datapersistence under den inledande distributionen med hjälp av Azure-portalen eller Azure CLI. Du kan också ändra vissa beständighetsalternativ efter distributionen.
Konfigurationsmetoder
Konfigurera datapersistence för MQTT-koordinatorn med någon av följande metoder:
- Azure-portalen: Konfigurera beständighetsinställningar via det grafiska användargränssnittet under distributionen av IoT Operations.
- 
              Azure CLI: Använd en JSON-konfigurationsfil med --broker-config-fileflaggan när du distribuerar IoT-åtgärder med kommandotaz iot ops create.
En fullständig lista över tillgängliga inställningar finns i dokumentationen för Azure IoT Operations API.
Konfigurationsalternativ för distributionstid
Du måste ange dessa alternativ under distributionen och kan inte ändra dem senare.
Viktigt!
Du anger beständighet under distributionen och kan inte inaktivera det efteråt. Du kan ändra vissa beständighetsrelaterade alternativ efter distributionen.
Volym och storlek
MQTT-mäklaren använder en beständig volym (PV) för att lagra data på disk. Två inställningar styr hur den här volymen etableras:
- maxSize(krävs): Anger den maximala storleken på den beständiga volymen för lagring av mäklarens data. Det här fältet är alltid obligatoriskt, även om du anger ett anpassat volymkrav. Värdet måste vara större än 100 MB.- Exempel: - 10GiB
- persistentVolumeClaimSpec(valfritt): Låter dig definiera en anpassad PVC-mall (PersistentVolumeClaim) för att styra hur den beständiga volymen etableras. Om du inte anger det här alternativet skapar mäklaren en standard-PVC med den angivna- maxSizeoch standardlagringsklass, vilket kan resultera i suboptimal prestanda om standardklassen inte stöds av en lokal sökvägsprovisionerare.
Viktigt!
När du anger persistentVolumeClaimSpecmåste åtkomstläget vara inställt på ReadWriteOncePod.
Så här konfigurerar du volyminställningar i Azure-portalen:
- Under IoT Operations-distributionen går du till konfigurationsavsnittet MQTT Broker . 
- I inställningarna för datapersistence : - Ange maximal storlek för den beständiga volymen (krävs).
- Du kan också konfigurera inställningarna för beständig volymanspråksspecifikation för anpassade lagringsklasskrav.
 ![[Skärmbild som visar alternativ för datapersistence under distributionen i Azure-portalen]](media/howto-broker-persistence/data-persistence-deploy.png)  
Encryption
För att skydda data krypterar MQTT-koordinatorn alla beständighetsdata på disken som standard med stark AES-256-GCM-kryptering. Detta säkerställer att även om en angripare får åtkomst till den underliggande volymen, förblir känsligt koordinatortillstånd eller sessionsdata skyddade.
Kryptering är valfritt och är aktiverat som standard. Du kan inaktivera kryptering om du behöver det. Kryptering skyddar endast vilande data. data i minnet krypteras inte. Användning av kryptering har minimala prestandakostnader, men nyckelrotation stöds inte ännu.
Kryptering är aktiverat som standard när du distribuerar med hjälp av Azure-portalen. du kan inaktivera kryptering i mäklarkonfigurationsfilen om du distribuerar med hjälp av Azure CLI.
Konfigurationsalternativ för körtid
De här alternativen kan uppdateras när du har distribuerat Azure IoT Operations MQTT Broker.
Kvarhållna meddelandens beständighet
Behållna meddelanden är MQTT-meddelanden som koordinatorn lagrar och levererar till nya prenumeranter när de ansluter till ett ämne. Dessa meddelanden hjälper till att säkerställa att prenumeranter får de senaste data även om de inte var anslutna när meddelandet ursprungligen publicerades. Detta är särskilt användbart för statusuppdateringar, konfigurationsdata eller senast kända värden som nya prenumeranter behöver omedelbart vid anslutningen.
Att bevara kvarhållna meddelanden på disken säkerställer att dessa viktiga meddelanden överlever omstarter av mäklaren och inte går förlorade under underhåll eller oväntade avstängningar. Utan persistens finns kvarhållna meddelanden bara i minnet och går förlorade när mäklaren startas om. Detta kan lämna nya prenumeranter utan kritiska initiala data.
Den här inställningen styr vilka kvarhållna meddelanden som sparas på disken.
- mode(krävs om- retainanges): Alternativen är- None,- Alleller- Custom.- 
              None: Inga bevarade meddelanden sparas.
- 
              All: Alla bevarade meddelanden sparas.
- 
              Custom: Endast de ämnen som anges iretainSettings.topicssparas.
 
- 
              
- Om du väljer - Custom:- retainSettings.topics(valfritt): Lista över ämnesmönster som ska bevaras. Jokertecken- #och- +stöds.
- retainSettings.dynamic.mode(valfritt, standard:- Enabled): Tillåter MQTT-klienter att begära diskpersistence för kvarhållna meddelanden med hjälp av en MQTT v5-användaregenskap.
 
Så här konfigurerar du kvarhållna meddelanden i Azure-portalen:
- Gå till din IoT Operations-instans. 
- Gå till MQTT Broker>Data Persistence. 
- I avsnittet Behållna meddelanden : - Välj Läget: Ingen; Alla; eller Anpassad.
- Om Anpassad har valts anger du ämnesmönster och inställningar för dynamiskt läge.
 ![[Skärmbild som ändrar alternativen för kvarhållna meddelanden för datapersistence i Azure-portalen]](media/howto-broker-persistence/data-persistence-retained-messages.png)  
Beständig prenumerantkö
Prenumerantköer innehåller meddelanden som väntar på att levereras till MQTT-klienter med QoS 1-prenumerationer (Quality of Service). När en klient prenumererar på QoS 1 garanterar mäklaren meddelandeleverans genom kömeddelanden tills klienten bekräftar kvittot. Dessa köer är särskilt viktiga för klienter som tillfälligt kopplas från eller bearbetar meddelanden långsamt.
Att lagra prenumerantköer på disk säkerställer att meddelanden som väntar på leverans inte går förlorade vid omstart av mäklaren. Den här funktionen är kritisk för IoT-scenarier där enheter kan ha tillfälliga anslutningar, bearbeta långsamt, eller ha beständiga sessioner som behöver upprätthålla garantier för meddelandeleverans vid omstarter av mäklare. Utan beständighet går köade meddelanden förlorade, vilket kan orsaka dataförlust för viktig enhetskommunikation.
Mer information om prenumerantköer och meddelandeleverans finns i Konfigurera broker MQTT-klientalternativ.
Den här inställningen styr vilka meddelandeköer för prenumeranter som sparas på disken. Metadata för sessionstillstånd sparas alltid oavsett dessa inställningar.
- mode(krävs om- subscriberQueueanges): Alternativen är- None,- Alleller- Custom.
- Om du väljer - Custom:- subscriberQueueSettings.subscriberClientIds(valfritt): Lista över klient-ID:t för prenumeranter som ska sparas. Jokertecken- *stöds.
- subscriberQueueSettings.dynamic.mode(valfritt, standard:- Enabled): Gör att MQTT-klienter kan begära beständighet dynamiskt.
 
Så här konfigurerar du beständighet i prenumerantkö i Azure-portalen:
- Gå till din IoT Operations-instans. 
- Gå till MQTT Broker>Data Persistence. 
- I avsnittet Prenumerantkö : - Välj Läget: Ingen; Alla; eller Anpassad.
- Om Anpassad har valts anger du klient-ID för prenumeranter och inställningar för dynamiskt läge.
 ![[Skärmbild som ändrar alternativ för datapersistence-prenumeranter i Azure-portalen]](media/howto-broker-persistence/data-persistence-subscriber.png)  
Viktigt!
En klient som inte har sparats tidigare kan sparas när som helst. Det är dock bara de publicerade meddelanden som tas emot efter att beständighet har aktiverats för den specifika klienten som lagras på disken. Om beständighet senare inaktiveras för klienten börjar ändringen inte gälla förrän klienten återansluter till MQTT-flaggan clean start = true.
Sessionsförfallodatum och prenumerantköpersistens
Om du vill spara meddelandeköer för prenumeranter på disk måste både sessionens förfallointervall och koordinatorns beständighetskonfiguration justeras. Specifikt:
- MQTTv5-klienter: Kan ange sessionsförfallointervall med hjälp av egenskapen Sessionsförfallointervall för CONNECT- eller DISCONNECT-paket. De kan också begära beteende för diskpersistence med en angiven användaregenskap. 
- MQTTv3-klienter: Om flaggan Rensa session är sann är sessionens förfallointervall inställt på 0. Annars används värdet - maxSessionExpirySecondsför konfigurationen i brokern.
Mäklaren hanterar abonnentköns persistens på olika sätt beroende på konfigurationsläge och sessionslivslängd.
När läget är inställt på None:
- Alla prenumerantköer förblir endast minnesinterna, oavsett intervall för sessionsförfallodatum
När läget är inställt på All:
- Om sessionens förfallointervall = 0: Köer förblir minnesinterna
- Om sessionens utgångsintervall > 0: Köer sparas på disken under intervallets varaktighet
När läget är inställt på Custom:
- Om sessionens förfallointervall = 0: Köer förblir minnesinterna
- Om sessionens utgångsintervall > 0: Köer sparas till disken under intervallets varaktighet endast om: - Klient-ID:t matchar den konfigurerade listan i subscriberQueueSettings.subscriberClientIds, OR
- Dynamiskt läge är aktiverat och en MQTTv5-klient tillhandahöll den matchande användaregenskapen i sitt CONNECT-paket
 
- Klient-ID:t matchar den konfigurerade listan i 
Se till att prenumerantköer sparas på disken genom att ha följande viktiga punkter i åtanke:
- Prenumerantköer sparas bara när sessionens förfallointervall är större än 0
- För Customläge måste antingen klient-ID:t anges explicit eller så måste dynamisk beständighet aktiveras med rätt användaregenskap
- MQTTv5-klienter kan använda dynamisk beständighet genom att inkludera den konfigurerade användaregenskapen (standard: aio-persistence=true) i sitt CONNECT-paket
Tillståndslagerbeständighet
Tillståndslagret är en intern komponent i MQTT-koordinatorn som underhåller olika typer av driftdata och metadata utöver vanliga MQTT-meddelanden. Detta omfattar konfigurationstillstånd för koordinatorer, sessionsinformation, prenumerationsinformation och andra interna datastrukturer som mäklaren använder för att hantera klientanslutningar och meddelanderoutning effektivt.
Lagring av tillståndsdata på disk säkerställer att mäklaren kan upprätthålla driftkontinuitet mellan omstarter. Detta är särskilt viktigt för komplexa IoT-distributioner där förlust av internt tillstånd kan leda till anslutningsproblem, prenumerationsförluster eller prestandaförsämring när mäklaren återskapar sina interna datastrukturer från grunden.
Statuslagringbeständighet är särskilt värdefull i produktionsmiljöer där det är viktigt att minimera återställningstiden och upprätthålla tjänstekonsistens. Utan beständighet måste mäklaren återskapa allt internt tillstånd vid omstart, vilket kan orsaka tillfälliga tjänsteavbrott och påverkan på prestanda.
Mer information om tillståndsarkivet finns i Läs mer om MQTT Broker State Store-protokollet.
Den här inställningen styr vilka nycklar i det interna tillståndsarkivet som sparas.
- mode(krävs om stateStore har angetts): Alternativen är- None,- Alleller- Custom.
- Om du väljer - Custom:- stateStoreSettings.stateStoreResources(valfritt): Lista över nyckeltyper och nycklar som ska sparas.- keyType: Mönster, sträng eller binär
- keys: Lista över nycklar/mönster som ska sparas.
 
- stateStoreSettings.dynamic.mode(valfritt, standard:- Enabled): Gör att MQTT-klienter kan begära beständighet dynamiskt.
 
Så här konfigurerar du beständighet för tillståndslager i Azure-portalen:
- Gå till din IoT Operations-instans.
- Gå till MQTT Broker>Data Persistence.
- I avsnittet State Store: - Välj Läget: Ingen; Alla; eller Anpassad.
- Om Anpassad har valts anger du tillståndslagringsresurser med nyckeltyper, nycklar och inställningar för dynamiskt läge.
              
              ![[Skärmbild som ändrar lagringsalternativ för datapersistencetillstånd i Azure-portalen]](media/howto-broker-persistence/data-persistence-state-store.png)  
 
Begära beständighet från en klient med dynamisk beständighetsinställning
Klienter kan begära beständighet för sina data genom att skicka en MQTT v5-användaregenskap i sina meddelanden. På så sätt kan klienter dynamiskt aktivera beständighet för sina meddelanden, prenumerantköer eller tillståndsarkivposter utan att ändra koordinatorkonfigurationen.
När en klient begär beständighet kontrollerar mäklaren sina aktuella beständighetsinställningar och tillämpar dem. Om det begärda beständighetsläget är aktiverat och inställt på att tillåta dynamiska begäranden bevarar koordinatorn klientens data enligt konfigurationen.
Du kan aktivera eller inaktivera inställningen för dynamisk beständighet för varje datatyp (behållna meddelanden, prenumerantköer och tillståndslagerposter) genom att ange dynamic.mode i Enabled respektive konfigurationsavsnitt. MQTT-användarens egenskapsnyckel och värde som används för begäranden om dynamisk beständighet konfigureras separat på koordinatornivå.
Så här konfigurerar du inställningar för dynamisk beständighet i Azure-portalen:
- Gå till din IoT Operations-instans. 
- Gå till MQTT Broker>Data Persistence. 
- Konfigurera inställningarna för den globala MQTT-användaregenskapen: - Ange användaregenskapsnyckeln (standard: aio-persistence)
- Ange värdet för användaregenskapen (standard: true)
 
- Ange användaregenskapsnyckeln (standard: 
- I varje beständighetsavsnitt (behållna meddelanden, prenumerantkö, tillståndsarkiv): - Ange Dynamisk beständighet till aktiverad så att klienter kan begära beständighet för den datatypen.
 ![[Skärmbild som ändrar dynamiska alternativ för datapersistence i Azure-portalen]](media/howto-broker-persistence/data-persistence-dynamic.png)  
Mer information om Azure CLI-stöd för avancerad MQTT-koordinatorkonfiguration finns i Azure CLI-stöd för avancerad MQTT-koordinatorkonfiguration.