Upravit

Sdílet prostřednictvím


Apache NiFi v Azure

Azure Application Gateway
Azure Log Analytics
Azure Virtual Machines
Azure Virtual Network
Azure Virtual Machine Scale Sets

Upozornění

Tento článek odkazuje na CentOS, linuxovou distribuci, která se blíží stavu Konec životnosti (EOL). Zvažte své použití a odpovídajícím způsobem naplánujte. Další informace najdete v doprovodných materiálech CentOS End Of Life.

Tento ukázkový scénář ukazuje, jak spustit Apache NiFi v Azure. NiFi poskytuje systém pro zpracování a distribuci dat.

Apache®, Apache NiFi a NiFi®® jsou registrované ochranné známky nebo ochranné známky nadace Apache Software Foundation v USA a/nebo v jiných zemích. Použití těchto značek nevyžaduje žádné doporučení Apache Software Foundation.

Architektura

Diagram architektury znázorňující automatizovaný tok dat prostřednictvím řešení Azure, které používá Apache NiFi a Apache ZooKeeper

Stáhněte si soubor aplikace Visio s touto architekturou.

Workflow

  • Aplikace NiFi běží na virtuálních počítačích v uzlech clusteru NiFi. Virtuální počítače jsou ve škálovací sadě virtuálních počítačů, kterou konfigurace nasadí napříč zónami dostupnosti.

  • Apache ZooKeeper běží na virtuálních počítačích v samostatném clusteru. NiFi používá cluster ZooKeeper k těmto účelům:

    • Volba koordinačního uzlu clusteru
    • Koordinace toku dat
  • Aplikace Azure Gateway poskytuje vyrovnávání zatížení vrstvy 7 pro uživatelské rozhraní, které běží na uzlech NiFi.

  • Monitorování a její funkce Log Analytics shromažďuje, analyzuje a pracuje s telemetrií ze systému NiFi. Telemetrie zahrnuje systémové protokoly NiFi, metriky stavu systému a metriky výkonu.

  • Azure Key Vault bezpečně ukládá certifikáty a klíče pro cluster NiFi.

  • Microsoft Entra ID poskytuje jednotné přihlašování (SSO) a vícefaktorové ověřování.

Komponenty

  • NiFi poskytuje systém pro zpracování a distribuci dat.
  • ZooKeeper je opensourcový server, který spravuje distribuované systémy.
  • Virtual Machines je nabídka typu infrastruktura jako služba (IaaS). Virtuální počítače můžete použít k nasazení škálovatelných výpočetních prostředků na vyžádání. Virtual Machines poskytuje flexibilitu virtualizace, ale eliminuje nároky na údržbu fyzického hardwaru.
  • Škálovací sady virtuálních počítačů Azure poskytují způsob správy skupiny virtuálních počítačů s vyrovnáváním zatížení. Počet instancí virtuálních počítačů v sadě může automaticky navýšit nebo snížit reakci na poptávku nebo definovaný plán.
  • Zóny dostupnosti jsou jedinečná fyzická umístění v rámci oblasti Azure. Tyto nabídky s vysokou dostupností chrání aplikace a data před selháním datacentra.
  • Application Gateway je nástroj pro vyrovnávání zatížení, který spravuje provoz do webových aplikací.
  • Monitorování shromažďuje a analyzuje data o prostředích a prostředcích Azure. Tato data zahrnují telemetrii aplikací, jako jsou metriky výkonu a protokoly aktivit. Další informace najdete v části Aspekty monitorování dále v tomto článku.
  • Log Analytics je nástroj webu Azure Portal, který spouští dotazy na monitorování dat protokolů. Log Analytics také poskytuje funkce pro grafy a statisticky analyzující výsledky dotazů.
  • Azure DevOps Services poskytuje služby, nástroje a prostředí pro správu projektů a nasazení kódování.
  • Key Vault bezpečně ukládá a řídí přístup k tajným kódům systému, jako jsou klíče rozhraní API, hesla, certifikáty a kryptografické klíče.
  • Microsoft Entra ID je cloudová služba identit, která řídí přístup k Azure a dalším cloudovým aplikacím.

Alternativy

Podrobnosti scénáře

V tomto scénáři se NiFi spouští v clusterované konfiguraci napříč virtuálními počítači Azure ve škálovací sadě. Většina doporučení tohoto článku se ale vztahuje také na scénáře, které spouštějí NiFi v režimu jedné instance na jednom virtuálním počítači. Osvědčené postupy v tomto článku ukazují škálovatelné, vysoce dostupné a zabezpečené nasazení.

Potenciální případy použití

NiFi funguje dobře pro přesouvání dat a správu toku dat:

  • Připojení oddělení systémů v cloudu
  • Přesun dat do a z Azure Storage a dalších úložišť dat
  • Integrace cloudových a hybridních cloudových aplikací se službami Azure IoT, Azure Stack a Azure Kubernetes Service (AKS)

V důsledku toho se toto řešení vztahuje na mnoho oblastí:

  • Moderní datové sklady (MDWs) spojují strukturovaná a nestrukturovaná data ve velkém měřítku. Shromažďují a ukládají data z různých zdrojů, jímek a formátů. NiFi exceluje při ingestování dat do MDWs založených na Azure z následujících důvodů:

    • Více než 200 procesorů je k dispozici pro čtení, zápis a manipulaci s daty.
    • Systém podporuje služby Storage, jako je Azure Blob Storage, Azure Data Lake Storage, Azure Event Hubs, Azure Queue Storage, Azure Cosmos DB a Azure Synapse Analytics.
    • Robustní možnosti provenience dat umožňují implementovat kompatibilní řešení. Informace o zaznamenávání provenience dat ve funkci Log Analytics služby Azure Monitor najdete v části Aspekty vytváření sestav dále v tomto článku.
  • NiFi může běžet samostatně na zařízeních s malými nároky. V takových případech umožňuje NiFi zpracovávat hraniční data a přesouvat tato data do větších instancí nebo clusterů NiFi v cloudu. NiFi pomáhá filtrovat, transformovat a určovat prioritu hraničních dat v pohybu, což zajišťuje spolehlivé a efektivní toky dat.

  • Průmyslová řešení IoT (IIoT) spravují tok dat z hraničního zařízení do datového centra. Tento tok začíná získáváním dat z průmyslových řídicích systémů a zařízení. Data se pak přesunou do řešení pro správu dat a MDWs. NiFi nabízí možnosti, díky kterým je vhodná pro získávání a přesun dat:

    • Funkce zpracování dat Edge
    • Podpora protokolů, které používají brány IoT a zařízení
    • Integrace se službami Event Hubs a Storage

    Aplikace IoT v oblastech prediktivní údržby a správy dodavatelského řetězce můžou tuto funkci využít.

Doporučení

Při použití tohoto řešení mějte na paměti následující body:

Při spuštění tohoto řešení v Azure doporučujeme použít verzi 1.13.2 nebo novější rozhraní NiFi. Můžete spouštět jiné verze, ale můžou vyžadovat jiné konfigurace než ty, které jsou v této příručce.

Pokud chcete na virtuální počítače Azure nainstalovat NiFi, je nejlepší stáhnout si pohodlné binární soubory ze stránky pro stahování NiFi. Binární soubory můžete také sestavit ze zdrojového kódu.

Pro tuto ukázkovou úlohu doporučujeme používat verze 3.5.5 a novější nebo 3.6.x ZooKeeper.

ZooKeeper můžete na virtuální počítače Azure nainstalovat pomocí oficiálních binárních souborů nebo zdrojového kódu. Obě verze jsou k dispozici na stránce vydaných verzí Apache ZooKeeper.

Důležité informace

Tyto aspekty implementují pilíře dobře architektuře Azure, což je sada hlavních principů, které je možné použít ke zlepšení kvality úlohy. Další informace naleznete v tématu Microsoft Azure Well-Architected Framework.

Informace o konfiguraci NiFi naleznete v příručce k systému Apache NiFi Správa istrator. Při implementaci tohoto řešení mějte také na paměti tyto aspekty.

Optimalizace nákladů

Optimalizace nákladů se zabývá způsoby, jak snížit zbytečné výdaje a zlepšit efektivitu provozu. Další informace najdete v tématu Přehled pilíře optimalizace nákladů.

  • Pomocí cenové kalkulačky Azure můžete odhadnout náklady na prostředky v této architektuře.
  • Odhad zahrnující všechny služby v této architektuře s výjimkou vlastního řešení pro upozorňování najdete v tomto ukázkovém profilu nákladů.

