Szerkesztés

Megosztás a következőn keresztül:


Apache NiFi az Azure-ban

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

Figyelemfelhívás

Ez a cikk a CentOS-ra, egy olyan Linux-disztribúcióra hivatkozik, amely közel áll az élettartam (EOL) állapotához. Fontolja meg a használatát, és ennek megfelelően tervezze meg. További információ: CentOS End Of Life útmutató.

Ez a példaforgatókönyv bemutatja, hogyan futtathatja az Apache NiFi-t az Azure-ban. A NiFi az adatok feldolgozására és terjesztésére szolgáló rendszert biztosít.

Az Apache®, az Apache NiFi® és a NiFi® az Apache Software Foundation bejegyzett védjegye vagy védjegye a Egyesült Államok és/vagy más országokban. Az Apache Software Foundation nem támogatja ezeket a jeleket.

Architektúra

Az Apache NiFi-t és az Apache ZooKeepert használó Azure-megoldáson keresztüli automatizált adatáramlást bemutató architektúradiagram.

Töltse le az architektúra Visio-fájlját.

Munkafolyamat

  • A NiFi-alkalmazás NiFi-fürtcsomópontokban lévő virtuális gépeken fut. A virtuális gépek egy virtuálisgép-méretezési csoportban találhatók, amelyet a konfiguráció a rendelkezésre állási zónák között helyez üzembe.

  • Az Apache ZooKeeper egy külön fürtben lévő virtuális gépeken fut. A NiFi a ZooKeeper-fürtöt használja a következő célokra:

    • Fürtkoordinátor-csomópont kiválasztása
    • Az adatáramlás koordinálása
  • Azure-alkalmazás Gateway 7. rétegbeli terheléselosztást biztosít a NiFi-csomópontokon futó felhasználói felület számára.

  • A Monitor és a Log Analytics szolgáltatása a NiFi rendszer telemetriai adatainak gyűjtésére, elemzésére és kezelésére szolgál. A telemetriai adatok közé tartoznak a NiFi rendszernaplók, a rendszerállapot-metrikák és a teljesítménymetrikák.

  • Az Azure Key Vault biztonságosan tárolja a NiFi-fürt tanúsítványait és kulcsait.

  • A Microsoft Entra ID egyszeri bejelentkezést (SSO) és többtényezős hitelesítést biztosít.

Összetevők

  • A NiFi az adatok feldolgozására és terjesztésére szolgáló rendszert biztosít.
  • A ZooKeeper egy nyílt forráskódú kiszolgáló, amely elosztott rendszereket kezel.
  • A Virtuális gépek szolgáltatásként (IaaS) nyújtott infrastruktúra-ajánlat. A virtuális gépek használatával igény szerinti, méretezhető számítási erőforrásokat helyezhet üzembe. A virtuális gépek biztosítják a virtualizálás rugalmasságát, de kiküszöbölik a fizikai hardverek karbantartási igényeit.
  • Az Azure-beli virtuálisgép-méretezési csoportok lehetővé teszik a terheléselosztásos virtuális gépek egy csoportjának kezelését. A készletben lévő virtuálisgép-példányok száma automatikusan növekedhet vagy csökkenhet az igényeknek vagy egy meghatározott ütemezésnek megfelelően.
  • A rendelkezésre állási zónák egyedi fizikai helyek egy Azure-régión belül. Ezek a magas rendelkezésre állású ajánlatok védik az alkalmazásokat és az adatokat az adatközpont hibáitól.
  • Az Application Gateway egy terheléselosztó, amely kezeli a webalkalmazások felé irányuló forgalmat.
  • A Monitor adatokat gyűjt és elemez a környezetekről és az Azure-erőforrásokról. Ezek az adatok alkalmazástelemetria, például teljesítménymetrikák és tevékenységnaplók. További információkért tekintse meg a jelen cikk későbbi, figyelési szempontjait .
  • A Log Analytics egy Azure Portal-eszköz, amely lekérdezéseket futtat a Naplóadatok monitorozása szolgáltatásban. A Log Analytics emellett a lekérdezési eredmények diagramkészítéséhez és statisztikai elemzéséhez is kínál funkciókat.
  • Az Azure DevOps Services szolgáltatásokat, eszközöket és környezeteket biztosít a kódolási projektek és üzembe helyezések kezeléséhez.
  • A Key Vault biztonságosan tárolja és szabályozza a rendszer titkos kulcsainak elérését, például API-kulcsokat, jelszavakat, tanúsítványokat és titkosítási kulcsokat.
  • A Microsoft Entra ID egy felhőalapú identitásszolgáltatás, amely szabályozza az Azure-hoz és más felhőalkalmazásokhoz való hozzáférést.

Alternatívák

Forgatókönyv részletei

Ebben a forgatókönyvben a NiFi fürtözött konfigurációban fut az Azure-beli virtuális gépeken egy méretezési csoportban. A cikk ajánlásainak többsége azonban azokra a forgatókönyvekre is vonatkozik, amelyek egyetlen virtuális gépen (virtuális gépen) futtatják a NiFi-t egypéldányos módban. A cikkben ismertetett ajánlott eljárások skálázható, magas rendelkezésre állású és biztonságos üzembe helyezést mutatnak be.

Lehetséges használati esetek

A NiFi jól működik az adatok áthelyezéséhez és az adatáramlás kezeléséhez:

  • Csatlakozás leválasztott rendszerek a felhőben
  • Adatok áthelyezése az Azure Storage-ban és más adattárakban
  • Peremhálózati és hibridfelhős alkalmazások integrálása az Azure IoT, az Azure Stack és az Azure Kubernetes Service (AKS) használatával

Ennek eredményeképpen ez a megoldás számos területre vonatkozik:

  • A modern adattárházak (MDW-k) nagy méretekben egyesítik a strukturált és strukturálatlan adatokat. Különböző forrásokból, fogadókból és formátumokból származó adatokat gyűjtenek és tárolnak. A NiFi az alábbi okokból kiválóan alkalmas az adatok Azure-alapú MDW-kbe való betöltésére:

    • Több mint 200 processzor áll rendelkezésre az adatok olvasásához, írásához és kezeléséhez.
    • A rendszer olyan tárolási szolgáltatásokat támogat, mint az Azure Blob Storage, az Azure Data Lake Storage, az Azure Event Hubs, az Azure Queue Storage, az Azure Cosmos DB és az Azure Synapse Analytics.
    • A robusztus adatelőtűnési képességek lehetővé teszik a megfelelő megoldások implementálását. Az Azure Monitor Log Analytics szolgáltatásában az adatok eredetének rögzítéséről a jelen cikk későbbi, jelentéskészítési szempontjait ismertető cikkben olvashat.
  • A NiFi önállóan futtatható kis méretű eszközökön. Ilyen esetekben a NiFi lehetővé teszi a peremhálózati adatok feldolgozását és az adatok nagyobb NiFi-példányokra vagy -fürtökre való áthelyezését a felhőben. A NiFi segít a peremhálózati adatok mozgásban történő szűrésében, átalakításában és rangsorolásában, biztosítva a megbízható és hatékony adatfolyamokat.

  • Az ipari IoT-megoldások (IIoT) kezelik az adatok áramlását a peremhálózatról az adatközpontba. Ez a folyamat az ipari vezérlőrendszerek és berendezések adatgyűjtésével kezdődik. Az adatok ezután az adatkezelési megoldásokra és az MDW-kre kerülnek. A NiFi olyan képességeket kínál, amelyek kiválóan alkalmasak az adatbeszerzésre és az adatáthelyezésre:

    • Edge-adatfeldolgozási funkciók
    • Az IoT-átjárók és -eszközök által használt protokollok támogatása
    • Integráció az Event Hubs- és Storage-szolgáltatásokkal

    Az IoT-alkalmazások a prediktív karbantartás és az ellátási lánc kezelése területén kihasználhatják ezt a funkciót.

Ajánlások

A megoldás használatakor tartsa szem előtt az alábbi szempontokat:

Ha ezt a megoldást az Azure-ban futtatja, javasoljuk, hogy a NiFi 1.13.2+-os verzióját használja. Futtathat más verziókat is, de előfordulhat, hogy az útmutatóban szereplő konfigurációktól eltérő konfigurációt igényelnek.

A NiFi Azure-beli virtuális gépekre való telepítéséhez a legjobb, ha letölti a NiFi letöltési oldaláról a kényelmes bináris fájlokat. A bináris fájlokat a forráskódból is létrehozhatja.

Ebben a példában a ZooKeeper 3.5.5-ös és újabb vagy 3.6.x-ös verzióit javasoljuk.

