Planowanie wdrożenia — trwałość

Mechanizm trwałości danych zapisuje krytyczne dane brokera MQTT na dysk, dzięki czemu dane te przetrwają ponowne uruchomienia klastra. Zdecyduj przed wdrożeniem, czy potrzebujesz trwałości danych dla brokera MQTT.

Trwałość uzupełnia system replikacji brokera. Replikacja zapewnia dostępność danych między węzłami, ale zamknięcie całego klastra może nadal powodować utratę danych — trwałość zapobiega temu. Trwałość różni się od buforu komunikatów opartego na dysku, który używa dysku jako rozszerzenia pamięci i nie zapewnia gwarancji trwałości.

Zapisywanie danych na dysku ma znaczny koszt wydajności. Dokładny koszt zależy od typu i szybkości magazynu bazowego.

Important

Trwałe przechowywanie danych jest włączane podczas wdrażania i nie można go wyłączyć po wdrożeniu. Niektóre powiązane opcje można zmienić później — zobacz Opcje trwałości środowiska uruchomieniowego.

Ustawienia woluminu trwałego

Broker MQTT używa woluminu trwałego (PV) do przechowywania danych na dysku. Dwa ustawienia określają sposób udostępniania tego woluminu:

  • maxSize (wymagane): ustawia maksymalny rozmiar woluminu trwałego do przechowywania danych brokera. To pole jest zawsze wymagane, nawet jeśli podasz niestandardowe żądanie woluminu. Wartość musi wynosić co najmniej 100 MB.

    Przykład:10Gi

  • persistentVolumeClaimSpec (opcjonalnie): Definiuje niestandardowy szablon zasobu PersistentVolumeClaim (PVC), który określa sposób udostępniania woluminu trwałego. Jeśli ta opcja nie zostanie ustawiona, broker utworzy domyślny PVC, używając wartości maxSize i domyślnej klasy pamięci masowej klastra.

    Aby uzyskać najlepszą wydajność, użyj klasy pamięci masowej opartej na provisionerze Local Path. Domyślna klasa pamięci masowej często taka nie jest, co może obniżyć wydajność.

Important

Po określeniu persistentVolumeClaimSpecparametru tryb dostępu musi być ustawiony na ReadWriteOncePod.

Konfigurowanie trwałości

Konfiguruj trwałość podczas wdrożenia, używając tego az iot ops create polecenia. Ustaw co najmniej trwały rozmiar woluminu:

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

Aby dostosować klasę magazynu lub tryb utrwalania, dodaj flagi --persist-pvc-sc i --persist-mode :

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

Note

Możesz także skonfigurować te ustawienia trwałości podczas etapów wdrażania w portalu Azure.

Aby uzyskać pełny zestaw opcji, przekażmy plik konfiguracyjny za pomocą --broker-config-file. Aby uzyskać więcej informacji, zobacz obsługę zaawansowanej konfiguracji brokera MQTT w Azure CLI oraz dokumentację interfejsu API Persistence.

W poniższym przykładzie ustawiono maksymalny rozmiar 10 GiB i niestandardową klasę magazynu:

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

Encryption

Domyślnie broker MQTT szyfruje wszystkie dane trwałości na dysku przy użyciu szyfrowania AES-256-GCM. Szyfrowanie chroni dane stanu i sesji brokera, jeśli osoba atakująca uzyska dostęp do bazowego woluminu.

Szyfrowanie jest domyślnie włączone. Możesz je wyłączyć, ale szyfrowanie chroni tylko dane spoczynkowe – dane w pamięci nie są szyfrowane. Koszt wydajności jest minimalny, ale rotacja kluczy nie jest jeszcze obsługiwana.

Note

Szyfrowanie jest domyślnie włączone podczas wdrażania za pomocą portalu Azure. Możesz wyłączyć szyfrowanie w pliku konfiguracyjnym brokera, jeśli wdrażasz za pomocą Azure CLI.

Aby wyłączyć szyfrowanie, dodaj następujący kod do pliku konfiguracyjnego brokera, a następnie przekaż go do az iot ops create z flagą --broker-config-file :

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

Opcje trwałości środowiska uruchomieniowego

Niektóre opcje trwałości — komunikaty zachowane, kolejki subskrybentów i magazyn stanów — można skonfigurować po wdrożeniu. Aby uzyskać szczegółowe informacje na temat tych opcji, zobacz Konfigurowanie trwałości brokera MQTT.

Następne kroki