Raggruppament Elasticsearch 200 TB+

Raggruppament Elasticsearch 200 TB+

Ħafna nies jissieltu ma 'Elasticsearch. Imma x'jiġri meta trid tużaha biex taħżen zkuk "f'volum partikolarment kbir"? U huwa wkoll bla tbatija li tesperjenza l-falliment ta 'xi wieħed minn diversi ċentri tad-dejta? X'tip ta 'arkitettura għandek tagħmel, u liema nases se tfixkel?

Aħna ta 'Odnoklassniki iddeċidejna li nużaw elasticsearch biex insolvu l-kwistjoni tal-ġestjoni taz-zkuk, u issa naqsmu l-esperjenza tagħna ma' Habr: kemm dwar l-arkitettura kif ukoll dwar in-nases.

Jien Pyotr Zaitsev, naħdem bħala amministratur tas-sistema f'Odnoklassniki. Qabel dan, kont ukoll admin, ħdimt ma 'Manticore Search, Sphinx search, Elasticsearch. Forsi, jekk tidher ... tfittxija oħra, aktarx naħdem magħha wkoll. Nipparteċipa wkoll f’numru ta’ proġetti open source fuq bażi volontarja.

Meta ġejt għal Odnoklassniki, bl-addoċċ għidt fl-intervista li stajt naħdem ma 'Elasticsearch. Wara li ħadt il-ħsieb u lestejt xi kompiti sempliċi, ingħatajt il-kompitu kbir li nirriforma s-sistema ta 'ġestjoni taz-zkuk li kienet teżisti dak iż-żmien.

Rekwiżiti

Ir-rekwiżiti tas-sistema ġew ifformulati kif ġej:

  • Graylog kellu jintuża bħala l-frontend. Minħabba li l-kumpanija diġà kellha esperjenza bl-użu ta 'dan il-prodott, il-programmaturi u t-testers kienu jafuha, kienet familjari u konvenjenti għalihom.
  • Volum tad-dejta: medja ta '50-80 elf messaġġ kull sekonda, imma jekk xi ħaġa tinkiser, allura t-traffiku ma jkunx limitat minn xejn, jista' jkun 2-3 miljun linja kull sekonda
  • Wara li ddiskutejna mal-klijenti r-rekwiżiti għall-veloċità tal-ipproċessar tal-mistoqsijiet tat-tiftix, indunajna li l-mudell tipiku tal-użu ta 'sistema bħal din huwa dan: in-nies qed ifittxu zkuk tal-applikazzjoni tagħhom għall-aħħar jumejn u ma jridux jistennew aktar minn it-tieni għar-riżultat ta' mistoqsija fformulata.
  • L-amministraturi saħqu li s-sistema tkun faċilment skalabbli jekk meħtieġ, mingħajr ma jkunu jeħtieġu li jidħlu fil-fond dwar kif taħdem.
  • Sabiex l-uniku kompitu ta 'manutenzjoni li dawn is-sistemi jeħtieġu perjodikament huwa li jinbidel xi hardware.
  • Barra minn hekk, Odnoklassniki għandu tradizzjoni teknika eċċellenti: kwalunkwe servizz li nniedu għandu jgħix għal falliment ta 'ċentru tad-dejta (f'daqqa, mhux ippjanat u assolutament fi kwalunkwe ħin).

L-aħħar rekwiżit fl-implimentazzjoni ta 'dan il-proġett sewa l-aktar, li se nitkellem dwaru f'aktar dettall.

L-Erbgħa

