Netramesh - xalka mesh adeega miisaanka fudud

Markaan ka guureyno codsiga monolithic una guurno qaab dhismeedka adeeg-yaraha, waxaan wajahaynaa caqabado cusub.

Codsiga monolithic, sida caadiga ah aad ayay u fududahay in la go'aamiyo qaybta nidaamka khaladku ka dhacay. Inta badan, dhibaatadu waxay ku jirtaa koodhka monolith laftiisa, ama database-ka. Laakiin marka aan bilowno raadinta dhibaatada dhismaha microservice, wax walba ma sii muuqdaan. Waxaan u baahanahay inaan helno dhammaan dariiqa uu codsigu qaatay min bilow ilaa dhamaad oo aan ka doorano boqolaal adeeg yar yar. Intaa waxaa dheer, qaar badan oo iyaga ka mid ah ayaa sidoo kale leh tas-hiilaadkooda kaydinta, taas oo sidoo kale keeni karta khaladaad macquul ah, iyo sidoo kale dhibaatooyinka waxqabadka iyo dulqaadka cilladaha.

Netramesh - xalka mesh adeega miisaanka fudud

Waxaan raadinayey waqti dheer qalab kaa caawin doona la qabsiga dhibaatooyinkan oo kale (waxaan tan ku qoray HabrΓ©: 1, 2), laakiin ugu dambeyntii waxaan sameeyay xal il furan oo ii gaar ah. Maqaalkan waxaan ka hadlayaa faa'iidooyinka habka mesh adeegga oo aan la wadaago qalab cusub oo lagu hirgelinayo.

Baafinta qaybsan waa xal guud oo lagu xallinayo dhibaatada helitaanka khaladaadka hababka la qaybiyey. Laakiin ka waran haddii habkan loo ururiyo macluumaadka ku saabsan isdhexgalka shabakadaha aan weli lagu hirgelin nidaamka, ama, ka sii dara, qayb ka mid ah nidaamka horayba si sax ah ayuu u shaqeeyaa, laakiin qayb ahaan ma aha, maadaama aan lagu darin adeegyo hore. ? Si loo go'aamiyo sababta dhabta ah ee dhibaatada, waxaa lagama maarmaan ah in la helo sawir buuxa oo ku saabsan waxa ka dhacaya nidaamka. Waxaa si gaar ah muhiim u ah in la fahmo adeegaha yar yar ee ku lug leh waddooyinka muhiimka ah ee ganacsiga.

Halkan habka mesh-ka adeegga ayaa ku iman kara gargaarkeenna, kaas oo wax ka qaban doona dhammaan mishiinnada ururinta macluumaadka shabakadda oo ah heer ka hooseeya adeegyada ay iyagu shaqeeyaan. Habkani wuxuu noo ogolaanayaa inaan ka hortagno dhammaan taraafikada oo aan ku falanqeyno duulista. Waxaa intaa dheer, codsiyadu xitaa maaha inay wax ka ogaadaan.

Habka mesh adeega

Fikradda ugu weyn ee habka mesh-ka adeegga ayaa ah in lagu daro lakab kale oo kaabayaal shabakad ah, taas oo noo ogolaan doonta inaan wax kasta ku samayno isdhexgalka adeegga. Hirgelinta intooda badani waxay u shaqeeyaan sida soo socota: weel dheeri ah oo dhinaca baabuurka ah oo leh wakiil hufan ayaa lagu daraa adeeg kasta oo yar yar, kaas oo dhammaan taraafikada adeega soo galaya iyo kuwa baxaya la maro. Tanina waa meesha aad ka samayn karto isku dheelitirka macmiilka, ku dabaqi karno siyaasadaha amniga, ku soo rogi karno xaddidaadda tirada codsiyada oo aan ku ururin karno macluumaadka muhiimka ah ee isdhexgalka adeegyada wax soo saarka.

Netramesh - xalka mesh adeega miisaanka fudud

Xalka

