Uurige Apache NIFI klastri kõrget kättesaadavust
Explore High Availability Apache Nifi Cluster
Eessõna: see artikkel keskendub Apache NIFI klastri kõrge kättesaadavuse uurimisele õnnetuste simuleerimise kaudu. Stsenaarium eeldab, et on olemas 3-sõlmeline NIFI-klaster ja üks sõlmedest on teadmata põhjustel klastrist lahti ühendatud. Uurige klastrit (kaks ühendatud sõlmede klastrit) ja seda, mis juhtub lahti ühendatud sõlmedega ja mis juhtub iga sõlme andmetega. (Märkus. Sõlm on teadmata põhjustel klastrist lahti ühendatud ja see erineb süsteemi administraatorist sõlme desinstallimisest). Peale selle pole teised olulised.
Püüan uurimisprotsessi üksikasjalikult kirjeldada ja lugejad saavad seda artiklit järgida, et seda kohapeal kontrollida.
Kolmesõlmelise pseudoklastri loomine
Selles jaotises selgitatakse lühidalt, kuidas 3-sõlmelise pseudoklastri konfiguratsiooni kohalikult üles ehitada.
kui pole versiooni : Nifi-1.12.0-SNAPSHOT (jah, lugesite seda õigust, autor on ka keegi, kes paneb aeg-ajalt Apache'i koodi juurde)
Native süsteem : MacOS
loomaaiatalitaja : NIFI sisseehitatud loomaaednik
Muuda nifi.properties (valisin välja need, mida tuleb muuta)
# Specifies whether or not this instance of NiFi should run an embedded ZooKeeper server nifi.state.management.embedded.zookeeper.start=true # 3 nodes are 8081 8082 8083 nifi.web.http.port=8081 # cluster node properties (only configure for cluster nodes) # nifi.cluster.is.node=true # 3 nodes are 9081 9082 9083 nifi.cluster.node.protocol.port=9081 # 3 nodes are 6341 6342 6343 nifi.cluster.load.balance.port=6341 # zookeeper properties, used for cluster management # nifi.zookeeper.connect.string=localhost:2181,localhost:2182,localhost:2183
Muuda zookeeper.properties (pange tähele, et kliendiport tuleb konfigureerida pärast serveri stringi pärast 3.5.5)
# 3 nodes are the same server.1=localhost:2111:31112181 server.2=localhost:2222:32222182 server.3=localhost:2333:33332183
State-management.xml muutmine (kõik 3 sõlme on samad)
<cluster-provider> <id>zk-providerid> <class>org.apache.nifi.controller.state.providers.zookeeper.ZooKeeperStateProviderclass> <property name='Connect String'>localhost:2181,localhost:2182,localhost:2183property> <property name='Root Node'>/nifiproperty> <property name='Session Timeout'>10 secondsproperty> <property name='Access Control'>Openproperty> cluster-provider>
3 sõlme NIFI kataloogis (prügikasti kataloog on samal tasemel) looge uus state/zookeeper
, looge uus fail zookeeperi kausta myid
, 3 sõlme kirjutatakse eraldi 1
, 2
, 3
#3 nodes write 1 2 3 separately echo 1 > myid
Siiani on konfigureeritud lihtne kohapeal käivitatav kolmesõlmeline pseudoklaster koos sisseehitatud zookeeperiga. Käivitage kolm NIFI sõlme eraldi:
Klaster alustas edukalt
Simulatsiooniprotsessi ehitamine
Tõmmake GenerateFlow
(kasutatakse voogefailide loomiseks) ja LogAttribute
(logi printimine, voo väljundfaili atribuudid) kaks komponenti. GenerateFlow
Seadistatakse töötama ainult põhisõlmes (klastrirežiimis protsessi esimene sõlm tuleks üldjuhul seada töötama põhisõlmena, mis väldiks topeltandmete töötlemist. See on NIFI andmevoogude kujundamisel mõistlik. Muidugi, ConsumeKafka jms, välja arvatud komponendid). LogAttribute
Kõiki sõlme saab käivitada vaikimisi.
Konfiguratsioon connection
Koormustasakaal (jagage andmeid igale sõlmele, vastasel juhul töödeldakse kõiki andmeid tegelikult põhisõlmes)
Streaming-failide levitamise uurimine pärast klastri sõlmede ühenduse kadumist
Ülaltoodud protsessi ekraanipildi olekust näeme, et praeguses protsessis on klastris 3 sõlme, kokku 111 voofaili. Nüüd peatame NIFI sõlme käsitsi, et simuleerida sõlme kadu teadmata põhjustel.
Seejärel oodake klastri uuesti hääletamist, pärast valimiste lõppu avame NIFI klastri liidese
Praegu näeme, et NIFI klastrisse on jäänud ainult 74 voogefaili ja puuduvad 37 voogefailid on endiselt puuduvas sõlmes. Samal ajal näete ka, et klaster ei võimalda teil nüüd protsessi konfiguratsiooni muuta enne, kui kadunud sõlm on klastriga uuesti ühendatud või kui süsteemiadministraator kaotatud sõlme desinstallib.
See on Apache NIFI disain. NIFI ei ole klastrite andmebaas (näiteks GP). See on lihtsalt andmevoo töötlemise tööriist. Voogefailide varundamine pole vajalik igas või mitmes sõlmes, mis lisab tarbetut IO-d. Ja kettamälu mõjutab NIFI toimivust.
(Siin on välja jäetud kirjeldus selle kohta, kas puuduval sõlmel on 37 voofaili. Kui soovite kontrollida kontrollimist, peatage kõigepealt kõik klastri sõlmed ja seejärel käivitage sõlm, mille abil me puuduvat ühendust simuleerisime. Pärast selle edukat käivitamist see on sõlm, mis on mingil põhjusel kaotanud ühenduse klastriga, kuid töötab endiselt)
Kokkuvõtteks : Kui üks sõlmedest ebaõnnestub, ei kanna teised klastri sõlmed kaotatud sõlme koormust automaatselt. Andmed puuduvad NIFI-sõlmel endiselt.
Uurige voogefailide töötlemist pärast klastrisõlme tõrkeid
3-sõlmelise pseudoklastri taastamiseks taaskäivitame puuduva sõlme, connection
Sisestatud on juba 111 voogefaili (ülaltoodud uuringust levitatakse neid 111 voogefaili 3 sõlmel), praegu alustame LogAttribute
Komponent, mis simuleerib andmete töötlemist klastris.
Pärast käivitamist peatasime kohe ühe sõlme tõrke simuleerimiseks (siin tapsin otse sõlme)
Oodake, kuni klaster valitakse uuesti, ja avage klastri jälgimiseks pärast kaotatud sõlme klastri liides:
Ülaltoodud kolme pildi kaudu leidsime selle Kadunud sõlme järgne klaster töötleb endiselt andmeid
Nii et kui kaotatud sõlm töötab endiselt (ei tapeta, ei peatata), mis siis saab?
Simuleerime, et sõlm on klastrist lahti ühendatud, kuid töötab seni teadmata põhjustel (peatage NIFI klaster, taaskäivitage kadunud NIFI sõlm)
Nagu on näidatud alloleval joonisel, on see klastrist lahti ühendatud sõlm ja pääseme juurde ka selle kasutajaliidesele
Läbi ekraanipildi näeme, et kadunud ühenduse sõlm töötleb endiselt andmeid. Aega võrreldes näeme selgelt, et NIFI sõlm töötleb andmeid ka pärast ühenduse kaotamist. Viimane LogAttribute
Trükitud logi on 23:43:13
, Alloleval pildil on NIFI klastri sulgemise aeg 23:40:--
Ja käivitasin puuduva sõlme pärast NIFI klastri peatamist.
(Lisaks saab muuta ülalnimetatud kadunud ühenduse sõlme. See disain on korras, kuid kui me siiski tahame, et see sõlm sujuvalt klastriga uuesti ühendust saaks, siis peame seda ühenduse kadumist vältima (tekib sõlme muutmise protsessi nähtus)
Kokkuvõtteks : Kui klastri sõlm ebaõnnestub, jätkab klaster andmete töötlemist. Kui ka kadunud sõlm töötab, jätkab kadunud sõlm ka andmete töötlemist.
Pärast klastersõlme ebaõnnestumist uurige põhisõlmena käitamiseks määratud komponentide olekut
Pärast klastri taastamiseks sõlmega uuesti ühendamist peatume LogAttribute
, käivitame GenerateFlow
Korrake ülaltoodud simulatsioonisõlme kadu, vaadake klastri GenerateFlow
olekut
Nagu näete, määrake käivitamiseks põhisõlmena GenerateFlow
Ehituse voo fail töötab endiselt.
Mõne minuti pärast puuduva sõlme vaatlemist GenerateFlow
Voogefaili ei looda.
Kokkuvõtteks : Kui klastri sõlm ebaõnnestub, jätkavad põhisõlmel töötamiseks määratud klastri komponendid andmete töötamist ja töötlemist. Kui ka puuduv sõlm töötab, ei jätka põhisõlmel töötamiseks määratud komponente andmete käitamist ja töötlemist.
Võite jätkata kinnitamist
Võite jätkata põhjalikku kontrollimist ja muuta GenerateFlow
seadistatav töötama kõikides sõlmedes, saate seadistada ka LogAttribute
seadistama selle töötama ainult põhisõlmes ja järgimiseks jätkake ülalkirjeldatud rutiini kontrollige klastri ja ühendusevälise sõlme toimivust, kui klastri sõlm ebaõnnestub.
Kokkuvõtteks
Kõigepealt eeldusel, et meie protsessikujundus on teaduslik ja mõistlik, on klastri sõlme ebaõnnestumisel Apache NIFI klastril teatav kõrge kättesaadavus, et tagada ülesannete terviklikkus, täpsus ja pidev täitmine. Kui kaotatud sõlm töötab endiselt, on meie andmed täielikud ja täpsed. Kui kaotatud sõlm läheb alla ja selles sõlmes on veel töötlemata voogfaile, kaob see osa andmetest enne käsitsi sekkumist ajutiselt. Muidugi, kuni teie klaster on alles, on teie ülesanne alati sees. Pooleli. Niikaua kui kasutame Apache NIFI-d mõistlikult ja teaduslikult ning teeme klastrite terviseseires head tööd ja tema klastrirežiimi rakendatakse mõnes tootmiskeskkonnas, võib selline klastrite kõrge kättesaadavuse tase meie äri täielikult toetada. (Näiteks mõned sünkroonsed andmesammuprotsessid, mis toetavad reaalajas suhteliselt kõrge jõudlusega äritegevust)
Avalikkust pole
Artiklite / dokumentide värskendamise tõuke saamiseks järgige ametlikku kontot.