Naħdmu f'erba' ċentri tad-dejta, filwaqt li n-nodi tad-dejta tal-Elasticsearch jistgħu jinstabu biss fi tlieta (għal numru ta' raġunijiet mhux tekniċi).

Dawn l-erba’ ċentri tad-dejta fihom madwar 18-il elf sors ta’ log differenti - ħardwer, kontenituri, magni virtwali.

Karatteristika importanti: il-cluster jibda f'kontenituri podman mhux fuq magni fiżiċi, iżda fuq prodott sħaba stess sħaba waħda. Il-kontenituri huma garantiti 2 cores, simili għal 2.0Ghz v4, bil-possibbiltà li jiġu riċiklati l-qlub li jifdal jekk ikunu idle.

Fi kliem ieħor:

Raggruppament Elasticsearch 200 TB+

Topoloġija

Inizjalment rajt il-forma ġenerali tas-soluzzjoni kif ġej:

  • 3-4 VIPs huma wara r-rekord A tad-dominju Graylog, dan huwa l-indirizz li fih jintbagħtu r-zkuk.
  • kull VIP huwa balancer LVS.
  • Wara dan, ir-zkuk imorru għall-batterija Graylog, xi wħud mid-dejta hija f'format GELF, xi wħud f'format syslog.
  • Imbagħad dan kollu jinkiteb f'lottijiet kbar lil batterija ta 'koordinaturi ta' Elasticsearch.
  • U huma, min-naħa tagħhom, jibagħtu talbiet għall-kitba u l-qari lin-nodi tad-dejta rilevanti.

Raggruppament Elasticsearch 200 TB+

Terminoloġija

Forsi mhux kulħadd jifhem it-terminoloġija fid-dettall, għalhekk nixtieq nitkellem ftit fuqha.

Elasticsearch għandu diversi tipi ta 'nodi - master, koordinatur, data node. Hemm żewġ tipi oħra għal trasformazzjonijiet ta 'log differenti u komunikazzjoni bejn clusters differenti, iżda użajna biss dawk elenkati.

Master
Jagħmel ping tan-nodi kollha preżenti fil-cluster, iżomm mappa tal-clusters aġġornata u jqassamha bejn in-nodi, jipproċessa l-loġika tal-avvenimenti, u jwettaq diversi tipi ta’ manutenzjoni tal-cluster mifruxa.

Koordinatur
Iwettaq kompitu wieħed: jaċċetta talbiet ta' qari jew kitba mill-klijenti u jmur dan it-traffiku. F'każ li jkun hemm talba għall-kitba, x'aktarx, tistaqsi lill-kaptan f'liema shard tal-indiċi rilevanti għandha tpoġġiha, u se terġa' tindirizza t-talba aktar.

Nodu tad-dejta
Jaħżen id-dejta, iwettaq mistoqsijiet ta 'tfittxija li jaslu minn barra u jwettaq operazzjonijiet fuq shards li jinsabu fuqha.

graylog
Din hija xi ħaġa bħal fużjoni ta 'Kibana ma' Logstash fi munzell ELK. Graylog jgħaqqad kemm UI kif ukoll pipeline tal-ipproċessar tal-log. Taħt il-barnuża, Graylog imexxi Kafka u Zookeeper, li jipprovdu konnettività lil Graylog bħala cluster. Graylog jista 'jaħke zkuk fil-cache (Kafka) f'każ li Elasticsearch ma jkunx disponibbli u jirrepeti talbiet ta' qari u tikteb mingħajr suċċess, iggruppa u jimmarka zkuk skont regoli speċifikati. Bħal Logstash, Graylog għandu funzjonalità biex jimmodifika ringieli qabel ma jiktebhom lil Elasticsearch.

Barra minn hekk, Graylog għandu skoperta ta 'servizz inkorporata li tippermetti, ibbażata fuq node Elasticsearch wieħed disponibbli, li tikseb il-mappa tal-cluster kollu u tiffiltraha b'tikketta speċifika, li tagħmilha possibbli li t-talbiet jiġu diretti lejn kontenituri speċifiċi.

Viżwalment jidher xi ħaġa bħal din:

Raggruppament Elasticsearch 200 TB+

Din hija screenshot minn każ speċifiku. Hawnhekk nibnu istogramma bbażata fuq il-mistoqsija tat-tfittxija u nuru ringieli rilevanti.

Indiċijiet

Nirritornaw għall-arkitettura tas-sistema, nixtieq nitkellem f'aktar dettall dwar kif bnejna l-mudell tal-indiċi sabiex kollox ħadem b'mod korrett.

Fid-dijagramma ta 'hawn fuq, dan huwa l-aktar livell baxx: Nodi tad-dejta Elasticsearch.

Indiċi huwa entità virtwali kbira magħmula minn shards Elasticsearch. Fih innifsu, kull shards mhu xejn aktar minn indiċi Lucene. U kull indiċi Lucene, imbagħad, jikkonsisti minn segment wieħed jew aktar.

Raggruppament Elasticsearch 200 TB+

Meta nfasslu, aħna dehret li sabiex nilħqu r-rekwiżit għall-veloċità tal-qari fuq ammont kbir ta 'dejta, kellna bżonn "inxerrdu" din id-dejta b'mod ugwali bejn in-nodi tad-dejta.

Dan irriżulta fil-fatt li n-numru ta 'shards għal kull indiċi (b'repliki) għandu jkun strettament ugwali għan-numru ta' nodi tad-dejta. L-ewwelnett, sabiex jiġi żgurat fattur ta 'replikazzjoni ugwali għal tnejn (jiġifieri, nistgħu nitilfu nofs il-cluster). U, it-tieni, sabiex tipproċessa talbiet ta 'qari u tikteb fuq mill-inqas nofs il-cluster.