Waxa horeba u jiray dhawr fulin oo habkan ah: Istio ΠΈ linkerd2. Waxay bixiyaan sifooyin badan oo ka baxsan sanduuqa. Laakin isla mar ahaantaana, waxaa imaanaysa kor u kac weyn oo dhanka kheyraadka ah. Intaa waxaa dheer, marka ay bataan kooxda uu nidaamkan ku shaqeeyo, waa inta kheyraad badan loo baahan doono si loo ilaaliyo kaabayaasha cusub. At Avito, waxaanu ka shaqaynaa kubernetes rucubyada kuwaas oo ka kooban kumanaan tusaaleyaal adeeg ah (lambarkooduna si degdeg ah ayuu u korayaa). Hirgelinteeda hadda, Istio waxay isticmaashaa ~ 300Mb ee RAM tusaale ahaan adeeg kasta. Sababo la xiriira tirada badan ee suurtogalka ah, isku dheelitirka hufan ayaa sidoo kale saameeya waqtiga jawaabta guud ee adeegyada (ilaa 10ms).

Natiijo ahaan, waxaan eegnay sida saxda ah awoodaha aan hadda u baahan nahay, waxaanan go'aansannay in sababta ugu weyn ee aan u bilownay hirgelinta xalalka noocaas ah ay tahay awoodda aan u ururinno macluumaadka raadraaca ee nidaamka oo dhan si hufan. Waxaan sidoo kale rabnay inaan gacanta ku hayno isdhexgalka adeegyada oo aan ku sameyno wax-is-daba-marinno kala duwan oo aan ku sameyno madax-madaxeedyada ay isku gudbiyaan adeegyada dhexdooda.

Natiijo ahaan, waxaan gaadhnay go'aankayagii:β€Š Netramesh.

Netramesh

Netramesh waa xal adeeg fudud oo mesh ah oo awood u leh inuu cabbiro aan xad lahayn, iyadoon loo eegin tirada adeegyada ee nidaamka.

Himilooyinka ugu muhiimsan ee xalka cusub waxay ahaayeen sahayda kheyraadka oo hooseeya iyo waxqabadka sare. Astaamaha ugu muhiimsan waxaa ka mid ah, waxaan isla markiiba rabnay inaan awoodno inaan si hufan ugu dirno baafinta nidaamkayaga Jaeger.

Maanta, inta badan xalalka daruuraha ayaa laga hirgeliyay Golang. Iyo, dabcan, waxaa jira sababo tan. Qorista arjiyada shabakada Golang ee si isku mid ah ula shaqeeya I/O iyo cabirka koodhka hadba inta loo baahdo waa ku haboon oo aad u fudud. Iyo, waxa sidoo kale aad muhiim u ah, waxqabadka ayaa ku filan in lagu xalliyo dhibaatadan. Taasi waa sababta aan sidoo kale u doorannay Golang.

Wax-soo-saarka

Waxaan diirada saarnay dadaalkeena si aan u gaarno wax soo saarka ugu badan. Xalka la geeyey dhinac kasta oo adeega ah, isticmaalka yar ee RAM iyo wakhtiga CPU ayaa loo baahan yahay. Iyo, dabcan, daahitaanku waa inuu sidoo kale ahaadaa mid yar.

Aan aragno natiijada aan helnay.

RAM

Netramesh waxay isticmaashaa ~ 10Mb gaadiid la'aan iyo 50Mb ugu badnaan oo leh culeys gaaraya 10000 RPS tusaale ahaan.

Wakiilka Istio wuxuu had iyo jeer ku cunaa ~ 300Mb kooxdeena oo leh kumanaan xaaladood. Tani ma ogola in lagu miisaamo kooxda oo dhan.

Netramesh - xalka mesh adeega miisaanka fudud

Netramesh - xalka mesh adeega miisaanka fudud

Netramesh waxaan helnay ~ 10x hoos u dhac ku yimid isticmaalka xusuusta.

processor

Isticmaalka CPU waa siman yahay marka la rarayo. Waxay kuxirantahay tirada codsiyada halbeegba wakhtiga gaadhiga dhinaceeda. Qiimaha 3000 codsi ilbiriqsikii marka ugu sarreysa:

