Netramesh - fofo mama auaunaga mata

A o matou siitia mai le monolithic application i se microservices architecture, matou te feagai ma luitau fou.

I se talosaga monolithic, e masani lava e faigofie lava ona iloa po o fea vaega o le faiga na tupu ai le mea sese. E foliga mai, o le faʻafitauli o loʻo i totonu o le code o le monolith lava ia, poʻo le database. Ae a amata ona tatou suʻeina se faʻafitauli i totonu o le microservice architecture, e le o toe manino mea uma. Matou te manaʻomia le suʻeina o le ala atoa na faia e le talosaga mai le amataga seia maeʻa ma filifili mai le faitau selau o microservices. E le gata i lea, o le toʻatele oi latou o loʻo i ai a latou lava fale teu oloa, lea e mafai foi ona mafua ai ni mea sese, faʻapea foʻi ma faʻafitauli i le faʻatinoina ma le faʻapalepale sese.

Netramesh - fofo mama auaunaga mata

Ua leva ona ou sailia se meafaigaluega e fesoasoani e foia ai ia faafitauli (Na ou tusia e uiga i lenei mea i luga o Habré: 1, 2), ae i le faaiuga na ou faia laʻu lava fofo tatala punaoa. I lenei tusiga ou te talanoa e uiga i aoga o le auaunaga mesh auala ma faʻasoa se meafaigaluega fou mo lona faʻatinoga.

Fa'asoa fa'asalalau o se fofo masani i le fa'afitauli o le sailia o mea sese i faiga fa'asoa. Ae faʻafefea pe a fai o lenei auala e aoina ai faʻamatalaga e uiga i fesoʻotaʻiga fesoʻotaʻiga e leʻi faʻatinoina i totonu o le faiga, pe sili atu le leaga, i se vaega o le faiga ua uma ona galue lelei, ae o se vaega e leai, talu ai e leʻi faʻaopoopoina i auaunaga tuai. ? Ina ia iloa le mafuaʻaga tonu o se faʻafitauli, e tatau ona i ai se ata atoatoa o le mea o loʻo tupu i totonu o le polokalama. E taua tele le malamalama po'o fea microservices o lo'o a'afia i ala autu-faipisinisi.

O iinei e mafai ona oʻo mai ai le auaunaga mesh auala e fesoasoani ia i matou, lea o le a feagai ma masini uma mo le aoina o faʻamatalaga fesoʻotaʻiga i se tulaga maualalo nai lo auaunaga latou te faʻaogaina. O lenei auala e mafai ai ona tatou faʻalavelave uma fefaʻatauaiga ma auʻiliʻili i luga ole lele. E le gata i lea, o talosaga e le tatau ona iloa se mea e uiga i ai.

Au'aunaga mesh auala

O le manatu autu o le 'auʻaunaga mesh auala o le faʻaopoopoina lea o se isi fausaga faʻapipiʻi i luga o le fesoʻotaʻiga, lea e mafai ai ona tatou faia soʻo se mea i fegalegaleaiga vaʻavaʻai. Ole tele o fa'atinoga e fa'apea e fa'apea: o se atigi pusa fa'aopoopo fa'atasi ai ma se sui manino o lo'o fa'aopoopoina i microservice ta'itasi, lea e pasia uma ai fefa'ataua'iga o le auaunaga. Ma o le nofoaga tonu lea e mafai ai ona tatou faia le faapaleniina o tagata o tausia, faʻaogaina faiga faʻavae puipuiga, faʻatapulaʻaina le numera o talosaga ma aoina faʻamatalaga taua i le fegalegaleaiga o auaunaga i le gaosiga.

Netramesh - fofo mama auaunaga mata

Fofo

O loʻo i ai le tele o faʻatinoga o lenei faiga: Istio и linkerd2. Latou te tuʻuina atu le tele o foliga mai le pusa. Ae i le taimi lava e tasi, e oʻo mai se faʻauluuluga tele i luga o punaoa. E le gata i lea, o le tele o le fuifui o loʻo faʻaogaina ai sea faiga, o le tele o punaoa o le a manaʻomia e tausia ai atinaʻe fou. I Avito, matou te faʻaaogaina fuifui kubernetes o loʻo i ai le faitau afe o faʻataʻitaʻiga o auaunaga (ma o loʻo faʻaauau pea le faʻatupulaia o latou numera). I lona faʻatinoga o loʻo iai nei, e faʻaaogaina e Istio ~ 300Mb o le RAM i le faʻataʻitaʻiga auaunaga. Ona o le tele o avanoa, o le paleni manino e aafia ai foi le taimi atoa o tali o auaunaga (e oo atu i le 10ms).