L-ewwel iddeterminajna l-ħin tal-ħażna bħala 30 jum.

Id-distribuzzjoni ta 'shards tista' tiġi rappreżentata grafikament kif ġej:

Raggruppament Elasticsearch 200 TB+

Ir-rettangolu griż skur kollu huwa indiċi. Il-kwadru aħmar tax-xellug fih huwa l-frak primarju, l-ewwel fl-indiċi. U l-kwadru blu huwa shard replika. Huma jinsabu f'ċentri tad-dejta differenti.

Meta nżidu shard ieħor, din tmur fit-tielet ċentru tad-dejta. U, fl-aħħar, niksbu din l-istruttura, li tagħmilha possibbli li titlef id-DC mingħajr ma nitilfu l-konsistenza tad-dejta:

Raggruppament Elasticsearch 200 TB+

Rotazzjoni tal-indiċi, i.e. ħolqien ta 'indiċi ġdid u tħassar l-eqdem wieħed, għamilna ugwali għal 48 siegħa (skond il-mudell ta' użu ta 'indiċi: l-aħħar 48 siegħa huma mfittxija l-aktar spiss).

Dan l-intervall ta' rotazzjoni ta' l-indiċi huwa dovut għar-raġunijiet li ġejjin:

Meta talba ta 'tfittxija tasal f'node ta' dejta speċifiku, allura, mil-lat tal-prestazzjoni, ikun aktar profittabbli meta shard wieħed jiġi mistoqsi, jekk id-daqs tiegħu huwa komparabbli mad-daqs tal-ġenbejn tan-node. Dan jippermettilek iżżomm il-parti "taħraq" tal-indiċi f'borġ u taċċessaha malajr. Meta jkun hemm ħafna "partijiet sħan", il-veloċità tat-tfittxija tal-indiċi tiddegrada.

Meta node jibda jesegwixxi mistoqsija ta 'tfittxija fuq shard wieħed, jalloka numru ta' ħjut ugwali għan-numru ta 'qlub hyperthreading tal-magna fiżika. Jekk mistoqsija ta 'tfittxija taffettwa numru kbir ta' shards, allura n-numru ta 'ħjut jikber proporzjonalment. Dan għandu impatt negattiv fuq il-veloċità tat-tfittxija u jaffettwa b'mod negattiv l-indiċjar ta 'dejta ġdida.

Biex nipprovdu l-latency ta 'tfittxija meħtieġa, iddeċidejna li nużaw SSD. Biex jiġu pproċessati malajr it-talbiet, il-magni li ospitaw dawn il-kontenituri kellhom ikollhom mill-inqas 56 qalba. Iċ-ċifra ta '56 intgħażlet bħala valur kondizzjonali suffiċjenti li jiddetermina n-numru ta' ħjut li Elasticsearch se jiġġenera waqt it-tħaddim. F'Elasitcsearch, ħafna parametri tal-grupp tal-ħajt jiddependu direttament fuq in-numru ta 'qlub disponibbli, li min-naħa tiegħu jaffettwa direttament in-numru meħtieġ ta' nodi fil-cluster skond il-prinċipju "inqas qlub - aktar nodi".

Bħala riżultat, sibna li bħala medja shard jiżen madwar 20 gigabytes, u hemm 1 shards għal kull indiċi. Għaldaqstant, jekk indawwarhom darba kull 360 siegħa, allura jkollna 48 minnhom. Kull indiċi fih dejta għal jumejn.

Ċirkwiti tal-kitba u tal-qari tad-data

Ejja nsemmu kif id-data hija rreġistrata f'din is-sistema.

Ejja ngħidu tasal xi talba minn Graylog lill-koordinatur. Per eżempju, irridu indiċi 2-3 elf ringieli.

Il-koordinatur, wara li rċieva talba mingħand Graylog, jistaqsi lill-kaptan: "Fit-talba għall-indiċjar, speċifikajna indiċi speċifikament, iżda f'liema shard tikteb ma kienx speċifikat."

Il-kaptan iwieġeb: "Ikteb din l-informazzjoni f'numru shard 71," u wara tintbagħat direttament lin-nodu tad-dejta rilevanti, fejn jinsab in-numru tal-frak primarju 71.

Wara dan ir-reġistru tat-tranżazzjonijiet jiġi replikat għal replika-shard, li jinsab f'ċentru tad-dejta ieħor.