Netramesh - xalka mesh adeega miisaanka fudud

Netramesh - xalka mesh adeega miisaanka fudud

Waxaa jira hal dhibic oo kale oo muhiim ah: Netramesh - xal aan lahayn diyaarad kontorool ah iyo culeys la'aan ma cunaan waqtiga CPU. Iyadoo Istio, gawaarida dhinacyadu had iyo jeer waxay cusbooneysiiyaan dhammaadka adeegga. Natiijo ahaan, waxaan arki karnaa sawirkan iyada oo aan wax rarin:

Netramesh - xalka mesh adeega miisaanka fudud

Waxaan u isticmaalnaa HTTP/1 xiriirka ka dhexeeya adeegyada. Kordhinta wakhtiga jawaabta ee Istio markii wakiil ka ahaanaya ergeyga ayaa gaadhay ilaa 5-10ms, taas oo aad ugu badan adeegyada diyaarka u ah inay kaga jawaabaan hal ilbidhiqsi. Netramesh wakhtigan waxa uu hoos ugu dhacay 0.5-2ms.

Miisaanka

Qadarka yar ee agabka uu isticmaalo wakiil kasta ayaa suurtogal ka dhigaya in la ag dhigo adeeg kasta. Netramesh si ula kac ah ayaa loo abuuray iyada oo aan la hayn qayb diyaaradeed si ay si fudud u ilaaliso mid kasta oo dhinaca ah. Inta badan xalalka mesh adeega, diyaaradda kontoroolka waxay u qaybisaa macluumaadka helitaanka adeegga gaadhi dhinac kasta. Waxaa weheliya macluumaadka ku saabsan waqti-gaabyada iyo habaynta dheelitirka. Waxaas oo dhan waxay kuu ogolaaneysaa inaad sameyso waxyaabo badan oo faa'iido leh, laakiin, nasiib daro, waxay ku dhufataa dhinacyada xajmiga.

Helitaanka adeegga

Netramesh - xalka mesh adeega miisaanka fudud

Netramesh kuma darto wax habab dheeraad ah oo loogu talagalay helitaanka adeegga. Dhammaan taraafikada waxaa si hufan loogu soo dhoweeyaa iyada oo loo marayo netra sidecar.

Netramesh waxay taageertaa borotokoolka codsiga HTTP/1. Si loo qeexo, liis la habeyn karo oo dekedaha ayaa la isticmaalaa. Caadi ahaan, nidaamku waxa uu leeyahay dhawr dekedood oo xidhiidhka HTTP ku dhaco. Tusaale ahaan, waxaan u isticmaalnaa 80, 8890, 8080 isdhexgalka ka dhexeeya adeegyada iyo codsiyada dibadda. Xaaladdan, waxaa lagu dejin karaa iyadoo la adeegsanayo doorsoomiyaha deegaanka NETRA_HTTP_PORTS.

Haddii aad u isticmaasho Kubernetes sidii orchestertor ahaan iyo habka hay'adda Adeegga ee xidhiidhka ka dhexeeya adeegyada, markaa farsamadu sidii hore ayay ahaanaysaa. Marka hore, microservice-ku wuxuu helayaa ciwaanka IP-ga adeegga isagoo isticmaalaya kube-dns wuxuuna u furayaa xiriir cusub. Xidhiidhintan waxaa markii hore lagu aasaasay baabuurka netra-sidecar ee maxalliga ah iyo dhammaan baakadaha TCP waxay markii hore yimaadaan netra. Marka xigta, netra-sidecar waxay samaysaa xidhiidh la leh meesha asalka ah. NAT on pod IP on noode ayaa weli ah sida saxda ah la'aanta netra.

Baafinta la qaybiyay iyo gudbinta macnaha guud

