Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Funkcja trwałości danych została zaprojektowana jako uzupełniający mechanizm systemu replikacji. Podczas gdy broker replikuje dane między wieloma węzłami, zamknięcie całego klastra nadal może spowodować utratę danych.
Aby ograniczyć to ryzyko, broker MQTT obsługuje magazyn trwały, który umożliwia zapisywanie krytycznych danych na dysku i zachowywanie ich w przypadku ponownych uruchomień. Ta funkcja trwałości danych różni się od buforu komunikatów opartego na dysku, który używa dysku jako rozszerzenia pamięci, ale jest efemeryczny i nie zapewnia gwarancji trwałości.
Przechowywanie danych na dysku powoduje obniżenie wydajności. Wpływ zależy od typu i szybkości bazowego nośnika magazynu.
Trwałość danych można skonfigurować podczas początkowego wdrażania przy użyciu witryny Azure Portal lub interfejsu wiersza polecenia platformy Azure. Po wdrożeniu można również zmienić niektóre opcje trwałości.
Metody konfiguracji
Skonfiguruj trwałość danych dla brokera MQTT przy użyciu jednej z następujących metod:
- Witryna Azure Portal: skonfiguruj ustawienia trwałości za pomocą graficznego interfejsu użytkownika podczas wdrażania operacji IoT.
-
Interfejs wiersza polecenia platformy Azure: użyj pliku konfiguracji JSON z
--broker-config-fileflagą podczas wdrażania operacji IoT przy użyciuaz iot ops createpolecenia .
Aby uzyskać pełną listę dostępnych ustawień, zobacz dokumentację interfejsu API operacji usługi Azure IoT.
Opcje konfiguracji czasu wdrożenia
Te opcje należy ustawić podczas wdrażania i nie można ich później zmienić.
Ważne
Trwałość jest ustawiana podczas wdrażania i nie można jej wyłączyć później. Po wdrożeniu można zmienić niektóre opcje związane z trwałością.
Rozmiar woluminu i woluminu
Broker MQTT używa woluminu trwałego (PV) do przechowywania danych na dysku. Dwa ustawienia kontrolują sposób aprowizowania tego woluminu:
maxSize(wymagane): ustawia maksymalny rozmiar woluminu trwałego do przechowywania danych brokera. To pole jest zawsze wymagane, nawet jeśli podasz niestandardowe oświadczenie woluminu. Wartość musi być większa niż 100 MB.Przykład:
10GiBpersistentVolumeClaimSpec(opcjonalnie): Umożliwia zdefiniowanie niestandardowego szablonu PersistentVolumeClaim (PVC) w celu kontrolowania sposobu aprowizowania woluminu trwałego. Jeśli nie ustawisz tej opcji, broker tworzy domyślny element PVC przy użyciu określonejmaxSizei domyślnej klasy magazynu, co może spowodować nieoptymalną wydajność, jeśli domyślna klasa nie jest wspierana przez lokalnego aprowizatora ścieżek.
Ważne
Po określeniu persistentVolumeClaimSpecparametru tryb dostępu musi być ustawiony na ReadWriteOncePod.
Aby skonfigurować ustawienia woluminu w witrynie Azure Portal:
Podczas wdrażania operacji IoT przejdź do sekcji Konfiguracja brokera MQTT .
W ustawieniach trwałości danych :
- Ustaw maksymalny rozmiar dla woluminu trwałego (wymagane).
- Opcjonalnie skonfiguruj ustawienia specyfikacji oświadczeń trwałych dla niestandardowych wymagań dotyczących klas magazynu.
Szyfrowanie
Aby chronić dane, broker MQTT szyfruje domyślnie wszystkie dane trwałości na dysku przy użyciu silnego szyfrowania AES-256-GCM. Gwarantuje to, że nawet jeśli osoba atakująca uzyska dostęp do bazowego woluminu, poufny stan brokera lub dane sesji pozostają chronione.
Szyfrowanie jest opcjonalne i jest domyślnie włączone. W razie potrzeby możesz wyłączyć szyfrowanie. Szyfrowanie chroni tylko dane magazynowane; dane w pamięci nie są szyfrowane. Użycie szyfrowania ma minimalny koszt wydajności, ale rotacja kluczy nie jest jeszcze obsługiwana.
Szyfrowanie jest domyślnie włączone podczas wdrażania przy użyciu witryny Azure Portal. Szyfrowanie można wyłączyć w pliku konfiguracji brokera w przypadku wdrażania przy użyciu interfejsu wiersza polecenia platformy Azure.
Opcje konfiguracji środowiska uruchomieniowego
Te opcje można zaktualizować po wdrożeniu brokera MQTT operacji usługi Azure IoT.
Zachowana trwałość komunikatów
Zachowane komunikaty to komunikaty MQTT, które broker przechowuje i dostarcza do nowych subskrybentów podczas nawiązywania połączenia z tematem. Te komunikaty pomagają zapewnić, że subskrybenci otrzymają najnowsze dane, nawet jeśli nie nawiązali połączenia, gdy wiadomość została pierwotnie opublikowana. Jest to szczególnie przydatne w przypadku aktualizacji stanu, danych konfiguracji lub ostatnich znanych wartości, których nowi subskrybenci potrzebują natychmiast po nawiązaniu połączenia.
Utrwalanie zachowanych komunikatów na dysku zapewnia, że te ważne komunikaty przetrwają ponowne uruchomienia brokera i nie zostaną utracone podczas konserwacji ani nieoczekiwanych wyłączeń. Bez trwałości przechowywane komunikaty istnieją tylko w pamięci i są tracone po ponownym uruchomieniu brokera. Może to pozostawić nowych subskrybentów bez krytycznych danych początkowych.
To ustawienie określa, które komunikaty są zachowywane na dysku.
mode(wymagane w przypadkuretainustawienia): Opcje toNone,AlllubCustom.-
None: nie są utrwalane żadne zachowane komunikaty. -
All: Wszystkie zachowane komunikaty są utrwalane. -
Custom: Utrwalone są tylko tematy wymienione w temacieretainSettings.topics.
-
W przypadku wybrania opcji
Custom:retainSettings.topics(opcjonalnie): Lista wzorców tematów do utrwalania. Symbole wieloznaczne#i+są obsługiwane.retainSettings.dynamic.mode(opcjonalnie, wartość domyślna:Enabled): Umożliwia klientom MQTT żądanie trwałości dysku dla zachowanych komunikatów przy użyciu właściwości użytkownika MQTT v5.
Aby skonfigurować trwałość zachowanych komunikatów w witrynie Azure Portal:
Przejdź do wystąpienia operacji IoT.
Przejdź do pozycjiTrwałość danych brokera >MQTT.
W sekcji Zachowane komunikaty :
- Wybierz tryb: Brak, Wszystkie lub Niestandardowe.
- W przypadku wybrania opcji Niestandardowe określ wzorce tematów i ustawienia trybu dynamicznego.
Trwałość kolejki subskrybenta
Kolejki subskrybentów przechowują komunikaty oczekujące na dostarczenie do klientów MQTT z subskrypcjami jakości usług (QoS) 1. Gdy klient subskrybuje usługę QoS 1, broker gwarantuje dostarczanie komunikatów przez kolejkowanie komunikatów, dopóki klient nie potwierdzi otrzymania. Te kolejki są szczególnie ważne dla klientów, którzy mogą być tymczasowo odłączone lub przetwarzać komunikaty powoli.
Utrwalanie kolejek subskrybentów na dysku gwarantuje, że komunikaty oczekujące na dostarczenie nie zostaną utracone podczas ponownego uruchamiania brokera. Ta funkcja ma kluczowe znaczenie dla scenariuszy IoT, w których urządzenia mogą mieć sporadyczne połączenia, powolne przetwarzanie lub trwałe sesje, które muszą zachować gwarancje dostarczania komunikatów w przypadku ponownego uruchomienia brokera. Bez trwałości komunikaty w kolejce są tracone, co może spowodować utratę danych dla ważnej komunikacji urządzenia.
Aby uzyskać więcej informacji na temat kolejek subskrybentów i dostarczania komunikatów, zobacz Konfigurowanie opcji klienta MQTT brokera.
To ustawienie określa, które kolejki komunikatów subskrybenta są utrwalane na dysku. Metadane stanu sesji są zawsze utrwalane niezależnie od tych ustawień.
mode(wymagane w przypadkusubscriberQueueustawienia): Opcje toNone,AlllubCustom.W przypadku wybrania opcji
Custom:subscriberQueueSettings.subscriberClientIds(opcjonalnie): Lista identyfikatorów klientów subskrybentów do utrwalania. Obsługiwane są symbole wieloznaczne*.subscriberQueueSettings.dynamic.mode(opcjonalnie, wartość domyślna:Enabled): umożliwia klientom MQTT dynamiczne żądanie trwałości.
Aby skonfigurować trwałość kolejki subskrybentów w witrynie Azure Portal:
Przejdź do wystąpienia operacji IoT.
Przejdź do pozycjiTrwałość danych brokera >MQTT.
W sekcji Kolejka subskrybentów :
- Wybierz tryb: Brak, Wszystkie lub Niestandardowe.
- W przypadku wybrania opcji Niestandardowy określ identyfikatory klientów subskrybentów i ustawienia trybu dynamicznego.
Ważne
Klient, który nie został wcześniej utrwalone, może zostać utrwalone w dowolnym momencie. Jednak tylko opublikowane komunikaty odebrane po włączeniu trwałości dla tego określonego klienta są przechowywane na dysku. Jeśli trwałość zostanie później wyłączona dla klienta, ta zmiana nie zacznie obowiązywać, dopóki klient nie połączy się ponownie z czystą flagą MQTT = true.
Wygaśnięcie sesji i trwałość kolejki subskrybentów
Aby utrwalyć kolejki komunikatów subskrybenta na dysku, interwał wygaśnięcia sesji i konfiguracja trwałości brokera muszą być wyrównane. Specyficznie:
Klienci MQTTv5: może określić interwał wygaśnięcia sesji przy użyciu właściwości Interwał wygaśnięcia sesji pakietów CONNECT lub DISCONNECT. Mogą również żądać zachowania trwałości dysku z określoną właściwością użytkownika.
Klienci MQTTv3: jeśli flaga Clean Session ma wartość true, interwał wygaśnięcia sesji jest ustawiony na 0. W przeciwnym razie jest używana wartość
maxSessionExpirySecondskonfiguracji w brokerze.
Broker obsługuje trwałość kolejki subskrybentów inaczej w zależności od trybu konfiguracji i interwału wygaśnięcia sesji:
Gdy tryb jest ustawiony na None:
- Wszystkie kolejki subskrybentów pozostają tylko w pamięci, niezależnie od interwału wygaśnięcia sesji
Gdy tryb jest ustawiony na All:
- Jeśli interwał wygaśnięcia sesji = 0: kolejki pozostają w pamięci
- Jeśli interwał > wygaśnięcia sesji 0: kolejki są utrwalane na dysku przez czas trwania interwału
Gdy tryb jest ustawiony na Custom:
- Jeśli interwał wygaśnięcia sesji = 0: kolejki pozostają w pamięci
- Jeśli interwał > wygaśnięcia sesji 0: kolejki są utrwalane na dysku przez czas trwania interwału tylko wtedy, gdy:
- Identyfikator klienta jest zgodny ze skonfigurowaną listą w elemecie
subscriberQueueSettings.subscriberClientIdsLUB - Tryb dynamiczny jest włączony, a klient MQTTv5 dostarczył pasującej właściwości użytkownika w pakiecie CONNECT
- Identyfikator klienta jest zgodny ze skonfigurowaną listą w elemecie
Aby upewnić się, że kolejki subskrybentów są utrwalane na dysku, należy pamiętać o następujących kluczowych kwestiach:
- Kolejki subskrybentów są utrwalane tylko wtedy, gdy interwał wygaśnięcia sesji jest większy niż 0
- W
Customprzypadku trybu identyfikator klienta musi być jawnie wymieniony lub musi być włączona dynamiczna trwałość z prawidłową właściwością użytkownika - Klienci MQTTv5 mogą używać dynamicznej trwałości, uwzględniając skonfigurowaną właściwość użytkownika (domyślnie:
aio-persistence=true) w pakiecie CONNECT
Trwałość magazynu stanów
Magazyn stanów jest wewnętrznym składnikiem brokera MQTT, który utrzymuje różne typy danych operacyjnych i metadanych poza standardowymi komunikatami MQTT. Obejmuje to stan konfiguracji brokera, informacje o sesji, szczegóły subskrypcji i inne wewnętrzne struktury danych używane przez brokera do wydajnego zarządzania połączeniami klienta i routingiem komunikatów.
Utrwalanie danych magazynu stanu na dysku gwarantuje, że broker może zachować ciągłość działania po ponownym uruchomieniu. Jest to szczególnie ważne w przypadku złożonych wdrożeń IoT, w których utrata stanu wewnętrznego może spowodować problemy z połączeniem, straty subskrypcji lub spadek wydajności, ponieważ broker ponownie kompiluje wewnętrzne struktury danych od podstaw.
Trwałość magazynu stanów jest szczególnie cenna w środowiskach produkcyjnych, w których minimalizacja czasu odzyskiwania i utrzymanie spójności usługi jest krytyczna. Bez trwałości broker musi ponownie skompilować cały stan wewnętrzny po ponownym uruchomieniu, co może spowodować tymczasowe przerwy w działaniu usługi i wpływ na wydajność.
Aby uzyskać więcej informacji na temat magazynu stanów, zobacz Learn about the MQTT broker state store protocol (Dowiedz się więcej o protokole magazynu stanów brokera MQTT).
To ustawienie określa, które klucze w wewnętrznym magazynie stanów są utrwalane.
mode(wymagane, jeśli stanStore jest ustawiony): Opcje toNone,AlllubCustom.W przypadku wybrania opcji
Custom:stateStoreSettings.stateStoreResources(opcjonalnie): Lista typów kluczy i kluczy do utrwalania.keyType: Wzorzec, ciąg lub plik binarnykeys: Lista kluczy/wzorców do utrwalania.
stateStoreSettings.dynamic.mode(opcjonalnie, wartość domyślna:Enabled): umożliwia klientom MQTT dynamiczne żądanie trwałości.
Aby skonfigurować trwałość magazynu stanów w witrynie Azure Portal:
- Przejdź do wystąpienia operacji IoT.
- Przejdź do pozycjiTrwałość danych brokera >MQTT.
- W sekcji Magazyn stanów :
- Wybierz tryb: Brak, Wszystkie lub Niestandardowe.
- W przypadku wybrania opcji Niestandardowy określ zasoby magazynu stanów z typami kluczy, kluczami i ustawieniami trybu dynamicznego.
Żądanie trwałości od klienta przy użyciu dynamicznego ustawienia trwałości
Klienci mogą żądać trwałości danych, wysyłając właściwość użytkownika MQTT v5 w swoich komunikatach. Dzięki temu klienci dynamicznie włączają trwałość komunikatów, kolejek subskrybentów lub wpisów magazynu stanów bez zmiany konfiguracji brokera.
Gdy klient żąda trwałości, broker sprawdza bieżące ustawienia trwałości i stosuje je. Jeśli żądany tryb trwałości jest włączony i ustawiony tak, aby zezwalał na żądania dynamiczne, broker utrwala dane klienta zgodnie z konfiguracją.
Ustawienie trwałości dynamicznej dla każdego typu danych (zachowanych komunikatów, kolejek subskrybentów i wpisów magazynu stanów) można włączyć lub wyłączyć, ustawiając wartość dynamic.mode w Enabled odpowiednich sekcjach konfiguracji. Klucz właściwości użytkownika MQTT i wartość używana dla dynamicznych żądań trwałości są konfigurowane oddzielnie na poziomie brokera.
Aby skonfigurować ustawienia dynamicznej trwałości w witrynie Azure Portal:
Przejdź do wystąpienia operacji IoT.
Przejdź do pozycjiTrwałość danych brokera >MQTT.
Skonfiguruj globalne ustawienia właściwości użytkownika MQTT:
- Ustaw klucz właściwości Użytkownik (wartość domyślna:
aio-persistence) - Ustaw wartość właściwości User (wartość domyślna:
true)
- Ustaw klucz właściwości Użytkownik (wartość domyślna:
W każdej sekcji trwałości (zachowane komunikaty, kolejka subskrybenta, magazyn stanów):
- Ustaw opcję Trwałość dynamiczna , aby umożliwić klientom żądanie trwałości dla tego typu danych.
Treści powiązane
Aby dowiedzieć się więcej o obsłudze interfejsu wiersza polecenia platformy Azure na potrzeby zaawansowanej konfiguracji brokera MQTT, zobacz Obsługa interfejsu wiersza polecenia platformy Azure dla zaawansowanej konfiguracji brokera MQTT.