Aspekty virtuálních počítačů

Následující části obsahují podrobný přehled konfigurace virtuálních počítačů NiFi:

Velikost virtuálního počítače

Tato tabulka uvádí doporučené velikosti virtuálních počítačů, se kterými můžete začít. Pro většinu toků dat pro obecné účely je nejlepší Standard_D16s_v3. Každý tok dat v NiFi má ale jiné požadavky. Otestujte tok a podle potřeby změňte jeho velikost na základě skutečných požadavků toku.

Zvažte povolení akcelerovaných síťových služeb na virtuálních počítačích, aby se zvýšil výkon sítě. Další informace najdete v tématu Sítě pro škálovací sady virtuálních počítačů Azure.

Velikost virtuálního počítače Virtuální procesory Paměť v GB Maximální propustnost datového disku bez mezipaměti v vstupně-výstupních operacích za sekundu (IOPS) na MB/s* Maximální počet síťových rozhraní /Očekávaná šířka pásma sítě (Mb/s)
Standard_D8s_v3 8 32 12,800/192 4/4,000
Standard_D16s_v3** 16 64 25,600/384 8/8,000
Standard_D32s_v3 32 128 51,200/768 8/16,000
Standard_M16m 16 437.5 10,000/250 8/4,000

* Zakažte ukládání datových disků do mezipaměti pro všechny datové disky, které používáte na uzlech NiFi.

** Tuto skladovou položku doporučujeme pro většinu toků dat pro obecné účely. Skladové položky virtuálních počítačů Azure s podobnými virtuálními procesory a konfiguracemi paměti by také měly být přiměřené.

Operační systém virtuálního počítače (OS)

Doporučujeme spustit NiFi v Azure v některém z následujících hostovaných operačních systémů:

  • Ubuntu 18.04 LTS nebo novější
  • CentOS 7.9

Aby bylo možné splnit konkrétní požadavky toku dat, je důležité upravit několik nastavení na úrovni operačního systému, mezi které patří:

  • Maximální počet forkovaných procesů
  • Maximální počet popisovačů souborů
  • Doba přístupu. atime

Po úpravě operačního systému tak, aby odpovídal očekávanému případu použití, použijte Azure VM Image Builder k kodifikování generování těchto vyladěných imagí. Pokyny specifické pro NiFi najdete v tématu Osvědčené postupy konfigurace v příručce k systému Apache NiFi Správa istrator.

Úložiště

Uložte různá úložiště NiFi na datové disky, nikoli na disk s operačním systémem, a to ze tří hlavních důvodů:

  • Toky často mají požadavky na vysokou propustnost disku, které jeden disk nemůže splnit.
  • Nejlepší je oddělit operace disku NiFi od operací disku s operačním systémem.
  • Úložiště by neměla být v dočasném úložišti.

Následující části popisují pokyny pro konfiguraci datových disků. Tyto pokyny jsou specifické pro Azure. Další informace o konfiguraci úložišť najdete v tématu Správa stavu v příručce k systému Apache NiFi Správa istrator.

Datový typ a velikost datového disku

Při konfiguraci datových disků pro NiFi zvažte tyto faktory:

  • Typ disku
  • Velikost disku
  • Celkový počet disků

Poznámka:

Aktuální informace o typech disků, velikosti a cenách najdete v tématu Úvod ke spravovaným diskům Azure.

Následující tabulka ukazuje typy spravovaných disků, které jsou aktuálně dostupné v Azure. NiFi můžete použít s některým z těchto typů disků. Pro toky dat s vysokou propustností ale doporučujeme ssd úrovně Premium.

Disk úrovně Ultra (NVM Express (NVMe)) SSD úrovně Premium SSD úrovně Standard HDD úrovně Standard
Typ disku SSD SSD SSD HDD
Maximální velikost disku 65 536 GB 32 767 GB 32 767 GB 32 767 GB
Max. propustnost 2 000 MiB/s 900 MiB/s 750 MiB/s 500 MiB/s
Maximální IOPS 160 000 20,000 6 000 2 000

Ke zvýšení propustnosti toku dat použijte aspoň tři datové disky. Osvědčené postupy pro konfiguraci úložišť na discích najdete v části Konfigurace úložiště dále v tomto článku.

Následující tabulka uvádí relevantní čísla velikosti a propustnosti pro každou velikost a typ disku.

Standard HDD S15 Standard HDD S20 Standard HDD S30 Standard SSD S15 Standard SSD S20 Standard SSD S30 Premium SSD P15 Premium SSD P20 Premium SSD P30
Velikost disku v GB 256 512 1,024 256 512 1,024 256 512 1,024
IOPS na disk Až 500 Až 500 Až 500 Až 500 Až 500 Až 500 1 100 2 300 5 000
Propustnost na disk Až 60 MB/s Až 60 MB/s Až 60 MB/s Až 60 MB/s Až 60 MB/s Až 60 MB/s 125 MB/s 150 MB/s 200 MB/s

Pokud váš systém dosáhne limitů virtuálních počítačů, přidání dalších disků nemusí zvýšit propustnost:

  • Omezení IOPS a propustnosti závisí na velikosti disku.
  • Velikost virtuálního počítače, kterou zvolíte, umístí omezení vstupně-výstupních operací za sekundu a propustnosti pro virtuální počítač na všech datových discích.

Omezení propustnosti disku na úrovni virtuálního počítače najdete v tématu Velikosti virtuálních počítačů s Linuxem v Azure.

Ukládání do mezipaměti disku virtuálního počítače

Na virtuálních počítačích Azure spravuje funkce Hostitel Ukládání do mezipaměti ukládání do mezipaměti pro zápis do disku. Pokud chcete zvýšit propustnost datových disků, které používáte pro úložiště, vypněte ukládání do mezipaměti zápisu na disk nastavením hostitele Ukládání do mezipaměti na None.

Konfigurace úložiště

Osvědčeným postupem pro NiFi je použití samostatného disku nebo disků pro každé z těchto úložišť:

  • Content
  • FlowFile
  • Provenience

Tento přístup vyžaduje minimálně tři disky.

NiFi také podporuje prokládání na úrovni aplikace. Tato funkce zvyšuje velikost nebo výkon úložišť dat.

Následující výňatek pochází z konfiguračního nifi.properties souboru. Tato konfigurace rozdělí úložiště mezi spravované disky, které jsou připojené k virtuálním počítačům:

nifi.provenance.repository.directory.stripe1=/mnt/disk1/ provenance_repository
nifi.provenance.repository.directory.stripe2=/mnt/disk2/ provenance_repository
nifi.provenance.repository.directory.stripe3=/mnt/disk3/ provenance_repository
nifi.content.repository.directory.stripe1=/mnt/disk4/ content_repository
nifi.content.repository.directory.stripe2=/mnt/disk5/ content_repository
nifi.content.repository.directory.stripe3=/mnt/disk6/ content_repository
nifi.flowfile.repository.directory=/mnt/disk7/ flowfile_repository

Další informace o návrhu pro vysoce výkonné úložiště najdete v tématu Azure Premium Storage: návrh pro zajištění vysokého výkonu.

Sestavy

NiFi obsahuje úlohu generování sestav pro funkci Log Analytics.

Tuto úlohu generování sestav můžete použít k přesměrování událostí provenience na nákladově efektivní trvalé dlouhodobé úložiště. Funkce Log Analytics poskytuje rozhraní dotazů pro zobrazení a grafování jednotlivých událostí. Další informace o těchtodotazch

Tuto úlohu můžete použít také s nestálým úložištěm pro provenience v paměti. V mnoha scénářích pak můžete dosáhnout zvýšení propustnosti. Tento přístup je ale rizikový, pokud potřebujete zachovat data událostí. Ujistěte se, že nestálé úložiště splňuje vaše požadavky na stálost pro události provenience. Další informace naleznete v tématu Provenance Repository in the Apache NiFi System Správa istrator's Guide.

Před použitím tohoto procesu vytvořte v předplatném Azure pracovní prostor služby Log Analytics. Nejlepší je nastavit pracovní prostor ve stejné oblasti jako vaše úloha.

Konfigurace úlohy vytváření sestav provenience:

  1. Otevřete nastavení kontroleru v NiFi.
  2. Vyberte nabídku úkolů vytváření sestav.
  3. Vyberte Vytvořit nový úkol vytváření sestav.
  4. Vyberte úlohu generování sestav Azure Log Analytics.

Následující snímek obrazovky ukazuje nabídku vlastností pro tuto úlohu vytváření sestav:

