Top fakapov Cyan

Top fakapov Cyan

I nā mea maikaʻi ʻoi loa! 

ʻO Nikita koʻu inoa, ʻo wau ke alakaʻi o ka hui ʻenehana Cian. ʻO kekahi o kaʻu mau kuleana ma ka hui ʻo ia ka hoʻemi ʻana i ka nui o nā hanana e pili ana i ka ʻoihana i ka hana ʻana i ka zero.
ʻO ka mea e kūkākūkā ʻia ma lalo nei i lawe mai iā mākou i ka ʻeha nui, a ʻo ke kumu o kēia ʻatikala e pale aku i nā poʻe ʻē aʻe mai ka hana hou ʻana i kā mākou mau hewa a i ʻole e hōʻemi i kā lākou hopena. 

Hoʻomākaukau

I ka manawa i hala aku nei, i ka wā i loaʻa ai iā Cian nā monoliths, a ʻaʻohe ʻike o nā microservice i kēia manawa, ua ana mākou i ka loaʻa ʻana o kahi kumuwaiwai ma ka nānā ʻana i nā ʻaoʻao 3-5. 

Pane lākou - maikaʻi nā mea a pau, inā ʻaʻole lākou e pane no ka manawa lōʻihi - makaʻala. ʻO ka lōʻihi o ko lākou haʻalele ʻana i ka hana no ka manaʻo ʻia he hanana i hoʻoholo ʻia e nā poʻe ma nā hālāwai. Ua komo mau kekahi pūʻulu ʻenekinia i ka hoʻokolokolo ʻana i ka hanana. I ka pau ʻana o ka hoʻokolokolo ʻana, ua kākau lākou i kahi postmortem - he ʻano hōʻike ma ka leka uila ma ke ʻano: he aha ka mea i hana ʻia, pehea ka lōʻihi o ka lōʻihi, ka mea a mākou i hana ai i kēia manawa, nā mea a mākou e hana ai i ka wā e hiki mai ana. 

ʻO nā ʻaoʻao nui o ka pūnaewele a pehea mākou e hoʻomaopopo ai ua paʻi mākou i lalo

 
I mea e hoʻomaopopo ai i ka mea nui o ka hewa, ua ʻike mākou i nā ʻaoʻao pūnaewele koʻikoʻi no ka hana ʻoihana. Me ka hoʻohana ʻana iā lākou, helu mākou i ka helu o nā noi kūleʻa / kūleʻa ʻole a me nā manawa. Penei mākou e ana i ka uptime. 

E ʻōlelo mākou ua ʻike mākou aia kekahi mau ʻāpana koʻikoʻi o ka pūnaewele i kuleana no ka lawelawe nui - ʻimi a hoʻouna i nā hoʻolaha. Inā ʻoi aku ka nui o nā noi i hāʻule ma mua o 1%, he hanana koʻikoʻi kēia. Inā i loko o 15 mau minuke i ka manawa mua, ʻoi aku ka nui o ka hewa ma mua o 0,1%, a laila manaʻo ʻia kēia he hanana koʻikoʻi. Hoʻopili kēia mau pae hoʻohālikelike i ka hapa nui o nā hanana; ʻo ke koena ma waho o ke kiko o kēia ʻatikala.

Top fakapov Cyan

ʻO nā hanana maikaʻi loa ʻo Cyan

No laila, ua aʻo maoli mākou e hoʻoholo i ka ʻoiaʻiʻo i loaʻa kahi hanana. 

I kēia manawa ua wehewehe ʻia nā hanana āpau a hōʻike ʻia i ka epic Jira. Ma ke ala: no kēia ua hoʻomaka mākou i kahi papahana kaʻawale, i kapa ʻia ʻo FAIL - hiki ke hana ʻia nā epics i loko. 

Inā hōʻiliʻili ʻoe i nā hemahema āpau i nā makahiki i hala iho nei, ʻo nā alakaʻi: 

  • nā hanana pili mssql;
  • nā hanana i hanaʻia e nā kumu o waho;
  • nā kuhi hewa.

