Planificación del despliegue - Persistencia

La persistencia de datos guarda en disco los datos críticos del broker MQTT para que sobrevivan a los reinicios del clúster. Decida antes de la implementación si necesita persistencia de datos para el agente MQTT.

La persistencia complementa el sistema de replicación del bróker. La replicación mantiene los datos disponibles en todos los nodos, pero un apagado en todo el clúster todavía puede provocar pérdida de datos: la persistencia evita eso. La persistencia es diferente del búfer de mensajes respaldado por disco, que usa el disco como extensión de memoria y no proporciona garantías de durabilidad.

Escribir datos en disco tiene un costo de rendimiento significativo. El costo exacto depende del tipo y la velocidad del almacenamiento subyacente.

Importante

La persistencia está habilitada en la implementación y no se puede desactivar después. Algunas opciones relacionadas se pueden cambiar más adelante; consulte Opciones de persistencia en tiempo de ejecución.

Configuración de volumen persistente

El agente MQTT usa un volumen persistente (PV) para almacenar datos en el disco. Dos opciones de configuración controlan cómo se aprovisiona este volumen:

  • maxSize (obligatorio): establece el tamaño máximo del volumen persistente para almacenar datos de agente. Este campo siempre es obligatorio, incluso si proporciona una reclamación de volumen personalizada. El valor debe ser de al menos 100 MB.

    Ejemplo:10Gi

  • persistentVolumeClaimSpec (opcional) : define una plantilla PersistentVolumeClaim (PVC) personalizada que controla cómo se aprovisiona el volumen persistente. Si no configura esta opción, el broker crea un PVC predeterminado utilizando el valor maxSize y la clase de almacenamiento predeterminada del clúster.

    Para obtener el mejor rendimiento, use una clase de almacenamiento respaldada por un aprovisionamiento de rutas de acceso local. La clase de almacenamiento predeterminada a menudo no es , lo que puede degradar el rendimiento.

Importante

Cuando se especifica persistentVolumeClaimSpec, el modo de acceso debe establecerse en ReadWriteOncePod.

Configuración de la persistencia

Configura la persistencia en el despliegue usando el az iot ops create comando. Como mínimo, establezca el tamaño del volumen persistente:

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

Para personalizar la clase de almacenamiento o el modo persistente, añada los indicadores --persist-pvc-sc y --persist-mode:

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

Note

También puedes configurar estos ajustes de persistencia durante los pasos de despliegue en el portal de Azure.

Para el conjunto completo de opciones, pasa un archivo de configuración usando --broker-config-file. Para obtener más información, consulte la compatibilidad con CLI de Azure para la configuración avanzada del MQTT broker y la referencia de la API de persistencia.

En el ejemplo siguiente se establece un tamaño máximo de 10 GiB y una clase de almacenamiento personalizada:

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

Encryption

De forma predeterminada, el agente MQTT cifra todos los datos de persistencia en el disco mediante el cifrado AES-256-GCM. El cifrado protege el estado del bróker y los datos de sesión si un atacante consigue acceso al volumen subyacente.

El cifrado está activado de forma predeterminada. Puedes desactivarlo, pero el cifrado solo protege los datos en reposo: los datos en memoria no están cifrados. El coste de rendimiento es mínimo, pero aún no se admite la rotación de claves.

Note

El cifrado está habilitado por defecto al desplegar mediante el portal de Azure. Puedes desactivar el cifrado en el archivo de configuración del broker si despliegas usando CLI de Azure.

Para desactivar el cifrado, añade el siguiente código al archivo de configuración de tu broker y luego pásalo a IoT Ops Create con la --broker-config-file bandera:

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

Opciones de persistencia en tiempo de ejecución

Algunas opciones de persistencia (mensajes retenidos, colas de suscriptores y almacén de estado) se pueden configurar después de la implementación. Para conocer más detalles sobre esas opciones, consulte Configurar la persistencia del broker MQTT.

Pasos siguientes