A ZooKeepert az Azure-beli virtuális gépekre hivatalos bináris fájlok vagy forráskód használatával telepítheti. Mindkettő elérhető az Apache ZooKeeper kiadási oldalán.

Megfontolások

Ezek a szempontok implementálják az Azure Well-Architected Framework alappilléreit, amely a számítási feladatok minőségének javítására használható vezérelvek halmaza. További információ: Microsoft Azure Well-Architected Framework.

A NiFi konfigurálásáról további információt az Apache NiFi System Rendszergazda istrator útmutatójában talál. A megoldás megvalósításakor vegye figyelembe ezeket a szempontokat is.

Költségoptimalizálás

A költségoptimalizálás a szükségtelen kiadások csökkentésének és a működési hatékonyság javításának módjairól szól. További információ: A költségoptimalizálási pillér áttekintése.

  • Az Azure Díjkalkulátor használatával megbecsüli az architektúra erőforrásainak költségeit.
  • Az egyéni riasztási megoldás kivételével az architektúra összes szolgáltatását magában foglaló becsléshez tekintse meg ezt a minta költségprofilt.

A virtuális gépekkel kapcsolatos szempontok

A következő szakaszok részletesen ismertetik a NiFi virtuális gépek konfigurálásának módját:

Virtuális gép mérete

Ez a táblázat az ajánlott virtuálisgép-méreteket sorolja fel. A legtöbb általános célú adatfolyam esetében a Standard_D16s_v3 a legjobb. A NiFi minden adatfolyamának azonban különböző követelményei vannak. Tesztelje a folyamatot, és szükség szerint méretezze át a folyamatot a folyamat tényleges követelményei alapján.

Fontolja meg a gyorsított hálózatkezelés engedélyezését a virtuális gépeken a hálózati teljesítmény növelése érdekében. További információ: Hálózatkezelés azure-beli virtuálisgép-méretezési csoportokhoz.

Virtuális gép mérete vCPU Memória GB-ban A nem gyorsítótárazott adatlemez átviteli sebességének maximális száma másodpercenkénti I/O-műveletekben (IOPS) MBps-enként* Hálózati adapterek maximális száma (hálózati adapterek) / Várható hálózati sávszélesség (Mbps)
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

* Tiltsa le az adatlemez írási gyorsítótárazását a NiFi-csomópontokon használt összes adatlemez esetében.

** Ezt a termékváltozatot a legtöbb általános célú adatfolyam esetében javasoljuk. A hasonló vCPU-val és memóriakonfigurációkkal rendelkező Azure-beli virtuálisgép-termékváltozatoknak is megfelelőnek kell lenniük.

Virtuálisgép-operációs rendszer (OS)

Javasoljuk, hogy futtassa a NiFi-t az Azure-ban a következő vendég operációs rendszerek egyikén:

  • Ubuntu 18.04 LTS vagy újabb
  • CentOS 7.9

Az adatfolyam adott követelményeinek való megfelelés érdekében fontos, hogy több operációsrendszer-szintű beállítást módosítsa, többek között az alábbiakat:

  • Elágazásos folyamatok maximális száma.
  • Maximális fájlleírók.
  • A hozzáférési idő, atime.

Miután az operációs rendszert a várt használati esetnek megfelelően módosította, az Azure VM Image Builder használatával kodifikálnia kell a hangolt rendszerképek generációját. A NiFi-re vonatkozó útmutatásért tekintse meg az Apache NiFi System Rendszergazda istrator útmutatójának konfigurációs ajánlott eljárásait.

Tárolás

A különböző NiFi-adattárakat az adatlemezeken tárolja, és nem az operációsrendszer-lemezen három fő okból:

  • A folyamatok gyakran magas lemezteljesítmény-követelményekkel rendelkeznek, amelyeket egyetlen lemez nem tud teljesíteni.
  • A legjobb, ha elkülöníti a NiFi lemezműveleteket az operációsrendszer-lemezműveletektől.
  • Az adattáraknak nem szabad ideiglenes tárolóban lenniük.

Az alábbi szakaszok az adatlemezek konfigurálásának irányelveit ismertetik. Ezek az irányelvek az Azure-ra vonatkoznak. Az adattárak konfigurálásáról további információt az Apache NiFi System Rendszergazda istrator útmutatójában található Állapotkezelés című témakörben talál.

Adatlemez típusa és mérete

Vegye figyelembe ezeket a tényezőket, amikor konfigurálja a NiFi adatlemezeit:

  • Lemeztípus
  • Lemezméret
  • Lemezek teljes száma

Feljegyzés

A lemeztípusokra, a méretezésre és a díjszabásra vonatkozó naprakész információkért lásd : Bevezetés az Azure által felügyelt lemezek használatába.

Az alábbi táblázat az Azure-ban jelenleg elérhető felügyelt lemezek típusait mutatja be. A NiFi bármely ilyen lemeztípussal használható. A nagy átviteli sebességű adatfolyamok esetében azonban a Prémium SSD-t javasoljuk.

Ultralemez (NVM Express (NVMe)) Prémium SSD Standard SSD Standard HDD
Lemez típusa SSD SSD SSD HDD
Maximális lemezméret 65 536 GB 32 767 GB 32 767 GB 32 767 GB
Maximális átviteli sebesség 2000 MiB/s 900 MiB/s 750 MiB/s 500 MiB/s
Maximális IOPS 160 000 20000 6000 2000

Az adatfolyam átviteli sebességének növeléséhez használjon legalább három adatlemezt. A lemezeken lévő adattárak konfigurálásával kapcsolatos ajánlott eljárásokért lásd a jelen cikk későbbi, adattár-konfigurációját ismertető cikket.

Az alábbi táblázat felsorolja az egyes lemezméretek és -típusok megfelelő méretét és átviteli sebességét.

Standard HDD S15 Standard HDD S20 Standard HDD S30 Standard SSD S15 Standard SSD S20 Standard SSD S30 Prémium SSD P15 Prémium SSD P20 Prémium SSD P30
Lemezméret GB-ban 256 512 1,024 256 512 1,024 256 512 1,024
IOPS lemezenként Legfeljebb 500 Legfeljebb 500 Legfeljebb 500 Legfeljebb 500 Legfeljebb 500 Legfeljebb 500 1100 2300 5000
Átviteli sebesség lemezenként Legfeljebb 60 MBps Legfeljebb 60 MBps Legfeljebb 60 MBps Legfeljebb 60 MBps Legfeljebb 60 MBps Legfeljebb 60 MBps 125 MBps 150 MBps 200 MBps

Ha a rendszer eléri a virtuális gépek korlátait, előfordulhat, hogy több lemez hozzáadása nem növeli az átviteli sebességet:

  • Az IOPS és az átviteli sebesség korlátozása a lemez méretétől függ.
  • A kiválasztott virtuálisgép-méret az összes adatlemezen IOPS-t és átviteli sebességkorlátokat helyez el a virtuális gép számára.

A virtuálisgép-szintű lemez átviteli sebességére vonatkozó korlátozásokért lásd az Azure-beli Linux rendszerű virtuális gépek méreteit.

Virtuálisgép-lemez gyorsítótárazása

Azure-beli virtuális gépeken a Gazdagép gyorsítótárazása funkció kezeli a lemez írási gyorsítótárazását. Az adattárakhoz használt adatlemezek átviteli sebességének növeléséhez kapcsolja ki a lemez írási gyorsítótárazását a gazdagép gyorsítótárazásának Nonebeállításával.

Adattár konfigurációja

A NiFi ajánlott eljárásának irányelvei az, hogy mindegyik adattárhoz külön lemezt vagy lemezt kell használni:

  • Tartalom
  • FlowFile
  • Eredete

Ehhez a megközelítéshez legalább három lemezre van szükség.

A NiFi az alkalmazásszintű csíkozást is támogatja. Ez a funkció növeli az adattárházak méretét vagy teljesítményét.

Az alábbi részlet a nifi.properties konfigurációs fájlból származik. Ez a konfiguráció particionálja és leválasztja az adattárakat a virtuális gépekhez csatlakoztatott felügyelt lemezek között:

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

A nagy teljesítményű tárolók tervezésével kapcsolatos további információkért lásd : Azure Premium Storage: design for high performance.

Jelentéskészítés

A NiFi tartalmaz egy eredetjelentési feladatot a Log Analytics szolgáltatáshoz.

Ezzel a jelentéskészítési feladatsal kioszthatja a származási eseményeket a költséghatékony, tartós hosszú távú tároláshoz. A Log Analytics szolgáltatás lekérdezési felületet biztosít az egyes események megtekintéséhez és grafikonozásához. Ezekről a lekérdezésekkel kapcsolatos további információkért tekintse meg a cikk későbbi részében található Log Analytics-lekérdezéseket .

