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 a dá se nakonfigurovat pouze v počáteční době 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 zprostředkovatele MQTT 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 odběratele zpracovává zprávy 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 s frontami 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í, ale 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ž kvůli odpojení sítě nemůžou komunikovat s externími systémy, jako je zprostředkovatel Event Grid MQTT. 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 vyrovnávací paměti nebo disku, dokud se neobnoví 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 jsou přijímány od klientů bez dalšího š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 tento příznak podporuje pouze při --broker-config-file
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 podle 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
. Toto je ale nejméně upřednostňovaná možnost, která dává omezení emptyDir
objemu.
{
"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 StorageClass pomocí
storageClassName
vlastnosti.Definovat režimy přístupu: Určete režimy přístupu, které potřebujete pro svazek. Další informace najdete v režimech trvalého přístupu ke svazkům.
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 ,
- Trvalý svazek je upřednostňovaný v dalším kroku a
emptyDir
nejméně upřednostňovaný svazek .
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
Zadáním šablony EVC (EVC) nebo trvalé deklarace identity svazku (PVC) můžete použít třídu úložiště podle vašeho výběru, což zvyšuje flexibilitu pro některé scénáře nasazení. Například trvalé svazky zřízené pomocí šablony PVC se zobrazují v příkazech, jako kubectl get pv
je například , což může být 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 jsou objekty blob Azure. Obecně je ale 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í Azure IoT s vyrovnávací pamětí zpráv na disku
Pokud chcete použít vyrovnávací paměť zpráv na disku, nasaďte operace Azure 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 se vynechaly 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 azure 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 svazku ve specifikacích StatefulSet 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 je použita jako volumeClaimTemplates.spec
vlastnost StatefulSet specifikace 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
hlasitost
Prázdný svazekDir je nejméně upřednostňovanou možností po trvalém svazku.
Při použití clusteru s kvótami systému souborů používejte pouze prázdný svazekDir . Další informace najdete v podrobnostech 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 prázdný svazekDir 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. To 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 je také výchozí chování.
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 ale poskytuje dočasné místo úložiště pro ukládání dat na disk, což brání přetečení paměti a ztrátě dat během restartování podu.