Planeamento de implantação - Persistência

A persistência de dados grava em disco os dados críticos do broker MQTT para que sobrevivam a reinícios do cluster. Decida antes da implementação se precisa de persistência de dados para o broker MQTT.

A persistência complementa o sistema de replicação do corretor. A replicação mantém os dados disponíveis nos vários nós, mas um encerramento de todo o cluster ainda pode causar perda de dados — a persistência evita isso. A persistência é diferente do buffer de mensagens apoiado em disco, que usa disco como extensão da memória e não oferece garantias de durabilidade.

Gravar dados em disco tem um custo de desempenho significativo. O custo exato depende do tipo e da velocidade do armazenamento subjacente.

Importante

A persistência está ativada na implementação e não pode ser desligada depois. Algumas opções relacionadas podem ser alteradas mais tarde — veja Opções de persistência em tempo de execução.

Definições persistentes de volume

O broker MQTT usa um volume persistente (PV) para armazenar dados no disco. Duas configurações controlam como esse volume é provisionado:

  • maxSize (obrigatório): Define o tamanho máximo do volume persistente para armazenar dados do broker. Este campo é sempre obrigatório, mesmo que você forneça uma declaração de volume personalizada. O valor deve ser pelo menos 100 MB.

    Exemplo:10Gi

  • persistentVolumeClaimSpec (opcional): Define um modelo personalizado de PersistentVolumeClaim (PVC) que controla como o volume persistente é provisionado. Se não definires esta opção, o broker cria um PVC predefinido utilizando o valor maxSize e a classe de armazenamento predefinida do cluster.

    Para melhor desempenho, use uma classe de armazenamento suportada por um fornecedor de caminhos local. A classe de armazenamento padrão muitas vezes não é, o que pode degradar o desempenho.

Importante

Quando você especificar persistentVolumeClaimSpec, o modo de acesso deve ser definido como ReadWriteOncePod.

Configurar persistência

Configure a persistência na implementação usando o az iot ops create comando. No mínimo, defina o tamanho persistente do volume:

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

Para personalizar a classe de armazenamento ou o modo de persistência, adicione as opções --persist-pvc-sc e --persist-mode:

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

Note

Também pode configurar estas definições de persistência durante as etapas de implementação no portal Azure.

Para o conjunto completo de opções, passe um ficheiro de configuração usando --broker-config-file. Para mais informações, consulte o suporte do CLI do Azure para a configuração avançada de brokers MQTT e a referência da API de Persistência.

O exemplo seguinte define um tamanho máximo de 10 GiB e uma classe de armazenamento personalizada:

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

Encryption

Por defeito, o corretor MQTT encripta todos os dados de persistência no disco usando encriptação AES-256-GCM. A encriptação protege o estado do corretor e os dados da sessão se um atacante conseguir aceder ao volume subjacente.

A encriptação está ativada por defeito. Podes desativá-lo, mas a encriptação só protege os dados em repouso – os dados na memória não estão encriptados. O custo de desempenho é mínimo, mas a rotação de teclas ainda não é suportada.

Note

A encriptação está ativada por defeito ao implementar através do portal Azure. Podes desativar a encriptação no ficheiro de configuração do broker se implementares usando CLI do Azure.

Para desativar a encriptação, adicione o seguinte código ao ficheiro de configuração do seu broker e, em seguida, utilize-o com az iot ops create com a opção --broker-config-file:

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

Opções de persistência em tempo de execução

Algumas opções de persistência — mensagens retidas, filas de assinantes e armazenamento de estado — podem ser configuradas após a implementação. Para mais detalhes sobre essas opções, consulte Configurar persistência do corretor MQTT.

Passos seguintes