Raggruppament Elasticsearch 200 TB+

Talba ta' tfittxija tasal minn Graylog lill-koordinatur. Il-koordinatur jidderieġih skond l-indiċi, filwaqt li Elasticsearch iqassam it-talbiet bejn il-primary-shard u replica-shard billi juża l-prinċipju round-robin.

Raggruppament Elasticsearch 200 TB+

In-nodi 180 jirrispondu b'mod irregolari, u waqt li jkunu qed jirrispondu, il-koordinatur qed jakkumula informazzjoni li diġà ġiet "bżieq" minn nodi ta 'dejta aktar mgħaġġla. Wara dan, meta jew l-informazzjoni kollha tkun waslet, jew it-talba tkun laħqet timeout, tagħti kollox direttament lill-klijent.

Din is-sistema kollha bħala medja tipproċessa mistoqsijiet ta' tfittxija għall-aħħar 48 siegħa fi 300-400ms, esklużi dawk il-mistoqsijiet b'wildcard ewlieni.

Fjuri b'Elasticsearch: Setup ta' Java

Raggruppament Elasticsearch 200 TB+

Biex kollox jaħdem kif ridna oriġinarjament, qattajna żmien twil ħafna niddibaggjaw varjetà wiesgħa ta 'affarijiet fil-cluster.

L-ewwel parti tal-problemi skoperti kienet relatata mal-mod kif Java huwa kkonfigurat minn qabel b'mod awtomatiku f'Elasticsearch.

Problema waħda
Rajna numru kbir ħafna ta 'rapporti li fil-livell Lucene, meta l-impjiegi fl-isfond qed jaħdmu, l-għaqdiet tas-segment Lucene jonqsu bi żball. Fl-istess ħin, kien ċar fir-zkuk li dan kien żball OutOfMemoryError. Rajna mit-telemetrija li l-ġenbejn kien ħieles, u ma kienx ċar għaliex din l-operazzjoni kienet qed ifalli.

Irriżulta li l-għaqdiet ta 'l-indiċi Lucene jseħħu barra l-ġenbejn. U l-kontenituri huma pjuttost limitati f'termini ta 'riżorsi kkunsmati. Heap biss setgħu jidħlu f'dawn ir-riżorsi (il-valur heap.size kien bejn wieħed u ieħor ugwali għal RAM), u xi operazzjonijiet off-heap ġġarraf bi żball ta 'allokazzjoni tal-memorja jekk għal xi raġuni ma jidħlux fil-~500MB li baqa' qabel il-limitu.

It-tiswija kienet pjuttost trivjali: l-ammont ta 'RAM disponibbli għall-kontenitur żdied, u wara nsejna li anke kellna problemi bħal dawn.

Problema tnejn
4-5 ijiem wara t-tnedija tal-cluster, aħna ndunat li n-nodi tad-dejta bdew perjodikament jaqgħu barra mill-cluster u jidħlu fih wara 10-20 sekonda.

Meta bdejna biex insemmu, irriżulta li din il-memorja off-heap f'Elasticsearch mhix ikkontrollata bl-ebda mod. Meta tajna aktar memorja lill-kontenitur, stajna nimlew il-buffer pools diretti b'diversi informazzjoni, u ġiet ikklerjata biss wara li tnieda l-GC espliċitu minn Elasticsearch.

F'xi każijiet, din l-operazzjoni ħadet żmien pjuttost twil, u matul dan iż-żmien il-cluster irnexxielu jimmarka dan in-node bħala diġà ħareġ. Din il-problema hija deskritta tajjeb hawn.

Is-soluzzjoni kienet kif ġej: illimitajna l-kapaċità ta' Java li tuża l-biċċa l-kbira tal-memorja barra l-borġ għal dawn l-operazzjonijiet. Aħna llimitajna għal 16-il gigabytes (-XX:MaxDirectMemorySize=16g), billi niżguraw li GC espliċitu jissejjaħ ħafna aktar spiss u pproċessat ħafna aktar malajr, u b'hekk ma jibqax jiddestabilizza l-cluster.

Problema tlieta
Jekk taħseb li l-problemi bil-"nodi li jħallu l-cluster fl-iktar mument mhux mistenni" spiċċaw, inti żbaljat.