Ezt a feladatot a memórián belüli, változó forrástárral is használhatja. Ezt követően számos esetben növelheti az átviteli sebességet. Ez a megközelítés azonban kockázatos, ha meg kell őriznie az eseményadatokat. Győződjön meg arról, hogy az illékony tárolás megfelel a származási események tartóssági követelményeinek. További információ: Provenance Repository in the Apache NiFi System Rendszergazda istrator's Guide.

A folyamat használata előtt hozzon létre egy log analytics-munkaterületet az Azure-előfizetésében. A legjobb, ha a munkaterületet ugyanabban a régióban állítja be, mint a számítási feladat.

Az eredetjelentési feladat konfigurálása:

  1. Nyissa meg a vezérlő beállításait a NiFi-ben.
  2. Válassza a jelentéskészítési feladatok menüt.
  3. Válassza az Új jelentéskészítési feladat létrehozása lehetőséget.
  4. Válassza az Azure Log Analytics jelentéskészítési feladatát.

Az alábbi képernyőkép a jelentéskészítési feladat tulajdonságok menüjét mutatja be:

Képernyőkép a NiFi Jelentéskészítési feladat konfigurálása ablakról. A Tulajdonságok menü látható. Felsorolja a Log Analytics-beállítások értékeit.

Két tulajdonság szükséges:

  • A Log Analytics-munkaterület azonosítója
  • A Log Analytics-munkaterület kulcsa

Ezeket az értékeket az Azure Portalon találja a Log Analytics-munkaterületre való navigálással.

A rendszer által küldött eredetesemények testreszabására és szűrésére más lehetőségek is rendelkezésre állnak.

Biztonság

A biztonság biztosítékokat nyújt a szándékos támadások és az értékes adatokkal és rendszerekkel való visszaélés ellen. További információ: A biztonsági pillér áttekintése.

A NiFi-t hitelesítési és engedélyezési szempontból is biztonságossá teheti. A NiFi-t az összes hálózati kommunikációhoz is biztonságossá teheti, beleértve a következőket:

  • A fürtben.
  • A fürt és a ZooKeeper között.

A következő beállítások bekapcsolásával kapcsolatos útmutatásért tekintse meg az Apache NiFi Rendszergazda istrators útmutatót:

  • Kerberos
  • Lightweight Directory Access Protocol (LDAP)
  • Tanúsítványalapú hitelesítés és engedélyezés
  • Kétirányú biztonságos szoftvercsatornák rétege (SSL) fürtkommunikációhoz

Ha bekapcsolja a ZooKeeper biztonságos ügyfélhozzáférést, konfigurálja a NiFi-t a konfigurációs fájlhoz kapcsolódó tulajdonságok bootstrap.conf hozzáadásával. A következő konfigurációs bejegyzések egy példát mutatnak be:

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]

Általános javaslatokért tekintse meg a Linux biztonsági alapkonfigurációit.

Hálózati biztonság

A megoldás megvalósításakor tartsa szem előtt a hálózati biztonsággal kapcsolatos alábbi szempontokat:

Hálózati biztonsági csoportok

Az Azure-ban hálózati biztonsági csoportokkal korlátozhatja a hálózati forgalmat.

Javasoljuk, hogy rendszergazdai feladatokhoz használjon jumpboxot a NiFi-fürthöz való csatlakozáshoz. Használja ezt a biztonság által megerősített virtuális gépet igény szerinti (JIT) hozzáféréssel vagy az Azure Bastion használatával. Állítsa be a hálózati biztonsági csoportokat a jumpboxhoz vagy az Azure Bastionhoz való hozzáférés engedélyezésének szabályozásához. A hálózatelkülönítést és -vezérlést az architektúra különböző alhálózataihoz tartozó hálózati biztonsági csoportok használatával érheti el.

Az alábbi képernyőkép egy tipikus virtuális hálózat összetevőit mutatja be. A jumpbox, a virtuálisgép-méretezési csoport és a ZooKeeper virtuális gépek közös alhálózatát tartalmazza. Ez az egyszerűsített hálózati topológia egy alhálózatba csoportosítja az összetevőket. Kövesse a szervezet feladatainak elkülönítésére és a hálózat kialakítására vonatkozó irányelveit.

Képernyőkép a virtuális hálózat összetevőinek eszközeit, típusait és alhálózatait felsoroló táblázatról.

Kimenő internet-hozzáférési szempontok

Az Azure-beli NiFi-nek nem kell hozzáférnie a nyilvános internethez a futtatáshoz. Ha az adatfolyamnak nincs szüksége internet-hozzáférésre az adatok lekéréséhez, javítsa a fürt biztonságát az alábbi lépések végrehajtásával a kimenő internet-hozzáférés letiltásához:

  1. Hozzon létre egy további hálózati biztonsági csoportszabályt a virtuális hálózaton.

  2. Használja ezeket a beállításokat:

    • Forrás: Any
    • Cél: Internet
    • Akció: Deny

Képernyőkép a kimenő biztonsági szabályok beállításairól, például a prioritásról, a névről, a portról, a protokollról, a forrásról, a célról és a műveletről.

Ezzel a szabálysal továbbra is hozzáférhet néhány Azure-szolgáltatáshoz az adatfolyamból, ha privát végpontot konfigurál a virtuális hálózaton. Ehhez használja az Azure Private Linket . Ez a szolgáltatás lehetővé teszi, hogy a forgalom a Microsoft gerinchálózatán haladjon, miközben semmilyen más külső hálózati hozzáférést nem igényel. A NiFi jelenleg a Private Linket támogatja a Blob Storage és a Data Lake Storage processzorokhoz. Ha a hálózati idő protokoll (NTP) kiszolgáló nem érhető el a magánhálózaton, engedélyezze az NTP-hez való kimenő hozzáférést. Részletes információkért lásd az Azure-beli Linux rendszerű virtuális gépek időszinkronizálását.

Adatvédelem

A NiFi nem biztonságos, vezetékes titkosítás, identitás- és hozzáférés-kezelés (IAM) vagy adattitkosítás nélkül is működtethető. A legjobb azonban az éles és nyilvános felhőbeli üzemelő példányok védelme az alábbi módokon:

  • Kommunikáció titkosítása a Transport Layer Security (TLS) használatával
  • Támogatott hitelesítési és engedélyezési mechanizmus használata
  • Az inaktív adatok titkosítása

Az Azure Storage kiszolgálóoldali transzparens adattitkosítást biztosít. Az 1.13.2-es kiadástól kezdve azonban a NiFi alapértelmezés szerint nem konfigurálja a vezetékes titkosítást vagy az IAM-t. Ez a viselkedés a jövőbeli kiadásokban változhat.

Az alábbi szakaszok bemutatják, hogyan lehet biztonságossá tenni az üzemelő példányokat az alábbi módokon:

  • Vezetéktitkosítás engedélyezése TLS használatával
  • Tanúsítványokon vagy Microsoft Entra-azonosítón alapuló hitelesítés konfigurálása
  • Titkosított tárolás kezelése az Azure-ban
Disk encryption (Lemeztitkosítás)

A biztonság javítása érdekében használja az Azure-lemeztitkosítást. Részletes eljárásért lásd : Operációs rendszer és csatolt adatlemezek titkosítása egy virtuálisgép-méretezési csoportban az Azure CLI-vel. Ez a dokumentum a saját titkosítási kulcs megadására vonatkozó utasításokat is tartalmaz. Az alábbi lépések egy alapvető példát mutatnak be a legtöbb üzembe helyezéshez használható NiFi-hez:

  1. Ha egy meglévő Key Vault-példány lemeztitkosítását szeretné bekapcsolni, használja a következő Azure CLI-parancsot:

    az keyvault create --resource-group myResourceGroup --name myKeyVaultName --enabled-for-disk-encryption
    
  2. Kapcsolja be a virtuálisgép-méretezési csoport adatlemezeinek titkosítását az alábbi paranccsal:

    az vmss encryption enable --resource-group myResourceGroup --name myScaleSet --disk-encryption-keyvault myKeyVaultID --volume-type DATA
    
  3. Szükség esetén használhat kulcstitkosítási kulcsot (KEK). A következő Azure CLI-paranccsal titkosíthat egy KEK-t:

    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
    
    

Feljegyzés

Ha a virtuálisgép-méretezési csoportot manuális frissítési módra konfigurálta, futtassa a update-instances parancsot. Adja meg a Key Vaultban tárolt titkosítási kulcs verzióját.

Titkosítás az átvitel során

