Gwoup Elasticsearch 200 TB+

Gwoup Elasticsearch 200 TB+

Anpil moun ap lite ak Elasticsearch. Men, sa k ap pase lè ou vle sèvi ak li nan magazen mòso bwa "nan yon volim patikilyèman gwo"? Epi èske li tou san doulè fè eksperyans echèk nan nenpòt nan plizyè sant done? Ki kalite achitekti ou ta dwe fè, ak ki pyèj ou pral bite sou?

Nou nan Odnoklassniki deside sèvi ak elastiksearch pou rezoud pwoblèm nan nan jesyon boutèy demi lit, epi kounye a nou pataje eksperyans nou ak Habr: tou de sou achitekti ak sou enkonvenyans.

Mwen se Pyotr Zaitsev, mwen travay kòm yon administratè sistèm nan Odnoklassniki. Anvan sa, mwen te tou yon admin, te travay ak Manticore Search, rechèch Sphinx, Elasticsearch. Petèt, si yon lòt ... rechèch parèt, mwen pral pwobableman travay avèk li tou. Mwen patisipe tou nan yon kantite pwojè sous louvri sou yon baz volontè.

Lè m 'rive nan Odnoklassniki, mwen te di nan entèvyou a san reflechi ke mwen te kapab travay ak Elasticsearch. Apre mwen te fin fè kèk travay senp, mwen te resevwa gwo travay pou refòm sistèm jesyon boutèy demi lit ki te egziste nan epòk sa a.

Kondisyon pou

Kondisyon sistèm yo te fòmile jan sa a:

  • Graylog te dwe itilize kòm frontend la. Paske konpayi an te deja gen eksperyans lè l sèvi avèk pwodui sa a, pwogramasyon ak tèsteur yo te konnen li, li te abitye ak pratik pou yo.
  • Volim done: an mwayèn 50-80 mil mesaj pou chak segonn, men si yon bagay kraze, Lè sa a, trafik la pa limite pa anyen, li kapab 2-3 milyon liy pou chak segonn.
  • Lè nou te diskite ak kliyan kondisyon yo pou vitès la nan pwosesis rechèch rechèch, nou reyalize ke modèl la tipik nan lè l sèvi avèk yon sistèm sa a se sa a: moun ap chèche pou mòso bwa aplikasyon yo pou de jou ki sot pase yo epi yo pa vle rete tann plis pase yon. dezyèm pou rezilta yon rechèch formul.
  • Administratè yo te ensiste ke sistèm lan kapab fasilman évolutive si sa nesesè, san yo pa mande yo pou yo fouye pwofondman nan fason li fonksyone.
  • Se konsa ke travay la antretyen sèlman ke sistèm sa yo mande detanzantan se chanje kèk pyès ki nan konpitè.
  • Anplis de sa, Odnoklassniki gen yon tradisyon teknik ekselan: nenpòt sèvis ke nou lanse dwe siviv yon echèk sant done (toudenkou, san planifye ak absoliman nenpòt ki lè).

Dènye egzijans nan aplikasyon an nan pwojè sa a koute nou pi plis, ki mwen pral pale sou an plis detay.

Mèkredi

Nou travay nan kat sant done, pandan y ap nœuds done Elasticsearch ka sèlman sitiye nan twa (pou yon kantite rezon ki pa teknik).

Kat sant done sa yo genyen apeprè 18 mil diferan sous boutèy demi lit - pyès ki nan konpitè, resipyan, machin vityèl.

Karakteristik enpòtan: gwoup la kòmanse nan resipyan podman pa sou machin fizik, men sou pwòp pwodwi nwaj yon sèl-nwaj. Resipyan yo garanti 2 nwayo, menm jan ak 2.0Ghz v4, ak posibilite pou resiklaj nwayo ki rete yo si yo san fè anyen konsa.

Nan yon lòt sans:

Gwoup Elasticsearch 200 TB+