Meta kkonfigurajna x-xogħol bl-indiċi, għażilna mmapfs biex tnaqqas il-ħin tat-tfittxija fuq shards friski b'segmentazzjoni kbira. Dan kien pjuttost tfixkil, għax meta tuża mmapfs il-fajl jiġi mmappjat f'RAM, u mbagħad naħdmu mal-fajl immappjat. Minħabba dan, jirriżulta li meta l-GC jipprova jwaqqaf il-ħjut fl-applikazzjoni, immorru fis-safepoint għal żmien twil ħafna, u fit-triq lejha, ​​l-applikazzjoni tieqaf twieġeb għat-talbiet tal-kaptan dwar jekk hijiex ħaj . Għaldaqstant, il-kaptan jemmen li n-nodu m'għadux preżenti fil-cluster. Wara dan, wara 5-10 sekondi, il-kollettur taż-żibel jaħdem, in-nodu jieħu l-ħajja, jerġa 'jidħol fil-cluster u jibda jinizjalizza shards. Kollox ħassu ħafna bħal "il-produzzjoni li ħaqqna" u ma kienx adattat għal xi ħaġa serja.

Biex teħles minn din l-imġieba, l-ewwel qlibna għal niofs standard, u mbagħad, meta emigrajna mill-ħames verżjonijiet ta 'Elastic għas-sitt, ippruvajna hybridfs, fejn din il-problema ma ġietx riprodotta. Tista 'taqra aktar dwar it-tipi ta' ħażna hawn.

Problema erbgħa
Imbagħad kien hemm problema oħra interessanti ħafna li ttrattajna għal żmien rekord. Qbidna għal 2-3 xhur minħabba li l-mudell tiegħu kien assolutament inkomprensibbli.

Xi drabi l-koordinaturi tagħna marru għal Full GC, normalment xi żmien wara l-ikla, u qatt ma rritornaw minn hemm. Fl-istess ħin, meta illoggja d-dewmien tal-GC, deher hekk: kollox sejjer tajjeb, tajjeb, tajjeb, u mbagħad f'daqqa waħda kollox sejjer ħażin ħafna.

Għall-ewwel ħsibna li kellna utent ħażin li kien qed iniedi xi tip ta 'talba li knocked-koordinatur barra mill-mod tax-xogħol. Aħna illoggjaw it-talbiet għal żmien twil ħafna, jippruvaw insemmu x'kien qed jiġri.

Bħala riżultat, irriżulta li fil-mument meta utent iniedi talba enormi, u jasal għand koordinatur speċifiku ta 'Elasticsearch, xi nodi jirrispondu aktar minn oħrajn.

U filwaqt li l-koordinatur qed jistenna tweġiba min-nodi kollha, jakkumula r-riżultati mibgħuta min-nodi li diġà rrispondew. Għal GC, dan ifisser li l-mudelli tal-użu tal-borġ tagħna jinbidlu malajr ħafna. U l-GC li użajna ma setgħetx tlaħħaq ma' dan il-kompitu.

L-unika soluzzjoni li sibna biex tbiddel l-imġieba tal-cluster f'din is-sitwazzjoni hija l-migrazzjoni għal JDK13 u l-użu tal-kollettur taż-żibel Shenandoah. Dan solviet il-problema, il-koordinaturi tagħna waqfu jaqgħu.

Dan huwa fejn spiċċaw il-problemi bil-Java u bdew il-problemi tal-bandwidth.

"Berries" b'Elasticsearch: throughput

Raggruppament Elasticsearch 200 TB+

Problemi bil-fluss ifissru li l-cluster tagħna jaħdem b'mod stabbli, iżda fl-ogħla livelli fin-numru ta 'dokumenti indiċjati u waqt manuvri, il-prestazzjoni hija insuffiċjenti.

L-ewwel sintomu li ltaqgħu magħhom: waqt xi "splużjonijiet" fil-produzzjoni, meta f'daqqa waħda jiġi ġġenerat numru kbir ħafna ta 'zkuk, l-iżball ta' indiċjar es_rejected_execution jibda jteptep ta 'spiss fi Graylog.

Dan kien minħabba l-fatt li thread_pool.write.queue fuq nodu tad-data wieħed, sal-mument li Elasticsearch ikun jista 'jipproċessa t-talba għall-indiċjar u jtella' l-informazzjoni fuq il-parti fuq id-diska, huwa kapaċi jdaħħal fil-cache 200 talba biss b'mod awtomatiku. U fi Dokumentazzjoni ta' Elasticsearch Ftit li xejn jingħad dwar dan il-parametru. In-numru massimu ta' ħjut u d-daqs default biss huma indikati.

Naturalment, morna biex nidawwar dan il-valur u sibna dan li ġej: speċifikament, fis-setup tagħna, sa 300 talba huma miżmumin fil-cache pjuttost tajjeb, u valur ogħla huwa mimli bil-fatt li erġajna ttiru f'Full GC.