E nānā pono kākou i nā hewa o nā luna hoʻoponopono, a me kekahi mau hemahema hoihoi.

Wahi ʻelima - "E hoʻonohonoho i nā mea i ka DNS"

He Poalua ino ia. Ua hoʻoholo mākou e hoʻihoʻi i ke kauoha i ka pūʻulu DNS. 

Makemake au e hoʻololi i nā kikowaena DNS kūloko mai ka hoʻopaʻa ʻana i ka powerdns, e hoʻokaʻawale i nā kikowaena kaʻawale loa no kēia, kahi ʻaʻohe mea ʻē aʻe DNS. 

Ua hoʻonoho mākou i hoʻokahi kikowaena DNS ma kēlā me kēia wahi o kā mākou DC, a ua hiki mai ka manawa e hoʻoneʻe i nā ʻāpana mai ka hoʻopaʻa ʻana i ka powerdns a hoʻololi i ka ʻōnaehana i nā kikowaena hou. 

Ma waena o ka neʻe ʻana, o nā kikowaena āpau i hōʻike ʻia i nā paʻa caching kūloko ma nā kikowaena āpau, hoʻokahi wale nō i koe, aia ma ka kikowaena data ma St. Ua haʻi mua ʻia kēia DC he mea koʻikoʻi ʻole no mākou, akā ua lilo koke i wahi hoʻokahi o ka hāʻule.
Iloko o keia manawa o ka nee ana i haule iho ai ke kahawai mawaena o Moscow a me St. Petersburg. Ua haʻalele maoli mākou me ka DNS ʻole no ʻelima mau minuke a ala hou i ka wā i hoʻoponopono ai ka mea hoʻokele i ka pilikia. 

Nā hopena:

Inā ma mua ua haʻalele mākou i nā kumu o waho i ka wā hoʻomākaukau no ka hana, i kēia manawa ua hoʻokomo pū ʻia lākou i ka papa inoa o nā mea a mākou e hoʻomākaukau nei. A i kēia manawa ke hoʻoikaika nei mākou e hōʻoia i ka mālama ʻia ʻana o nā mea āpau i n-2, a i ka wā o ka hana hiki iā mākou ke hoʻohaʻahaʻa i kēia pae i n-1.

  • I ka wā e hoʻolālā ai i kahi hoʻolālā hana, e kaha i nā wahi i hiki ʻole ai i ka lawelawe ke hāʻule, a noʻonoʻo i kahi hiʻohiʻona kahi i hele ai nā mea āpau "mai ka ʻino a i ka ʻino" ma mua.
  • E hoʻokaʻawale i nā kikowaena DNS kūloko ma waena o nā geolocations / kikowaena data / racks / switch / inputs.
  • Ma kēlā me kēia kikowaena, e hoʻokomo i kahi kikowaena DNS caching kūloko, e hoʻihoʻi hou i nā noi i nā kikowaena DNS nui, a inā ʻaʻole i loaʻa, e pane mai ia mai ka cache. 

Wahi ʻehā - "E hoʻonohonoho i nā mea ma Nginx"

I kekahi lā maikaʻi, ua hoʻoholo kā mākou hui "ua lawa mākou i kēia," a hoʻomaka ke kaʻina hana o ka refactoring nginx configs. ʻO ka pahuhopu nui ka lawe ʻana i nā configs i kahi hoʻolālā intuitive. Ma mua, ua "hoʻokumuʻia nā mea a pau" aʻaʻole i lawe i kekahi loiloi. I kēia manawa ua hoʻoneʻe ʻia kēlā me kēia server_name i kahi faila o ka inoa hoʻokahi a ua māhele ʻia nā config a pau i loko o nā waihona. Ma ke ala, aia ka config i nā laina 253949 a i ʻole 7836520 mau huaʻōlelo a lawe i kahi kokoke i 7 megabytes. ʻO ka pae kiʻekiʻe o ka hale: 

Hoʻolālā 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

