Konfigurace chování vyrovnávací paměti zpráv založeného na disku
Důležité
Toto nastavení vyžaduje úpravu prostředku zprostředkovatele. Konfiguruje se pouze při počátečním nasazení pomocí Azure CLI nebo webu Azure Portal. Pokud jsou potřeba změny konfigurace zprostředkovatele, vyžaduje se nové nasazení. Další informace najdete v tématu Přizpůsobení výchozího zprostředkovatele.
Funkce vyrovnávací paměti zpráv založené na disku slouží k efektivní správě front zpráv v rámci distribuovaného zprostředkovatele MQTT. Nabízí například tyto výhody:
- Efektivní správa front: Ve zprostředkovateli MQTT je každý odběratel přidružený ke frontě zpráv. Rychlost zpracování zpráv odběratele přímo ovlivňuje velikost fronty. Pokud odběratel zpracovává zprávy pomalu nebo pokud se odpojí, ale požádá o trvalou relaci MQTT, může fronta zvětšit než dostupná paměť.
- Zachování dat pro trvalé relace: Funkce vyrovnávací paměti zpráv na disku zajišťuje, že když fronta překročí dostupnou paměť, bez problémů se uloží do vyrovnávací paměti na disk. Tato funkce zabraňuje ztrátě dat a podporuje trvalé relace MQTT, což umožňuje odběratelům pokračovat v relacích ve frontách zpráv beze změny při opětovném připojení. Disk se používá jako dočasné úložiště a slouží jako přelití z paměti. Data zapsaná na disk nejsou odolná a při ukončení podu se ztratí. Pokud alespoň jeden pod v každém back-endovém řetězci zůstane funkční, zprostředkovatel jako celek nepřijde o žádná data.
- Řešení problémů s připojením: Cloudové konektory se považují za předplatitele s trvalými relacemi, které můžou čelit problémům s připojením, když nemůžou komunikovat s externími systémy, jako je zprostředkovatel Azure Event Grid MQTT kvůli odpojení sítě. V takových scénářích se zprávy (PUBLISHes) hromadí. Zprostředkovatel MQTT inteligentně tyto zprávy do vyrovnávací paměti nebo disku do doby, než se obnoví připojení, což zajišťuje integritu zpráv.
Ve výchozím nastavení je funkce vyrovnávací paměti zpráv na disku zakázaná. V tomto případě zprávy zůstanou v paměti a tlak na záda se použije u klientů, protože fond pro čtení nebo fond pomocného fondu dosáhne limitu definovaného limitem fronty odběratele.
Konfigurace vyrovnávací paměti zpráv založeného na disku je nezbytná pro udržování robustního a spolehlivého systému řízení front zpráv, zejména ve scénářích, kdy je rychlost zpracování zpráv a připojení kritické.
Poznámka:
Zprostředkovatel MQTT zapisuje data na disk přesně tak, jak je přijímá od klientů, aniž by se přidalo šifrování. Zabezpečení disku je nezbytné k ochraně dat uložených zprostředkovatelem.
Možnosti konfigurace
Pokud chcete nakonfigurovat vyrovnávací paměť zpráv na disku, upravte diskBackedMessageBuffer
oddíl v prostředku zprostředkovatele. V současné době se tato konfigurace podporuje pouze pomocí příznaku --broker-config-file
při nasazování operací Azure IoT pomocí az iot ops create
příkazu.
Začněte tím, že připravíte konfigurační soubor zprostředkovatele pomocí odkazu na rozhraní API DiskBackedMessageBuffer .
Nejjednodušší konfigurace například zahrnuje pouze zadání maximální velikosti. V tomto případě emptyDir
je svazek připojený. Hodnota maxSize
se používá jako limit velikosti svazku emptyDir
. Tato možnost je ale nejméně upřednostňovanou možností kvůli omezením svazku emptyDir
.
{
"diskBackedMessageBuffer": {
"maxSize": "<SIZE>"
}
}
Pokud chcete získat lepší konfiguraci vyrovnávací paměti zpráv na disku, zadejte dočasný svazek nebo trvalou deklaraci identity svazku pro připojení vyhrazeného svazku úložiště pro vyrovnávací paměť zpráv. Příklad:
{
"diskBackedMessageBuffer": {
"maxSize": "<SIZE>",
"ephemeralVolumeClaimSpec": {
"storageClassName": "<NAME>",
"accessModes": [
"<MODE>"
]
}
}
}
{
"persistentVolumeClaimSpec": {
"maxSize": "<SIZE>",
"ephemeralVolumeClaimSpec": {
"storageClassName": "<NAME>",
"accessModes": [
"<MODE>"
]
}
}
}
Přizpůsobte možnosti vyrovnávací paměti zpráv zprostředkovatele úpravou následujících nastavení:
- Konfigurace svazku: Zadejte šablonu deklarace identity svazku pro připojení vyhrazeného svazku úložiště pro vyrovnávací paměť zpráv.
-
Vyberte třídu úložiště: Definujte požadovanou třídu úložiště pomocí
storageClassName
vlastnosti. - Definovat režimy přístupu: Určete režimy přístupu, které potřebujete pro svazek. Další informace naleznete v tématu Režimy trvalého přístupu ke svazku.
Následující části vám pomůžou porozumět různým režimům svazku:
- Upřednostňovanou možností je dočasný svazek .
- Další upřednostňovanou možností je trvalý svazek .
- svazek emptyDir je nejméně upřednostňovanou možností.
Trvalé i dočasné svazky jsou obecně poskytovány stejnými třídami úložiště. Pokud jsou k dispozici obě možnosti, zvolte dočasný. Dočasné svazky vyžadují Kubernetes 1.23 nebo vyšší.
Tip
Když zadáte šablonu dočasné deklarace svazku (EVC) nebo trvalé deklarace identity svazku (PVC), můžete použít třídu úložiště podle svého výběru, což zvyšuje flexibilitu pro některé scénáře nasazení. Například trvalé svazky zřízené pomocí šablony PVC se zobrazí v příkazech, jako je kubectl get pv
, což je užitečné pro kontrolu stavu clusteru.
Pokud uzly Kubernetes nemají dostatek místa na místním disku pro vyrovnávací paměť zpráv, použijte třídu úložiště, která poskytuje síťové úložiště, jako je Azure Blob Storage. Je lepší použít místní disk s menší maxSize
hodnotou, protože vyrovnávací paměť zpráv přináší výhody rychlého přístupu a nevyžaduje odolnost.
Nasazení operací IoT s vyrovnávací pamětí zpráv na disku
Pokud chcete použít vyrovnávací paměť zpráv na disku, nasaďte operace IoT pomocí az iot ops create
příkazu s příznakem --broker-config-file
. Podívejte se na následující příkaz. (Pro stručnost nejsou vynechány další parametry.)
az iot ops create ... --broker-config-file <FILE>.json
Toto nastavení nelze po nasazení změnit. Pokud chcete změnit konfiguraci vyrovnávací paměti zpráv na disku, znovu nasaďte instanci ioT Operations.
Dočasný svazek
Dočasný svazek je upřednostňovanou možností pro vyrovnávací paměť zpráv.
V případě dočasného svazku postupujte podle pokynů v části Důležité informace o poskytovatelích úložiště.
Hodnota ephemeralVolumeClaimSpec
vlastnosti se používá jako ephemeral.volumeClaimTemplate.spec
vlastnost objemu ve StatefulSet
specifikacích back-endových řetězců.
Pokud chcete například použít dočasný svazek s kapacitou 1 gigabajt, zadejte v prostředku zprostředkovatele následující parametry:
{
"diskBackedMessageBuffer": {
"maxSize": "1G",
"ephemeralVolumeClaimSpec": {
"storageClassName": "foo",
"accessModes": [
"ReadWriteOnce"
]
}
}
}
Trvalý svazek
Trvalý svazek je další upřednostňovanou možností pro vyrovnávací paměť zpráv po dočasném svazku.
U trvalého svazku postupujte podle pokynů v části Důležité informace o poskytovatelích úložiště.
Hodnota persistentVolumeClaimSpec
vlastnosti se používá jako volumeClaimTemplates.spec
vlastnost StatefulSet
specifikací back-endových řetězců.
Pokud chcete například použít trvalý svazek s kapacitou 1 gigabajt, zadejte v prostředku zprostředkovatele následující parametry:
{
"diskBackedMessageBuffer": {
"maxSize": "1G",
"persistentVolumeClaimSpec": {
"storageClassName": "foo",
"accessModes": [
"ReadWriteOnce"
]
}
}
}
emptyDir volume
Prázdný svazekDir je nejméně upřednostňovanou možností po trvalém svazku.
emptyDir
Svazek používejte jenom v případech, kdy používáte cluster s kvótami systému souborů. Další informace najdete na kartě Kvóta projektu systému souborů. Pokud tato funkce není povolená, cluster pravidelně kontroluje, že nevynucuje žádné omezení a umožňuje hostitelskému uzlu vyplnit místo na disku a označit celý hostitelský uzel jako nezdravý.
Pokud chcete například použít emptyDir
svazek s kapacitou 1 gigabajt, zadejte v prostředku zprostředkovatele následující parametry:
{
"diskBackedMessageBuffer": {
"maxSize": "1G"
}
}
Důležité informace o poskytovatelích úložiště
Zvažte chování zvoleného poskytovatele úložiště, například při použití poskytovatelů, jako rancher.io/local-path
je . Pokud poskytovatel nepodporuje limity, vyplňování svazku spotřebovává místo na disku uzlu. Toto chování může vést k tomu, že Kubernetes označí uzel a všechny přidružené pody jako poškozené. Je důležité pochopit, jak se váš poskytovatel úložiště chová v takových scénářích.
Zakázáno
Pokud nechcete používat vyrovnávací paměť zpráv na disku, nezahrnujte do diskBackedMessageBufferSettings
prostředku zprostředkovatele vlastnost. Toto chování je také výchozí.
Uchování
Je důležité si uvědomit, že funkce vyrovnávací paměti zpráv na disku není synonymem trvalosti. V tomto kontextu trvalost odkazuje na data, která přežijí napříč restartováními podů. Tato funkce poskytuje dočasné místo pro ukládání dat na disk, což brání přetečení paměti a ztrátě dat během restartování podu.