Barra minn hekk, peress li dawn huma lottijiet ta 'messaġġi li jaslu fi ħdan talba waħda, kien meħtieġ li tweak Graylog sabiex jikteb mhux spiss u f'lottijiet żgħar, iżda f'lottijiet enormi jew darba kull 3 sekondi jekk il-lott għadu mhux komplut. F'dan il-każ, jirriżulta li l-informazzjoni li niktbu f'Elasticsearch issir disponibbli mhux f'żewġ sekondi, iżda f'ħamsa (li jaqblilna pjuttost tajjeb), iżda n-numru ta 'retrays li jridu jsiru sabiex timbotta permezz kbir. munzell ta 'informazzjoni huwa mnaqqas.

Dan huwa speċjalment importanti f'dawk il-mumenti meta xi ħaġa ġġarraf x'imkien u b'mod furious tirrapporta dwarha, sabiex ma tikseb Elastic kompletament spammed, u wara xi żmien - nodi Graylog li huma inoperabbli minħabba buffers misduda.

Barra minn hekk, meta kellna dawn l-istess splużjonijiet fil-produzzjoni, irċevejna lmenti minn programmaturi u testers: fil-mument meta verament kellhom bżonn dawn ir-zkuk, ingħatawhom bil-mod ħafna.

Bdew jifhmuha. Min-naħa l-waħda, kien ċar li kemm mistoqsijiet ta’ tfittxija kif ukoll mistoqsijiet ta’ indiċjar ġew ipproċessati, essenzjalment, fuq l-istess magni fiżiċi, u b’xi mod jew ieħor ikun hemm ċerti drawdowns.

Iżda dan jista 'jiġi parzjalment evitat minħabba l-fatt li fis-sitt verżjonijiet ta' Elasticsearch deher algoritmu li jippermettilek tqassam mistoqsijiet bejn nodi tad-dejta rilevanti mhux skont il-prinċipju ta 'round-robin każwali (il-kontenitur li jagħmel l-indiċjar u jżomm il-primarja- shard jista 'jkun okkupat ħafna, mhux se jkun hemm mod biex tirrispondi malajr), iżda biex tgħaddi din it-talba lil kontenitur inqas mgħobbi b'replika-shard, li se tirrispondi ħafna aktar malajr. Fi kliem ieħor, wasalna għal use_adaptive_replica_selection: true.

L-istampa tal-qari tibda tidher bħal din:

Raggruppament Elasticsearch 200 TB+

It-tranżizzjoni għal dan l-algoritmu għamlitha possibbli li jittejjeb b'mod sinifikanti l-ħin tal-mistoqsija f'dawk il-mumenti meta kellna fluss kbir ta 'zkuk x'nikteb.

Fl-aħħarnett, il-problema ewlenija kienet it-tneħħija mingħajr tbatija taċ-ċentru tad-dejta.

Dak li ridna mill-cluster immedjatament wara li tlift il-konnessjoni ma 'DC wieħed:

  • Jekk ikollna kaptan kurrenti fiċ-ċentru tad-dejta fallut, allura jerġa 'jintgħażel u mċaqlaq bħala rwol għal nodu ieħor f'DC ieħor.
  • Il-kaptan se jneħħi malajr in-nodi kollha inaċċessibbli mill-cluster.
  • Ibbażat fuq dawk li fadal, se jifhem: fiċ-ċentru tad-dejta mitluf kellna shards primarji bħal dawn, malajr jippromwovi shards repliki komplementari fiċ-ċentri tad-dejta li jifdal, u aħna se nkomplu indiċjaw id-dejta.
  • Bħala riżultat ta 'dan, il-kitba u l-qari tal-cluster se tiddegrada gradwalment, iżda b'mod ġenerali kollox se jaħdem, għalkemm bil-mod, iżda b'mod stabbli.

Kif irriżulta, ridna xi ħaġa bħal din:

Raggruppament Elasticsearch 200 TB+

U ksibna dan li ġej:

Raggruppament Elasticsearch 200 TB+

Kif ġara dan?

Meta ċ-ċentru tad-dejta waqa ', il-kaptan tagħna sar il-konġestjoni.

Għaliex?

Il-fatt hu li l-kaptan għandu TaskBatcher, li huwa responsabbli biex iqassam ċerti kompiti u avvenimenti fil-cluster. Kwalunkwe ħruġ ta 'node, kwalunkwe promozzjoni ta' shard minn replika għal primarja, kwalunkwe kompitu biex jinħoloq shard x'imkien - dan kollu jmur l-ewwel għal TaskBatcher, fejn jiġi pproċessat b'mod sekwenzjali u f'ħajt wieħed.

