Sdílet prostřednictvím


Konfigurace základního nastavení zprostředkovatele MQTT

Důležité

Azure IoT Operations Preview – Služba Azure Arc je aktuálně ve verzi Preview. Tento software ve verzi Preview byste neměli používat v produkčních prostředích.

Až bude dostupná obecně dostupná verze, budete muset nasadit novou instalaci operací Azure IoT. Nebudete moct upgradovat instalaci verze Preview.

Právní podmínky, které platí pro funkce Azure, které jsou ve verzi beta, verzi Preview nebo které zatím nejsou veřejně dostupné, najdete v Dodatečných podmínkách použití pro Microsoft Azure verze Preview.

Prostředek Broker je hlavní prostředek, který definuje celkové nastavení pro Zprostředkovatele MQTT. Určuje také počet a typ podů, které spouští konfiguraci zprostředkovatele , jako jsou front-endy a back-endy. Prostředek zprostředkovatele můžete také použít ke konfiguraci profilu paměti. Mechanismy samoopravení jsou integrované do zprostředkovatele a často se můžou automaticky zotavit ze selhání komponent. Například uzel selže v clusteru Kubernetes nakonfigurovaného pro zajištění vysoké dostupnosti.

Zprostředkovatel MQTT můžete horizontálně škálovat přidáním dalších front-endových replik a back-endových řetězců. Front-endové repliky zodpovídají za přijímání připojení MQTT od klientů a jejich předávání do back-endových řetězců. Back-endové řetězce zodpovídají za ukládání a doručování zpráv klientům. Front-endové pody distribuují provoz zpráv mezi back-endové pody a faktor redundance back-endu určuje počet kopií dat, které zajistí odolnost proti selháním uzlů v clusteru.

Seznam dostupných nastavení najdete v referenčních informacích k rozhraní API zprostředkovatele .

Konfigurace nastavení škálování

Důležité

V tuto chvíli je možné prostředek zprostředkovatele nakonfigurovat pouze v počáteční době nasazení pomocí Azure CLI, portálu nebo akce GitHubu. Pokud jsou potřeba změny konfigurace zprostředkovatele, vyžaduje se nové nasazení.

Pokud chcete nakonfigurovat nastavení škálování MQTT zprostředkovatele, musíte zadat cardinality pole ve specifikaci vlastního prostředku zprostředkovatele . Další informace o nastavení režimu a kardinality pomocí Azure CLI najdete v tématu az iot ops init.

Toto cardinality pole je vnořené pole, které obsahuje tato dílčí pole:

  • frontend: Toto dílčí pole definuje nastavení pro front-endové pody, například:
    • replicas: Počet front-endových podů, které se mají nasadit. Toto dílčí pole je povinné, mode pokud je pole nastaveno na distributedhodnotu .
    • workers: Počet pracovních procesů, které se mají nasadit na front-end, musí být aktuálně nastaven na 1hodnotu . Toto dílčí pole je povinné, mode pokud je pole nastaveno na distributedhodnotu .
  • backendChain: Toto dílčí pole definuje nastavení back-endových řetězců, například:
    • redundancyFactor: Počet kopií dat v každém back-endovém řetězci. Toto dílčí pole je povinné, mode pokud je pole nastaveno na distributedhodnotu .
    • partitions: Počet oddílů, které se mají nasadit. Toto dílčí pole je povinné, mode pokud je pole nastaveno na distributedhodnotu .
    • workers: Počet pracovních procesů, které se mají nasadit na back-end, musí být aktuálně nastaven na 1hodnotu . Toto dílčí pole je povinné, mode pokud je pole nastaveno na distributedhodnotu .

Pokud cardinality pole vynecháte, kardinalita je určena operátorem zprostředkovatele MQTT, automaticky nasadí odpovídající počet podů na základě hardwaru clusteru.

Pokud chcete nakonfigurovat nastavení škálování MQTT zprostředkovatele, musíte zadat pole a cardinality pole ve specifikaci vlastního prostředku zprostředkovatele.mode Další informace o nastavení režimu a kardinality pomocí Azure CLI najdete v tématu az iot ops init.

Konfigurace profilu paměti

Důležité

V tuto chvíli je možné prostředek zprostředkovatele nakonfigurovat pouze v počáteční době nasazení pomocí Azure CLI, portálu nebo akce GitHubu. Pokud jsou potřeba změny konfigurace zprostředkovatele, vyžaduje se nové nasazení.

Chcete-li nakonfigurovat nastavení profilu paměti MQTT zprostředkovatele, zadejte memoryProfile pole ve specifikaci vlastního prostředku zprostředkovatele . Další informace o nastavení nastavení profilu paměti pomocí Azure CLI najdete v tématu az iot ops init.

memoryProfile: Toto dílčí pole definuje nastavení profilu paměti. Pro využití paměti můžete zvolit několik profilů:

Maličký

Při použití tohoto profilu:

  • Maximální využití paměti každé repliky front-endu je přibližně 99 MiB, ale skutečné maximální využití paměti může být vyšší.
  • Maximální využití paměti každé back-endové repliky je přibližně 102 MiB, ale skutečné maximální využití paměti může být vyšší.

