Bereitstellungsplanung – Persistenz

Die Datenpersistenz schreibt kritische MQTT-Brokerdaten auf den Datenträger, sodass sie Clusterneustarts überlebt. Entscheiden Sie vor der Bereitstellung, ob Sie datenpersistenz für den MQTT-Broker benötigen.

Persistenz ergänzt das Replikationssystem des Brokers. Die Replikation hält Daten über Knoten hinweg zur Verfügung, aber ein clusterweites Herunterfahren kann trotzdem zu Datenverlust führen – Persistenz verhindert dies. Die Persistenz unterscheidet sich vom Datenträger-gesicherten Nachrichtenpuffer, der Datenträger als Erweiterung des Arbeitsspeichers verwendet und keine Dauerhaftigkeitsgarantien bietet.

Das Schreiben von Daten auf den Datenträger hat erhebliche Leistungskosten. Die genauen Kosten hängen vom Typ und der Geschwindigkeit des zugrunde liegenden Speichers ab.

Wichtig

Persistenz ist bei der Bereitstellung aktiviert und kann danach nicht deaktiviert werden. Einige verwandte Optionen können später geändert werden – siehe Laufzeitpersistenzoptionen.

Einstellungen für beständiges Volume

Der MQTT-Broker verwendet ein persistentes Volume (PV), um Daten auf dem Datenträger zu speichern. Mit zwei Einstellungen wird gesteuert, wie dieses Volume bereitgestellt wird:

  • maxSize (erforderlich): Legt die maximale Größe des persistenten Volumes zum Speichern von Brokerdaten fest. Dieses Feld ist immer erforderlich, auch wenn Sie einen benutzerdefinierten Volumeanspruch angeben. Der Wert muss mindestens 100 MB betragen.

    Beispiel:10Gi

  • persistentVolumeClaimSpec (optional): Definiert eine benutzerdefinierte PersistentVolumeClaim (PVC)-Vorlage, die steuert, wie das persistente Volume bereitgestellt wird. Wenn Sie diese Option nicht festlegen, erstellt der Broker ein Standard-PVC mithilfe des maxSize Werts und der Standardspeicherklasse des Clusters.

    Um eine optimale Leistung zu erzielen, verwenden Sie eine Speicherklasse, die von einem lokalen Pfadbereitstellungsmodul unterstützt wird. Die Standardspeicherklasse ist häufig nicht optimal, was die Leistung beeinträchtigen kann.

Wichtig

Wenn Sie persistentVolumeClaimSpec angeben, muss der Zugriffsmodus auf ReadWriteOncePod festgelegt sein.

Konfigurieren der Persistenz

Konfigurieren Sie die Persistenz bei der Bereitstellung mit dem Befehl az iot ops create. Legen Sie mindestens die persistente Volumegröße fest:

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

Um die Speicherklasse oder den Persistenzmodus anzupassen, fügen Sie die Flags --persist-pvc-sc und --persist-mode hinzu:

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

Übergeben Sie für den vollständigen Satz von Optionen eine Konfigurationsdatei mit --broker-config-file. Weitere Informationen finden Sie unter Azure CLI Unterstützung für die erweiterte MQTT-Brokerkonfiguration und die Persistence-API-Referenz.

Im folgenden Beispiel wird eine maximale Größe von 10 GiB und eine benutzerdefinierte Speicherklasse festgelegt:

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

Encryption

Standardmäßig verschlüsselt der MQTT-Broker alle Persistenzdaten auf dem Datenträger mithilfe der AES-256-GCM-Verschlüsselung. Verschlüsselung schützt Brokerstatus- und Sitzungsdaten, wenn ein Angreifer Zugriff auf das zugrunde liegende Volume erhält.

Die Verschlüsselung ist standardmäßig aktiviert. Sie können sie deaktivieren, die Verschlüsselung schützt jedoch nur ruhende Daten – Daten im Arbeitsspeicher werden nicht verschlüsselt. Die Leistungseinbußen sind minimal, aber die Schlüsselrotation wird noch nicht unterstützt.

Um die Verschlüsselung zu deaktivieren, fügen Sie Ihrer Brokerkonfigurationsdatei Folgendes hinzu und übergeben Sie diese dann mit dem Flag an --broker-config-file:

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

Laufzeitpersistenzoptionen

Einige Persistenzoptionen – beibehaltene Nachrichten, Abonnentenwarteschlangen und Zustandsspeicher – können nach der Bereitstellung konfiguriert werden. Ausführliche Informationen zu diesen Optionen finden Sie unter Konfigurieren der MQTT-Brokerpersistenz.

Nächste Schritte