Fiż-żmien tal-irtirar ta 'ċentru tad-dejta wieħed, irriżulta li n-nodi tad-dejta kollha fiċ-ċentri tad-dejta li baqgħu ħajjin qiesu li kien id-dmir tagħhom li jinfurmaw lill-kaptan "tlifna shards bħal dawn u tali nodi tad-dejta."

Fl-istess ħin, in-nodi tad-dejta superstiti bagħtu din l-informazzjoni kollha lill-kaptan attwali u ppruvaw jistennew konferma li aċċettaha. Huma ma stennewx għal dan, peress li l-kaptan irċieva kompiti aktar malajr milli seta 'jwieġeb. In-nodi skadew it-talbiet li jirrepetu, u l-kaptan f'dan iż-żmien lanqas biss ipprova jwieġebhom, iżda kien kompletament assorbit fil-kompitu li jagħżel it-talbiet bi prijorità.

F'forma terminali, irriżulta li n-nodi tad-dejta spammjaw lill-kaptan sal-punt li marret f'GC sħiħ. Wara dan, ir-rwol ta 'kaptan tagħna tmexxa għal xi nodu li jmiss, assolutament l-istess ħaġa ġara lilu, u bħala riżultat il-cluster waqa' kompletament.

Ħadna kejl, u qabel il-verżjoni 6.4.0, fejn dan kien iffissat, kien biżżejjed għalina li fl-istess ħin toħroġ biss 10 nodi tad-dejta minn 360 sabiex nagħlqu kompletament il-cluster.

Deher xi ħaġa bħal din:

Raggruppament Elasticsearch 200 TB+

Wara l-verżjoni 6.4.0, fejn dan il-bug terribbli ġie ffissat, in-nodi tad-dejta waqfu joqtlu lill-kaptan. Iżda dan ma għamilhiex "aktar intelliġenti." Jiġifieri: meta noħorġu 2, 3 jew 10 (kwalunkwe numru minbarra wieħed) nodi tad-dejta, il-kaptan jirċievi xi l-ewwel messaġġ li jgħid li n-node A telaq, u jipprova jgħid lin-node B, in-node C dwar dan, in-node D.

U bħalissa, dan jista 'jiġi ttrattat biss billi jiġi stabbilit timeout għal tentattivi biex tgħid lil xi ħadd dwar xi ħaġa, ugwali għal madwar 20-30 sekonda, u b'hekk tikkontrolla l-veloċità taċ-ċentru tad-data li joħroġ mill-cluster.

Fil-prinċipju, dan jidħol fir-rekwiżiti li kienu inizjalment ippreżentati lill-prodott finali bħala parti mill-proġett, iżda mill-aspett ta '"xjenza pura" dan huwa bug. Li, mill-mod, ġie ffissat b'suċċess mill-iżviluppaturi fil-verżjoni 7.2.