Topoloji

Okòmansman, mwen te wè fòm jeneral solisyon an jan sa a:

  • 3-4 VIP yo dèyè A-dosye domèn Graylog la, se adrès kote yo voye mòso bwa yo.
  • chak VIP se yon balans LVS.
  • Apre li, mòso bwa yo ale nan batri Graylog la, kèk nan done yo se nan fòma GELF, kèk nan fòma syslog.
  • Lè sa a, tout bagay sa yo ekri nan pakèt gwo nan yon batri nan koòdonatè Elasticsearch.
  • Apre sa, yo, nan vire, voye ekri ak li demann nan nœuds done ki enpòtan yo.

Gwoup Elasticsearch 200 TB+

Tèminoloji

Petèt pa tout moun konprann tèminoloji a an detay, kidonk mwen ta renmen rete sou li yon ti kras.

Elasticsearch gen plizyè kalite nœuds - mèt, koòdonatè, done ne. Gen de lòt kalite pou diferan transfòmasyon boutèy demi lit ak kominikasyon ant gwoup diferan, men nou itilize sèlman sa yo ki nan lis la.

Mèt
Li fè ping tout nœuds ki prezan nan gwoup la, li kenbe yon kat jeyografik ki ajou epi distribye li ant nœuds, trete lojik evènman yo, epi li fè plizyè kalite antretyen nan gwoup la.

Koòdonatè
Fè yon sèl travay: aksepte demann li oswa ekri nan men kliyan ak wout trafik sa a. Nan ka ta gen yon demann ekri, gen plis chans, li pral mande mèt ki ti moso nan endèks la ki enpòtan li ta dwe mete li nan, epi li pral redireksyon demann lan pi lwen.

Done ne
Sere done, fè rechèch rechèch ki rive soti deyò epi fè operasyon sou shards ki sitiye sou li.

graylog
Sa a se yon bagay tankou yon fizyon Kibana ak Logstash nan yon pil ELK. Graylog konbine tou de yon UI ak yon tiyo pwosesis boutèy demi lit. Anba kapo a, Graylog kouri Kafka ak Zookeeper, ki bay koneksyon ak Graylog kòm yon gwoup. Graylog ka kache mòso bwa (Kafka) nan ka Elasticsearch pa disponib epi repete demann lekti ak ekri san siksè, gwoupe ak make mòso bwa dapre règleman espesifye. Menm jan ak Logstash, Graylog gen fonksyonalite pou modifye ranje anvan yo ekri yo nan Elasticsearch.

Anplis de sa, Graylog gen yon dekouvèt sèvis entegre ki pèmèt, ki baze sou yon nœud Elasticsearch ki disponib, jwenn kat jeyografik gwoup la ak filtre li pa yon tag espesifik, ki fè li posib pou dirije demann nan resipyan espesifik.

Vizyèlman li sanble yon bagay tankou sa a:

Gwoup Elasticsearch 200 TB+

Sa a se yon Ekran ki soti nan yon egzanp espesifik. Isit la nou bati yon istogram ki baze sou rechèch rechèch la epi montre ranje ki enpòtan.

Endèks

Retounen nan achitekti sistèm lan, mwen ta renmen rete nan plis detay sou ki jan nou bati modèl la endèks pou ke li tout te travay kòrèkteman.

Nan dyagram ki anwo a, sa a se nivo ki pi ba a: nœuds done Elasticsearch.

Yon endèks se yon gwo antite vityèl ki fòme ak shards Elasticsearch. Nan tèt li, chak nan shards yo pa gen anyen plis pase yon endèks Lucene. Ak chak endèks Lucene, nan vire, konsiste de youn oswa plis segman.

Gwoup Elasticsearch 200 TB+

Lè konsepsyon, nou kalkile ke yo nan lòd yo satisfè kondisyon an pou vitès lekti sou yon gwo kantite done, nou te bezwen "gaye" done sa yo respire atravè nœuds done yo.