Ua ʻoi aku ka maikaʻi, akā i ke kaʻina o ka hoʻololi ʻana a me ka hāʻawi ʻana i nā config, ua hewa kekahi o lākou a ʻaʻole i hoʻokomo ʻia i loko o ke kuhikuhi *.conf. ʻO ka hopena, ua loaʻa ʻole kekahi mau mea hoʻokipa a hoʻihoʻi iā 301 i ka ʻaoʻao nui. Ma muli o ka helu o ka pane pane ʻaʻole 5xx / 4xx, ʻaʻole i ʻike koke ʻia kēia, akā i ke kakahiaka wale nō. Ma hope o kēlā, hoʻomaka mākou e kākau i nā hoʻokolohua e nānā i nā ʻāpana hana.

Nā hopena: 

  • E hoʻonohonoho pono i kāu configs (ʻaʻole wale nginx) a noʻonoʻo i ka hoʻolālā i ka wā mua o ka papahana. Ma kēia ala e hiki ai iā ʻoe ke hoʻomaopopo iā lākou i ka hui, ʻo ia ka mea e hōʻemi ai i ka TTM.
  • E kākau i nā ho'āʻo no kekahi mau ʻāpana hana. No ka laʻana: ka nānā ʻana e hāʻawi nā server_names kī i ke kūlana kūpono + kino pane. E lawa ka loaʻa ʻana o nā palapala liʻiliʻi ma ka lima e nānā i nā hana maʻamau o ka ʻāpana, i ʻole e hoʻomanaʻo nui i ka 3 a.m. i nā mea ʻē aʻe e pono ke nānā ʻia. 

ʻO ke kolu o ka wahi - "Holo koke i waho o kahi ākea ma Cassandra"

Ua ulu mau ka ʻikepili, a ua maikaʻi nā mea a pau a hiki i ka manawa i hoʻomaka ai ka hoʻoponopono ʻana i nā casespaces nui i loko o ka hui Cassandra, no ka mea ʻaʻole hiki i ka compaction ke hana ma luna o lākou. 

I kekahi lā ʻino, ua aneane lilo ka puʻupuʻu i ʻukena, ʻo ia hoʻi:

  • aia ma kahi o 20% o ka huina ākea i koe i loko o ka hui;
  • ʻAʻole hiki ke hoʻohui piha i nā nodes, no ka mea, ʻaʻole hele ka hoʻomaʻemaʻe ma hope o ka hoʻohui ʻana i kahi node ma muli o ka nele o nā wahi ma nā ʻāpana;
  • e hāʻule mālie ana ka huahana no ka mea ʻaʻole hana ka compaction; 
  • Aia ka pūʻulu ma ke ʻano pilikia.

Top fakapov Cyan

Haʻalele - ua hoʻohui mākou i 5 mau node me ka hoʻomaʻemaʻe ʻole, a laila hoʻomaka mākou e hoʻokaʻawale iā lākou mai ka pūpū a hoʻokomo hou iā lākou, e like me nā nodes ʻole i pau i waho. ʻOi aku ka nui o ka manawa ma mua o kā mākou makemake. Loaʻa ka pilikia o ka loaʻa ʻole ʻana o ka hui. 

Nā hopena:

  • Ma nā kikowaena cassandra a pau, ʻaʻole pono e ʻoi aku ma mua o 60% o ka hakahaka ma kēlā me kēia pā. 
  • Pono lākou e hoʻouka ʻia ma mua o 50% cpu.
  • ʻAʻole pono ʻoe e poina e pili ana i ka hoʻolālā ʻana a pono e noʻonoʻo pono i kēlā me kēia ʻāpana, e pili ana i kāna kikoʻī.
  • ʻOi aku ka nui o nā nodes i ka pūʻulu, ʻoi aku ka maikaʻi. ʻO nā kikowaena i loaʻa i kahi helu liʻiliʻi o ka ʻikepili ua hoʻonui wikiwiki ʻia, a ʻoi aku ka maʻalahi o ka hoʻōla hou ʻana o ia pūʻulu. 

Wahi ʻelua - "Ua nalowale ka ʻikepili mai ka waihona waiwai kī consul"