O le i'uga, na matou va'ava'ai tonu po'o a agava'a matou te mana'omia i le taimi nei, ma filifili ai o le mafua'aga autu na amata ai ona matou fa'atinoina ia fofo o le mafai lea ona aoina fa'amatalaga mai le faiga atoa ma le manino. Matou te manaʻo foʻi e iai le faʻatonuga o fesoʻotaʻiga o auʻaunaga ma fai togafiti eseese ma ulutala e faʻafeiloaʻi i le va o auaunaga.

O se taunuuga, na matou oʻo mai i la matou filifiliga:  Netramesh.

Netramesh

Netramesh o se fofo mama mesh auaunaga ma le gafatia e fua le gata, e tusa lava po o le a le numera o auaunaga i le faiga.

O sini autu o le fofo fou o le maualalo o punaoa i luga ole ulu ma maualuga le faatinoga. Faatasi ai ma vaega autu, na vave ona matou manaʻo e mafai ona faʻaalia manino le vaʻaia o vaʻaiga i la matou Jaeger system.

I aso nei, o le tele o fofo o ao o loʻo faʻatinoina i Golang. Ma, ioe, e iai mafuaaga mo lenei mea. O le tusiaina o feso'ota'iga feso'ota'iga i Golang e galulue fa'atasi ma I/O ma fua fa'asaga i 'au pe a mana'omia e faigofie ma faigofie. Ma, o le mea e sili ona taua, o le faʻatinoga e lava e foia ai lenei faʻafitauli. O le mea lena na matou filifilia ai Golang.

Gaioiga

Ua taulai atu a matou taumafaiga i le ausiaina o le maualuga o le gaosiga. Mo se fofo o loʻo faʻapipiʻiina i tafatafa o faʻataʻitaʻiga taʻitasi o le tautua, e manaʻomia sina faʻaaogaina o le RAM ma le CPU taimi. Ma, ioe, o le tali tuai e tatau foi ona laʻititi.

Se'i vaai po o le a le i'uga na maua.

pa'ū

Netramesh e faʻaaogaina ~ 10Mb e aunoa ma fefaʻatauaiga ma 50Mb maualuga ma se uta e oʻo atu i le 10000 RPS i le faʻataʻitaʻiga.

Istio avefe'au sui e fa'aaoga i taimi uma ~ 300Mb i a tatou fuifui ma le faitau afe o taimi. E le fa'atagaina ai ona fa'asili i le fuifui atoa.

Netramesh - fofo mama auaunaga mata

Netramesh - fofo mama auaunaga mata

Faatasi ai ma Netramesh matou maua se ~ 10x faʻaitiitiga i le taumafaina manatua.

CPU

Ole fa'aogaina ole PPU e tutusa lelei ile uta. E fa'alagolago ile numera ole talosaga ile iunite ole taimi ile ta'avale. Tau ile 3000 talosaga ile sekone ile maualuga:

Netramesh - fofo mama auaunaga mata

Netramesh - fofo mama auaunaga mata

E tasi le isi itu taua: Netramesh - o se fofo e aunoa ma se vaalele pulea ma e aunoa ma se uta e le faʻaumatia ai le taimi ole PPU. Faatasi ai ma Istio, o taʻavale faʻasolosolo e faʻafouina i taimi uma pito o auaunaga. O se taunuuga, e mafai ona tatou vaʻai i lenei ata e aunoa ma se uta:

Netramesh - fofo mama auaunaga mata

Matou te faʻaaogaina HTTP/1 mo fesoʻotaʻiga i le va o auaunaga. O le faʻaopoopoga o le taimi tali mo Istio pe a sui e ala i le avefeʻau na oʻo atu i le 5-10ms, lea e fai si tele mo auʻaunaga ua sauni e tali atu i le millisecond. Faatasi ai ma Netramesh o lenei taimi ua faʻaititia i le 0.5-2ms.

Scalability

O le la'ititi o alagaoa e fa'aaogaina e sui ta'itasi e mafai ai ona tu'u i tafatafa o auaunaga ta'itasi. Netramesh na faia ma le loto i ai e aunoa ma se vaega o le va'alele fa'atonutonu e fa'amama ai ta'avale ta'itasi. O le tele o taimi i vaifofo tautua, e tufatufaina atu e le va'alele fa'atonu fa'amatalaga su'esu'ega i ta'avale ta'itasi. Fa'atasi ai ma fa'amatalaga e uiga i taimi fa'agata ma fa'apaleni fa'atulagaina. O nei mea uma e mafai ai e oe ona faia le tele o mea aoga, ae, o le mea e leaga ai, e faʻafefe ai taʻavale i le tele.

Auaunaga su'esu'e

Netramesh - fofo mama auaunaga mata