Netramesh wuxuu bixiyaa shaqada loo baahan yahay si loo soo diro baafinta baafinta ee ku saabsan isdhexgalka HTTP. Netra-sidecar waxay kala saartaa borotokoolka HTTP, waxay cabirtaa dib u dhaca, waxayna ka soo saartaa macluumaadka lagama maarmaanka ah madaxyada HTTP. Ugu dambeyntii, waxaan helnaa dhammaan raadadka hal nidaam Jaeger. Si loo qaabeeyo qaab-dhismeed wanaagsan, waxa kale oo aad isticmaali kartaa doorsoomayaasha deegaanka ee ay bixiso maktabadda rasmiga ah jeeger tag maktabadda.

Netramesh - xalka mesh adeega miisaanka fudud

Netramesh - xalka mesh adeega miisaanka fudud

Laakiin dhibaato ayaa jirta. Ilaa ay adeegyadu abuurmaan oo ay diraan madax uber gaar ah, kuma arki doonno baafinta ku xidhan nidaamka. Tanina waa waxa aan u baahanahay inaan si dhakhso ah u helno sababta dhibaatooyinka. Halkan mar kale Netramesh waxay leedahay xal. Wakiiladu waxay akhriyaan madaxyada HTTP oo, haddii aysan ku jirin uber trace id, soo saar mid. Netramesh waxa kale oo ay ku kaydisaa macluumaadka ku saabsan codsiyada soo gelaya iyo kuwa baxaya gaadhi dhinaceed ah oo ay la mid tahay iyaga oo ku kobcinaya madaxyada codsiga bixista lagama maarmaanka ah. Waxa kaliya ee aad u baahan tahay inaad ku samayso adeegyada waa inaad dirto hal madax oo keliya X-Request-Id, kaas oo lagu habayn karo iyadoo la isticmaalayo doorsoome deegaan NETRA_HTTP_REQUEST_ID_HEADER_NAME. Si loo xakameeyo cabbirka macnaha guud ee Netramesh, waxaad dejin kartaa doorsoomayaasha deegaanka ee soo socda: NETRA_TRACING_CONTEXT_EXPIRATION_MILLISECONDS (waqtiga macnaha guud la keydin doono) iyo NETRA_TRACING_CONTEXT_CLEANUP_INTERVAL (inta jeer ee nadiifinta macnaha guud).

Waxa kale oo suurtogal ah in la isku daro wadooyin badan oo nidaamkaaga ah adiga oo ku calaamadeynaya calaamad fadhi gaar ah. Netra wuxuu kuu ogolaanayaa inaad rakibto HTTP_HEADER_TAG_MAP si loo beddelo madax-madaxeedyada HTTP oo u dhigma calaamadaha raadraaca ee u dhigma. Tani waxay si gaar ah faa'iido u yeelan kartaa baaritaanka. Ka dib markaad gudubto imtixaanka shaqeynta, waxaad arki kartaa qaybta nidaamka ay saameeyeen shaandhaynta furaha fadhiga u dhigma.

Go'aaminta Isha Codsiga

Si loo go'aamiyo meesha uu codsigu ka yimid, waxaad isticmaali kartaa shaqeynta si toos ah ugu darista cinwaan isha. Isticmaalka doorsoome deegaan NETRA_HTTP_X_SOURCE_HEADER_NAME Waxaad cayimi kartaa magaca madaxa oo si toos ah loo rakibi doono. Adigoo isticmaalaya NETRA_HTTP_X_SOURCE_VALUE waxaad dejin kartaa qiimaha madaxa X-Source loo dejin doono dhammaan codsiyada socda.

Tani waxay u oggolaanaysaa qaybinta madaxan waxtarka leh in si isku mid ah loogu qaybiyo dhammaan shabakadaha. Markaa waxaad u isticmaali kartaa adeegyada oo waxaad ku dari kartaa logs iyo metrik.

Jideynta taraafikada iyo gudaha Netramesh

Netramesh wuxuu ka kooban yahay laba qaybood oo waaweyn. Midka ugu horreeya, netra-init, wuxuu dejiyaa qawaaniinta shabakadda si uu u dhexgalo taraafikada. Wuxuu adeegsadaa iptables redirect xeerarka in la joojiyo dhammaan ama qayb ka mid ah taraafikada dhinaca baabuurka, taas oo ah qaybta labaad ee ugu muhiimsan ee Netramesh. Waxaad dejin kartaa dekedaha u baahan in la dhexgalo fadhiyada TCP ee imanaya iyo kuwa baxaya: INBOUND_INTERCEPT_PORTS, OUTBOUND_INTERCEPT_PORTS.

