Distributionsplanering – Beständighet

Databeständighet skriver kritiska MQTT-brokerdata på disk så att de överlever omstarter av klustret. Bestäm innan distributionen om du behöver datapersistence för MQTT-koordinatorn.

Beständighet kompletterar mäklarens replikeringssystem. Replikering håller data tillgängliga mellan noder, men en avstängning i hela klustret kan fortfarande orsaka dataförlust – beständighet förhindrar detta. Beständighet skiljer sig från den diskstödda meddelandebufferten, som använder disken som ett tillägg för minne och inte ger hållbarhetsgarantier.

Att skriva data till disk har en betydande prestandakostnad. Den exakta kostnaden beror på den underliggande lagringens typ och hastighet.

Important

Beständig lagring aktiveras vid driftsättning och kan inte inaktiveras efteråt. Vissa relaterade alternativ kan ändras senare – se Alternativ för körningspersistens.

Inställningar för beständiga volymer

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 minst 100 MB.

    Exempel:10Gi

  • persistentVolumeClaimSpec (valfritt): Definierar en anpassad PVC-mall (PersistentVolumeClaim) som styr hur den beständiga volymen etableras. Om du inte anger det här alternativet skapar brokern en standard-PVC med värdet maxSize och klustrets standardlagringsklass.

    För bästa prestanda använder du en lagringsklass som backas upp av en lokal sökvägsetabler. Standardlagringsklassen är ofta inte det, vilket kan försämra prestandan.

Important

När du anger persistentVolumeClaimSpecmåste åtkomstläget vara inställt på ReadWriteOncePod.

Konfigurera beständighet

Konfigurera persistens vid utplacering med kommandot az iot ops create . Ange minst den beständiga volymstorleken:

az iot ops create ... --persist-max-size 10Gi

Om du vill anpassa lagringsklassen eller lagringsläget lägger du till flaggorna --persist-pvc-sc och --persist-mode :

az iot ops create ... --persist-max-size 10Gi --persist-pvc-sc <MYSTORAGECLASS> --persist-mode retain=All stateStore=None

Note

Du kan också konfigurera dessa persistensinställningar under distributionsstegen i Azure-portalen.

För hela uppsättningen av alternativ, skicka en konfigurationsfil genom att använda --broker-config-file. Mer information finns i Azure CLI stöd för avancerad MQTT-koordinatorkonfiguration och Persistence API-referens.

I följande exempel anges en maximal storlek på 10 GiB och en anpassad lagringsklass:

{
  "persistence": {
    "maxSize": "10G",
    "persistentVolumeClaimSpec": {
      "storageClassName": "example-storage-class",
      "accessModes": [
        "ReadWriteOncePod"
      ]
    }
  }
}

Encryption

Som standard krypterar MQTT-koordinatorn alla beständighetsdata på disken med hjälp av AES-256-GCM-kryptering. Kryptering skyddar koordinatortillstånd och sessionsdata om en angripare får åtkomst till den underliggande volymen.

Kryptering är aktiverat som standard. Du kan inaktivera det, men kryptering skyddar bara data i vila – data i minnet är inte krypterad. Prestandakostnaden är minimal, men nyckelrotation stöds ännu inte.

Note

Kryptering är aktiverad som standard vid distribution via Azure-portalen. Du kan inaktivera kryptering i mäklarens konfigurationsfil om du distribuerar med Azure CLI.

För att inaktivera kryptering, lägg till följande kod i din broker-konfigurationsfil och skicka den sedan till az iot ops create med flaggan --broker-config-file :

{
  "persistence": {
    "encryption": {
      "mode": "Disabled"
    }
  }
}

Alternativ för beständighet under körning

Vissa beständighetsalternativ – kvarhållna meddelanden, prenumerantköer och tillståndsarkiv – kan konfigureras efter distributionen. Mer information om dessa alternativ finns i Konfigurera MQTT-koordinatorpersistence.

Nästa steg