A NiFi támogatja a TLS 1.2-t az átvitel közbeni titkosításhoz. Ez a protokoll védelmet nyújt a felhasználói felülethez való hozzáféréshez. Fürtök esetén a protokoll védi a NiFi-csomópontok közötti kommunikációt. A ZooKeeperrel való kommunikációt is képes védeni. A TLS engedélyezésekor a NiFi kölcsönös TLS-t (mTLS) használ a kölcsönös hitelesítéshez a következő esetekben:

  • Tanúsítványalapú ügyfélhitelesítés, ha ezt a hitelesítési típust konfigurálta.
  • Minden intracluster kommunikáció.

A TLS engedélyezéséhez hajtsa végre a következő lépéseket:

  1. Hozzon létre egy kulcstárat és egy megbízhatósági tárolót az ügyfél–kiszolgáló, valamint az intracluster kommunikációhoz és hitelesítéshez.

  2. Konfigurálás $NIFI_HOME/conf/nifi.properties. Adja meg az alábbi értékeket:

    • Gazdagépnevek
    • Portok
    • Keystore-tulajdonságok
    • Truststore-tulajdonságok
    • A fürt és a ZooKeeper biztonsági tulajdonságai, ha vannak
  3. A hitelesítés $NIFI_HOME/conf/authorizers.xmlkonfigurálása általában olyan kezdeti felhasználóval, aki tanúsítványalapú hitelesítéssel vagy más lehetőséggel rendelkezik.

  4. Igény szerint konfigurálhatja az mTLS-t és a proxy olvasási szabályzatát a NiFi és bármely proxy, terheléselosztó vagy külső végpont között.

A teljes útmutatót az Apache projektdokumentációjában, a NiFi és a TLS biztonságossá tételében találja.

Feljegyzés

Az 1.13.2-es verziótól:

  • A NiFi alapértelmezés szerint nem engedélyezi a TLS-t.
  • A TLS-kompatibilis NiFi-példányok névtelen és egyfelhasználós hozzáféréséhez nincs beépített támogatás.

Ha engedélyezni szeretné a TLS-t az átvitel közbeni titkosításhoz, konfiguráljon egy felhasználói csoportot és házirend-szolgáltatót a hitelesítéshez és az engedélyezéshez a következő helyen $NIFI_HOME/conf/authorizers.xml: . További információ: Identitás és hozzáférés-vezérlés a cikk későbbi részében.

Tanúsítványok, kulcsok és kulcstárak

A TLS támogatásához hozzon létre tanúsítványokat, tárolja őket a Java KeyStore-ban és az TrustStore-ban, és ossza el őket egy NiFi-fürtön. A tanúsítványoknak két általános lehetősége van:

  • Önaláírt tanúsítványok
  • Tanúsítványok, amelyeket a hitelesített hatóságok (CA-k) aláírnak

Hitelesítésszolgáltató által aláírt tanúsítványok esetén a legjobb, ha köztes hitelesítésszolgáltatót használ a fürt csomópontjaihoz tartozó tanúsítványok létrehozásához.

A KeyStore és a TrustStore a Java-platform kulcs- és tanúsítványtárolói. A KeyStore egy csomópont titkos kulcsát és tanúsítványát tárolja a fürtben. Az TrustStore a következő tanúsítványok egyikét tárolja:

  • A KeyStore önaláírt tanúsítványainak összes megbízható tanúsítványa
  • Hitelesítésszolgáltatótól származó tanúsítvány, hitelesítésszolgáltató által aláírt tanúsítványokhoz a KeyStore-ban

A tároló kiválasztásakor tartsa szem előtt a NiFi-fürt méretezhetőségét. Előfordulhat például, hogy a jövőben növelni vagy csökkenteni szeretné egy fürt csomópontjainak számát. Válassza ki a KeyStore-ban a hitelesítésszolgáltató által aláírt tanúsítványokat, és ebben az esetben egy vagy több tanúsítványt egy megbízható hitelesítésszolgáltatótól az TrustStore-ban. Ezzel a beállítással nem szükséges frissíteni a fürt meglévő csomópontjaiban található meglévő TrustStore-t. Egy meglévő TrustStore megbízik az ilyen típusú csomópontokon, és elfogadja a tanúsítványokat:

  • A fürthöz hozzáadott csomópontok
  • A fürt más csomópontjait lecserélő csomópontok
NiFi-konfiguráció

A TLS NiFi-hez való engedélyezéséhez konfigurálja $NIFI_HOME/conf/nifi.properties a táblázatban szereplő tulajdonságokat. Győződjön meg arról, hogy a következő tulajdonságok tartalmazzák a NiFi eléréséhez használt állomásnevet:

  • nifi.web.https.host vagy nifi.web.proxy.host
  • A gazdatanúsítvány kijelölt neve vagy tulajdonos alternatív neve

Ellenkező esetben a gazdagépnév-ellenőrzési hiba vagy a HTTP GAZDAGÉP fejlécének ellenőrzése meghiúsulhat, ami megtagadja a hozzáférést.

Tulajdonság neve Leírás Példaértékek
nifi.web.https.host A felhasználói felülethez és a REST API-hoz használandó állomásnév vagy IP-cím. Ennek az értéknek belsőleg feloldhatónak kell lennie. Javasoljuk, hogy ne használjon nyilvánosan elérhető nevet. nifi.internal.cloudapp.net
nifi.web.https.port A felhasználói felülethez és a REST API-hoz használandó HTTPS-port. 9443 (alapértelmezett)
nifi.web.proxy.host Az ügyfelek által a felhasználói felülethez és a REST API-hoz való hozzáféréshez használt alternatív gazdagépnevek vesszővel tagolt listája. Ez a lista általában tartalmazza a kiszolgálótanúsítvány tulajdonos alternatív neveként (SAN) megadott gazdagépneveket. A lista tartalmazhat minden olyan gazdagépnevet és portot is, amelyet a terheléselosztó, a proxy vagy a Kubernetes bejövőforgalom-vezérlő használ. 40.67.218.235, 40.67.218.235:443, nifi.westus2.cloudapp.com, nifi.westus2.cloudapp.com:443
nifi.security.keystore A tanúsítvány titkos kulcsát tartalmazó JKS- vagy PKCS12-kulcstár elérési útja. ./conf/keystore.jks
nifi.security.keystoreType A kulcstár típusa. JKS vagy PKCS12
nifi.security.keystorePasswd A keystore jelszava. O8SitLBYpCz7g/RpsqH+zM
nifi.security.keyPasswd (Nem kötelező) A titkos kulcs jelszava.
nifi.security.truststore A megbízható felhasználókat és fürtcsomópontokat hitelesíteni kívánó tanúsítványokat vagy ca-tanúsítványokat tartalmazó JKS- vagy PKCS12-megbízhatósági tár elérési útja. ./conf/truststore.jks
nifi.security.truststoreType A megbízhatóságiadattár típusa. JKS vagy PKCS12
nifi.security.truststorePasswd A megbízhatóságiadattár jelszava. RJlpGe6/TuN5fG+VnaEPi8
nifi.cluster.protocol.is.secure A TLS állapota az intracluster kommunikációhoz. Ha nifi.cluster.is.node igen true, állítsa be ezt az értéket a fürt TLS-jének true engedélyezéséhez. true
nifi.remote.input.secure A helyek közötti kommunikáció TLS-állapota. true

Az alábbi példa bemutatja, hogyan jelennek meg ezek a tulajdonságok a fájlban $NIFI_HOME/conf/nifi.properties. Vegye figyelembe, hogy az értékek és nifi.web.http.port az nifi.web.http.host értékek üresek.

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
ZooKeeper-konfiguráció

A TLS Apache ZooKeeperben a kvórumkommunikáció és az ügyfélhozzáférés engedélyezésével kapcsolatos utasításokért tekintse meg a ZooKeeper Rendszergazda istrator útmutatóját. Ezt a funkciót csak a 3.5.5-ös vagy újabb verziók támogatják.

A NiFi a ZooKeepert használja a nullavezető fürtözéshez és a fürtkoordinációhoz. Az 1.13.0-s verziótól kezdve a NiFi támogatja a ZooKeeper TLS-kompatibilis példányaihoz való biztonságos ügyfélhozzáférést. A ZooKeeper egyszerű szövegben tárolja a fürttagságot és a fürt hatókörű processzorállapotát. Ezért fontos, hogy biztonságos ügyfélhozzáférést használjon a ZooKeeperhez a ZooKeeper ügyfélkéréseinek hitelesítéséhez. A bizalmas értékeket is titkosítja az átvitel során.

Ha engedélyezni szeretné a TLS-t NiFi-ügyfél számára a ZooKeeperhez való hozzáféréshez, állítsa be a következő tulajdonságokat a következőben $NIFI_HOME/conf/nifi.properties: . Ha tulajdonságok konfigurálása nélkül állítja be a beállításokat nifi.zookeeper.client.securetruenifi.zookeeper.security, a NiFi vissza fog esni a megadott kulcstárra és megbízhatósági adattárra.nifi.securityproperties