Doporučení při použití tohoto profilu:

  • Použít by se měl jenom jeden front-end.
  • Klienti by neměli posílat velké pakety. Pakety byste měli posílat jenom menší než 4 MiB.

Nízká

Při použití tohoto profilu:

  • Maximální využití paměti každé front-endové repliky je přibližně 387 MiB, ale skutečné maximální využití paměti může být vyšší.
  • Maximální využití paměti každé back-endové repliky je přibližně 390 MiB vynásobené počtem pracovních procesů back-endu, ale skutečné maximální využití paměti může být vyšší.

Doporučení při použití tohoto profilu:

  • Je třeba použít pouze jeden nebo dva front-endy.
  • Klienti by neměli posílat velké pakety. Pakety menší než 10 MiB byste měli posílat pouze.

Střední

Střední je výchozí profil.

  • Maximální využití paměti každé front-endové repliky je přibližně 1,9 GiB, ale skutečné maximální využití paměti může být vyšší.
  • Maximální využití paměti každé repliky back-endu je přibližně 1,5 GiB vynásobené počtem back-endových pracovních procesů, ale skutečné maximální využití paměti může být vyšší.

Vysoká

  • Maximální využití paměti každé repliky front-endu je přibližně 4,9 GiB, ale skutečné maximální využití paměti může být vyšší.
  • Maximální využití paměti každé back-endové repliky je přibližně 5,8 GiB vynásobené počtem back-endových pracovních procesů, ale skutečné maximální využití paměti může být vyšší.

Výchozí zprostředkovatel

Azure IoT Operations Preview ve výchozím nastavení nasadí výchozí prostředek zprostředkovatele s názvem default. Nasadí se v azure-iot-operations oboru názvů s kardinalitou a nastavením profilu paměti nakonfigurovaným během počátečního nasazení pomocí webu Azure Portal nebo Azure CLI. Pokud chcete zobrazit nastavení, spusťte následující příkaz:

kubectl get broker default -n azure-iot-operations -o yaml

Změna výchozího zprostředkovatele opětovným nasazením

Během počátečního nasazení je možné konfigurovat pouze kardinalitu a profil paměti pomocí webu Azure Portal nebo Azure CLI. Další nastavení a lze je nakonfigurovat pouze úpravou souboru YAML a opětovným nasazením zprostředkovatele.

Pokud chcete odstranit výchozího zprostředkovatele, spusťte následující příkaz:

kubectl delete broker default -n azure-iot-operations

Pak vytvořte soubor YAML s požadovaným nastavením. Například následující soubor YAML nakonfiguruje zprostředkovatele s názvem default v oboru názvů azure-iot-operations s profilem paměti a distributed režimem medium se dvěma front-endovými replikami a dvěma back-endovými řetězy se dvěma oddíly a dvěma pracovními procesy. Šifrování interního provozu je také zakázané.

apiVersion: mqttbroker.iotoperations.azure.com/v1beta1
kind: Broker
metadata:
  name: default
  namespace: azure-iot-operations
spec:
  memoryProfile: medium
  cardinality:
    backendChain:
      partitions: 2
      redundancyFactor: 2
      workers: 2
    frontend:
      replicas: 2
      workers: 2
  encryptInternalTraffic: false

Potom spuštěním následujícího příkazu nasaďte zprostředkovatele:

kubectl apply -f <path-to-yaml-file>

Konfigurace upřesňujícího nastavení zprostředkovatele MQTT

Rozšířená nastavení zprostředkovatele zahrnují konfigurace klienta, šifrování interního provozu a obměny certifikátů. Další informace o upřesňujících nastaveních najdete v referenčních informacích k rozhraní API zprostředkovatele .

Tady je příklad zprostředkovatele s pokročilým nastavením:

apiVersion: mqttbroker.iotoperations.azure.com/v1beta1
kind: Broker
metadata:
  name: default
  namespace: azure-iot-operations
spec:
  advanced:
    clients:
        maxSessionExpirySeconds: 282277
        maxMessageExpirySeconds: 1622
        subscriberQueueLimit:
          length: 1000
          strategy: DropOldest
        maxReceiveMaximum: 15000
        maxKeepAliveSeconds: 300
    encryptInternalTraffic: Enabled
    internalCerts:
      duration: 240h
      renewBefore: 45m
      privateKey:
        algorithm: Rsa2048
        rotationPolicy: Always

Konfigurace nastavení diagnostiky zprostředkovatele MQTT

Nastavení diagnostiky umožňuje povolit metriky a trasování pro zprostředkovatele MQTT.

  • Metriky poskytují informace o využití prostředků a propustnosti zprostředkovatele MQTT.
  • Trasování poskytuje podrobné informace o požadavcích a odpovědích zpracovávaných zprostředkovatelem MQTT.

Pokud chcete přepsat výchozí nastavení diagnostiky pro zprostředkovatele MQTT, aktualizujte spec.diagnostics část prostředku zprostředkovatele . Upravte úroveň protokolu tak, aby kontrolovala množství a podrobnosti informací, které se protokolují. Úroveň protokolu lze nastavit pro různé komponenty zprostředkovatele MQTT. Výchozí úroveň protokolu je info.

