Sdílet prostřednictvím


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:

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-pathje . 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.