Netramesh e le fa'aopoopoina so'o se faiga fa'aopoopo mo le su'esu'eina o auaunaga. O fe'avea'iga uma o lo'o fa'afeiloa'i manino e ala i ta'avale netra.

E lagolagoina e Netramesh le HTTP/1 talosaga fa'akomepiuta. Ina ia faʻamalamalamaina, o loʻo faʻaogaina se lisi faʻatulagaina o ports. E masani lava, o le faiga e tele ports e faʻaogaina ai fesoʻotaʻiga HTTP. Mo se faʻataʻitaʻiga, matou te faʻaogaina le 80, 8890, 8080 mo fegalegaleaiga i le va o auaunaga ma talosaga i fafo. NETRA_HTTP_PORTS.

Afai e te fa'aogaina le Kubernetes e fai ma fa'alāpotopotoga ma lana 'au'aunaga tu'ufa'atasiga mo feso'ota'iga i totonu ole va'aiga i le va o au'aunaga, ona tumau lea o le masini. Muamua, e maua e le microservice se tuatusi IP tautua e faʻaaoga ai le kube-dns ma tatala se fesoʻotaʻiga fou i ai. O lenei feso'ota'iga e fa'avae muamua i le ta'avale netra i le lotoifale ma o pa'aga TCP uma na muamua taunu'u i netra. Sosoo ai, netra-sidecar fa'avaeina se feso'ota'iga ma le ulua'i taunu'uga. NAT ile pod IP ile node e tumau tutusa ma le leai o netra.

Fa'asoa su'esu'e ma le fa'asologa o tala

Netramesh o loʻo tuʻuina atu galuega e manaʻomia e tuʻuina atu ai vaʻaiga e uiga i fegalegaleaiga HTTP. Netra-sidecar parses le HTTP protocol, fua faʻatuai talosaga, ma aveese faʻamatalaga talafeagai mai ulutala HTTP. Mulimuli ane, matou te mauaina uma faʻailoga i se tasi Jaeger system. Mo le fa'avasegaina lelei, e mafai fo'i ona e fa'aogaina suiga o le si'osi'omaga ua saunia e le faletusi aloa'ia jaeger alu faletusi.

Netramesh - fofo mama auaunaga mata

Netramesh - fofo mama auaunaga mata

Ae o loo i ai se faafitauli. Se'ia o'o ina fa'atupuina ma lafo e au'aunaga se ulutala fa'apitoa uber, o le a matou le va'aia le va'aiga o feso'ota'iga i totonu o le faiga. Ma o le mea lea tatou te manaʻomia e vave maua ai le mafuaʻaga o faʻafitauli. O lea ua toe maua e Netramesh se fofo. O sui e faitau ulutala HTTP ma, afai latou te le o iai le uber trace id, fa'atupu le tasi. Netramesh e teuina foi faʻamatalaga e uiga i talosaga ulufale mai ma fafo i totonu o se taʻavale ma faʻafetaui i latou e ala i le faʻatamaoaigaina i latou i ulutala manaʻomia o talosaga alu ese. Pau lava le mea e tatau ona e faia i au'aunaga o le lafo na'o le tasi le ulutala X-Request-Id, lea e mafai ona faʻatulagaina e faʻaaoga ai se fesuiaiga o le siosiomaga NETRA_HTTP_REQUEST_ID_HEADER_NAME. Ina ia pulea le tele o le tala i Netramesh, e mafai ona e setiina suiga ole siosiomaga nei: NETRA_TRACING_CONTEXT_EXPIRATION_MILLISECONDS (le taimi o le a teuina ai le anotusi) ma NETRA_TRACING_CONTEXT_CLEANUP_INTERVAL (tele ole fa'amama fa'amatalaga).

E mafai foi ona tuʻufaʻatasia le tele o auala i luga o lau masini e ala i le faʻailogaina i se faʻailoga faʻapitoa. Netra fa'atagaina oe e fa'apipi'i HTTP_HEADER_TAG_MAP e fa'aliliu ai ulutala HTTP i fa'ailoga fa'atatau o le va'aiga. E mafai ona aoga tele lenei mea mo su'ega. A maeʻa ona pasia le suʻega galue, e mafai ona e vaʻai poʻo fea vaega o le faiga na aʻafia e ala i le faʻamamaina e le ki o le vasega tutusa.

Fuaina o le Puna o Talosaga

Ina ia iloa po o fea na sau ai le talosaga, e mafai ona e faʻaogaina le gaioiga o le faʻapipiʻiina otometi se ulutala ma le puna. Fa'aaogaina o se siosiomaga fesuia'i NETRA_HTTP_X_SOURCE_HEADER_NAME E mafai ona e faʻamaonia se igoa ulutala e otometi ona faʻapipiʻi. I le fa'aaogaina NETRA_HTTP_X_SOURCE_VALUE e mafai ona e setiina le tau o le a seti ai le ulutala X-Source mo talosaga uma e alu i fafo.