Snímek obrazovky s oknem Konfigurovat úlohu generování sestav NiFi Zobrazí se nabídka Vlastnosti. Vypíše hodnoty nastavení Log Analytics.

Jsou vyžadovány dvě vlastnosti:

  • ID pracovního prostoru služby Log Analytics
  • Klíč pracovního prostoru služby Log Analytics

Tyto hodnoty najdete na webu Azure Portal tak, že přejdete do pracovního prostoru služby Log Analytics.

K dispozici jsou také další možnosti pro přizpůsobení a filtrování událostí provenience, které systém odesílá.

Zabezpečení

Zabezpečení poskytuje záruky proti záměrným útokům a zneužití cenných dat a systémů. Další informace najdete v tématu Přehled pilíře zabezpečení.

NiFi můžete zabezpečit z hlediska ověřování a autorizace . NiFi můžete také zabezpečit pro veškerou síťovou komunikaci, včetně:

  • V rámci clusteru.
  • Mezi clusterem a ZooKeeperem.

Pokyny k zapnutí následujících možností najdete v průvodci Správa istrátory Apache NiFi:

  • Kerberos
  • Protokol LDAP (Lightweight Directory Access Protocol)
  • Ověřování a autorizace založené na certifikátech
  • Obousměrná protokol SSL (Secure Sockets Layer) pro komunikaci mezi clustery

Pokud zapnete zabezpečený klientský přístup ZooKeeper, nakonfigurujte NiFi přidáním souvisejících vlastností do konfiguračního bootstrap.conf souboru. Následující položky konfigurace poskytují příklad:

java.arg.18=-Dzookeeper.clientCnxnSocket=org.apache.zookeeper.ClientCnxnSocketNetty
java.arg.19=-Dzookeeper.client.secure=true
java.arg.20=-Dzookeeper.ssl.keyStore.location=/path/to/keystore.jks
java.arg.21=-Dzookeeper.ssl.keyStore.password=[KEYSTORE PASSWORD]
java.arg.22=-Dzookeeper.ssl.trustStore.location=/path/to/truststore.jks
java.arg.23=-Dzookeeper.ssl.trustStore.password=[TRUSTSTORE PASSWORD]

Obecná doporučení najdete ve standardních hodnotách zabezpečení Linuxu.

Zabezpečení sítě

Při implementaci tohoto řešení mějte na paměti následující body týkající se zabezpečení sítě:

Skupiny zabezpečení sítě

V Azure můžete pomocí skupin zabezpečení sítě omezit síťový provoz.

Pro úlohy správy doporučujeme jumpbox pro připojení ke clusteru NiFi. Použijte tento virtuální počítač s posílením zabezpečení s přístupem za běhu (JIT) nebo službou Azure Bastion. Nastavte skupiny zabezpečení sítě pro řízení způsobu udělení přístupu k jumpboxu nebo službě Azure Bastion. Izolaci a kontrolu sítě můžete dosáhnout pomocí skupin zabezpečení sítě v různých podsítích architektury.

Následující snímek obrazovky ukazuje komponenty v typické virtuální síti. Obsahuje společnou podsíť pro jumpbox, škálovací sadu virtuálních počítačů a virtuální počítače ZooKeeper. Tato zjednodušená topologie sítě seskupuje komponenty do jedné podsítě. Postupujte podle pokynů vaší organizace pro oddělení povinností a návrhu sítě.

Snímek obrazovky tabulky se seznamem zařízení, typů a podsítí součástí virtuální sítě

Důležité informace o odchozím přístupu k internetu

NiFi v Azure ke spuštění nepotřebuje přístup k veřejnému internetu. Pokud tok dat k načtení dat nepotřebuje přístup k internetu, vylepšete zabezpečení clusteru pomocí následujícího postupu a zakažte odchozí přístup k internetu:

  1. Vytvořte ve virtuální síti další pravidlo skupiny zabezpečení sítě.

  2. Použijte tato nastavení:

    • Zdroj: Any
    • Cíl: Internet
    • Akce: Deny

Snímek obrazovky zobrazující hodnoty nastavení odchozích pravidel zabezpečení, jako je Priorita, Název, Port, Protokol, Zdroj, Cíl a Akce

Pokud nakonfigurujete privátní koncový bod ve virtuální síti, můžete s tímto pravidlem dál přistupovat k některým službám Azure z toku dat. K tomuto účelu použijte Azure Private Link . Tato služba poskytuje způsob, jak váš provoz cestovat v páteřní síti Microsoftu, aniž by bylo nutné přistupovat k jiné externí síti. NiFi v současné době podporuje Private Link pro procesory Blob Storage a Data Lake Storage. Pokud server NTP (Network Time Protocol) není ve vaší privátní síti dostupný, povolte odchozí přístup k protokolu NTP. Podrobné informace najdete v tématu Synchronizace času pro virtuální počítače s Linuxem v Azure.

Ochrana dat

Bez šifrování drátů, správy identit a přístupu (IAM) nebo šifrování dat je možné provozovat niFi bez nezabezpečeného šifrování. Nejlepší je ale zabezpečit produkční a veřejná cloudová nasazení těmito způsoby:

  • Šifrování komunikace pomocí protokolu TLS (Transport Layer Security)
  • Použití podporovaného mechanismu ověřování a autorizace
  • Šifrování neaktivních uložených dat

Azure Storage poskytuje transparentní šifrování dat na straně serveru. Od verze 1.13.2 ale NiFi ve výchozím nastavení nenakonfiguruje šifrování drátů ani IAM. Toto chování se může v budoucích verzích změnit.

Následující části ukazují, jak zabezpečit nasazení těmito způsoby:

  • Povolení šifrování wire pomocí protokolu TLS
  • Konfigurace ověřování založeného na certifikátech nebo ID Microsoft Entra
  • Správa šifrovaného úložiště v Azure
Šifrování disku

Pokud chcete zlepšit zabezpečení, použijte šifrování disků Azure. Podrobný postup najdete v tématu Šifrování operačního systému a připojených datových disků ve škálovací sadě virtuálních počítačů pomocí Azure CLI. Tento dokument obsahuje také pokyny k poskytnutí vlastního šifrovacího klíče. Následující kroky popisují základní příklad pro NiFi, který funguje pro většinu nasazení:

  1. Pokud chcete zapnout šifrování disků v existující instanci služby Key Vault, použijte následující příkaz Azure CLI:

    az keyvault create --resource-group myResourceGroup --name myKeyVaultName --enabled-for-disk-encryption
    
  2. Zapněte šifrování datových disků škálovací sady virtuálních počítačů pomocí následujícího příkazu:

    az vmss encryption enable --resource-group myResourceGroup --name myScaleSet --disk-encryption-keyvault myKeyVaultID --volume-type DATA
    
  3. Volitelně můžete použít šifrovací klíč klíče (KEK). K šifrování pomocí klíče KEK použijte následující příkaz Azure CLI:

    az vmss encryption enable --resource-group myResourceGroup --name  myScaleSet  \
    --disk-encryption-keyvault myKeyVaultID \
    --key-encryption-keyvault myKeyVaultID \
    --key-encryption-key https://<mykeyvaultname>.vault.azure.net/keys/myKey/<version> \
    --volume-type DATA
    
    

Poznámka:

Pokud jste nakonfigurovali škálovací sadu virtuálních počítačů pro ruční režim aktualizace, spusťte update-instances příkaz. Uveďte verzi šifrovacího klíče, který jste uložili ve službě Key Vault.

Šifrování během přenosu

NiFi podporuje protokol TLS 1.2 pro šifrování během přenosu. Tento protokol nabízí ochranu přístupu uživatelů k uživatelskému rozhraní. Pomocí clusterů protokol chrání komunikaci mezi uzly NiFi. Může také chránit komunikaci se službou ZooKeeper. Když povolíte protokol TLS, NiFi použije pro vzájemné ověřování vzájemné ověřování protokol TLS (mTLS) pro:

  • Pokud jste nakonfigurovali tento typ ověřování, ověřování na základě certifikátů
  • Veškerá komunikace uvnitřclusteru.