Diagnostiku můžete nakonfigurovat pomocí definice vlastního prostředku zprostředkovatele (CRD). Další informace o nastavení diagnostiky najdete v referenčních informacích k rozhraní API zprostředkovatele .

Tady je příklad vlastního prostředku zprostředkovatele s povolenými metrikami a trasováním a zakázáním samoobslužné kontroly:

apiVersion: mqttbroker.iotoperations.azure.com/v1beta1
kind: Broker
metadata:
  name: broker
  namespace: azure-iot-operations
spec:
  diagnostics:
    logs:
      level: "debug"
      opentelemetryExportConfig:
        otlpGrpcEndpoint: "endpoint"
    metrics:
      opentelemetryExportConfig:
        otlpGrpcEndpoint: "endpoint"
        intervalSeconds: 60
    selfCheck:
      mode: Enabled
      intervalSeconds: 120
      timeoutSeconds: 60
    traces:
      cacheSizeMegabytes: 32
      mode: Enabled
      opentelemetryExportConfig:
        otlpGrpcEndpoint: "endpoint"
      selfTracing:
        mode: Enabled
        intervalSeconds: 120
      spanChannelCapacity: 1000

Konfigurace šifrování interního provozu

Důležité

V tuto chvíli nejde tuto funkci nakonfigurovat pomocí Azure CLI ani webu Azure Portal během počátečního nasazení. Pokud chcete toto nastavení upravit, musíte upravit soubor YAML a znovu nasadit zprostředkovatele.

Funkce encryptInternalTraffic slouží k šifrování interního provozu mezi front-endovými a back-endovými pody. Pokud chcete tuto funkci použít, musí být v clusteru nainstalovaný nástroj cert-manager, který je ve výchozím nastavení nainstalovaný při použití operací Azure IoT.

Nabízí například tyto výhody:

  • Zabezpečení interního provozu: Veškerý interní provoz mezi front-endovými a back-endovými pody je šifrovaný.

  • Zabezpečená neaktivní uložená data: Všechna neaktivní uložená data jsou šifrovaná.

  • Zabezpečená přenášená data: Všechna přenášená data jsou šifrovaná.

  • Zabezpečená data v paměti: Všechna data v paměti jsou šifrovaná.

  • Zabezpečená data v vyrovnávací paměti zpráv: Všechna data v vyrovnávací paměti zprávy jsou šifrovaná.

  • Zabezpečená data v vyrovnávací paměti zpráv na disku: Všechna data v vyrovnávací paměti zprávy na disku jsou šifrovaná.

Ve výchozím nastavení je povolená funkce encryptInternalTraffic . Pokud chcete tuto funkci zakázat, nastavte encryptInternalTraffic pole false ve specifikaci vlastního prostředku zprostředkovatele při opětovném nasazení zprostředkovatele.

Konfigurace chování vyrovnávací paměti zpráv založeného na disku

Důležité

V tuto chvíli nejde tuto funkci nakonfigurovat pomocí Azure CLI ani webu Azure Portal během počátečního nasazení. Pokud chcete toto nastavení upravit, musíte upravit soubor YAML a znovu nasadit zprostředkovatele.

Funkce diskBackedMessageBufferSettings 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 diskBackedMessageBufferSettings 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.

Principy a konfigurace funkce diskBackedMessageBufferSettings udržuje robustní a spolehlivý systém řízení front zpráv. Správná konfigurace je důležitá ve scénářích, kdy rychlost zpracování zpráv a připojení jsou kritickými faktory.

Možnosti konfigurace

Přizpůsobte možnosti vyrovnávací paměti zpráv zprostředkovatele úpravou následujících nastavení:

  • Konfigurace svazku: Zadejte šablonu deklarace trvalého 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ý vedle prázdného svazku. Trvalý svazek i dočasný svazek jsou obecně poskytovány stejnými třídami úložiště. Pokud máte obě možnosti, zvolte dočasný. Dočasný však vyžaduje Kubernetes 1.23 nebo vyšší.

Zakázáno

Pokud nechcete používat vyrovnávací paměť zpráv na disku, nezahrnujte vlastnost diskBackedMessageBufferSettings do zprostředkovatele CRD.

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 efemerálníhoVolumeClaimSpec vlastnost se používá jako dočasný.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 zprostředkovateli CRD 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 vlastnost se používá jako volumeClaimTemTemplates.spec specifikace StatefulSet back-endových řetězců.

Pokud chcete například použít trvalý svazek s kapacitou 1 gigabajt, zadejte do zprostředkovatele CRD následující parametry:

diskBackedMessageBuffer:
  maxSize: "1G"
  persistentVolumeClaimSpec:
    storageClassName: "foo"
    accessModes:
    - "ReadWriteOnce"

emptyDir volume

Použijte prázdný svazekDir. Prázdný svazekDir je další 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 následující parametry v CRD zprostředkovatele:

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

Uchování

Je důležité si uvědomit, že funkce diskBackedMessageBufferSettings 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.