Barra minn hekk, meta ċertu node tad-dejta ħareġ, irriżulta li t-tixrid tal-informazzjoni dwar il-ħruġ tiegħu kien aktar importanti milli li tgħid lir-raggruppament kollu li kien hemm tali jew tali shards primarji fuqu (sabiex tiġi promossa replika-shard f'dejta oħra ċentru fil-primarja, u fl-informazzjoni tista’ tinkiteb fuqhom).

Għalhekk, meta kollox ikun diġà miet, in-nodi tad-dejta rilaxxati mhumiex immarkati immedjatament bħala skaduti. Għaldaqstant, aħna mġiegħla nistennew sakemm il-pings kollha jkunu skadew għan-nodi tad-data rilaxxati, u biss wara li l-cluster tagħna jibda jgħidilna li hemm, hemm, u hemm bżonn inkomplu nirreġistraw l-informazzjoni. Tista' taqra aktar dwar dan hawn.

Bħala riżultat, l-operazzjoni tal-irtirar ta 'ċentru tad-dejta llum teħodna madwar 5 minuti matul is-siegħa rush. Għal kolossu daqshekk kbir u goff, dan huwa riżultat pjuttost tajjeb.

Bħala riżultat, wasalna għad-deċiżjoni li ġejja:

  • Għandna 360 nodu tad-dejta b'700 gigabyte disks.
  • 60 koordinatur għar-rotta tat-traffiku minn dawn l-istess data nodes.
  • 40 master li ħallejna bħala tip ta 'wirt mill-verżjonijiet qabel 6.4.0 - sabiex ngħixu l-irtirar taċ-ċentru tad-dejta, konna mentalment ippreparati li nitilfu diversi magni sabiex inkunu garantiti li jkollna kworum ta' masters anke f' l-agħar xenarju
  • Kwalunkwe tentattiv biex tgħaqqad ir-rwoli fuq kontenitur wieħed intlaħaq bil-fatt li llum jew għada n-nodu jinkiser taħt tagħbija.
  • Il-cluster kollu juża heap.size ta '31 gigabytes: it-tentattivi kollha biex jitnaqqas id-daqs irriżultaw jew fil-qtil ta' xi nodi fuq mistoqsijiet ta 'tfittxija tqal bil-wildcard ewlieni jew li jiksbu l-circuit breaker f'Elasticsearch innifsu.
  • Barra minn hekk, biex niżguraw il-prestazzjoni tat-tfittxija, ippruvajna nżommu n-numru ta 'oġġetti fil-cluster kemm jista' jkun żgħir, sabiex nipproċessaw l-inqas avvenimenti possibbli fil-konġestjoni li sirna fil-kaptan.

Fl-aħħarnett dwar il-monitoraġġ

Biex niżguraw li dan kollu jaħdem kif maħsub, aħna nissorveljaw dan li ġej:

  • Kull nodu tad-dejta jirrapporta lill-sħaba tagħna li jeżisti, u hemm biċċiet bħal dawn fuqu. Meta nitfu xi ħaġa x'imkien, il-cluster jirrapporta wara 2-3 sekondi li fiċ-ċentru A konna estinti n-nodi 2, 3, u 4 - dan ifisser li f'ċentri tad-dejta oħra aħna taħt l-ebda ċirkostanza ma nistgħu nitfu dawk in-nodi li fuqhom hemm biss shard wieħed. xellug.
  • Billi nkunu nafu n-natura tal-imġieba tal-kaptan, inħarsu bir-reqqa lejn in-numru ta 'kompiti pendenti. Minħabba li anki kompitu mwaħħla waħda, jekk ma tispiċċax fil-ħin, teoretikament f'xi sitwazzjoni ta 'emerġenza tista' ssir ir-raġuni għaliex, pereżempju, il-promozzjoni ta 'replika shard fil-primarja ma taħdimx, u huwa għalhekk li l-indiċjar jieqaf jaħdem.
  • Inħarsu wkoll mill-qrib ħafna lejn id-dewmien tal-ġbir taż-żibel, għaliex diġà kellna diffikultajiet kbar b'dan waqt l-ottimizzazzjoni.
  • Tiċħad bil-ħajta biex tifhem minn qabel fejn hu l-konġestjoni.
  • Ukoll, metriċi standard bħal borġ, RAM u I/O.

Waqt il-monitoraġġ tal-bini, trid tqis il-karatteristiċi ta' Thread Pool f'Elasticsearch. Dokumentazzjoni ta' Elasticsearch jiddeskrivi l-għażliet tal-konfigurazzjoni u l-valuri awtomatiċi għat-tfittxija u l-indiċjar, iżda huwa kompletament sieket dwar thread_pool.management.Dawn il-ħjut jipproċessaw, b'mod partikolari, mistoqsijiet bħal _cat/shards u oħrajn simili, li huma konvenjenti biex jintużaw meta tikteb monitoraġġ. Iktar ma jkun kbir il-cluster, aktar talbiet bħal dawn jiġu eżegwiti għal kull unità ta 'żmien, u l-thread_pool.management msemmi qabel mhux biss mhux ippreżentat fid-dokumentazzjoni uffiċjali, iżda huwa wkoll limitat awtomatikament għal 5 ħjut, li jintrema malajr ħafna, wara liema monitoraġġ jieqaf jaħdem b'mod korrett.

Dak li rrid ngħid bħala konklużjoni: għamilna dan! Konna kapaċi nagħtu lill-programmaturi u lill-iżviluppaturi tagħna għodda li, fi kważi kull sitwazzjoni, tista 'tipprovdi malajr u b'mod affidabbli informazzjoni dwar dak li qed jiġri fil-produzzjoni.

Iva, irriżulta li kien pjuttost ikkumplikat, iżda, madankollu, irnexxielna noqogħdu x-xewqat tagħna fi prodotti eżistenti, li ma kellniex għalfejn inpattaw u niktbu mill-ġdid għalina nfusna.

Raggruppament Elasticsearch 200 TB+

Sors: www.habr.com

Żid kumment