Pokud chcete povolit protokol TLS, proveďte následující kroky:

  1. Vytvořte úložiště klíčů a úložiště důvěryhodnosti pro komunikaci a ověřování mezi klienty a servery.

  2. Konfigurace $NIFI_HOME/conf/nifi.properties. Nastavte následující hodnoty:

    • Názvy hostitelů
    • Porty
    • Vlastnosti úložiště klíčů
    • Vlastnosti úložiště důvěryhodnosti
    • Vlastnosti zabezpečení clusteru a ZooKeeper, pokud jsou k dispozici
  3. Nakonfigurujte ověřování v $NIFI_HOME/conf/authorizers.xml, obvykle s počátečním uživatelem, který má ověřování na základě certifikátu nebo jinou možnost.

  4. Volitelně můžete nakonfigurovat mTLS a zásady čtení proxy serveru mezi niFi a všemi proxy servery, nástroji pro vyrovnávání zatížení nebo externími koncovými body.

Úplný návod najdete v tématu Zabezpečení NiFi pomocí protokolu TLS v dokumentaci k projektu Apache.

Poznámka:

Od verze 1.13.2:

  • NiFi ve výchozím nastavení nepovoluje protokol TLS.
  • Pro instance NiFi s podporou protokolu TLS s podporou protokolu TLS neexistuje žádná předběžná podpora anonymního přístupu a přístupu s jedním uživatelem.

Pokud chcete protokol TLS povolit pro šifrování během přenosu, nakonfigurujte skupinu uživatelů a poskytovatele zásad pro ověřování a autorizaci v $NIFI_HOME/conf/authorizers.xml. Další informace najdete v tématu Identita a řízení přístupu dále v tomto článku.

Certifikáty, klíče a úložiště klíčů

Pokud chcete podporovat protokol TLS, vygenerujte certifikáty, uložte je do úložiště klíčů Java a TrustStore a distribuujte je v clusteru NiFi. Pro certifikáty existují dvě obecné možnosti:

  • Certifikáty podepsané svým držitelem
  • Certifikáty, které certifikují certifikační autority (CA)

U certifikátů podepsaných certifikační autoritou je nejlepší použít zprostředkující certifikační autoritu k vygenerování certifikátů pro uzly v clusteru.

KeyStore a TrustStore jsou kontejnery klíčů a certifikátů na platformě Java. Úložiště klíčů ukládá privátní klíč a certifikát uzlu v clusteru. TrustStore ukládá jeden z následujících typů certifikátů:

  • Všechny důvěryhodné certifikáty pro certifikáty podepsané svým držitelem v úložišti klíčů
  • Certifikát od certifikační autority pro certifikáty podepsané certifikační autoritou v úložišti klíčů

Při výběru kontejneru mějte na paměti škálovatelnost clusteru NiFi. V budoucnu můžete například chtít zvýšit nebo snížit počet uzlů v clusteru. V takovém případě zvolte certifikáty podepsané certifikační autoritou v úložišti klíčů a jeden nebo více certifikátů z certifikační autority v TrustStore. S touto možností není nutné aktualizovat existující TrustStore v existujících uzlech clusteru. Existující vztah důvěryhodnosti TrustStore a přijímá certifikáty z těchto typů uzlů:

  • Uzly, které přidáte do clusteru
  • Uzly, které nahrazují ostatní uzly v clusteru
Konfigurace NiFi

Pokud chcete povolit protokol TLS pro NiFi, použijte $NIFI_HOME/conf/nifi.properties ke konfiguraci vlastností v této tabulce. Ujistěte se, že následující vlastnosti zahrnují název hostitele, který používáte pro přístup k NiFi:

  • nifi.web.https.host nebo nifi.web.proxy.host
  • Určený název certifikátu hostitele nebo alternativní názvy subjektu

Jinak může dojít k selhání ověření názvu hostitele nebo selhání ověření hlavičky HTTP HOST, což vám zamítá přístup.

Název vlastnosti Popis Ukázkové hodnoty
nifi.web.https.host Název hostitele nebo IP adresa, které se mají použít pro uživatelské rozhraní a rozhraní REST API. Tato hodnota by měla být interně přeložitelná. Nedoporučujeme používat veřejně přístupný název. nifi.internal.cloudapp.net
nifi.web.https.port Port HTTPS, který se má použít pro uživatelské rozhraní a rozhraní REST API. 9443 (výchozí)
nifi.web.proxy.host Čárkami oddělený seznam alternativních názvů hostitelů, které klienti používají pro přístup k uživatelskému rozhraní a rozhraní REST API. Tento seznam obvykle obsahuje všechny názvy hostitelů, které jsou určené jako alternativní název subjektu (SAN) v certifikátu serveru. Seznam může obsahovat také jakýkoli název hostitele a port, který používá kontroler příchozího přenosu dat Kubernetes, proxy server nebo kontroler příchozího přenosu dat Kubernetes. 40.67.218.235, 40.67.218.235:443, nifi.westus2.cloudapp.com, nifi.westus2.cloudapp.com:443
nifi.security.keystore Cesta k úložišti klíčů JKS nebo PKCS12, která obsahuje privátní klíč certifikátu. ./conf/keystore.jks
nifi.security.keystoreType Typ úložiště klíčů. JKS nebo PKCS12
nifi.security.keystorePasswd Heslo úložiště klíčů. O8SitLBYpCz7g/RpsqH+zM
nifi.security.keyPasswd (Volitelné) Heslo pro privátní klíč.
nifi.security.truststore Cesta k úložišti důvěryhodnosti JKS nebo PKCS12 obsahující certifikáty nebo certifikáty certifikační autority, které ověřují důvěryhodné uživatele a uzly clusteru. ./conf/truststore.jks
nifi.security.truststoreType Typ truststore. JKS nebo PKCS12
nifi.security.truststorePasswd Heslo truststore. RJlpGe6/TuN5fG+VnaEPi8
nifi.cluster.protocol.is.secure Stav protokolu TLS pro komunikaci uvnitřclusteru. Pokud nifi.cluster.is.node ano true, nastavte tuto hodnotu na true povolení protokolu TLS clusteru. true
nifi.remote.input.secure Stav protokolu TLS pro komunikaci typu site-to-site. true

Následující příklad ukazuje, jak se tyto vlastnosti zobrazují v $NIFI_HOME/conf/nifi.properties. Všimněte si, že nifi.web.http.host hodnoty a nifi.web.http.port hodnoty jsou prázdné.

nifi.remote.input.secure=true
nifi.web.http.host=
nifi.web.http.port=
nifi.web.https.host=nifi.internal.cloudapp.net
nifi.web.https.port=9443
nifi.web.proxy.host=40.67.218.235, 40.67.218.235:443, nifi.westus2.cloudapp.com, nifi.westus2.cloudapp.com:443
nifi.security.keystore=./conf/keystore.jks 
nifi.security.keystoreType=JKS          
nifi.security.keystorePasswd=O8SitLBYpCz7g/RpsqH+zM                  
nifi.security.keyPasswd=
nifi.security.truststore=./conf/truststore.jks                                   
nifi.security.truststoreType=JKS
nifi.security.truststorePasswd=RJlpGe6/TuN5fG+VnaEPi8
nifi.cluster.protocol.is.secure=true
Konfigurace ZooKeeperu

Pokyny k povolení protokolu TLS v Apache ZooKeeper pro komunikaci kvora a klientský přístup najdete v příručce kvora ZooKeeper Správa istrator. Tuto funkci podporují pouze verze 3.5.5 nebo novější.

NiFi používá ZooKeeper ke své koordinaci clusteringu a clusteru s nulovým přehledem. Od verze 1.13.0 podporuje NiFi zabezpečený klientský přístup k instancím ZooKeeper s povoleným protokolem TLS. ZooKeeper ukládá členství v clusteru a stav procesoru v oboru clusteru ve formátu prostého textu. Proto je důležité používat zabezpečený klientský přístup k ZooKeeperu k ověřování požadavků klientů ZooKeeper. Také zašifrujte citlivé hodnoty během přenosu.

Chcete-li povolit protokol TLS pro přístup klienta NiFi k ZooKeeper, nastavte následující vlastnosti v souboru $NIFI_HOME/conf/nifi.properties. Pokud nastavíte nifi.zookeeper.client.securetrue bez konfigurace nifi.zookeeper.security vlastností, NiFi se vrátí do úložiště klíčů a důvěryhodného úložiště, které zadáte v nifi.securityproperties.