No ka ʻike lawelawe, mākou, e like me nā mea he nui, hoʻohana i ka consul. Akā hoʻohana pū mākou i kāna kī-waiwai no ka hoʻolālā uliuli-'ōmaʻomaʻo o ka monolith. Mālama ʻo ia i ka ʻike e pili ana i nā kahawai ikaika a me ka hana ʻole, e hoʻololi i nā wahi i ka wā o ka hoʻolaha ʻana. No kēia kumu, ua kākau ʻia kahi lawelawe hoʻolaha e pili ana me KV. I kekahi manawa, nalowale ka ʻikepili mai KV. Hoʻihoʻi ʻia mai ka hoʻomanaʻo ʻana, akā me ka nui o nā hewa. ʻO ka hopena, i ka wā o ka hoʻouka ʻana, ua māhele like ʻole ʻia ka ukana ma luna o nā kahawai, a ua loaʻa iā mākou nā hewa he 502 ma muli o ka hoʻonui ʻia ʻana o nā backends ma ka CPU. ʻO ka hopena, ua neʻe mākou mai ka consul KV a i nā postgres, mai kahi i maʻalahi ʻole e wehe iā lākou.  

Nā hopena:

  • ʻAʻole pono nā lawelawe me ka ʻae ʻole i ka ʻikepili koʻikoʻi i ka hana o ka pūnaewele. No ka laʻana, inā ʻaʻole ʻae ʻia ʻoe ma ES, ʻoi aku ka maikaʻi o ka hōʻole ʻana i ke komo ʻana ma ka pae pūnaewele mai nā wahi āpau ʻaʻole pono, waiho wale i nā mea pono, a hoʻonohonoho pū i ka action.destructive_requires_name: ʻoiaʻiʻo.
  • E hoʻomaʻamaʻa i kāu ʻōnaehana hoʻihoʻi a me ka hoʻihoʻi ma mua. No ka laʻana, e hana i kahi palapala ma mua (no ka laʻana, i ka python) hiki ke hoʻihoʻi a hoʻihoʻi.

Kahi mua - "Kapena Unobvious" 

I kekahi manawa, ua ʻike mākou i ka hāʻawi ʻole ʻana o ka ukana ma luna o ka nginx i nā hihia i loaʻa nā kikowaena 10+ ma ke kua. Ma muli o ka hoʻouna ʻana o round-robin i nā noi mai ka 1st a i ka hope i luna ma ke ʻano, a ua hoʻomaka kēlā me kēia nginx reload, ua loaʻa mau nā noi mua i luna ma mua o nā mea ʻē aʻe. Ua ʻike nui ʻia kēia i ka piʻi ʻana o ke kaʻa. ʻAʻole i hana ka hōʻano hou ʻana i ka nginx e hiki ai i ka random - pono mākou e hana hou i kahi pūʻulu lua code ʻaʻole i lawe ʻia ma ka mana 1.15 (i kēlā manawa). Pono mākou e hoʻopili i kā mākou nginx 1.14.2, e hoʻokomo i ke kākoʻo maʻamau i loko. Ua hoʻoponopono kēia i ka pilikia. Loaʻa kēia pahu i ka māhele "Kapena Non-Obviousness".

Nā hopena:

He mea hoihoi a hoihoi loa i ka ʻimi ʻana i kēia bug). 

  • E hoʻonohonoho i kāu nānā ʻana i kōkua iā ʻoe e ʻike koke i kēlā mau loli. No ka laʻana, hiki iā ʻoe ke hoʻohana i ka ELK e nānā i nā rps ma kēlā me kēia backend o kēlā me kēia upstream, e nānā i kā lākou manawa pane mai ka ʻike o ka nginx. I kēia hihia, ua kōkua kēia iā mākou e ʻike i ka pilikia. 

ʻO ka hopena, ua hiki ke pale ʻia ka hapa nui o nā hemahema me kahi ʻoi aku ka nānā ʻana i kāu mea e hana nei. Pono kākou e hoʻomanaʻo mau i ke kānāwai a Murphy: ʻO kēlā me kēia mea hiki ke hele hewa e hele hewa, a kūkulu i nā ʻāpana ma muli o ia. 

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka