Top fakapov Cyan

Top fakapov Cyan

Gach math! 

Is e m ’ainm Nikita, tha mi nam stiùiriche sgioba air sgioba innleadaireachd Cian. Is e aon de na dleastanasan agam aig a’ chompanaidh an àireamh de thachartasan co-cheangailte ri bun-structair ann an cinneasachadh a lughdachadh gu neoni.
Thug na thèid a dheasbad gu h-ìosal mòran pian dhuinn, agus is e adhbhar an artaigil seo casg a chuir air daoine eile bho bhith ag ath-aithris ar mearachdan no co-dhiù a ’bhuaidh aca a lughdachadh. 

Preamble

O chionn fhada, nuair a bha Cian air a dhèanamh suas de monoliths, agus nach robh fios air microservices fhathast, thomhais sinn na bha ri fhaighinn de ghoireas le bhith a ’sgrùdadh duilleagan 3-5. 

Bidh iad a’ freagairt - tha a h-uile dad gu math, mura freagair iad airson ùine mhòr - furachail. Cho-dhùin daoine aig coinneamhan dè cho fada ‘s a dh’ fheumadh iad a bhith far obair airson beachdachadh air tachartas. Bha sgioba de innleadairean an-còmhnaidh an sàs ann an sgrùdadh na thachair. Nuair a chaidh an rannsachadh a chrìochnachadh, sgrìobh iad postmortem - seòrsa de dh'aithisg air post-dealain ann an cruth: dè thachair, dè cho fada 'sa mhair e, dè rinn sinn an-dràsta, dè nì sinn san àm ri teachd. 

Prìomh dhuilleagan na làraich no mar a tha sinn a 'tuigsinn gu bheil sinn air bualadh air a' bhonn

 
Gus tuigse fhaighinn air prìomhachas na mearachd ann an dòigh air choireigin, tha sinn air na duilleagan làraich as deatamaiche a chomharrachadh airson gnìomhachd gnìomhachais. Le bhith gan cleachdadh, bidh sinn a’ cunntadh na h-àireimh de dh’ iarrtasan soirbheachail/neo-shoirbheachail agus amannan-ama. Seo mar a bhios sinn a’ tomhas uptime. 

Canaidh sinn gun d’ fhuair sinn a-mach gu bheil grunn earrannan fìor chudromach den làrach a tha an urra ris a’ phrìomh sheirbheis - a’ lorg agus a’ cur a-steach sanasan. Ma tha an àireamh de dh’iarrtasan a dh’fhàillig nas àirde na 1%, is e tachartas èiginneach a tha seo. Ma tha an ìre mearachd taobh a-staigh 15 mionaidean rè prìomh ùine nas àirde na 0,1%, thathas cuideachd den bheachd gur e tachartas èiginneach a tha seo. Tha na slatan-tomhais sin a’ còmhdach a’ mhòr-chuid de thachartasan; tha an còrr taobh a-muigh raon an artaigil seo.

Top fakapov Cyan

Na tachartasan as fheàrr Cyan

Mar sin, tha sinn gu cinnteach air ionnsachadh a bhith a’ dearbhadh gun do thachair tachartas. 

A-nis tha a h-uile tachartas air a mhìneachadh gu mionaideach agus air a nochdadh ann an epic Jira. Co-dhiù: airson seo thòisich sinn air pròiseact air leth, ris an canar FAIL - chan urrainnear ach epics a chruthachadh ann. 

Ma chruinnicheas tu a h-uile fàiligeadh thairis air na beagan bhliadhnaichean a dh’ fhalbh, is iad na stiùirichean: 

  • tachartasan co-cheangailte ri mssql;
  • tachartasan air an adhbhrachadh le factaran bhon taobh a-muigh;
  • mearachdan rianachd.

Bheir sinn sùil nas mionaidiche air mearachdan luchd-rianachd, a bharrachd air fàilligidhean inntinneach eile.

An còigeamh àite - “A’ cur rudan ann an òrdugh san DNS”

'S e Dimàirt stoirmeil a bh' ann. Cho-dhùin sinn òrdugh a thoirt air ais anns a’ bhuidheann DNS. 

Bha mi airson frithealaichean DNS a-staigh a ghluasad bho bind gu powerdns, a’ riarachadh frithealaichean gu tur air leth airson seo, far nach eil dad ann ach DNS. 

Chuir sinn aon fhrithealaiche DNS anns gach àite de na DCn againn, agus thàinig an t-àm ann sònaichean a ghluasad bho cheangal gu powerdns agus am bun-structar atharrachadh gu frithealaichean ùra. 

Ann am meadhan a 'ghluasaid, de na frithealaichean a chaidh a shònrachadh ann an caching ionadail a' ceangal a h-uile seirbheisiche, cha robh ach aon air fhàgail, a bha anns an ionad dàta ann an St Petersburg. Chaidh an DC seo ainmeachadh an toiseach mar rud neo-èiginneach dhuinne, ach gu h-obann thàinig e gu bhith na aon phuing fàiligeadh.
B 'ann aig an àm seo de ghluasad a thuit an canàl eadar Moscow agus St Petersburg. Bha sinn dha-rìribh air fhàgail às aonais DNS airson còig mionaidean agus fhuair sinn air ais nuair a shuidhich an òstair an duilgheadas. 

Co-dhùnaidhean:

Ma tha sinn air dearmad a dhèanamh air factaran bhon taobh a-muigh na bu thràithe nuair a bha iad ag ullachadh airson obair, a-nis tha iad cuideachd air an toirt a-steach don liosta de na tha sinn ag ullachadh airson. Agus a-nis bidh sinn a 'feuchainn ri dèanamh cinnteach gu bheil na pàirtean uile glèidhte n-2, agus rè na h-obrach is urrainn dhuinn an ìre seo a lùghdachadh gu n-1.

  • Nuair a bhios tu a’ deasachadh plana gnìomh, comharraich na puingean far am faodadh an t-seirbheis fàiligeadh, agus smaoinich air suidheachadh far an deach a h-uile càil “bho dhroch gu nas miosa” ro làimh.
  • Roinn frithealaichean DNS a-staigh thairis air diofar geolocations / ionadan dàta / racaichean / suidsichean / cuir a-steach.
  • Air gach frithealaiche, cuir a-steach frithealaiche DNS tasgadan ionadail, a bhios ag ath-stiùireadh iarrtasan gu prìomh luchd-frithealaidh DNS, agus mura h-eil e ri fhaighinn, freagraidh e bhon tasgadan. 

An ceathramh àite - “A’ cur rudan ann an òrdugh ann an Nginx”

Aon latha math, cho-dhùin an sgioba againn “tha seo air a bhith gu leòr againn,” agus thòisich am pròiseas ath-shuidheachadh nginx configs. Is e am prìomh amas na configs a thoirt gu structar intuitive. Roimhe sin, bha a h-uile dad “stèidhichte gu h-eachdraidheil” agus cha robh loidsig sam bith ann. A-nis tha gach server_name air a ghluasad gu faidhle leis an aon ainm agus chaidh a h-uile rèiteachadh a sgaoileadh gu pasganan. Air an t-slighe, tha loidhnichean 253949 no 7836520 caractar anns an config agus bheir e suas faisg air 7 megabytes. Ìre àrd de structar: 

Structar Nginx

├── access
│   ├── allow.list
...
│   └── whitelist.conf
├── geobase
│   ├── exclude.conf
...
│   └── geo_ip_to_region_id.conf
├── geodb
│   ├── GeoIP.dat
│   ├── GeoIP2-Country.mmdb
│   └── GeoLiteCity.dat
├── inc
│   ├── error.inc
...
│   └── proxy.inc
├── lists.d
│   ├── bot.conf
...
│   ├── dynamic
│   └── geo.conf
├── lua
│   ├── cookie.lua
│   ├── log
│   │   └── log.lua
│   ├── logics
│   │   ├── include.lua
│   │   ├── ...
│   │   └── utils.lua
│   └── prom
│       ├── stats.lua
│       └── stats_prometheus.lua
├── map.d
│   ├── access.conf
│   ├── .. 
│   └── zones.conf
├── nginx.conf
├── robots.txt
├── server.d
│   ├── cian.ru
│   │   ├── cian.ru.conf
│   │   ├── ...
│   │   └── my.cian.ru.conf
├── service.d
│   ├── ...
│   └── status.conf
└── upstream.d
    ├── cian-mcs.conf
    ├── ...
    └── wafserver.conf

Dh'fhàs e tòrr na b 'fheàrr, ach ann am pròiseas ath-ainmeachadh agus sgaoileadh configs, bha an leudachadh ceàrr aig cuid dhiubh agus cha robh iad air an gabhail a-steach don stiùireadh gabhail a-steach * .conf. Mar thoradh air an sin, cha robh cuid de luchd-aoigheachd rim faighinn agus thill iad 301 chun phrìomh dhuilleag. Leis nach robh an còd freagairt 5xx / 4xx, cha deach mothachadh a thoirt air seo sa bhad, ach dìreach sa mhadainn. Às deidh sin, thòisich sinn a’ sgrìobhadh dheuchainnean gus sgrùdadh a dhèanamh air pàirtean bun-structair.

Co-dhùnaidhean: 

  • Structar na configs agad gu ceart (chan e dìreach nginx) agus smaoinich air an structar aig ìre thràth den phròiseact. San dòigh seo nì thu iad nas so-thuigsinn don sgioba, a lughdaicheas TTM an uair sin.
  • Sgrìobh deuchainnean airson cuid de phàirtean bun-structair. Mar eisimpleir: a’ dèanamh cinnteach gu bheil a h-uile prìomh server_names a’ toirt an inbhe cheart + buidheann freagairt. Bidh e gu leòr dìreach beagan sgriobtaichean a bhith agad a nì sgrùdadh air gnìomhan bunaiteach na co-phàirt, gus nach cuimhnich thu gu fiadhaich aig 3m dè eile a dh’ fheumar a sgrùdadh. 

An treas àite - “Gu h-obann ruith a-mach à àite ann an Cassandra”

Dh’ fhàs an dàta gu cunbhalach, agus bha a h-uile càil ceart gu leòr gus an àm nuair a thòisich càradh raointean mòra de chùisean a’ fàiligeadh ann am buidheann Cassandra, leis nach b’ urrainn dha teannachadh obrachadh orra. 

Aon latha stoirmeil cha mhòr nach do thionndaidh am buidheann gu bhith na phumpkin, is e sin:

  • bha mu 20% den fhànais iomlan air fhàgail sa bhuidheann;
  • Tha e do-dhèanta nodan a chuir ris gu tur, oir chan eil glanadh a ’dol troimhe às deidh nód a chuir ris air sgàth dìth àite air na pàirtean;
  • bidh cinneasachd a’ tuiteam mean air mhean leis nach obraich teannachadh; 
  • Tha an cruinneachadh ann am modh èiginn.

Top fakapov Cyan

Ar-a-mach - chuir sinn 5 nodan a bharrachd ris gun ghlanadh, agus às deidh sin thòisich sinn air an toirt air falbh bhon bhuidheann gu riaghailteach agus gan toirt a-steach a-rithist, mar nodan falamh a bha air ruith a-mach à àite. Chaidh tòrr a bharrachd ùine a chaitheamh na bu toil leinn. Bha cunnart ann nach biodh pàirt no iomlan den bhuidheann ri fhaighinn. 

Co-dhùnaidhean:

  • Air a h-uile seirbheisiche cassandra, cha bu chòir barrachd air 60% den àite air gach sgaradh a bhith air a chleachdadh. 
  • Bu chòir dhaibh a bhith air an luchdachadh aig nach eil barrachd air 50% cpu.
  • Cha bu chòir dhut dìochuimhneachadh mu dhealbhadh comas agus feumaidh tu smaoineachadh troimhe airson gach pàirt, stèidhichte air na mion-fhiosrachadh aige.
  • Mar as motha de nodan anns a’ bhuidheann, ’s ann as fheàrr. Tha luchd-frithealaidh anns a bheil beagan dàta air an luchdachadh cus nas luaithe, agus tha cruinneachadh mar sin nas fhasa ath-bheothachadh. 

An dàrna àite - “Dh’ fhalbh dàta bho stòradh luach-iuchrach consul”

Airson seirbheis a lorg, bidh sinn, mar mòran, a 'cleachdadh consul. Ach bidh sinn cuideachd a’ cleachdadh a phrìomh luach airson cruth gorm-uaine den monolith. Bidh e a’ stòradh fiosrachadh mu shruthan suas gnìomhach is neo-ghnìomhach, a bhios ag atharrachadh àiteachan nuair a bhios iad gan cleachdadh. Airson an adhbhair seo, chaidh seirbheis cleachdadh a sgrìobhadh a bha ag eadar-obrachadh le KV. Aig àm air choreigin, chaidh an dàta bho KV à sealladh. Air ath-nuadhachadh bho chuimhne, ach le grunn mhearachdan. Mar thoradh air an sin, rè an luchdachadh suas, chaidh an luchd air na sruthan shuas a sgaoileadh gu neo-chothromach, agus fhuair sinn mòran mhearachdan 502 air sgàth gun deach cus luchdan air ais air an CPU. Mar thoradh air an sin, ghluais sinn bho chonsal KV gu postgres, às nach eil e cho furasta an toirt air falbh tuilleadh.  

Co-dhùnaidhean:

  • Cha bu chòir dàta a bhith ann an seirbheisean gun chead a tha deatamach airson obrachadh na làraich. Mar eisimpleir, mura h-eil ùghdarras agad ann an ES, bhiodh e na b’ fheàrr ruigsinneachd aig ìre an lìonra a dhiùltadh bho gach àite far nach eil feum air, na fàg ach an fheadhainn a tha riatanach, agus cuideachd cuir sìos action.destructive_requires_name: true.
  • Cleachd an inneal cùl-taic agus ath-bheothachaidh agad ro làimh. Mar eisimpleir, dèan sgriobt ro làimh (mar eisimpleir, ann am python) as urrainn cùl-taic agus ath-nuadhachadh.

A’ chiad àite - “Caiptean Neo-fhaicsinneach” 

Aig àm air choreigin, mhothaich sinn cuairteachadh neo-chothromach de luchd air nginx shuas an abhainn ann an cùisean far an robh 10+ frithealaichean air an deireadh-sheachdain. Air sgàth 's gun do chuir robin cruinn iarrtasan bho 1d chun an fheadhainn mu dheireadh shuas an abhainn ann an òrdugh, agus thòisich gach ath-luchdachadh nginx thairis, fhuair a' chiad sruthan suas barrachd iarrtasan an-còmhnaidh na an còrr. Dh’ fhàs seo a’ sìor fhàs follaiseach mar a bha an trafaic a’ dol am meud. Cha do dh’ obraich dìreach ùrachadh nginx gus cothrom a thoirt air thuaiream - feumaidh sinn dòrlach de chòd lua ath-dhèanamh nach do thòisich air dreach 1.15 (aig an àm sin). B’ fheudar dhuinn ar nginx 1.14.2 a chumail, a’ toirt a-steach taic air thuaiream. Fuasgladh seo an duilgheadas. Bidh am biast seo a’ buannachadh na roinne “Captain Non-Obviousness”.

Co-dhùnaidhean:

Bha e glè inntinneach agus brosnachail am biast seo a sgrùdadh). 

  • Cuir air dòigh an sgrùdadh agad gus an cuidich e thu gus na caochlaidhean sin a lorg gu sgiobalta. Mar eisimpleir, faodaidh tu ELK a chleachdadh gus sùil a chumail air rps air gach backend de gach taobh shuas an abhainn, sùil a chumail air an ùine freagairt aca bho shealladh nginx. Anns a 'chùis seo, chuidich seo sinn gus an duilgheadas aithneachadh. 

Mar thoradh air an sin, dh’ fhaodadh a’ mhòr-chuid de na fàilligidhean a bhith air an seachnadh le dòigh-obrach nas mionaidiche a thaobh na bha thu a’ dèanamh. Feumaidh sinn an-còmhnaidh cuimhneachadh air lagh Murphy: Thèid rud sam bith a thèid ceàrr, agus a 'togail phàirtean stèidhichte air. 

Source: www.habr.com

Cuir beachd ann