Název vlastnosti Popis Ukázkové hodnoty
nifi.zookeeper.client.secure Stav protokolu TLS klienta při připojování ke službě ZooKeeper. true
nifi.zookeeper.security.keystore Cesta k úložišti klíčů JKS, PKCS12 nebo PEM, která obsahuje privátní klíč certifikátu, který se zobrazí ZooKeeperu pro ověření. ./conf/zookeeper.keystore.jks
nifi.zookeeper.security.keystoreType Typ úložiště klíčů. JKS, PKCS12, PEMnebo automatické rozpoznávání podle rozšíření
nifi.zookeeper.security.keystorePasswd Heslo úložiště klíčů. caB6ECKi03R/co+N+64lrz
nifi.zookeeper.security.keyPasswd (Volitelné) Heslo pro privátní klíč.
nifi.zookeeper.security.truststore Cesta k úložišti důvěryhodnosti JKS, PKCS12 nebo PEM obsahující certifikáty nebo certifikáty certifikační autority, které se používají k ověření ZooKeeperu. ./conf/zookeeper.truststore.jks
nifi.zookeeper.security.truststoreType Typ truststore. JKS, PKCS12, PEMnebo automatické rozpoznávání podle rozšíření
nifi.zookeeper.security.truststorePasswd Heslo truststore. qBdnLhsp+mKvV7wab/L4sv
nifi.zookeeper.connect.string Připojovací řetězec k hostiteli Nebo kvoru ZooKeeper. Tento řetězec je čárkami oddělený seznam host:port hodnot. secureClientPort Hodnota obvykle není stejná jako clientPort hodnota. Správnou hodnotu najdete v konfiguraci ZooKeeperu. zookeeper1.internal.cloudapp.net:2281, zookeeper2.internal.cloudapp.net:2281, zookeeper3.internal.cloudapp.net:2281

Následující příklad ukazuje, jak se tyto vlastnosti zobrazují:$NIFI_HOME/conf/nifi.properties

nifi.zookeeper.client.secure=true
nifi.zookeeper.security.keystore=./conf/keystore.jks
nifi.zookeeper.security.keystoreType=JKS
nifi.zookeeper.security.keystorePasswd=caB6ECKi03R/co+N+64lrz
nifi.zookeeper.security.keyPasswd=
nifi.zookeeper.security.truststore=./conf/truststore.jks
nifi.zookeeper.security.truststoreType=JKS
nifi.zookeeper.security.truststorePasswd=qBdnLhsp+mKvV7wab/L4sv
nifi.zookeeper.connect.string=zookeeper1.internal.cloudapp.net:2281,zookeeper2.internal.cloudapp.net:2281,zookeeper3.internal.cloudapp.net:2281

Další informace o zabezpečení ZooKeeperu pomocí protokolu TLS najdete v průvodci Správa istrace Apache NiFi.

Identita a řízení přístupu

V NiFi se identita a řízení přístupu dosahuje prostřednictvím ověřování a autorizace uživatelů. Pro ověřování uživatelů má NiFi několik možností, ze které si můžete vybrat: Jeden uživatel, LDAP, Kerberos, SAML (Security Assertion Markup Language) a OpenID Připojení (OIDC). Pokud možnost nenakonfigurujete, niFi používá klientské certifikáty k ověřování uživatelů přes PROTOKOL HTTPS.

Pokud uvažujete o vícefaktorovém ověřování, doporučujeme kombinaci ID Microsoft Entra a OIDC. Microsoft Entra ID podporuje jednotné přihlašování nativní pro cloud s využitím OIDC. Díky této kombinaci můžou uživatelé využívat řadu podnikových funkcí zabezpečení:

  • Protokolování a upozorňování na podezřelé aktivity z uživatelských účtů
  • Monitorování pokusů o přístup k deaktivovaným přihlašovacím údajům
  • Upozorňování na neobvyklé chování při přihlašování k účtu

Pro autorizaci niFi poskytuje vynucení založené na zásadách uživatele, skupiny a přístupu. NiFi poskytuje toto vynucení prostřednictvím UserGroupProviders a AccessPolicyProviders. Ve výchozím nastavení poskytovatelé zahrnují File, LDAP, Shell a Azure Graph userGroupProviders. Pomocí AzureGraphUserGroupProvider můžete zdrojové skupiny uživatelů z ID Microsoft Entra. Pak můžete těmto skupinám přiřadit zásady. Pokyny ke konfiguraci najdete v průvodci Správa istrace Apache NiFi.

AccessPolicyProviders, které jsou založené na souborech a Apache Ranger jsou aktuálně k dispozici pro správu a ukládání zásad uživatelů a skupin. Podrobné informace najdete v dokumentaci k Apache NiFi a dokumentaci k Apache Rangeru.

Application Gateway

Application Gateway poskytuje spravovaný nástroj pro vyrovnávání zatížení vrstvy 7 pro rozhraní NiFi. Nakonfigurujte aplikační bránu tak, aby jako back-endový fond používala škálovací sadu virtuálních počítačů uzlů NiFi.

Pro většinu instalací NiFi doporučujeme následující konfiguraci služby Application Gateway :

  • Úroveň: Standard
  • Velikost skladové položky: střední
  • Počet instancí: dva nebo více

Pomocí sondy stavu můžete monitorovat stav webového serveru na každém uzlu. Odeberte uzly, které nejsou v pořádku, z obměny nástroje pro vyrovnávání zatížení. Tento přístup usnadňuje zobrazení uživatelského rozhraní v případě, že celkový cluster není v pořádku. Prohlížeč vás nasměruje jenom na uzly, které jsou aktuálně v pořádku a reagují na požadavky.

Je potřeba zvážit dvě klíčové sondy stavu. Společně poskytují pravidelný prezenčních signálů o celkovém stavu každého uzlu v clusteru. Nakonfigurujte první sondu stavu tak, aby ukazovala na cestu /NiFi. Tato sonda určuje stav uživatelského rozhraní NiFi na každém uzlu. Nakonfigurujte druhou sondu stavu pro cestu /nifi-api/controller/cluster. Tato sonda udává, jestli je každý uzel aktuálně v pořádku a je připojený k celkovému clusteru.

Máte dvě možnosti konfigurace front-endové IP adresy služby Application Gateway:

  • S veřejnou IP adresou
  • S IP adresou privátní podsítě

Pokud uživatelé potřebují získat přístup k uživatelskému rozhraní přes veřejný internet, zahrňte jenom veřejnou IP adresu. Pokud se nevyžaduje veřejný přístup k internetu pro uživatele, přejděte ke front-endu nástroje pro vyrovnávání zatížení z jumpboxu ve virtuální síti nebo prostřednictvím partnerského vztahu k vaší privátní síti. Pokud nakonfigurujete aplikační bránu s veřejnou IP adresou, doporučujeme povolit ověřování klientských certifikátů pro NiFi a povolit tls pro uživatelské rozhraní NiFi. K omezení zdrojových IP adres můžete použít také skupinu zabezpečení sítě v podsíti delegovanou aplikační bránu.

Diagnostika a monitorování stavu

V nastavení diagnostiky služby Application Gateway je k dispozici možnost konfigurace pro odesílání metrik a protokolů přístupu. Pomocí této možnosti můžete tyto informace odeslat z nástroje pro vyrovnávání zatížení na různá místa:

  • Účet úložiště
  • Event Hubs
  • Pracovní prostor služby Log Analytics

Zapnutí tohoto nastavení je užitečné pro ladění problémů s vyrovnáváním zatížení a získání přehledu o stavu uzlů clusteru.

Následující dotaz Log Analytics zobrazuje stav uzlu clusteru v průběhu času z pohledu služby Application Gateway. Podobný dotaz můžete použít k vygenerování výstrah nebo automatizovaných akcí opravy pro uzly, které nejsou v pořádku.

AzureDiagnostics
| summarize UnHealthyNodes = max(unHealthyHostCount_d), HealthyNodes = max(healthyHostCount_d) by bin(TimeGenerated, 5m)
| render timechart

Následující graf výsledků dotazu ukazuje časové zobrazení stavu clusteru:

Snímek obrazovky s pruhovým grafem Pruhy zobrazují konstantní počet uzlů v pořádku za 24hodinové období a žádné uzly, které nejsou v pořádku.

Dostupnost

Při implementaci tohoto řešení mějte na paměti následující body týkající se dostupnosti:

Load Balancer

Ke zvýšení dostupnosti uživatelského rozhraní během výpadku uzlu použijte nástroj pro vyrovnávání zatížení.

Samostatné virtuální počítače

Pokud chcete zvýšit dostupnost, nasaďte cluster ZooKeeper na samostatné virtuální počítače od virtuálních počítačů v clusteru NiFi. Další informace o konfiguraci ZooKeeperu najdete v tématu Správa stavu v příručce k systému Apache NiFi Správa istrator.

Zóny dostupnosti