Qalabku waxa kale oo uu leeyahay sifo xiiso leh - dariiqa ixtimaalka ah. Haddii aad u isticmaasho Netramesh si gaar ah si aad u ururiso baafinta baafinta, markaa deegaanka wax soo saarka waxaad kaydin kartaa kheyraadka oo aad awood u yeelan kartaa marin-u-socod macquul ah adoo isticmaalaya doorsoomayaal. NETRA_INBOUND_PROBABILITY ΠΈ NETRA_OUTBOUND_PROBABILITY (laga bilaabo 0 ilaa 1). Qiimaha caadiga ah waa 1 (dhammaan taraafikada waa la xannibay).

Ka dib dhexda guul leh, netra sidecar ayaa aqbala isku xirka cusub oo isticmaala SO_ORIGINAL_DST ikhtiyaarka godka si aad u hesho meesha asalka ah. Netra ayaa markaa furaysa xiriir cusub oo ku saabsan ciwaanka IP-ga asalka ah waxayna dejisaa isgaarsiin laba-geesood ah oo TCP ah oo u dhexeeya dhinacyada, dhageysiga dhammaan taraafikada dhexmara. Haddii dekeddu lagu qeexo HTTP, Netra waxay isku daydaa inay baarto oo raadiso. Haddii falanqaynta HTTP ay ku guuldareysato, Netra waxay dib ugu dhacdaa TCP oo si hufan u wakiila bytes.

Dhisida garaaf ku tiirsanaanta

Ka dib markii aan helo qadar badan oo ah macluumaadka raadinta ee Jaeger, waxaan rabaa in aan helo garaaf dhamaystiran oo isdhexgalka nidaamka. Laakiin haddii nidaamkaagu aad u raran yahay oo balaayiin baafin ah ay ururaan maalintii, isu geyntooda ma noqonayso hawl fudud. Waxaa jira hab rasmi ah oo tan loo sameeyo: dhimbiil-ku-tiirsanaan. Si kastaba ha ahaatee, waxay qaadan doontaa saacado in la dhiso garaaf dhamaystiran oo waxay kugu qasbi doontaa inaad ka soo dejiso dhammaan xogta Jaeger XNUMX-kii saac ee la soo dhaafay.

Haddii aad u isticmaalayso Elasticsearch si aad u kaydiso taagga raadinta, waad isticmaali kartaa utility Golang fudud, kaas oo ku dhisi doona isla garaaf daqiiqado gudahood iyadoo la isticmaalayo sifooyinka iyo awooda Elasticsearch.

Netramesh - xalka mesh adeega miisaanka fudud

Sida loo isticmaalo Netramesh

Netra si fudud ayaa loogu dari karaa adeeg kasta oo maamula orchestra kasta. Waxaad arki kartaa tusaale halkan.

Waqtigan xaadirka ah, Netra ma laha awood ay si toos ah u hirgeliso gawaarida dhinacyadeeda ee adeegyada, laakiin waxaa jira qorshayaal lagu hirgelinayo.

Mustaqbalka Netramesh

Hadafka ugu weyn Netramesh waa in la gaaro kharashaadka ugu yar ee kheyraadka iyo waxqabadka sare, iyadoo la siinayo awoodaha aasaasiga ah ee fiirsashada iyo xakamaynta isgaarsiinta adeegga dhexdooda.

Mustaqbalka, Netramesh wuxuu taageeri doonaa borotokoolka lakabka codsiga kale oo aan ka ahayn HTTP. Jidka L7 ayaa diyaar noqon doona mustaqbalka dhow.

Isticmaal Netramesh haddii aad la kulanto dhibaatooyin la mid ah oo noo soo qor su'aalo iyo talooyin.

Source: www.habr.com

Add a comment