Planification du déploiement - Persistance

La persistance des données écrit les données du répartiteur MQTT critiques sur le disque afin qu’elles survivent aux redémarrages du cluster. Décidez avant le déploiement si vous avez besoin de persistance des données pour le répartiteur MQTT.

La persistance complète le système de réplication du répartiteur. La réplication conserve les données disponibles sur les nœuds, mais un arrêt à l’échelle du cluster peut toujours entraîner une perte de données , la persistance empêche cela. La persistance est différente de la mémoire tampon de message sauvegardée sur disque, qui utilise le disque comme extension de mémoire et ne fournit pas de garanties de durabilité.

L’écriture de données sur disque a un coût de performances significatif. Le coût exact dépend du type et de la vitesse du stockage sous-jacent.

Important

La persistance est activée lors du déploiement et ne peut pas être désactivée par la suite. Certaines options associées peuvent être modifiées ultérieurement : consultez les options de persistance du runtime.

Paramètres de volume persistant

Le répartiteur MQTT utilise un volume persistant (PV) pour stocker des données sur le disque. Deux paramètres contrôlent la façon dont ce volume est approvisionné :

  • maxSize (obligatoire) : définit la taille maximale du volume persistant pour le stockage des données du répartiteur. Ce champ est toujours requis, même si vous fournissez une revendication de volume personnalisée. La valeur doit être d’au moins 100 Mo.

    Exemple :10Gi

  • persistentVolumeClaimSpec (facultatif) : définit un modèle PersistentVolumeClaim (PVC) personnalisé qui contrôle la façon dont le volume persistant est provisionné. Si vous ne définissez pas cette option, le répartiteur crée un PVC par défaut à l’aide de la maxSize valeur et de la classe de stockage par défaut du cluster.

    Pour optimiser les performances, utilisez une classe de stockage sauvegardée par un provisionneur de chemin d’accès local. La classe de stockage par défaut n’est souvent pas, ce qui peut dégrader les performances.

Important

Lorsque vous spécifiez persistentVolumeClaimSpec, le mode d’accès doit être défini sur ReadWriteOncePod.

Configurer la persistance

Configurez la persistance au déploiement en utilisant la az iot ops create commande. Au minimum, définissez la taille du volume persistant :

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

Pour personnaliser la classe de stockage ou le mode de persistance, ajoutez les options --persist-pvc-sc et --persist-mode :

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

Note

Vous pouvez également configurer ces paramètres de persistance lors des étapes de déploiement dans le portail Azure.

Pour l’ensemble complet des options, passez un fichier de configuration en utilisant --broker-config-file. Pour plus d’informations, consultez la prise en charge par Azure CLI de la configuration avancée du broker MQTT et la référence de l’API de persistance.

L’exemple suivant définit une taille maximale de 10 Gio et une classe de stockage personnalisée :

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

Encryption

Par défaut, le répartiteur MQTT chiffre toutes les données de persistance sur le disque à l’aide du chiffrement AES-256-GCM. Le chiffrement protège l’état du répartiteur et les données de session si un attaquant accède au volume sous-jacent.

Le chiffrement est activé par défaut. Vous pouvez le désactiver, mais le chiffrement ne protège que les données au repos – les données en mémoire ne sont pas chiffrées. L’impact sur les performances est minimal, mais la rotation des clés n’est pas encore prise en charge.

Note

Le chiffrement est activé par défaut lors du déploiement via le portail Azure. Vous pouvez désactiver le chiffrement dans le fichier de configuration du courtier si vous déployez en utilisant Azure CLI.

Pour désactiver le chiffrement, ajoutez le code suivant à votre fichier de configuration du broker, puis transmettez-le à az iot ops create avec l’indicateur --broker-config-file :

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

Options de persistance du runtime

Certaines options de persistance ( messages conservés, files d’attente d’abonnés et magasin d’état) peuvent être configurées après le déploiement. Pour plus d’informations sur ces options, consultez Configurer la persistance du répartiteur MQTT.

Étapes suivantes