Nasaďte škálovací sadu virtuálních počítačů NiFi i cluster ZooKeeper v konfiguraci napříč zónami, abyste maximalizovali dostupnost. Když komunikace mezi uzly v clusteru překročí zóny dostupnosti, představuje malou latenci. Tato latence ale obvykle má minimální celkový vliv na propustnost clusteru.

Škálovací sady virtuálních počítačů

Doporučujeme nasadit uzly NiFi do jedné škálovací sady virtuálních počítačů, která zahrnuje zóny dostupnosti tam, kde jsou k dispozici. Podrobné informace o použití škálovacích sad tímto způsobem najdete v tématu Vytvoření škálovací sady virtuálních počítačů, která používá Zóny dostupnosti.

Sledování

Pro monitorování stavu a výkonu clusteru NiFi je k dispozici několik možností:

  • Vytváření sestav.
  • MonitoFi, samostatná aplikace vyvinutá Microsoftem MonitoFi běží externě a monitoruje cluster pomocí rozhraní NiFi API.

Monitorování založené na úlohách generování sestav

Pro monitorování můžete použít úlohu generování sestav, kterou nakonfigurujete a spustíte v NiFi. Jak popisuje monitorování diagnostiky a stavu, log Analytics poskytuje úlohu generování sestav v sadě Azure NiFi. Tuto úlohu vytváření sestav můžete použít k integraci monitorování se službou Log Analytics a existujícími systémy monitorování nebo protokolování.

Dotazy Log Analytics

S zahájením práce vám můžou pomoct ukázkové dotazy v následujících částech. Přehled o dotazování dat Log Analytics najdete v tématu Dotazy na protokoly služby Azure Monitor.

Dotazy na protokoly ve službě Monitor a Log Analytics používají verzi dotazovací jazyk Kusto. Mezi dotazy protokolu a dotazy Kusto ale existují rozdíly. Další informace najdete v tématu Přehled dotazů Kusto.

Další strukturované učení najdete v těchto kurzech:

Úloha generování sestav Log Analytics

Ve výchozím nastavení niFi odesílá data metrik do nifimetrics tabulky. Ve vlastnostech úlohy vytváření sestav ale můžete nakonfigurovat jiný cíl. Úloha generování sestav zachycuje následující metriky NiFi:

Typ metriky Název metriky
Metriky NiFi FlowFilesReceived
Metriky NiFi FlowFilesSent
Metriky NiFi FlowFilesQueued
Metriky NiFi BytesReceived
Metriky NiFi BytesWritten
Metriky NiFi BytesRead
Metriky NiFi BytesSent
Metriky NiFi BytesQueued
Metriky stavu portu InputCount
Metriky stavu portu InputBytes
metriky stavu Připojení QueuedCount
metriky stavu Připojení QueuedBytes
Metriky stavu portu OutputCount
Metriky stavu portu OutputBytes
Metriky virtuálních počítačů Java (JVM) jvm.uptime
Metriky JVM jvm.heap_used
Metriky JVM jvm.heap_usage
Metriky JVM jvm.non_heap_usage
Metriky JVM jvm.thread_states.runnable
Metriky JVM jvm.thread_states.blocked
Metriky JVM jvm.thread_states.timed_waiting
Metriky JVM jvm.thread_states.terminated
Metriky JVM jvm.thread_count
Metriky JVM jvm.daemon_thread_count
Metriky JVM jvm.file_descriptor_usage
Metriky JVM jvm.gc.runs jvm.gc.runs.g1_old_generation jvm.gc.runs.g1_young_generation
Metriky JVM jvm.gc.time jvm.gc.time.g1_young_generation jvm.gc.time.g1_old_generation
Metriky JVM jvm.buff_pool_direct_capacity
Metriky JVM jvm.buff_pool_direct_count
Metriky JVM jvm.buff_pool_direct_mem_used
Metriky JVM jvm.buff_pool_mapped_capacity
Metriky JVM jvm.buff_pool_mapped_count
Metriky JVM jvm.buff_pool_mapped_mem_used
Metriky JVM jvm.mem_pool_code_cache
Metriky JVM jvm.mem_pool_compressed_class_space
Metriky JVM jvm.mem_pool_g1_eden_space
Metriky JVM jvm.mem_pool_g1_old_gen
Metriky JVM jvm.mem_pool_g1_survivor_space
Metriky JVM jvm.mem_pool_metaspace
Metriky JVM jvm.thread_states.new
Metriky JVM jvm.thread_states.waiting
Metriky na úrovni procesoru BytesRead
Metriky na úrovni procesoru BytesWritten
Metriky na úrovni procesoru FlowFilesReceived
Metriky na úrovni procesoru FlowFilesSent

Tady je ukázkový dotaz pro BytesQueued metriku clusteru:

let table_name = nifimetrics_CL;
let metric = "BytesQueued";
table_name
| where Name_s == metric
| where Computer contains {ComputerName}
| project TimeGenerated, Computer, ProcessGroupName_s,  Count_d, Name_s
| summarize sum(Count_d) by bin(TimeGenerated, 1m),  Computer, Name_s
| render timechart 

Tento dotaz vytvoří graf podobný grafu na tomto snímku obrazovky:

Snímek obrazovky spojnicového grafu Řádky zobrazují počet bajtů ve frontě za čtyři hodiny.

Poznámka:

Při spuštění NiFi v Azure nejste omezeni na úlohu generování sestav Log Analytics. NiFi podporuje úlohy vytváření sestav pro mnoho technologií monitorování třetích stran. Seznam podporovaných úloh vytváření sestav najdete v části Úlohy vytváření sestav indexu dokumentace Apache NiFi.

Monitorování infrastruktury NiFi

Kromě úlohy vytváření sestav nainstalujte rozšíření virtuálního počítače Log Analytics na uzly NiFi a ZooKeeper. Toto rozšíření shromažďuje protokoly, další metriky na úrovni virtuálního počítače a metriky z ZooKeeperu.

Vlastní protokoly pro aplikaci NiFi, uživatele, bootstrap a ZooKeeper