Tulajdonság neve Leírás Példaértékek
nifi.zookeeper.client.secure Az ügyfél TLS-jének állapota a ZooKeeperhez való csatlakozáskor. true
nifi.zookeeper.security.keystore Egy JKS, PKCS12 vagy PEM kulcstár elérési útja, amely tartalmazza a ZooKeepernek a hitelesítéshez bemutatott tanúsítvány titkos kulcsát. ./conf/zookeeper.keystore.jks
nifi.zookeeper.security.keystoreType A kulcstár típusa. JKS, PKCS12, PEM, vagy automatikus észlelés bővítmény szerint
nifi.zookeeper.security.keystorePasswd A keystore jelszava. caB6ECKi03R/co+N+64lrz
nifi.zookeeper.security.keyPasswd (Nem kötelező) A titkos kulcs jelszava.
nifi.zookeeper.security.truststore A ZooKeeper hitelesítéséhez használt tanúsítványokat vagy ca-tanúsítványokat tartalmazó JKS, PKCS12 vagy PEM megbízhatósági tár elérési útja. ./conf/zookeeper.truststore.jks
nifi.zookeeper.security.truststoreType A megbízhatóságiadattár típusa. JKS, PKCS12, PEM, vagy automatikus észlelés bővítmény szerint
nifi.zookeeper.security.truststorePasswd A megbízhatóságiadattár jelszava. qBdnLhsp+mKvV7wab/L4sv
nifi.zookeeper.connect.string A ZooKeeper-gazdagép vagy kvórum kapcsolati sztring. Ez a sztring az értékek vesszővel tagolt listája host:port . Az érték általában secureClientPort nem ugyanaz, mint az clientPort érték. A megfelelő értékért tekintse meg a ZooKeeper-konfigurációt. zookeeper1.internal.cloudapp.net:2281, zookeeper2.internal.cloudapp.net:2281, zookeeper3.internal.cloudapp.net:2281

Az alábbi példa bemutatja, hogyan jelennek meg ezek a tulajdonságok a következőben $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

A ZooKeeper TLS-sel való biztonságossá tételéről további információt az Apache NiFi Rendszergazda istration útmutatójában talál.

Identitás- és hozzáférés-vezérlés

A NiFi-ben az identitás- és hozzáférés-vezérlés felhasználói hitelesítéssel és engedélyezéssel érhető el. A felhasználói hitelesítéshez a NiFi több lehetőség közül is választhat: Egyfelhasználós, LDAP, Kerberos, Security Assertion Markup Language (SAML) és OpenID Csatlakozás (OIDC). Ha nem konfigurál egy beállítást, a NiFi ügyféltanúsítványokkal hitelesíti a felhasználókat HTTPS-en keresztül.

Ha többtényezős hitelesítést fontolgat, javasoljuk a Microsoft Entra ID és az OIDC kombinációját. A Microsoft Entra ID támogatja a natív felhőalapú egyszeri bejelentkezést (SSO) az OIDC-vel. Ezzel a kombinációval a felhasználók számos vállalati biztonsági funkciót kihasználhatnak:

  • Gyanús tevékenységek naplózása és riasztása felhasználói fiókokból
  • Az inaktivált hitelesítő adatok elérésére tett kísérletek figyelése
  • Riasztás szokatlan fiókbejelentkezési viselkedésről

Az engedélyezéshez a NiFi felhasználói, csoport- és hozzáférési szabályzatokon alapuló kényszerítést biztosít. A NiFi a UserGroupProviders és az AccessPolicyProviders segítségével biztosítja ezt a kényszerítést. Alapértelmezés szerint a szolgáltatók közé tartozik a Fájl, LDAP, Shell és Azure Graph-alapú UserGroupProviders. Az AzureGraphUserGroupProviderrel a Microsoft Entra ID-ból is származtathatja a felhasználói csoportokat. Ezután szabályzatokat rendelhet ezekhez a csoportokhoz. A konfigurációs utasításokért tekintse meg az Apache NiFi Rendszergazda istration útmutatóját.

A fájlokon és az Apache Rangeren alapuló AccessPolicyProviders jelenleg a felhasználói és csoportszabályzatok kezeléséhez és tárolásához érhető el. Részletes információkért tekintse meg az Apache NiFi dokumentációját és az Apache Ranger dokumentációját.

Alkalmazásátjáró

Az application gateway egy felügyelt 7. rétegbeli terheléselosztót biztosít a NiFi-felülethez. Konfigurálja az application gatewayt a NiFi-csomópontok virtuálisgép-méretezési készletének háttérkészletként való használatára.

A legtöbb NiFi-telepítéshez a következő Application Gateway-konfigurációt javasoljuk:

  • Szint: Standard
  • Termékváltozat mérete: közepes
  • Példányok száma: kettő vagy több

Állapotadat-mintavétel használatával monitorozza a webkiszolgáló állapotát az egyes csomópontokon. Távolítsa el a nem kifogástalan csomópontokat a terheléselosztó forgatásából. Ez a megközelítés megkönnyíti a felhasználói felület megtekintését, ha az általános fürt állapota nem megfelelő. A böngésző csak azokat a csomópontokat irányítja, amelyek jelenleg kifogástalan állapotban vannak, és válaszolnak a kérésekre.

Két fontos állapotadat-mintavételt kell figyelembe venni. Ezek együttesen rendszeres szívverést biztosítanak a fürt összes csomópontjának általános állapotáról. Konfigurálja az első állapotadat-mintavételt, hogy az elérési útra /NiFimutasson. Ez a mintavétel minden csomóponton meghatározza a NiFi felhasználói felület állapotát. Konfiguráljon egy második állapotmintát az elérési úthoz /nifi-api/controller/cluster. Ez a mintavétel azt jelzi, hogy az egyes csomópontok jelenleg kifogástalan állapotban van-e, és csatlakoznak-e a teljes fürthöz.

Az Application Gateway előtérbeli IP-címének konfigurálására két lehetősége van:

  • Nyilvános IP-címmel
  • Privát alhálózati IP-címmel

Csak akkor adjon meg nyilvános IP-címet, ha a felhasználóknak a felhasználói felületet a nyilvános interneten keresztül kell elérnie. Ha nincs szükség nyilvános internet-hozzáférésre a felhasználók számára, a terheléselosztó előtérét a virtuális hálózat egyik jumpboxjából vagy a magánhálózathoz való társviszony-létesítéssel érheti el. Ha nyilvános IP-címmel konfigurálja az Application Gatewayt, javasoljuk, hogy engedélyezze az ügyféltanúsítvány-hitelesítést a NiFi-hez, és engedélyezze a TLS-t a NiFi felhasználói felületén. A delegált Application Gateway alhálózatában hálózati biztonsági csoportot is használhat a forrás IP-címeinek korlátozásához.

Diagnosztika és állapotfigyelés

Az Application Gateway diagnosztikai beállításai között lehetőség van a metrikák és a hozzáférési naplók küldésére. Ezzel a beállítással ezeket az információkat elküldheti a terheléselosztóból különböző helyekre:

  • Egy tárfiók
  • Event Hubs
  • Log Analytics-munkaterület

A beállítás bekapcsolása hasznos a terheléselosztási problémák hibakereséséhez és a fürtcsomópontok állapotának megismeréséhez.

Az alábbi Log Analytics-lekérdezés a fürtcsomópont állapotát jeleníti meg az Application Gateway szempontjából. Hasonló lekérdezéssel riasztásokat vagy automatikus javítási műveleteket hozhat létre a nem megfelelő állapotú csomópontok esetében.

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

A lekérdezési eredmények alábbi diagramja a fürt állapotának időnézetét jeleníti meg:

Sávdiagram képernyőképe. A sávok állandó számú kifogástalan csomópontot mutatnak egy 24 órás időszakban, és nincsenek sérült csomópontok.

Elérhetőség

A megoldás megvalósításakor tartsa szem előtt a következő pontokat a rendelkezésre állásról:

Terheléselosztóval

A felhasználói felület terheléselosztójának használatával növelheti a felhasználói felület rendelkezésre állását a csomópont állásideje alatt.

Virtuális gépek elkülönítése

A rendelkezésre állás növeléséhez helyezze üzembe a ZooKeeper-fürtöt a NiFi-fürt virtuális gépeitől eltérő virtuális gépeken. A ZooKeeper konfigurálásáról további információt az Apache NiFi System Rendszergazda istrator útmutatójában található Állapotkezelés című témakörben talál.