Sa a te lakòz nan lefèt ke kantite shards pou chak endèks (ak kopi) yo ta dwe entèdi egal a kantite nœuds done yo. Premyèman, yo nan lòd yo asire yon faktè replikasyon egal a de (ki se, nou ka pèdi mwatye nan grap la). Epi, dezyèmman, yo nan lòd yo trete demann li ak ekri sou omwen mwatye nan gwoup la.

Nou premye detèmine tan an depo kòm 30 jou.

Distribisyon shards ka reprezante grafikman jan sa a:

Gwoup Elasticsearch 200 TB+

Tout rektang gri nwa a se yon endèks. Kare wouj goch ki ladan l se teson prensipal la, premye nan endèks la. Ak kare ble a se yon teson kopi. Yo sitiye nan sant done diferan.

Lè nou ajoute yon lòt shard, li ale nan twazyèm sant done. Epi, nan fen a, nou jwenn estrikti sa a, ki fè li posib pou pèdi DC san pèdi konsistans done:

Gwoup Elasticsearch 200 TB+

Wotasyon endèks, i.e. kreye yon nouvo endèks ak efase yon sèl ki pi ansyen, nou te fè li egal a 48 èdtan (dapre modèl la nan itilizasyon endèks: dènye 48 èdtan yo fouye pi souvan).

Entèval wotasyon endèks sa a se akòz rezon sa yo:

Lè yon demann rechèch rive nan yon ne done espesifik, lè sa a, nan yon pwen de vi pèfòmans, li pi pwofitab lè yo mande yon sèl teson, si gwosè li konparab ak gwosè a nan anch ne la. Sa a pèmèt ou kenbe pati "cho" nan endèks la nan yon pil epi byen vit jwenn aksè nan li. Lè gen yon anpil nan "pati cho", vitès la nan rechèch endèks degrade.

Lè yon ne kòmanse egzekite yon rechèch rechèch sou yon sèl shard, li asiyen yon kantite fil ki egal a kantite nwayo hyperthreading nan machin fizik la. Si yon rechèch rechèch afekte yon gwo kantite shards, Lè sa a, kantite fil ap grandi pwopòsyonèl. Sa a gen yon enpak negatif sou vitès rechèch ak negatif afekte endèks nouvo done yo.

Pou bay latansi rechèch ki nesesè yo, nou deside sèvi ak yon SSD. Pou byen vit trete demann yo, machin ki te òganize resipyan sa yo te dwe gen omwen 56 nwayo. Figi a nan 56 te chwazi kòm yon valè kondisyonèl ase ki detèmine kantite fil ke Elasticsearch pral jenere pandan operasyon an. Nan Elasitcsearch, anpil paramèt pisin fil depann dirèkteman sou kantite nwayo ki disponib, ki an vire dirèkteman afekte kantite nœuds ki nesesè nan gwoup la dapre prensip "mwens nwayo - plis nœuds".

Kòm yon rezilta, nou te jwenn ke an mwayèn yon shard peze apeprè 20 jigokte, e gen 1 shards pou chak endèks. An konsekans, si nou vire yo yon fwa chak 360 èdtan, Lè sa a, nou gen 48 nan yo. Chak endèks gen done pou 15 jou.

Sikui ekri ak lekti done

Ann kalkile kijan done yo anrejistre nan sistèm sa a.

Ann di kèk demann rive soti nan Graylog bay kowòdonatè a. Pou egzanp, nou vle endèks 2-3 mil ranje.

Koòdonatè a, li te resevwa yon demann nan men Graylog, kesyone mèt la: "Nan demann pou Indexing la, nou presize espesifikman yon endèks, men nan ki teson yo ekri li pa te espesifye."

Mèt la reponn: "Ekri enfòmasyon sa a nan nimewo 71 shard," apre sa yo voye li dirèkteman nan ne done ki enpòtan, kote nimewo prensipal-shard 71 sitiye.

Apre sa, boutèy tranzaksyon an repwodui nan yon kopi-shard, ki sitiye nan yon lòt sant done.

Gwoup Elasticsearch 200 TB+

Yon demann rechèch rive soti nan Graylog bay kowòdonatè a. Koòdonatè a redireksyon li dapre endèks la, pandan y ap Elasticsearch distribye demann ant primè-shard ak kopi-shard lè l sèvi avèk prensip la round-robin.

Gwoup Elasticsearch 200 TB+

180 nœuds yo reponn inegal, epi pandan y ap reponn, koòdonatè a ap akimile enfòmasyon ki te deja "krache soti" pa pi vit done nœuds. Apre sa, lè swa tout enfòmasyon yo te rive, oswa demann lan te rive nan yon tan, li bay tout bagay dirèkteman nan kliyan an.

An mwayèn, tout sistèm sa a trete demann rechèch pou dènye 48 èdtan yo nan 300-400 ms, eksepte demann sa yo ki gen yon joker dirijan.

Flè ak Elasticsearch: konfigirasyon Java

Gwoup Elasticsearch 200 TB+

Pou fè li tout travay jan nou te orijinal la te vle, nou te pase yon tan trè long debogaj yon gran varyete bagay nan gwoup la.

Premye pati nan pwoblèm yo dekouvri te gen rapò ak fason Java pre-konfigirasyon pa default nan Elasticsearch.

Pwoblèm youn
Nou te obsève yon gwo kantite rapò ke nan nivo Lucene, lè travay background ap kouri, segman Lucene fizyon echwe ak yon erè. An menm tan an, li te klè nan mòso bwa yo ke sa a se te yon erè OutOfMemoryError. Nou te wè nan telemetrik ke anch lan te gratis, epi li pa t klè poukisa operasyon sa a te echwe.

Li te tounen soti ke Lucene endèks fizyon rive deyò anch lan. Ak kontenè yo byen estrikteman limite an tèm de resous konsome. Sèlman pil te kapab antre nan resous sa yo (valè heap.size a te apeprè egal a RAM), ak kèk operasyon off-heap te fè aksidan ak yon erè alokasyon memwa si pou kèk rezon yo pa t 'anfòm nan ~ 500MB ki te rete anvan limit la.

Ranje a te byen trivial: kantite RAM ki disponib pou veso a te ogmante, apre sa nou bliye ke nou menm te gen pwoblèm sa yo.

Pwoblèm de
4-5 jou apre lansman gwoup la, nou remake ke nœuds done yo te kòmanse detanzantan tonbe soti nan gwoup la epi antre nan li apre 10-20 segonn.

Lè nou te kòmanse kalkile li, li te tounen soti ke memwa sa a off-heap nan Elasticsearch pa kontwole nan okenn fason. Lè nou te bay plis memwa nan veso a, nou te kapab ranpli pisin tanpon dirèk yo ak divès enfòmasyon, epi li te otorize sèlman apre yo te fin GC eksplisit la te lanse soti nan Elasticsearch.

Nan kèk ka, operasyon sa a te pran yon bon bout tan, ak pandan tan sa a gwoup la jere yo make ne sa a kòm deja sòti. Pwoblèm sa a byen dekri isit la.

Solisyon an te jan sa a: nou limite kapasite Java a pou sèvi ak èstime nan memwa deyò pil la pou operasyon sa yo. Nou limite li a 16 gigaocte (-XX:MaxDirectMemorySize=16g), asire ke yo te rele GC eksplisit pi souvan ak trete pi vit, kidonk pa destabilize gwoup la ankò.

Pwoblèm twa
Si ou panse ke pwoblèm yo ak "nœuds kite gwoup la nan moman ki pi inatandi" yo fini, ou se erè.