Pokud chcete zaznamenat další protokoly, postupujte takto:

  1. Na webu Azure Portal vyberte pracovní prostory služby Log Analytics a pak vyberte svůj pracovní prostor.

  2. V části Nastavení vyberte Vlastní protokoly.

    Snímek obrazovky se stránkou MyWorkspace na webu Azure Portal Nastavení a vlastní protokoly jsou volána.

  3. Vyberte Přidat vlastní protokol.

    Snímek obrazovky se stránkou Vlastní protokoly na webu Azure Portal s vyvolaným přidáním vlastního protokolu

  4. Nastavte vlastní protokol s těmito hodnotami:

    • Název: NiFiAppLogs
    • Typ cesty: Linux
    • Název cesty: /opt/nifi/logs/nifi-app.log

    Snímek obrazovky s oknem NiFi Zobrazí se konfigurační hodnoty vlastního protokolu pro aplikaci NiFi.

  5. Nastavte vlastní protokol s těmito hodnotami:

    • Název: NiFiBootstrapAndUser
    • Typ první cesty: Linux
    • Název první cesty: /opt/nifi/logs/nifi-user.log
    • Typ druhé cesty: Linux
    • Název druhé cesty: /opt/nifi/logs/nifi-bootstrap.log

    Snímek obrazovky s oknem NiFi Hodnoty konfigurace vlastního protokolu pro bootstrap NiFi a uživatele jsou viditelné.

  6. Nastavte vlastní protokol s těmito hodnotami:

    • Název: NiFiZK
    • Typ cesty: Linux
    • Název cesty: /opt/zookeeper/logs/*.out

    Snímek obrazovky s oknem NiFi Zobrazí se hodnoty konfigurace vlastního protokolu pro ZooKeeper.

Tady je ukázkový dotaz NiFiAppLogs vlastní tabulky, kterou vytvořil první příklad:

NiFiAppLogs_CL
| where TimeGenerated > ago(24h)
| where Computer contains {ComputerName} and RawData contains "error"
| limit 10

Tento dotaz vytvoří výsledky podobné následujícím výsledkům:

Snímek obrazovky s výsledky dotazu, které obsahují časové razítko, počítač, nezpracovaná data, typ a I D prostředku

Konfigurace protokolu infrastruktury

Monitorování můžete použít k monitorování a správě virtuálních počítačů nebo fyzických počítačů. Tyto prostředky můžou být ve vašem místním datacentru nebo jiném cloudovém prostředí. Pokud chcete toto monitorování nastavit, nasaďte agenta Log Analytics. Nakonfigurujte agenta tak, aby se hlásil do pracovního prostoru služby Log Analytics. Další informace najdete v tématu Přehled agenta Log Analytics.

Následující snímek obrazovky ukazuje ukázkovou konfiguraci agenta pro virtuální počítače NiFi. Tabulka Perf ukládá shromážděná data.

Snímek obrazovky s oknem Upřesnit nastavení Nabídka Čítače výkonu dat a Linuxu jsou zvýrazněné. Zobrazí se nastavení čítače výkonu.

Tady je ukázkový dotaz na protokoly aplikace Perf NiFi:

let cluster_name = {ComputerName};
// The hourly average of CPU usage across all computers.
Perf
| where Computer contains {ComputerName}
| where CounterName == "% Processor Time" and InstanceName == "_Total"
| where ObjectName == "Processor"
| summarize CPU_Time_Avg = avg(CounterValue) by bin(TimeGenerated, 30m), Computer

Tento dotaz vytvoří sestavu jako na tomto snímku obrazovky:

Snímek obrazovky spojnicového grafu Na řádcích se zobrazuje procento procesoru, které virtuální počítače NiFi používaly za čtyři hodiny.

Výstrahy

Pomocí nástroje Monitor můžete vytvářet výstrahy týkající se stavu a výkonu clusteru NiFi. Mezi ukázkové výstrahy patří:

  • Celkový počet front překročil prahovou hodnotu.
  • Hodnota BytesWritten je pod očekávanou prahovou hodnotou.
  • Hodnota FlowFilesReceived je pod prahovou hodnotou.
  • Cluster není v pořádku.

Další informace o nastavení upozornění ve službě Monitor najdete v tématu Přehled výstrah v Microsoft Azure.

Parametry konfigurace

V následujících částech najdete doporučené, ne výchozí konfigurace pro NiFi a její závislosti, včetně ZooKeeperu a Javy. Tato nastavení jsou vhodná pro velikosti clusterů, které jsou v cloudu možné. Nastavte vlastnosti v následujících konfiguračních souborech:

  • $NIFI_HOME/conf/nifi.properties
  • $NIFI_HOME/conf/bootstrap.conf
  • $ZOOKEEPER_HOME/conf/zoo.cfg
  • $ZOOKEEPER_HOME/bin/zkEnv.sh

Podrobné informace o dostupných vlastnostech konfigurace a souborech naleznete v příručce apache NiFi system Správa istrator a ZooKeeper Správa istrator průvodce.

NiFi

V případě nasazení Azure zvažte úpravu vlastností v $NIFI_HOME/conf/nifi.properties. V následující tabulce jsou uvedeny nejdůležitější vlastnosti. Další doporučení a přehledy najdete v seznamech adresátů Apache NiFi.

Parametr Popis Výchozí Doporučení
nifi.cluster.node.connection.timeout Jak dlouho čekat při otevírání připojení k jiným uzlům clusteru 5 sekund 60 sekund
nifi.cluster.node.read.timeout Jak dlouho čekat na odpověď při vytváření požadavku na jiné uzly clusteru 5 sekund 60 sekund
nifi.cluster.protocol.heartbeat.interval Jak často se prezenční signály posílají zpět do koordinátoru clusteru. 5 sekund 60 sekund
nifi.cluster.node.max.concurrent.requests Jakou úroveň paralelismu použít při replikaci volání HTTP, jako jsou volání rozhraní REST API, do jiných uzlů clusteru. 100 500
nifi.cluster.node.protocol.threads Počáteční velikost fondu vláken pro komunikaci mezi clustery nebo replikovanými komunikacemi 10 50
nifi.cluster.node.protocol.max.threads Maximální počet vláken, která se mají použít pro komunikaci mezi clustery nebo replikovanými komunikacemi. 50 75
nifi.cluster.flow.election.max.candidates Počet uzlů, které se mají použít při rozhodování o aktuálním toku Tato hodnota zkratuje hlas na zadaném čísle. empty 75
nifi.cluster.flow.election.max.wait.time Jak dlouho čekat na uzly, než se rozhodnete, co je aktuální tok. 5 minut 5 minut

Chování clusteru

Při konfiguraci clusterů mějte na paměti následující body.

Timeout

Pokud chcete zajistit celkový stav clusteru a jeho uzlů, může být užitečné zvýšit časové limity. Tento postup pomáhá zaručit, že selhání nezpůsobí přechodné problémy se sítí nebo vysoké zatížení.

V distribuovaném systému se výkon jednotlivých systémů liší. Tato varianta zahrnuje síťovou komunikaci a latenci, která obvykle ovlivňuje komunikaci mezi uzly a mezi clustery. Tato varianta může způsobit síťovou infrastrukturu nebo samotný systém. V důsledku toho je pravděpodobnost variace velmi pravděpodobné ve velkých shlukech systémů. V aplikacích Java, které jsou pod zatížením, můžou pozastavení v uvolňování paměti (GC) ve virtuálním počítači Java (JVM) také ovlivnit dobu odezvy požadavků.

Pomocí vlastností v následujících částech nakonfigurujte časové limity tak, aby vyhovovaly potřebám vašeho systému:

nifi.cluster.node.connection.timeout a nifi.cluster.node.read.timeout

Vlastnost nifi.cluster.node.connection.timeout určuje, jak dlouho se má čekat při otevření připojení. Vlastnost nifi.cluster.node.read.timeout určuje, jak dlouho se má čekat při příjmu dat mezi požadavky. Výchozí hodnota každé vlastnosti je pět sekund. Tyto vlastnosti platí pro požadavky node-to-node. Zvýšení těchto hodnot pomáhá zmírnit několik souvisejících problémů:

  • Odpojení koordinátorem clusteru kvůli přerušení prezenčních signálů
  • Selhání získání toku z koordinátora při připojování ke clusteru
  • Vytvoření komunikace typu site-to-site (S2S) a vyrovnávání zatížení

Pokud váš cluster nemá velmi malou škálovací sadu, například tři uzly nebo méně, použijte hodnoty, které jsou větší než výchozí hodnoty.

nifi.cluster.protocol.heartbeat.interval

V rámci strategie clusteringu NiFi každý uzel vysílá prezenčních signálů, aby komunikovala svůj stav v pořádku. Uzly ve výchozím nastavení odesílají prezenčních signálů každých pět sekund. Pokud koordinátor clusteru zjistí, že selhalo osm prezenčních signálů v řádku z uzlu, odpojí uzel. Zvyšte interval nastavený ve nifi.cluster.protocol.heartbeat.interval vlastnosti, aby se přizpůsobil pomalým prezenčním signálům a zabránil tak zbytečnému odpojení uzlů clusteru.

Souběžnost

Ke konfiguraci nastavení souběžnosti použijte vlastnosti v následujících částech:

nifi.cluster.node.protocol.threads a nifi.cluster.node.protocol.max.threads

Vlastnost nifi.cluster.node.protocol.max.threads určuje maximální počet vláken, která se mají použít pro komunikaci se všemi clustery, jako je vyrovnávání zatížení S2S a agregace uživatelského rozhraní. Výchozí hodnota pro tuto vlastnost je 50 vláken. U velkých clusterů tuto hodnotu zvyšte, abyste zohlednili větší počet požadavků, které tyto operace vyžadují.

Vlastnost nifi.cluster.node.protocol.threads určuje počáteční velikost fondu vláken. Výchozí hodnota je 10 vláken. Tato hodnota je minimálně. Roste podle potřeby až do maximálního nastaveného nifi.cluster.node.protocol.max.threadspočtu . nifi.cluster.node.protocol.threads Zvyšte hodnotu pro clustery, které při spuštění používají velkou škálovací sadu.

nifi.cluster.node.max.concurrent.requests

Mnoho požadavků HTTP, jako jsou volání rozhraní REST API a volání uživatelského rozhraní, je potřeba replikovat do jiných uzlů v clusteru. S rostoucí velikostí clusteru se replikuje rostoucí počet požadavků. Vlastnost nifi.cluster.node.max.concurrent.requests omezuje počet nevyřízených požadavků. Jeho hodnota by měla překročit očekávanou velikost clusteru. Výchozí hodnota je 100 souběžných požadavků. Pokud nepoužíváte malý cluster se třemi nebo méně uzly, zabráníte neúspěšným požadavkům zvýšením této hodnoty.

Volba toku

Ke konfiguraci nastavení voleb toku použijte vlastnosti v následujících částech:

nifi.cluster.flow.election.max.candidates

NiFi používá clustering s nulovou vodicí sadou, což znamená, že neexistuje jeden konkrétní autoritativní uzel. V důsledku toho uzly hlasují o tom, která definice toku se počítá jako správná. Hlasují také o tom, které uzly se připojí ke clusteru.

Ve výchozím nastavení je vlastnost nifi.cluster.flow.election.max.candidates maximální doba čekání, kterou nifi.cluster.flow.election.max.wait.time vlastnost určuje. Pokud je tato hodnota příliš vysoká, může být spuštění pomalé. Výchozí hodnota nifi.cluster.flow.election.max.wait.time je pět minut. Nastavte maximální počet kandidátů na neprázdnou hodnotu, například 1 nebo větší, abyste zajistili, že čekání nebude delší, než je potřeba. Pokud nastavíte tuto vlastnost, přiřaďte jí hodnotu odpovídající velikosti clusteru nebo část většiny očekávané velikosti clusteru. U malých statických clusterů s 10 nebo méně uzly nastavte tuto hodnotu na počet uzlů v clusteru.

nifi.cluster.flow.election.max.wait.time

V elastickém cloudovém prostředí má čas zřizování hostitelů vliv na dobu spuštění aplikace. Vlastnost nifi.cluster.flow.election.max.wait.time určuje, jak dlouho NiFi čeká před rozhodnutím o toku. Nastavte tuto hodnotu tak, aby odpovídala celkové době spuštění clusteru ve své počáteční velikosti. Při počátečním testování je pět minut ve všech oblastech Azure s doporučenými typy instancí vyšší než odpovídající. Tuto hodnotu ale můžete zvýšit, pokud doba, po kterou se má pravidelně zřizovat, překročí výchozí hodnotu.

Java

Doporučujeme použít verzi LTS javy. Z těchto verzí je Java 11 mírně vhodnější než Java 8, protože Java 11 podporuje rychlejší implementaci uvolňování paměti. Pomocí některé verze je ale možné mít vysoce výkonné nasazení NiFi.

V následujících částech najdete informace o běžných konfiguracích prostředí JVM, které se mají použít při spuštění Rozhraní NiFi. Nastavte parametry JVM v konfiguračním souboru bootstrap na adrese $NIFI_HOME/conf/bootstrap.conf.

Uvolňování paměti

Pokud používáte Javu 11, ve většině situací doporučujeme použít uvolňování paměti G1 (G1GC). G1GC má lepší výkon oproti ParallelGC, protože G1GC snižuje délku pozastavení GC. G1GC je výchozí v Javě 11, ale můžete ho nakonfigurovat explicitně nastavením následující hodnoty v bootstrap.conf:

java.arg.13=-XX:+UseG1GC

Pokud používáte Javu 8, nepoužívejte G1GC. Místo toho použijte ParallelGC. V implementaci G1GC v Javě 8 dochází k nedostatkům, které vám brání v jeho používání s doporučenými implementacemi úložiště. ParallelGC je pomalejší než G1GC. Ale s ParallelGC můžete stále mít vysoce výkonné nasazení NiFi s Javou 8.

Halda

Sada vlastností v bootstrap.conf souboru určuje konfiguraci haldy NiFi JVM. Pro standardní tok nakonfigurujte haldu o velikosti 32 GB pomocí těchto nastavení:

java.arg.3=-Xmx32g
java.arg.2=-Xms32g

Pokud chcete zvolit optimální velikost haldy, která se má použít pro proces JVM, zvažte dva faktory:

  • Charakteristiky toku dat
  • Způsob, jakým NiFi používá paměť při zpracování

Podrobnou dokumentaci najdete v podrobné dokumentaci k Apache NiFi.

Haldu nastavte tak velké, jak je potřeba, aby splňovala požadavky na zpracování. Tento přístup minimalizuje délku pozastavení GC. Obecné informace o uvolňování paměti Jazyka Java najdete v průvodci laděním uvolňování paměti pro vaši verzi Javy.

Při úpravě nastavení paměti prostředí JVM zvažte tyto důležité faktory:

  • Počet datových záznamů FlowFiles nebo NiFi, které jsou v daném období aktivní. Toto číslo zahrnuje back-pressured nebo queued FlowFiles.

  • Počet atributů, které jsou definovány v FlowFiles.

  • Velikost paměti, kterou procesor vyžaduje ke zpracování konkrétní části obsahu.

  • Způsob, jakým zpracovatel zpracovává data:

    • Streamování dat
    • Použití procesorů orientovaných na záznamy
    • Uchovávání všech dat v paměti najednou

Tyto podrobnosti jsou důležité. Během zpracování obsahuje NiFi odkazy a atributy pro každý FlowFile v paměti. Ve špičce výkonu je množství paměti, kterou systém používá, úměrné počtu živých flowFiles a všem atributům, které obsahují. Toto číslo zahrnuje soubory FlowFile ve frontě. NiFi se může prohodit na disk. Ale vyhněte se této možnosti, protože to snižuje výkon.

Mějte také na paměti základní využití paměti objektu. Konkrétně z velké haldy nadržte objekty v paměti. Zvažte tyto tipy pro konfiguraci nastavení paměti:

  • Spusťte tok se reprezentativními daty a minimálním zpětným tlakem tím, že začnete s nastavením -Xmx4G a pak podle potřeby zvýšíte paměť.
  • Spusťte tok s reprezentativními daty a tlakem ve špičce tím, že začnete s nastavením -Xmx4G a pak podle potřeby zvětšujete velikost clusteru.
  • Profilujte aplikaci, zatímco tok běží, pomocí nástrojů, jako jsou VisualVM a YourKit.
  • Pokud konzervativní nárůst haldy výrazně nezlepší výkon, zvažte změnu návrhu toků, procesorů a dalších aspektů systému.
Další parametry prostředí JVM

Následující tabulka uvádí další možnosti prostředí JVM. Poskytuje také hodnoty, které při počátečním testování fungovaly nejlépe. Testy zaznamenaly aktivitu GC a využití paměti a použily pečlivé profilace.

Parametr Popis Výchozí prostředí JVM Doporučení
InitiatingHeapOccupancyPercent Množství haldy, která se používá před aktivací cyklu označení 45 35
ParallelGCThreads Počet vláken, která GC používá. Tato hodnota je omezena, aby se omezil celkový účinek na systém. 5/8 počtu vCPU 8
ConcGCThreads Počet vláken GC, která se mají spustit paralelně. Tato hodnota se zvýší, aby se zohlednila omezení ParallelGCThreads. 1/4 hodnoty ParallelGCThreads 4
G1ReservePercent Procento rezervované paměti, které chcete zachovat volné. Tato hodnota se zvyšuje, aby nedocházelo k vyčerpání prostoru, což pomáhá vyhnout se úplnému uvolňování paměti. 10 20
UseStringDeduplication Zda se chcete pokusit identifikovat a zrušit duplicitní odkazy na identické řetězce. Zapnutí této funkce může vést k úsporám paměti. - Přítomen

Nakonfigurujte tato nastavení přidáním následujících položek do NiFi bootstrap.conf:

java.arg.17=-XX:+UseStringDeduplication
java.arg.18=-XX:G1ReservePercent=20
java.arg.19=-XX:ParallelGCThreads=8
java.arg.20=-XX:ConcGCThreads=4
java.arg.21=-XX:InitiatingHeapOccupancyPercent=35

ZooKeeper

Pokud chcete zlepšit odolnost proti chybám, spusťte ZooKeeper jako cluster. Tento přístup vezměte i v případě, že většina nasazení NiFi představuje relativně skromné zatížení ZooKeeperu. Zapněte clustering pro ZooKeeper explicitně. Ve výchozím nastavení se ZooKeeper spouští v režimu s jedním serverem. Podrobné informace naleznete v části Nastavení clusteru (multi-server) v příručce zooKeeper Správa istrator.

S výjimkou nastavení clusteringu použijte výchozí hodnoty pro konfiguraci ZooKeeper.

Pokud máte velký cluster NiFi, možná budete muset použít větší počet serverů ZooKeeper. Pro menší velikosti clusterů stačí menší velikosti virtuálních počítačů a spravované disky SSD úrovně Standard.

Přispěvatelé

Tento článek spravuje Microsoft. Původně byla napsána následujícími přispěvateli.

Hlavní autor:

Pokud chcete zobrazit neveřejné profily LinkedIn, přihlaste se na LinkedIn.

Další kroky

Materiály a doporučení v tomto dokumentu pocházejí z několika zdrojů:

  • Experimentování
  • Osvědčené postupy Azure
  • Znalost komunity NiFi, osvědčené postupy a dokumentace

Další informace naleznete v následujících zdrojích: