Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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:
10GipersistentVolumeClaimSpec(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 valormaxSizee 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.