O lenei mea e mafai ai ona tufatufaina atu lenei ulutala aoga e tufatufaina tutusa i luga o le upega tafailagi. Ona mafai lea ona e faʻaaogaina i auaunaga ma faʻaopoopo i ogalaau ma fua.

Ta'avale ta'avale ma Netramesh internals

Netramesh e aofia ai vaega autu e lua. O le muamua, netra-init, fa'atulaga tulafono feso'ota'iga e fa'alavelave ai feoaiga. Na te faaaogaina iptables redirect tulafono e faʻalavelave uma poʻo se vaega o feoaiga i luga o le taʻavale, o le vaega lona lua o Netramesh. E mafai ona e fetuutuuna'i po o fea ports e mana'omia ona fa'alavelave mo sauniga TCP ulufale mai ma fafo atu: INBOUND_INTERCEPT_PORTS, OUTBOUND_INTERCEPT_PORTS.

O lo'o iai fo'i se mea mata'ina le meafaigaluega - fa'ata'ita'iga fa'afuase'i. Afai e te faʻaaogaina Netramesh faʻapitoa mo le aoina mai o vaʻa, ona i totonu o se siosiomaga gaosiga e mafai ona e faʻasaoina punaoa ma mafai ai le faʻaogaina o auala e faʻaaoga ai fesuiaiga NETRA_INBOUND_PROBABILITY и NETRA_OUTBOUND_PROBABILITY (mai le 0 i le 1). Ole tau fa'aletonu ole 1 (ua fa'alavelave uma feoaiga).

A maeʻa faʻalavelave faʻafuaseʻi, e talia e netra sidecar le fesoʻotaʻiga fou ma faʻaoga SO_ORIGINAL_DST filifiliga socket e maua ai le mea muamua. Ona tatala lea e Netra se feso'ota'iga fou i le tuatusi IP muamua ma fa'atuina le TCP feso'ota'iga lua i le va o itu, fa'alogo i feoaiga uma e ui atu. Afai o le taulaga e faʻamatalaina o le HTTP, e taumafai Netra e faʻavasega ma suʻe. Afai e le manuia le fa'avasegaina o le HTTP, e toe fo'i Netra i le TCP ma fa'aalia manino le paita.

Fausia se kalafi fa'alagolago

A maeʻa ona maua le tele o faʻamatalaga suʻesuʻe i Jaeger, ou te manaʻo e maua se kalafi atoa o fegalegaleaiga i totonu o le polokalama. Ae afai e fai lava si uta o lau masini ma faʻaputuina le faitau piliona o suʻega i le aso, o le faʻaputuina o ia mea e le o se galuega faigofie. E i ai se auala aloaia e fai ai lenei mea: aloiafi-faalagolago. Ae ui i lea, e alu itula e fausia ai se kalafi atoa ma o le a faʻamalosia oe e sii maia le faʻamaumauga atoa mai Jaeger mo le XNUMX itula talu ai.

Afai o loʻo e faʻaogaina le Elasticsearch e teu ai vaʻa suʻega, e mafai ona e faʻaogaina se aoga faigofie Golang, lea o le a fausia ai le kalafi tutusa i minute e faʻaaoga ai foliga ma gafatia o Elasticsearch.

Netramesh - fofo mama auaunaga mata

Auala e faʻaaoga ai Netramesh

Netra e mafai ona faigofie ona faʻaopoopo i soʻo se auaunaga o loʻo faʻatautaia soʻo se tufuga. E mafai ona e vaʻai i se faʻataʻitaʻiga iinei.

I le taimi nei, e le mafai e Netra ona faʻaaogaina otometi le faʻaogaina o taʻavale i auaunaga, ae o loʻo i ai fuafuaga mo le faʻatinoga.

Le lumanaʻi o Netramesh

sini autu Netramesh o le ausia lea o tau maualalo o punaoa ma le maualuga o le faʻatinoga, tuʻuina atu gafatia faʻavae mo le mataʻituina ma le pulea o fesoʻotaʻiga vaʻavaʻa.

I le lumanaʻi, Netramesh o le a lagolagoina isi faʻasalalauga faʻapipiʻi e ese mai HTTP. L7 auala o le a maua i se taimi lata mai.

Fa'aaoga le Netramesh pe a e feagai ma fa'afitauli fa'apena ma tusi mai ia i matou i fesili ma fautuaga.

puna: www.habr.com

Faaopoopo i ai se faamatalaga