Rendelkezésreállási zónák

A rendelkezésre állás maximalizálása érdekében helyezze üzembe a NiFi virtuálisgép-méretezési csoportot és a ZooKeeper-fürtöt zónák közötti konfigurációban. Amikor a fürt csomópontjai közötti kommunikáció átlépi a rendelkezésre állási zónákat, kis mértékű késést eredményez. Ez a késés azonban általában minimális általános hatással van a fürt átviteli sebességére.

Virtuálisgép-méretezési csoportok

Javasoljuk, hogy a NiFi-csomópontokat egyetlen virtuálisgép-méretezési csoportban helyezze üzembe, amely az elérhető rendelkezésre állási zónákra terjed ki. A méretezési csoportok ilyen módon történő használatáról további információt a Rendelkezésre állási zónákat használó virtuálisgép-méretezési csoport létrehozása című témakörben talál.

Figyelés

A NiFi-fürtök állapotának és teljesítményének monitorozására több lehetőség is rendelkezésre áll:

  • Jelentéskészítési feladatok.
  • MonitoFi, egy külön Microsoft által fejlesztett alkalmazás. A MonitoFi külsőleg fut, és a NiFi API használatával figyeli a fürtöt.

Jelentéskészítési tevékenységalapú monitorozás

A monitorozáshoz használhatja a NiFi-ben konfigurált és futtatott jelentéskészítési feladatokat. Ahogy a diagnosztika és az állapotfigyelés is tárgyalja, a Log Analytics egy jelentéskészítési feladatot biztosít a NiFi Azure-csomagban. Ezzel a jelentéskészítési feladattal integrálhatja a monitorozást a Log Analyticsszel és a meglévő figyelési vagy naplózási rendszerekkel.

Log Analytics-lekérdezések

A következő szakaszokban található minta lekérdezések segíthetnek az első lépésekben. A Log Analytics-adatok lekérdezésének áttekintését az Azure Monitor napló lekérdezései című témakörben tekintheti meg.

A Monitor és a Log Analytics napló lekérdezései a Kusto lekérdezésnyelv egy verzióját használják. A napló-lekérdezések és a Kusto-lekérdezések között azonban különbségek vannak. További információ: Kusto-lekérdezések áttekintése.

Strukturáltabb tanulásért tekintse meg az alábbi oktatóanyagokat:

Log Analytics-jelentéskészítési feladat

A NiFi alapértelmezés szerint metrikák adatait küldi el a nifimetrics táblának. A jelentéskészítési feladat tulajdonságaiban azonban konfigurálhat egy másik célhelyet. A jelentéskészítési feladat a következő NiFi-metrikákat rögzíti:

Metrika típusa Metrika neve
NiFi-metrikák FlowFilesReceived
NiFi-metrikák FlowFilesSent
NiFi-metrikák FlowFilesQueued
NiFi-metrikák BytesReceived
NiFi-metrikák BytesWritten
NiFi-metrikák BytesRead
NiFi-metrikák BytesSent
NiFi-metrikák BytesQueued
Portállapot-metrikák InputCount
Portállapot-metrikák InputBytes
Csatlakozás ion állapotmetrikái QueuedCount
Csatlakozás ion állapotmetrikái QueuedBytes
Portállapot-metrikák OutputCount
Portállapot-metrikák OutputBytes
Java virtuális gép (JVM) metrikái jvm.uptime
JVM-metrikák jvm.heap_used
JVM-metrikák jvm.heap_usage
JVM-metrikák jvm.non_heap_usage
JVM-metrikák jvm.thread_states.runnable
JVM-metrikák jvm.thread_states.blocked
JVM-metrikák jvm.thread_states.timed_waiting
JVM-metrikák jvm.thread_states.terminated
JVM-metrikák jvm.thread_count
JVM-metrikák jvm.daemon_thread_count
JVM-metrikák jvm.file_descriptor_usage
JVM-metrikák jvm.gc.runs jvm.gc.runs.g1_old_generation jvm.gc.runs.g1_young_generation
JVM-metrikák jvm.gc.time jvm.gc.time.g1_young_generation jvm.gc.time.g1_old_generation
JVM-metrikák jvm.buff_pool_direct_capacity
JVM-metrikák jvm.buff_pool_direct_count
JVM-metrikák jvm.buff_pool_direct_mem_used
JVM-metrikák jvm.buff_pool_mapped_capacity
JVM-metrikák jvm.buff_pool_mapped_count
JVM-metrikák jvm.buff_pool_mapped_mem_used
JVM-metrikák jvm.mem_pool_code_cache
JVM-metrikák jvm.mem_pool_compressed_class_space
JVM-metrikák jvm.mem_pool_g1_eden_space
JVM-metrikák jvm.mem_pool_g1_old_gen
JVM-metrikák jvm.mem_pool_g1_survivor_space
JVM-metrikák jvm.mem_pool_metaspace
JVM-metrikák jvm.thread_states.new
JVM-metrikák jvm.thread_states.waiting
Processzorszintű metrikák BytesRead
Processzorszintű metrikák BytesWritten
Processzorszintű metrikák FlowFilesReceived
Processzorszintű metrikák FlowFilesSent

Íme egy minta lekérdezés egy BytesQueued fürt metrikájához:

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 

Ez a lekérdezés a képernyőképen láthatóhoz hasonló diagramot hoz létre:

Vonaldiagram képernyőképe. A sorok az üzenetsorba helyezett bájtok számát jelenítik meg egy négyórás időszak alatt.

Feljegyzés

Amikor az Azure-ban futtatja a NiFi-t, nem korlátozódik a Log Analytics jelentéskészítési feladatára. A NiFi számos külső monitorozási technológia jelentéskészítési feladatait támogatja. A támogatott jelentéskészítési feladatok listáját az Apache NiFi Dokumentációs index Jelentéskészítési feladatok szakaszában találja.

NiFi-infrastruktúra monitorozása

A jelentéskészítési feladat mellett telepítse a Log Analytics virtuálisgép-bővítményt a NiFi és a ZooKeeper csomópontokra. Ez a bővítmény naplókat, további virtuálisgép-szintű metrikákat és metrikákat gyűjt a ZooKeeperből.

Egyéni naplók a NiFi alkalmazáshoz, a felhasználóhoz, a bootstraphez és a ZooKeeperhez

