Ahoana no fomba nanamboaranay ny CIAN terabytes amin'ny hazo

Ahoana no fomba nanamboaranay ny CIAN terabytes amin'ny hazo

Salama daholo, Alexander no anarako, miasa ao amin'ny CIAN amin'ny maha injeniera aho ary mandray anjara amin'ny fitantanana ny rafitra sy ny automatique ny fizotran'ny fotodrafitrasa. Ao amin'ny fanehoan-kevitra amin'ny iray amin'ireo lahatsoratra teo aloha, dia nasaina nilaza izahay hoe aiza no mahazo 4 TB amin'ny logs isan'andro ary inona no ataonay amin'izy ireo. Eny, manana lozisialy be dia be izahay, ary misy cluster fotodrafitrasa mitokana mba hikarakarana azy ireo, izay ahafahantsika mamaha haingana ny olana. Ato amin'ity lahatsoratra ity aho dia hiresaka momba ny fomba nampifanaraka azy nandritra ny herintaona mba hiasa miaraka amin'ny angon-drakitra tsy mitsaha-mitombo.

Taiza no nanombohantsika?

Ahoana no fomba nanamboaranay ny CIAN terabytes amin'ny hazo

Tao anatin'ny taona vitsivitsy lasa izay, nitombo haingana ny entana ao amin'ny cian.ru, ary tamin'ny telovolana fahatelo tamin'ny 2018, nahatratra 11.2 tapitrisa mpampiasa tsy manam-paharoa isam-bolana ny fifamoivoizana. Tamin'izany fotoana izany, tamin'ny fotoan-tsarotra dia very hatramin'ny 40%-n'ny lozisialy izahay, izay no nahatonga anay tsy afaka niatrika haingana ny zava-nitranga ary nandany fotoana sy ezaka be tamin'ny famahana izany. Matetika koa no tsy hitanay ny anton’ilay olana, ary hiverina indray izany rehefa elaela. Helo io ary nisy zavatra tsy maintsy natao momba izany.

Tamin'izany fotoana izany dia nampiasa andian-tsarimihetsika 10 izahay miaraka amin'ny ElasticSearch version 5.5.2 miaraka amin'ny filaharan'ny mari-pamantarana mahazatra hitahiry ny log. Izy io dia nampidirina herintaona mahery lasa izay ho vahaolana malaza sy mora vidy: avy eo dia tsy dia lehibe loatra ny fikorianan'ny logs, tsy misy dikany amin'ny famolavolana tsy manara-penitra. 

Nomen'i Logstash amin'ny seranana samihafa amin'ny mpandrindra ElasticSearch dimy ny fanodinana ny logs ho avy. Ny fanondro iray, na inona na inona habeny, dia nahitana sombin-dimy. Fihodinana isan'ora sy isan'andro no nokarakaraina, vokatr'izany dia manodidina ny 100 eo ho eo no nipoitra tao anatin'ilay cluster isan'ora. Na dia tsy dia betsaka aza ny lozisialy, dia niatrika tsara ny cluster ary tsy nisy niraharaha ny toerana misy azy. 

Ny fanamby amin'ny fitomboana haingana

Nitombo haingana dia haingana ny habetsaky ny logs, satria nifanindry ny dingana roa. Amin'ny lafiny iray, nitombo ny isan'ny mpampiasa ny serivisy. Amin'ny lafiny iray, nanomboka nivadika mavitrika tamin'ny maritrano microservice izahay, nanamboatra ny monoliths taloha tamin'ny C # sy Python. Ny microservices vaovao am-polony maro izay nisolo ny ampahany amin'ny monolith dia niteraka lozisialy betsaka kokoa ho an'ny vondron'ny fotodrafitrasa. 

Ny fanamafisam-peo no nitarika anay ho amin'ny toerana tsy azo fehezina ny cluster. Rehefa nanomboka tonga tamin'ny tahan'ny hafatra 20 arivo isan-tsegondra ny logs, ny fihodinana tsy misy ilΓ na azy matetika dia nampitombo ny isan'ny shards ho 6 arivo, ary nisy 600 mahery isaky ny node. 

Niteraka olana tamin'ny fizarana ny RAM izany, ary rehefa nianjera ny node iray, dia nanomboka nihetsika niaraka ny shards rehetra, nampitombo ny fifamoivoizana sy ny fametahana nodes hafa, izay nahatonga azy ho tsy afaka manoratra angona amin'ny cluster. Ary nandritra io vanim-potoana io dia navela tsy nisy hazo izahay. Ary raha nisy olana tamin'ny mpizara dia very ny 1/10 tamin'ny cluster. Niampy fahasarotana ny fanondroana kely marobe.

Raha tsy misy logs, dia tsy azonay ny antony nahatonga ny zava-nitranga ary afaka na ho ela na ho haingana dia hanitsaka rake mitovy indray, ary amin'ny foto-kevitry ny ekipanay dia tsy azo ekena izany, satria ny mekanika asa rehetra dia natao hanao ny mifanohitra amin'izany - tsy hamerina intsony. olana mitovy. Mba hanaovana izany dia mila ny habetsaky ny logs feno sy ny fandefasana azy ireo saika amin'ny fotoana tena izy, satria ny ekipan'ny injeniera miasa dia nanara-maso ny fampandrenesana tsy avy amin'ny metrika, fa avy amin'ny logs ihany koa. Mba hahatakarana ny halehiben'ny olana, tamin'izany fotoana izany dia manodidina ny 2 TB isan'andro ny totalin'ny logs. 

Nametraka tanjona izahay mba hanafoanana tanteraka ny fahaverezan'ny logs ary hampihenana ny fotoana fandefasana azy ireo amin'ny cluster ELK amin'ny 15 minitra fara-fahakeliny mandritra ny force majeure (niantehitra tamin'io tarehimarika io ho KPI anatiny izahay taty aoriana).

Mekanisma fihodinana vaovao sy nodes mafana mafana

Ahoana no fomba nanamboaranay ny CIAN terabytes amin'ny hazo

Nanomboka ny fiovan'ny cluster izahay tamin'ny fanavaozana ny dikan-teny ElasticSearch avy amin'ny 5.5.2 ka hatramin'ny 6.4.3. Maty indray ny cluster version 5, ary nanapa-kevitra izahay ny hamono azy ary hanavao azy tanteraka - mbola tsy misy logs. Ka tao anatin'ny adiny roa monja no nanaovanay ity tetezamita ity.

Ny fanovana lehibe indrindra amin'ity dingana ity dia ny fampiharana ny Apache Kafka amin'ny node telo miaraka amin'ny mpandrindra ho toy ny buffer mpanelanelana. Ny broker hafatra dia namonjy anay tsy ho very logs nandritra ny olana tamin'ny ElasticSearch. Tamin'izay fotoana izay ihany koa dia nampiana nodes 2 tao amin'ny cluster izahay ary nivadika ho maritrano mafana mafana miaraka amin'ny node "mafana" telo hita ao amin'ny toeram-pivarotana samihafa ao amin'ny foibe data. Naverinay tamin'izy ireo ny logs amin'ny alΓ lan'ny saron-tava izay tsy tokony ho very amin'ny toe-javatra rehetra - nginx, ary koa ny logic error application. Nalefa tany amin'ireo nodes sisa ny logs kely - debug, fampitandremana, sns., ary rehefa afaka 24 ora dia nafindra ny logs "zava-dehibe" avy amin'ny node "mafana".

Mba tsy hampitombo ny isan'ny indexes kely, dia nifindra avy amin'ny fihodinan'ny fotoana mankany amin'ny mekanika rollover. Betsaka ny fampahalalana tao amin'ny forum fa tena tsy azo ianteherana ny fihodinana amin'ny haben'ny index, ka nanapa-kevitra ny hampiasa fihodinana amin'ny isan'ny antontan-taratasy ao amin'ny index. Nodinihinay ny tondro tsirairay ary noraketinay ny isan'ny antontan-taratasy aorian'izay tokony hiasa ny fihodinana. Noho izany, nahatratra ny haben'ny shard tsara indrindra isika - tsy mihoatra ny 50 GB. 

Fanatsarana ny kluster

Ahoana no fomba nanamboaranay ny CIAN terabytes amin'ny hazo

Na izany aza, tsy tafavoaka tanteraka ny olana. Indrisy anefa fa mbola nipoitra ihany ny fanondro kely: tsy nahatratra ny habe voatondro izy ireo, tsy nihodina ary nofafana tamin'ny fanadiovana maneran-tany ireo tondro efa mihoatra ny telo andro, satria nesorintsika ny fihodinan'ny daty. Izany dia nitarika ho amin'ny fahaverezan'ny angon-drakitra noho ny zava-misy fa ny index avy amin'ny cluster dia nanjavona tanteraka, ary ny fikasana hanoratra amin'ny index tsy misy dia nanapaka ny lojikan'ny curator izay nampiasainay tamin'ny fitantanana. Ny anarana ho an'ny fanoratana dia navadika ho index ary nanapaka ny lojika rollover, niteraka fitomboana tsy voafehy amin'ny index sasany hatramin'ny 600 GB. 

Ohatra, ho an'ny config rotation:

сurator-elk-rollover.yaml

---
actions:
  1:
    action: rollover
    options:
      name: "nginx_write"
      conditions:
        max_docs: 100000000
  2:
    action: rollover
    options:
      name: "python_error_write"
      conditions:
        max_docs: 10000000

Raha tsy nisy solon'anarana rollover dia nisy lesoka:

ERROR     alias "nginx_write" not found.
ERROR     Failed to complete action: rollover.  <type 'exceptions.ValueError'>: Unable to perform index rollover with alias "nginx_write".

Navelanay ny vahaolana amin'ity olana ity ho an'ny famerimberenana manaraka ary niatrika olana hafa izahay: nifindra tamin'ny lozika fisintonana an'ny Logstash izahay, izay mandrindra ny logs ho avy (manala ny vaovao tsy ilaina sy mampanan-karena). Napetrakay tao amin'ny docker izany, izay natombonay tamin'ny alΓ lan'ny docker-compose, ary nametraka logstash-exporter tao ihany koa izahay, izay mandefa metrika any amin'ny Prometheus ho an'ny fanaraha-maso ny fizotran'ny log. Tamin'izany fomba izany no nanomezan'ny tenanay fahafahana hanova moramora ny isan'ny tranga logstash tompon'andraikitra amin'ny fanodinana ny karazana log.

Raha nanatsara ny cluster izahay dia nitombo ho 12,8 tapitrisa ny fifamoivoizana an'i cian.ru isam-bolana. Vokatr'izany dia hita fa ny fanovana nataonay dia tao ambadiky ny fiovan'ny famokarana, ary niatrika ny zava-misy izahay fa ny node "mafana" dia tsy mahazaka ny enta-mavesatra ary mampiadana ny fandefasana logs manontolo. Nahazo angon-drakitra "mafana" tsy misy tsy fahombiazana izahay, saingy tsy maintsy niditra an-tsehatra tamin'ny fandefasana ny ambiny izahay ary nanao fanodikodinana manual mba hizarazarana ny indexes. 

Mandritra izany fotoana izany, ny fametahana sy ny fanovana ny toe-javatra misy ny logstash ao amin'ny cluster dia sarotra noho ny hoe docker-compose eo an-toerana izy io, ary ny hetsika rehetra dia natao tamin'ny tanana (mba hampidirana fiafarana vaovao dia ilaina ny mandeha amin'ny tanana rehetra. ny mpizara ary manao docker-compose up -d na aiza na aiza).

Famerenana ny log

Tamin'ny volana septambra tamin'ity taona ity, mbola nanapaka ny monolith izahay, nitombo ny enta-mavesatra teo amin'ny cluster, ary ny fikorianan'ny logs dia nanatona hafatra 30 arivo isan-tsegondra. 

Ahoana no fomba nanamboaranay ny CIAN terabytes amin'ny hazo

Nanomboka ny fanavaozana manaraka tamin'ny fanavaozana fitaovana izahay. Niova mpandrindra dimy ho telo izahay, nosoloina node data ary nandresy tamin'ny resaka vola sy toerana fitahirizana. Ho an'ny nodes dia mampiasa konfigurasi roa izahay: 

  • Ho an'ny node "mafana": E3-1270 v6 / 960Gb SSD / 32 Gb x 3 x 2 (3 ho an'ny Hot1 ary 3 ho an'ny Hot2).
  • Ho an'ny node "mafana": E3-1230 v6 / 4Tb SSD / 32 Gb x 4.

Tamin'ity indray mitoraka ity dia nafindranay ny index miaraka amin'ny logic microservices, izay maka toerana mitovy amin'ny logs nginx eo aloha, mankany amin'ny vondrona faharoa misy node telo "mafana". Mitahiry angona amin'ny node "mafana" mandritra ny 20 ora isika izao, ary avy eo mamindra azy ireo amin'ny node "mafana" mankany amin'ny sisa amin'ny logs. 

Namaha ny olan'ny fanjavonan'ny indeksa kely izahay tamin'ny fanamboarana ny fihodinan'izy ireo. Ankehitriny ny fanondroana dia mihodina isaky ny 23 ora na ahoana na ahoana, na dia kely aza ny angona ao. Izany dia nampitombo kely ny isan'ny shards (800 eo ho eo amin'izy ireo), fa raha ny fomba fijery ny cluster fampisehoana dia azo leferina. 

Vokatr'izany dia nisy "mafana" enina ary efatra ihany no "mafana" tao amin'ny cluster. Izany dia miteraka fahatarana kely amin'ny fangatahana mandritra ny elanelam-potoana lava, fa ny fampitomboana ny isan'ny nodes amin'ny ho avy dia hamaha ity olana ity.

Namaha ny olana amin'ny tsy fahampian'ny scaling semi-automatique ihany koa ity famerimberenana ity. Mba hanaovana izany dia nametraka cluster Nomad fotodrafitrasa izahay - mitovy amin'ny efa napetrakay tamin'ny famokarana. Amin'izao fotoana izao, ny habetsaky ny Logstash dia tsy miova ho azy arakaraka ny entana, fa ho avy amin'izany isika.

Ahoana no fomba nanamboaranay ny CIAN terabytes amin'ny hazo

Drafitra ho an'ny ho avy

Mizana tsara ny fanamafisam-peo nampiharina, ary ankehitriny dia mitahiry angon-drakitra 13,3 TB izahay - ny logs rehetra mandritra ny 4 andro, izay ilaina amin'ny famakafakana maika ny fanairana. Avadikay ho metrika ny sasany amin'ireo diary, izay ampianay amin'ny Graphite. Mba hanamora ny asan'ny injeniera dia manana metrika ho an'ny cluster fotodrafitrasa sy sora-baventy ho an'ny fanamboarana semi-automatique ny olana mahazatra izahay. Aorian'ny fampitomboana ny isan'ny node data, izay kasaina ho an'ny taona ho avy, dia hifindra any amin'ny fitahirizana angon-drakitra manomboka amin'ny 4 ka hatramin'ny 7 andro. Ho ampy ho an'ny asa fampandehanana izany, satria miezaka manadihady zava-nitranga haingana araka izay azo atao izahay, ary ho an'ny fanadihadiana maharitra dia misy angon-drakitra telemetry. 

Tamin'ny oktobra 2019, efa nitombo ho 15,3 tapitrisa isan-kerinandro ny fifamoivoizana mankany amin'ny cian.ru. Izany dia lasa fitsapana matotra amin'ny vahaolana ara-javakanto amin'ny fandefasana hazo. 

Miomana amin'ny fanavaozana ny ElasticSearch amin'ny version 7 izahay izao. Na izany aza, noho izany dia tsy maintsy manavao ny sarintany amin'ny indeksa maro ao amin'ny ElasticSearch izahay, satria nifindra avy amin'ny version 5.5 izy ireo ary nambara ho tsy ampiasaina amin'ny version 6 (tsy misy amin'ny dikan-teny tsotra fotsiny izy ireo. 7). Midika izany fa mandritra ny dingan'ny fanavaozana dia azo antoka fa hisy karazana force majeure, izay hamela antsika tsy misy logs raha voavaha ny olana. Amin'ny kinova 7, dia manantena an'i Kibana izahay miaraka amin'ny interface tsara sy sivana vaovao. 

Nahatratra ny tanjonay lehibe izahay: nanakana ny fahaverezan'ny logs izahay ary nampihena ny fotoana tsy nitsaharan'ny vondron'ny fotodrafitrasa avy amin'ny fianjerana 2-3 isan-kerinandro ho adiny roa amin'ny fikojakojana isam-bolana. Ireo asa rehetra amin'ny famokarana dia saika tsy hita maso. Na izany aza, ankehitriny dia afaka mamaritra tsara ny zava-mitranga amin'ny serivisy izahay, afaka manao izany haingana amin'ny fomba mangina izahay ary tsy manahy fa ho very ny logs. Amin'ny ankapobeny, afa-po, faly ary miomana amin'ny fitrandrahana vaovao, izay horesahina any aoriana.

Source: www.habr.com

Add a comment