Lè nou configuré travay la ak endèks, nou te chwazi mmapfs pou diminye tan rechèch la sou shards fre ak gwo segmentation. Sa a te byen yon erè, paske lè w ap itilize mmapfs fichye a trase nan RAM, ak Lè sa a, nou travay ak dosye a trase. Poutèt sa, li sanble ke lè GC a eseye sispann fil nan aplikasyon an, nou ale nan safepoint la pou yon tan trè long, ak sou wout la nan li, aplikasyon an sispann reponn a demann mèt la sou si li vivan. . An konsekans, mèt kwè ke ne a pa prezan ankò nan gwoup la. Apre sa, apre 5-10 segonn, pèseptè fatra a ap travay, ne a vini nan lavi, antre nan gwoup la ankò epi li kòmanse inisyalize shards. Li tout te santi anpil tankou "pwodiksyon an nou merite" epi li pa t 'apwopriye pou anyen grav.

Pou debarase m de konpòtman sa a, nou te chanje premye niof estanda, epi answit, lè nou te imigre soti nan senkyèm vèsyon Elastic nan sizyèm lan, nou te eseye hybridfs, kote pwoblèm sa a pa te repwodui. Ou ka li plis sou kalite depo isit la.

Pwoblèm kat
Lè sa a, te gen yon lòt pwoblèm trè enteresan ke nou trete pou yon tan dosye. Nou kenbe li pou 2-3 mwa paske modèl li yo te absoliman enkonpreyansib.

Pafwa kowòdonatè nou yo te ale nan Full GC, anjeneral, nenpòt moman apre manje midi, epi yo pa janm retounen soti nan la. An menm tan an, lè antre GC reta a, li te sanble ak sa a: tout bagay ap mache byen, byen, byen, ak Lè sa a, toudenkou tout bagay ap mache trè mal.

Okòmansman, nou te panse ke nou te gen yon itilizatè sa ki mal ki te lanse kèk kalite demann ki te frape koòdonatè a soti nan mòd travay. Nou te konekte demann pou yon tan trè long, ap eseye konnen sa ki t ap pase.

Kòm yon rezilta, li te tounen soti ke nan moman sa a lè yon itilizatè lanse yon demann gwo, epi li vin nan yon koòdonatè Elasticsearch espesifik, kèk nœuds reponn pi lontan pase lòt.

Epi pandan ke koòdonatè a ap tann yon repons nan tout nœuds yo, li akimile rezilta yo voye soti nan nœuds yo ki te deja reponn. Pou GC, sa vle di ke modèl itilizasyon pil nou yo chanje trè vit. Ak GC ke nou te itilize pa t 'kapab fè fas ak travay sa a.

Sèl ranje nou jwenn pou chanje konpòtman gwoup la nan sitiyasyon sa a se migrasyon nan JDK13 ak itilizasyon pèseptè fatra Shenandoah. Sa a rezoud pwoblèm nan, koòdonatè nou yo sispann tonbe.

Sa a se kote pwoblèm yo ak Java te fini ak pwoblèm yo Pleasant te kòmanse.

"Berries" ak Elasticsearch: debi

Gwoup Elasticsearch 200 TB+

Pwoblèm ak debi vle di ke gwoup nou an ap travay estab, men nan pik nan kantite dokiman endis ak pandan manèv, pèfòmans se ensifizan.

Premye sentòm yo te rankontre: pandan kèk "eksplozyon" nan pwodiksyon, lè yon gwo kantite mòso bwa yo toudenkou pwodwi, erè a Indexing es_rejected_execution kòmanse flache souvan nan Graylog.

Sa a te akòz lefèt ke thread_pool.write.queue sou yon sèl done ne, jouk moman sa a Elasticsearch se kapab trete demann nan Indexing ak Upload enfòmasyon an nan shard la sou disk, se kapab kachèt sèlman 200 demann pa default. Ak nan Dokimantasyon Elasticsearch Yo di anpil ti kras sou paramèt sa a. Se sèlman kantite maksimòm fil ak gwosè default yo endike.

Natirèlman, nou te ale nan tòde valè sa a ak jwenn sa ki annapre yo: espesyalman, nan konfigirasyon nou an, jiska 300 demann yo kach byen, ak yon valè ki pi wo plen ak lefèt ke nou ankò vole nan Full GC.

Anplis de sa, kòm sa yo se lo mesaj ki rive nan yon sèl demann, li te nesesè yo ajiste Graylog pou ke li ekri pa souvan ak nan ti lo, men nan lo gwo oswa yon fwa chak 3 segonn si pakèt la toujou pa konplè. Nan ka sa a, li sanble ke enfòmasyon ke nou ekri nan Elasticsearch vin disponib pa nan de segonn, men nan senk (ki kostim nou byen), men kantite retray ki dwe fèt yo nan lòd pouse nan yon gwo. pil enfòmasyon redwi.

Sa a se espesyalman enpòtan nan moman sa yo lè yon bagay te fè aksidan yon kote ak kòlè rapò sou li, se konsa yo pa jwenn yon Elastik konplètman spammed, epi apre kèk tan - nœuds Graylog ki pa fonksyone akòz tanpon bouche.

Anplis de sa, lè nou te gen menm eksplozyon sa yo nan pwodiksyon, nou te resevwa plent nan men pwogramasyon ak tèsteur: nan moman sa a lè yo reyèlman bezwen mòso bwa sa yo, yo te ba yo trè dousman.

Yo te kòmanse kalkile li. Sou yon bò, li te klè ke tou de rechèch rechèch ak demann Indexing yo te trete, esansyèlman, sou menm machin fizik yo, ak yon fason oswa yon lòt ta gen sèten drawdowns.

Men, sa a ta ka pasyèlman kontourne akòz lefèt ke nan vèsyon yo sizyèm nan Elasticsearch, te parèt yon algorithm ki pèmèt ou distribye demann ant nœuds done ki enpòtan pa dapre prensip la o aza round-robin (veso ki fè Indexing ak kenbe prensipal la. -shard ka trè okipe, p'ap gen okenn fason pou reponn byen vit), men pou voye demann sa a nan yon veso ki mwens chaje ak yon kopi-shard, ki pral reponn pi vit. Nan lòt mo, nou te rive nan use_adaptive_replica_selection: vre.

Foto lekti a kòmanse parèt tankou sa a:

Gwoup Elasticsearch 200 TB+

Tranzisyon an nan algorithm sa a te fè li posib amelyore siyifikativman tan rechèch nan moman sa yo lè nou te gen yon gwo koule nan mòso bwa yo ekri.

Finalman, pwoblèm prensipal la te retire san doulè nan sant done a.

Ki sa nou te vle soti nan gwoup la imedyatman apre pèdi koneksyon ak yon sèl DC:

  • Si nou gen yon mèt aktyèl nan sant done echwe a, Lè sa a, li pral re-chwazi ak deplase kòm yon wòl nan yon lòt ne nan yon lòt DC.
  • Mèt la pral byen vit retire tout nœuds ki pa aksesib nan gwoup la.
  • Dapre sa ki rete yo, li pral konprann: nan sant done ki pèdi nou te gen tèl ak tèl shards prensipal, li pral byen vit ankouraje shards kopi konplemantè nan sant done ki rete yo, epi nou pral kontinye endèks done yo.
  • Kòm yon rezilta, pwodiksyon ekriti ak lekti gwoup la pral piti piti degrade, men an jeneral, tout bagay ap travay, byen dousman, men ki estab.

Kòm li te tounen soti, nou te vle yon bagay tankou sa a:

Gwoup Elasticsearch 200 TB+

Epi nou te resevwa sa ki annapre yo:

Gwoup Elasticsearch 200 TB+

Kòman sa te rive?

Lè sant done a te tonbe, mèt nou an te vin anbouteyaj la.

Poukisa?

Reyalite a se ke mèt la gen yon TaskBatcher, ki responsab pou distribye sèten travay ak evènman nan gwoup la. Nenpòt sòti ne, nenpòt pwomosyon nan yon shard soti nan kopi prensipal la, nenpòt travay yo kreye yon shard yon kote - tout bagay sa a ale an premye nan TaskBatcher, kote li trete sekans ak nan yon sèl fil.

Nan moman sa a nan retrè a nan yon sant done, li te tounen soti ke tout nœuds done nan sant done yo siviv yo te konsidere li devwa yo enfòme mèt la "nou te pèdi tèl ak tèl shards ak tèl ak tèl nœud done."

An menm tan an, nœuds done sivivan yo te voye tout enfòmasyon sa yo bay mèt aktyèl la epi yo te eseye tann pou konfimasyon ke li te aksepte li. Yo pa t 'tann pou sa a, paske mèt la te resevwa travay pi vit pase li te kapab reponn. Nœuds yo te depoze demann repete, ak mèt la nan moman sa a pa t 'menm eseye reponn yo, men li te konplètman absòbe nan travay la nan klasman demann pa priyorite.

Nan fòm tèminal, li te tounen soti ke nœuds yo done spammed mèt la nan pwen ke li te antre nan plen GC. Apre sa, wòl mèt nou an te deplase nan kèk ne pwochen, absoliman menm bagay la te rive li, ak kòm yon rezilta gwoup la konplètman tonbe plat atè.

Nou te pran mezi, epi anvan vèsyon 6.4.0, kote sa a te fiks, li te ase pou nou an menm tan pwodiksyon sèlman 10 nœuds done soti nan 360 yo nan lòd yo konplètman fèmen gwoup la.

Li te sanble yon bagay tankou sa a:

Gwoup Elasticsearch 200 TB+

Apre vèsyon 6.4.0, kote ensèk terib sa a te fikse, done nœuds sispann touye mèt la. Men, sa pa t 'fè l' "pi entelijan." Savwa: lè nou soti 2, 3 oswa 10 (nenpòt nimewo ki pa yon sèl) done nœuds, mèt la resevwa kèk premye mesaj ki di ke ne A te kite, epi li eseye di ne B, ne C sou sa a, ne D.

Ak nan moman sa a, sa a ka sèlman dwe fè fas ak fikse yon delè pou tantativ di yon moun sou yon bagay, ki egal a apeprè 20-30 segonn, epi konsa kontwole vitès la nan sant done k ap deplase soti nan gwoup la.

Nan prensip, sa a adapte nan kondisyon yo ki te okòmansman prezante nan pwodwi final la kòm yon pati nan pwojè a, men nan pwen de vi nan "syans pi bon kalite" sa a se yon ensèk. Ki, nan chemen an, te avèk siksè fiks pa devlopè yo nan vèsyon 7.2.

Anplis, lè yon sèten ne done te soti, li te vin parèt ke difize enfòmasyon sou sòti li yo te pi enpòtan pase di gwoup la tout antye ke te gen sa yo ak sa yo prensipal-shards sou li (yo nan lòd yo ankouraje yon kopi-shard nan yon lòt done. sant nan primè a, epi nan enfòmasyon yo ka ekri sou yo).

Se poutèt sa, lè tout bagay te deja mouri, nœuds done yo lage yo pa imedyatman make kòm rasi. An konsekans, nou oblije rete tann jiskaske tout ping yo fin rive nan nœuds done yo lage yo, epi sèlman apre sa gwoup nou an kòmanse di nou ke gen, la, epi la nou bezwen kontinye anrejistreman enfòmasyon. Ou ka li plis sou sa isit la.

Kòm yon rezilta, operasyon an nan retire yon sant done jodi a pran nou apeprè 5 minit pandan lè rush. Pou yon kolos gwo ak maladwa konsa, sa a se yon rezilta trè bon.

Kòm rezilta, nou te pran desizyon sa a:

  • Nou gen 360 nœuds done ak 700 gigaocte disk.
  • 60 koòdonatè pou routage trafik atravè menm nœuds done sa yo.
  • 40 mèt ke nou te kite kòm yon kalite eritaj depi vèsyon anvan 6.4.0 - yo nan lòd yo siviv retrè a nan sant done a, nou te mantalman prepare yo pèdi plizyè machin yo nan lòd yo dwe garanti yo gen yon kowòm nan mèt menm nan senaryo ki pi mal la
  • Nenpòt tantativ pou konbine wòl sou yon sèl veso yo te rankontre ak lefèt ke pi bonè oswa pita ne a ta kase anba chaj.
  • Gwosè a tout antye sèvi ak yon pil 31 jigokte: tout tantativ pou redwi gwosè a te lakòz swa touye kèk nœuds sou demann rechèch lou ak wildcard ki mennen nan oswa jwenn disjoncteur nan Elasticsearch li menm.
  • Anplis de sa, asire pèfòmans rechèch, nou te eseye kenbe kantite objè ki nan gwoup la pi piti ke posib, yo nan lòd yo trete kòm kèk evènman ke posib nan bouch la ke nou te resevwa nan mèt la.

Finalman sou siveyans

Pou asire ke tout bagay sa yo fonksyone jan sa vle di, nou kontwole sa ki annapre yo:

  • Chak ne done rapòte nan nwaj nou an ke li egziste, epi gen tèl ak tèl shards sou li. Lè nou etenn yon bagay yon kote, gwoup la rapòte apre 2-3 segonn ke nan sant A nou etenn nœuds 2, 3, ak 4 - sa vle di ke nan lòt sant done nou nan okenn sikonstans ka s'étendre nœuds sa yo sou ki gen yon sèl shard. kite.
  • Lè nou konnen nati konpòtman mèt la, nou gade ak anpil atansyon sou kantite travay ki annatant. Paske menm yon sèl travay kole, si li pa tan soti nan tan, teyorikman nan kèk sitiyasyon ijans ka vin rezon an pou kisa, pou egzanp, pwomosyon nan yon shard kopi nan prensipal la pa travay, ki se poukisa Indexing ap sispann travay.
  • Nou menm tou nou gade trè byen nan reta pèseptè fatra, paske nou te deja gen gwo difikilte ak sa a pandan optimize.
  • Rejte pa fil pou konprann davans ki kote bouche a ye.
  • Oke, mezi estanda tankou pil, RAM ak I/O.

Lè bati siveyans, ou dwe pran an kont karakteristik yo nan Thread Pool nan Elasticsearch. Dokimantasyon Elasticsearch dekri opsyon konfigirasyon ak valè default pou rechèch ak endèks, men li konplètman an silans sou thread_pool.management.Tread sa yo trete, an patikilye, demann tankou _cat/shards ak lòt menm jan an, ki fasil pou itilize lè w ap ekri siveyans. Pi gwo gwoup la, se plis demann sa yo egzekite pou chak inite tan, ak thread_pool.management ki mansyone anwo a pa sèlman prezante nan dokiman ofisyèl la, men li limite tou pa default a 5 fil, ki trè vit jete, apre yo fin. ki siveyans sispann travay kòrèkteman.

Ki sa mwen vle di nan konklizyon: nou te fè li! Nou te kapab bay pwogramè nou yo ak devlopè yon zouti ki, nan prèske nenpòt sitiyasyon, ka byen vit ak fyab bay enfòmasyon sou sa k ap pase nan pwodiksyon an.

Wi, li te tounen byen konplike, men, kanmenm, nou te jere anfòm volonte nou yo nan pwodwi ki deja egziste, ki nou pa t 'gen patch ak reekri pou tèt nou.

Gwoup Elasticsearch 200 TB+

Sous: www.habr.com

Add nouvo kòmantè