További naplók rögzítéséhez kövesse az alábbi lépéseket:

  1. Az Azure Portalon válassza ki a Log Analytics-munkaterületeket, majd válassza ki a munkaterületet.

  2. A Gépház alatt válassza az Egyéni naplók lehetőséget.

    Képernyőkép az Azure Portal MyWorkspace oldaláról. Gépház és egyéni naplók ki vannak hívva.

  3. Válassza az Egyéni napló hozzáadása lehetőséget.

    Képernyőkép az Egyéni naplók lapról az Azure Portalon az Egyéni napló hozzáadása előhívással.

  4. Egyéni napló beállítása az alábbi értékekkel:

    • Név: NiFiAppLogs
    • Elérési út típusa: Linux
    • Elérési út neve: /opt/nifi/logs/nifi-app.log

    Képernyőkép egy NiFi-ablakról. A NiFi-alkalmazás egyéni naplójának konfigurációs értékei láthatók.

  5. Egyéni napló beállítása az alábbi értékekkel:

    • Név: NiFiBootstrapAndUser
    • Első elérési út típusa: Linux
    • Első elérési út neve: /opt/nifi/logs/nifi-user.log
    • Második elérési út típusa: Linux
    • Második elérési út neve: /opt/nifi/logs/nifi-bootstrap.log

    Képernyőkép egy NiFi-ablakról. A NiFi bootstrap és a felhasználó egyéni naplójának konfigurációs értékei láthatók.

  6. Egyéni napló beállítása az alábbi értékekkel:

    • Név: NiFiZK
    • Elérési út típusa: Linux
    • Elérési út neve: /opt/zookeeper/logs/*.out

    Képernyőkép egy NiFi-ablakról. A ZooKeeper egyéni naplójának konfigurációs értékei láthatók.

Az első példa által létrehozott egyéni tábla minta lekérdezése NiFiAppLogs :

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

A lekérdezés az alábbi eredményekhez hasonló eredményeket hoz létre:

Képernyőkép az időbélyeget, a számítógépet, a nyers adatokat, a típust és a D erőforrást tartalmazó lekérdezési eredményekről.

Infrastruktúranapló konfigurálása

A Monitorral figyelheti és kezelheti a virtuális gépeket és a fizikai számítógépeket. Ezek az erőforrások lehetnek a helyi adatközpontban vagy más felhőkörnyezetben. A monitorozás beállításához telepítse a Log Analytics-ügynököt. Konfigurálja az ügynököt úgy, hogy egy Log Analytics-munkaterületen jelentsen. További információ: Log Analytics-ügynök áttekintése.

Az alábbi képernyőképen egy mintaügynök konfigurációja látható NiFi virtuális gépekhez. A Perf tábla tárolja az összegyűjtött adatokat.

Képernyőkép a Speciális beállítások ablakról. A Data and Linux Performance Counters (Adat- és Linux-teljesítményszámlálók) menü ki van emelve. A teljesítményszámláló beállításai láthatók.

Íme egy minta lekérdezés a NiFi-alkalmazásnaplókhoz Perf :

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

A lekérdezés a képernyőképen láthatóhoz hasonló jelentést hoz létre:

Vonaldiagram képernyőképe. A sorok a NiFi virtuális gépek által egy négyórás időszakban használt processzor százalékos arányát jelenítik meg.

Riasztások

A Monitor használatával riasztásokat hozhat létre a NiFi-fürt állapotáról és teljesítményéről. Ilyen riasztások például a következők:

  • Az üzenetsorok teljes száma túllépte a küszöbértéket.
  • Az BytesWritten érték a várt küszöbérték alatt van.
  • Az FlowFilesReceived érték egy küszöbérték alatt van.
  • A fürt állapota nem megfelelő.

A riasztások Monitorban való beállításáról további információt a Microsoft Azure riasztásainak áttekintése című témakörben talál.

Konfigurációs paraméterek

Az alábbi szakaszok a NiFi és függőségei, köztük a ZooKeeper és a Java ajánlott, nem alapértelmezett konfigurációit ismertetik. Ezek a beállítások a felhőben lehetséges fürtméretekhez használhatók. Adja meg a tulajdonságokat a következő konfigurációs fájlokban:

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

Az elérhető konfigurációs tulajdonságokról és fájlokról az Apache NiFi System Rendszergazda istrator útmutatójában és a ZooKeeper Rendszergazda istrator útmutatójában talál részletes információkat.

NiFi

Azure-üzemelő példány esetén fontolja meg a tulajdonságok módosítását a következőben $NIFI_HOME/conf/nifi.properties: . Az alábbi táblázat a legfontosabb tulajdonságokat sorolja fel. További javaslatokért és megállapításokért tekintse meg az Apache NiFi levelezőlistáit.

Paraméter Leírás Alapértelmezett Ajánlás
nifi.cluster.node.connection.timeout Mennyi ideig kell várni, amikor más fürtcsomópontok felé nyit kapcsolatot. 5 másodperc 60 másodperc
nifi.cluster.node.read.timeout Mennyi ideig kell várni a válaszra, amikor más fürtcsomópontokra irányuló kérést küld. 5 másodperc 60 másodperc
nifi.cluster.protocol.heartbeat.interval Milyen gyakran küldhet szívveréseket a fürtkoordinátornak. 5 másodperc 60 másodperc
nifi.cluster.node.max.concurrent.requests Milyen szintű párhuzamosságot kell használni a HTTP-hívások, például a REST API-hívások más fürtcsomópontokra történő replikálásakor. 100 500
nifi.cluster.node.protocol.threads A fürtközi/replikált kommunikáció kezdeti szálkészlet-mérete. 10 50
nifi.cluster.node.protocol.max.threads A fürtök közötti/replikált kommunikációhoz használandó szálak maximális száma. 50 75
nifi.cluster.flow.election.max.candidates Az aktuális folyamat meghatározásához használandó csomópontok száma. Ez az érték rövidre zárja a szavazást a megadott számon. üres 75
nifi.cluster.flow.election.max.wait.time Mennyi ideig kell várni a csomópontokon, mielőtt eldöntené, hogy mi az aktuális folyamat. 5 perc 5 perc

Fürt viselkedése

Fürtök konfigurálásakor tartsa szem előtt az alábbi pontokat.

Időkorlát

A fürt és a csomópontok általános állapotának biztosítása érdekében előnyös lehet az időtúllépések növelése. Ez a gyakorlat segít garantálni, hogy a hibák ne átmeneti hálózati problémákból vagy nagy terhelésből erednek.

Az elosztott rendszerekben az egyes rendszerek teljesítménye változó. Ez a változat magában foglalja a hálózati kommunikációt és a késést, amely általában hatással van a csomópontok közötti, fürtközi kommunikációra. Ezt a változást a hálózati infrastruktúra vagy maga a rendszer okozhatja. Ennek eredményeképpen a variáció valószínűsége nagy rendszerfürtökben nagyon valószínű. A terhelés alatt álló Java-alkalmazásokban a Java virtuális gép (JVM) szemétgyűjtési (GC) szüneteltetése is befolyásolhatja a kérelmek válaszidejének idejét.

A következő szakaszokban található tulajdonságok használatával időtúllépéseket konfigurálhat a rendszer igényeinek megfelelően:

nifi.cluster.node.connection.timeout és nifi.cluster.node.read.timeout

A nifi.cluster.node.connection.timeout tulajdonság megadja, hogy mennyi ideig kell várni egy kapcsolat megnyitásakor. A nifi.cluster.node.read.timeout tulajdonság azt határozza meg, hogy mennyi ideig kell várni, amikor adatokat fogad a kérések között. Minden tulajdonság alapértelmezett értéke öt másodperc. Ezek a tulajdonságok csomópontról csomópontra irányuló kérelmekre vonatkoznak. Ezeknek az értékeknek a növelése segít enyhíteni a kapcsolódó problémákat:

  • A fürtkoordinátor megszakad a szívverés megszakadása miatt
  • Nem sikerült lekérni a folyamatot a koordinátortól a fürthöz való csatlakozáskor
  • Helyek közötti (S2S) és terheléselosztási kommunikáció létrehozása

Ha a fürt nem rendelkezik nagyon kis méretezési csoportokkal(például három csomópont vagy kevesebb), az alapértelmezettnél nagyobb értékeket használjon.

nifi.cluster.protocol.heartbeat.interval

A NiFi-fürtözési stratégia részeként minden csomópont szívverést bocsát ki az állapotának közléséhez. Alapértelmezés szerint a csomópontok öt másodpercenként küldenek szívveréseket. Ha a fürtkoordinátor azt észleli, hogy egy csomópont sorában nyolc szívverés meghiúsult, leválasztja a csomópontot. Növelje a tulajdonságban beállított időközt a nifi.cluster.protocol.heartbeat.interval lassú szívverések kezeléséhez, és megakadályozza, hogy a fürt szükségtelenül leválasztsa a csomópontokat.

Egyidejűség

Az egyidejűségi beállítások konfigurálásához használja a következő szakaszok tulajdonságait:

nifi.cluster.node.protocol.threads és nifi.cluster.node.protocol.max.threads

A nifi.cluster.node.protocol.max.threads tulajdonság megadja a teljes fürtkommunikációhoz, például az S2S terheléselosztáshoz és a felhasználói felület összesítéséhez használandó szálak maximális számát. A tulajdonság alapértelmezett értéke 50 szál. Nagy fürtök esetén növelje ezt az értéket, hogy figyelembe vegye a műveletek által igényelt kérelmek számát.

A nifi.cluster.node.protocol.threads tulajdonság határozza meg a kezdeti szálkészlet méretét. Az alapértelmezett érték 10 szál. Ez az érték minimális. Igény szerint növekszik a maximális értékig a következőben nifi.cluster.node.protocol.max.threads: . Növelje az nifi.cluster.node.protocol.threads indításkor nagy méretezési csoportot használó fürtök értékét.

nifi.cluster.node.max.concurrent.requests

Számos HTTP-kérést, például REST API-hívásokat és felhasználói felületi hívásokat kell replikálni a fürt más csomópontjaira. A fürt méretének növekedésével egyre több kérelem replikálódik. A nifi.cluster.node.max.concurrent.requests tulajdonság korlátozza a függőben lévő kérelmek számát. Az értéknek meg kell haladnia a várt fürtméretet. Az alapértelmezett érték 100 egyidejű kérés. Ha nem három vagy kevesebb csomópontból álló kis fürtöt futtat, az érték növelésével megakadályozhatja a sikertelen kérelmeket.

Folyamatválasztás

A folyamatválasztási beállítások konfigurálásához használja a következő szakaszok tulajdonságait:

nifi.cluster.flow.election.max.candidates

A NiFi nullavezető fürtözést használ, ami azt jelenti, hogy nincs egy konkrét mérvadó csomópont. Ennek eredményeképpen a csomópontok szavaznak arra, hogy melyik folyamatdefiníció számít a megfelelőnek. Azt is eldöntik, hogy mely csomópontok csatlakoznak a fürthöz.

Alapértelmezés szerint a nifi.cluster.flow.election.max.candidates tulajdonság a tulajdonság által megadott maximális várakozási nifi.cluster.flow.election.max.wait.time idő. Ha ez az érték túl magas, az indítás lassú lehet. Az alapértelmezett érték nifi.cluster.flow.election.max.wait.time öt perc. Állítsa be a jelöltek maximális számát egy nem üres értékre, például 1 vagy annál nagyobb értékre, hogy a várakozás ne legyen hosszabb a szükségesnél. Ha ezt a tulajdonságot állítja be, rendeljen hozzá egy olyan értéket, amely megfelel a fürt méretének vagy a várt fürtméret bizonyos többségének. Kisebb, 10 vagy kevesebb csomópontból álló statikus fürtök esetén állítsa ezt az értéket a fürt csomópontjainak számára.

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

Rugalmas felhőkörnyezetben a gazdagépek kiépítésének ideje befolyásolja az alkalmazás indítási idejét. A nifi.cluster.flow.election.max.wait.time tulajdonság határozza meg, hogy a NiFi mennyi ideig várakozik, mielőtt eldöntené a folyamatot. Ez az érték arányos legyen a fürt indítási idejének kezdő méretével. Az első tesztelés során öt perc több mint elegendő az ajánlott példánytípusokhoz tartozó összes Azure-régióban. Ezt az értéket azonban növelheti, ha a rendszeres üzembe helyezés ideje meghaladja az alapértelmezett értéket.

Java

Java LTS-kiadás használatát javasoljuk. Ezen kiadások közül a Java 11 kissé előnyösebb a Java 8-hoz, mert a Java 11 támogatja a gyorsabb szemétgyűjtés implementálását. Azonban bármelyik kiadással nagy teljesítményű NiFi-telepítés is lehetséges.

A következő szakaszok a NiFi futtatásakor használandó gyakori JVM-konfigurációkat ismertetik. JVM-paraméterek beállítása a bootstrap konfigurációs fájlban a következő helyen $NIFI_HOME/conf/bootstrap.conf: .

Szemétgyűjtő

Ha Java 11-et futtat, a legtöbb esetben a G1 kukagyűjtőt (G1GC) javasoljuk. A G1GC jobb teljesítményt nyújt a ParallelGC-vel szemben, mivel a G1GC csökkenti a GC-szünetek hosszát. A Java 11-ben a G1GC az alapértelmezett, de explicit módon konfigurálhatja a következő érték bootstrap.confbeállításával:

java.arg.13=-XX:+UseG1GC

Ha Java 8-at futtat, ne használja a G1GC-t. Használja helyette a ParallelGC-t. A G1GC Java 8 implementációjában vannak olyan hiányosságok, amelyek megakadályozzák, hogy az ajánlott adattár-implementációkkal használja. A ParallelGC lassabb, mint a G1GC. A ParallelGC-vel azonban továbbra is nagy teljesítményű NiFi-telepítéssel rendelkezhet a Java 8 használatával.

Halommemória

A fájlban található bootstrap.conf tulajdonságok halmaza határozza meg a NiFi JVM-halom konfigurációját. Normál folyamat esetén konfiguráljon egy 32 GB-os halomelemet az alábbi beállításokkal:

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

A JVM-folyamatra alkalmazandó optimális halomméret kiválasztásához két tényezőt érdemes figyelembe venni:

  • Az adatfolyam jellemzői
  • A NiFi memóriát használ a feldolgozás során

Részletes dokumentációért lásd az Apache NiFi részletes ismertetését.

A feldolgozási követelmények teljesítéséhez a halom csak a szükséges méretű legyen. Ez a módszer minimálisra csökkenti a GC-szünetek hosszát. A Java-szemétgyűjtés általános szempontjait a Java-verzió szemétgyűjtési hangolási útmutatójában találja.

A JVM memóriabeállításainak módosításakor vegye figyelembe az alábbi fontos tényezőket:

  • Az adott időszakban aktív FlowFile-k vagy NiFi-adatrekordok száma. Ez a szám tartalmazza a háttérbe szorított vagy várólistára helyezett FlowFile-okat.

  • A FlowFilesban definiált attribútumok száma.

  • A processzor által igényelt memória mennyisége egy adott tartalom feldolgozásához.

  • A feldolgozó az adatok feldolgozási módja:

    • Adatok streamelése
    • Rekordorientált processzorok használata
    • Az összes adat egyszerre tartása a memóriában

Ezek a részletek fontosak. A feldolgozás során a NiFi a memóriában lévő egyes FlowFile-fájlok hivatkozásait és attribútumait tartalmazza. Csúcsteljesítmény esetén a rendszer által használt memória mennyisége arányos az élő FlowFile-fájlok számával és az általuk tartalmazott attribútumokkal. Ez a szám a várólistán lévő FlowFile-okat is tartalmazza. A NiFi képes lemezre cserélni. De kerülje ezt a lehetőséget, mert rontja a teljesítményt.

Tartsa szem előtt az alapvető objektummemória-használatot is. Pontosabban, hogy a halom elég nagy ahhoz, hogy az objektumok a memóriában. Vegye figyelembe az alábbi tippeket a memóriabeállítások konfigurálásához:

  • Futtassa a folyamatot reprezentatív adatokkal és minimális hátterheléssel a beállítással -Xmx4G kezdve, majd szükség szerint növelje a memóriát.
  • Futtassa a folyamatot reprezentatív adatokkal és a visszanyomás csúcsával a beállítással -Xmx4G kezdve, majd szükség szerint növelje a fürt méretét.
  • Profilozza az alkalmazást, miközben a folyamat fut olyan eszközökkel, mint a VisualVM és a YourKit.
  • Ha a halom konzervatív növekedése nem javítja jelentősen a teljesítményt, fontolja meg a folyamatok, processzorok és a rendszer egyéb aspektusainak újratervezését.
További JVM-paraméterek

Az alábbi táblázat további JVM-beállításokat sorol fel. Emellett azokat az értékeket is megadja, amelyek a kezdeti tesztelés során a legjobban működnek. A tesztek a GC tevékenységét és a memóriahasználatot figyelték meg, és gondos profilkészítést alkalmaztak.

Paraméter Leírás JVM alapértelmezett Ajánlás
InitiatingHeapOccupancyPercent A jelölőciklus aktiválása előtt használt halom mennyisége. 45 35
ParallelGCThreads A GC által használt szálak száma. Ez az érték megfeleltetve korlátozza a rendszerre gyakorolt általános hatást. A vCPU-k számának 5/8-a 8
ConcGCThreads A párhuzamosan futtatandó GC-szálak száma. Ez az érték növelve lesz a leképezett ParallelGCThreads értékhez. Az érték 1/4-e ParallelGCThreads 4
G1ReservePercent A szabad megőrzéshez fenntartott memória százalékos aránya. Ez az érték növelve van a helykihasználtság elkerülése érdekében, ami segít elkerülni a teljes GC-t. 10 20
UseStringDeduplication Azonos sztringekre mutató hivatkozások azonosítása és duplikálása. A funkció bekapcsolása memóriamegtakarítást eredményezhet. - Jelen

Ezeket a beállításokat úgy konfigurálhatja, hogy hozzáadja a következő bejegyzéseket a NiFi-hez 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

A jobb hibatűrés érdekében futtassa a ZooKeepert fürtként. Ezt a megközelítést akkor is vegye figyelembe, ha a legtöbb NiFi-telepítés viszonylag szerény terhelést helyez a ZooKeeperre. A ZooKeeper fürtözésének bekapcsolása kifejezetten. Alapértelmezés szerint a ZooKeeper egykiszolgálós módban fut. További információt a ZooKeeper Rendszergazda istrator útmutatójában, a fürtözött (többkiszolgálós) beállításban talál.

A fürtözési beállítások kivételével használja az alapértelmezett értékeket a ZooKeeper-konfigurációhoz.

Ha nagy NiFi-fürtje van, előfordulhat, hogy nagyobb számú ZooKeeper-kiszolgálót kell használnia. Kisebb fürtméretek esetén a kisebb virtuálisgép-méretek és a Standard SSD felügyelt lemezek elegendőek.

Közreműködők

Ezt a cikket a Microsoft tartja karban. Eredetileg a következő közreműködők írták.

Fő szerző:

A nem nyilvános LinkedIn-profilok megtekintéséhez jelentkezzen be a LinkedInbe.

Következő lépések

A dokumentum anyaga és javaslatai több forrásból származnak:

  • Kísérletezés
  • Az Azure ajánlott eljárásai
  • NiFi közösségi ismeretek, ajánlott eljárások és dokumentáció

További információkat találhat az alábbi forrásokban: