Netramesh - tharollo ea mesh ea tšebeletso e bobebe

Ha re tloha ts'ebetsong ea monolithic ho ea mohahong oa microservices, re tobana le mathata a macha.

Ts'ebelisong ea monolithic, hangata ho bonolo ho tseba hore na phoso e etsahetse ho karolo efe ea sistimi. Ho ka etsahala hore ebe bothata bo ho khoutu ea monolith ka boeona, kapa ho database. Empa ha re qala ho batla bothata mohahong oa microservice, ntho e 'ngoe le e' ngoe ha e sa bonahala. Re hloka ho fumana tsela eohle eo kopo e e nkileng ho tloha qalong ho fihlela qetellong ebe re e khetha ho tsoa ho makholo a microservices. Ho feta moo, ba bangata ba bona ba boetse ba na le lisebelisoa tsa bona tsa polokelo, tse ka bakang liphoso tse utloahalang, hammoho le mathata a ts'ebetso le mamello ea liphoso.

Netramesh - tharollo ea mesh ea tšebeletso e bobebe

Ke khale ke batla sesebelisoa se ka thusang ho sebetsana le mathata a joalo (ke ngotse ka sena ho Habré: 1, 2), empa qetellong ke ile ka iketsetsa tharollo ea ka ea mohloli o bulehileng. Sehloohong sena ke bua ka melemo ea mokhoa oa ts'ebeletso ea mesh mme ke arolelana sesebelisoa se secha sa ts'ebetsong ea eona.

Ts'ebetso e ajoang ke tharollo e tloaelehileng bothateng ba ho fumana liphoso lits'ebetsong tse ajoang. Empa ho thoe'ng haeba mokhoa ona oa ho bokella tlhahisoleseding mabapi le litšebelisano tsa marang-rang ha o e-s'o sebelisoe tsamaisong, kapa, ho hobe le ho feta, karolo ea tsamaiso e se e ntse e sebetsa hantle, empa karolo e 'ngoe ha e joalo, kaha ha e e-s'o kenyelletsoe litšebeletsong tsa khale. ? Ho fumana hore na sesosa sa bothata ke sefe, ho hlokahala hore ho be le setšoantšo se feletseng sa se etsahalang tsamaisong. Ho bohlokoa haholo ho utloisisa hore na ke li-microservices life tse amehang litseleng tsa bohlokoa tsa khoebo.

Mona mokhoa oa mesh oa litšebeletso o ka re thusa, o tla sebetsana le mechine eohle ea ho bokella tlhahisoleseding ea marang-rang ka tekanyo e tlaase ho feta litšebeletso tseo ka botsona li sebetsang ka tsona. Mokhoa ona o re lumella ho thibela sephethephethe sohle le ho se sekaseka ka fofa. Ho feta moo, lits'ebetso ha lia tlameha ho tseba letho ka eona.

Mokhoa oa litšebeletso tsa mesh

Mohopolo o ka sehloohong oa mokhoa oa ts'ebeletso ea mesh ke ho kenyelletsa karolo e 'ngoe ea litšebeletso holim'a marang-rang, e tla re lumella ho etsa ntho leha e le efe ka tšebelisano-'moho le litšebeletso. Bongata ba ts'ebetsong bo sebetsa ka tsela e latelang: sejana se eketsehileng sa koloi se ka thōko se nang le proxy e hlakileng se eketsoa ho microservice e 'ngoe le e' ngoe, eo ho eona ho fetisoang sephethephethe sohle se kenang le se tsoang. Hona ke hona moo re ka etsang ho leka-lekanya bareki, ho sebelisa maano a tšireletso, ho beha lithibelo palo ea likopo le ho bokella lintlha tsa bohlokoa mabapi le tšebelisano ea lits'ebeletso tlhahisong.

Netramesh - tharollo ea mesh ea tšebeletso e bobebe

Tharollo

Ho na le mekhoa e mengata ea ho sebelisa mokhoa ona: Istio и linkard2. Ba fana ka likarolo tse ngata ka ntle ho lebokose. Empa ka nako e ts'oanang, ho na le ts'ebeliso e kholo ea lisebelisoa. Ho feta moo, ha sehlopha se seholo seo tsamaiso e joalo e sebetsang ho sona, ho tla hlokahala lisebelisoa tse ngata ho boloka lisebelisoa tse ncha. Ho Avito, re sebetsa lihlopha tsa kubernetes tse nang le litšebeletso tse likete ('me palo ea tsona e ntse e hola ka potlako). Ts'ebetsong ea eona ea hajoale, Istio e sebelisa ~ 300Mb ea RAM ka mohlala oa ts'ebeletso. Ka lebaka la menyetla e mengata, ho leka-lekanya pepeneneng ho boetse ho ama nako eohle ea karabelo ea litšebeletso (ho fihla ho 10ms).

Ka lebaka leo, re ile ra sheba hantle hore na ke bokhoni bofe boo re bo hlokang hona joale, 'me ra etsa qeto ea hore lebaka le ka sehloohong le entseng hore re qale ho kenya ts'ebetsong litharollo tse joalo e ne e le bokhoni ba ho bokella tlhahisoleseding ea ho latella tsamaiso eohle ka mokhoa o hlakileng. Re ne re boetse re batla ho ba le taolo holim'a tšebelisano ea lits'ebeletso le ho etsa maqheka a fapaneng ka lihlooho tse fetisetsoang lipakeng tsa lits'ebeletso.

Ka lebaka leo, re fihletse qeto ea rona:  Netramesh.

Netramesh

Netramesh ke tharollo e bobebe ea lits'ebeletso e nang le bokhoni ba ho hola ka ho sa feleng, ho sa tsotelehe palo ea lits'ebeletso tsamaisong.

Lipakane tse ka sehloohong tsa tharollo e ncha e ne e le lisebelisoa tse fokolang tsa lisebelisoa le ts'ebetso e phahameng. Har'a likarolo tsa mantlha, hang-hang re ne re batla ho khona ho romella marang-rang ka mokhoa o hlakileng ho sistimi ea rona ea Jaeger.

Kajeno, litharollo tse ngata tsa maru li sebelisoa Golang. 'Me, ho hlakile, ho na le mabaka a sena. Ho ngola lits'ebetso tsa marang-rang ho Golang tse sebetsang ka mokhoa o ts'oanang le I/O le ho lekanya li-cores ka moo ho hlokahalang ho bonolo ebile ho bonolo. Hape, se bohlokoa haholo, ts'ebetso e lekane ho rarolla bothata bona. Ke kahoo le rona re khethileng Golang.

Tlhahiso

Re tsepamisitse matsapa a rona ho fihlelleng tlhahiso e phahameng. Bakeng sa tharollo e behiloeng haufi le mohlala o mong le o mong oa ts'ebeletso, ho hlokahala tšebeliso e nyane ea nako ea RAM le CPU. 'Me, ehlile, tieho ea karabelo le eona e lokela ho ba nyane.

Ha re boneng hore na re fumane liphetho life.

RAM

Netramesh e ja ~ 10Mb ntle le sephethephethe le 50Mb boholo ka mojaro o fihlang ho 10000 RPS ka mohlala.

Moemeli oa Istio o lula a sebelisa ~ 300Mb ka har'a lihlopha tsa rona ka makhetlo a likete. Sena ha se lumelle hore e fetisetsoe sehlopheng sohle.

Netramesh - tharollo ea mesh ea tšebeletso e bobebe

Netramesh - tharollo ea mesh ea tšebeletso e bobebe

Ka Netramesh re fumane phokotso ea ~ 10x ea tšebeliso ea mohopolo.

CPU

Tšebeliso ea CPU e batla e lekana tlas'a mojaro. E ipapisitse le palo ea likopo ka yuniti ea nako ho koloi e ka thoko. Boleng ba likopo tse 3000 motsotsoana ka sehlohlolong:

Netramesh - tharollo ea mesh ea tšebeletso e bobebe

Netramesh - tharollo ea mesh ea tšebeletso e bobebe

Ho na le ntlha e 'ngoe ea bohlokoa: Netramesh - tharollo ntle le sefofane sa taolo le ntle le mojaro ha e je nako ea CPU. Ka Istio, li-sidecars li lula li ntlafatsa lits'ebeletso tsa ho qetela. Ka lebaka leo, re ka bona setšoantšo sena ntle le mojaro:

Netramesh - tharollo ea mesh ea tšebeletso e bobebe

Re sebelisa HTTP/1 bakeng sa puisano lipakeng tsa lits'ebeletso. Keketseho ea nako ea karabelo bakeng sa Istio ha e le moemeli ka moemeli e ne e fihla ho 5-10ms, e leng ntho e ngata haholo bakeng sa lits'ebeletso tse ikemiselitseng ho arabela ka millisecond. Ka Netramesh nako ena e theohile ho 0.5-2ms.

Ho se sebetse

Chelete e nyane ea lisebelisoa tse sebelisoang ke moemeli ka mong e etsa hore ho khonehe ho e beha haufi le ts'ebeletso ka 'ngoe. Netramesh e entsoe ka boomo ntle le karolo ea sefofane sa taolo ho boloka koloi e 'ngoe le e 'ngoe e le bobebe. Hangata litharollong tsa mesh ea lits'ebeletso, sefofane sa taolo se fana ka tlhaiso-leseling ea ts'ebeletso ho koloi e 'ngoe le e 'ngoe. Hammoho le eona ho na le tlhahisoleseling mabapi le linako tsa nako le litlhophiso tsa ho leka-lekanya. Sena sohle se u lumella ho etsa lintho tse ngata tse molemo, empa, ka bomalimabe, li bloats li-sidecars ka boholo.

Ho sibolloa ha litšebeletso

Netramesh - tharollo ea mesh ea tšebeletso e bobebe

Netramesh ha e kenye mekhoa e meng ea ho sibolla litšebeletso. Sephethephethe sohle se entsoe ka mokhoa o hlakileng ka netra sidecar.

Netramesh e ts'ehetsa protocol ea ts'ebeliso ea HTTP/1. Ho e hlalosa, ho sebelisoa lethathamo le lokisehang la likou. Ka tloaelo, tsamaiso e na le likou tse 'maloa tseo puisano ea HTTP e hlahang ka eona. Mohlala, re sebelisa 80, 8890, 8080 bakeng sa tšebelisano lipakeng tsa lits'ebeletso le likopo tsa kantle. Boemong bona, li ka hlophisoa ho sebelisoa phetoho ea tikoloho. NETRA_HTTP_PORTS.

Haeba u sebelisa Kubernetes e le 'mino oa liletsa le mochini oa eona oa Setsi sa Ts'ebeletso bakeng sa puisano ea intra-cluster lipakeng tsa lits'ebeletso, mochini o ntse o ts'oana hantle. Taba ea mantlha, microservice e fumana aterese ea IP ea ts'ebeletso e sebelisa kube-dns mme e bula khokahano e ncha ho eona. Khokahano ena e thehiloe pele le netra-sidecar ea lehae mme lipakete tsohle tsa TCP li qala ho fihla netra. Ka mor'a moo, netra-sidecar e theha khokahano le sebaka seo e eang ho sona. NAT ho pod IP ho node e lula e tšoana hantle le ntle le netra.

Phatlalatso e ajoang le phetiso ea litaba

Netramesh e fana ka ts'ebetso e hlokahalang ho romella marang-rang mabapi le litšebelisano tsa HTTP. Netra-sidecar e fetisa protocol ea HTTP, e lekanya tieho ea kopo, 'me e ntša lintlha tse hlokahalang ho tsoa lihloohong tsa HTTP. Qetellong, re fumana mesaletsa eohle tsamaisong e le 'ngoe ea Jaeger. Bakeng sa tlhophiso e hlakileng, o ka sebelisa le mefuta e fapaneng ea tikoloho e fanoeng ke laeborari ea semmuso jaeger go laebrari.

Netramesh - tharollo ea mesh ea tšebeletso e bobebe

Netramesh - tharollo ea mesh ea tšebeletso e bobebe

Empa ho na le bothata. Ho fihlela lits'ebeletso li hlahisa le ho romella sehlooho se ikhethileng sa uber, re ke ke ra bona likarolo tse hokahaneng tsa ho latella sistimi. 'Me sena ke seo re se hlokang ho potlakela ho fumana sesosa sa mathata. Mona hape Netramesh e na le tharollo. Li-proxies li bala lihlooho tsa HTTP 'me, haeba li se na uber trace id, li hlahise e le 'ngoe. Netramesh e boetse e boloka tlhahisoleseling mabapi le likopo tse kenang le tse tsoang ka koloing e ka thoko 'me e li bapise ka ho li ruisa ka lihlooho tse hlokahalang tse tsoang. Seo u hlokang ho se etsa feela lits'ebeletso ke ho romella hlooho e le 'ngoe feela X-Request-Id, e ka hlophisoang ho sebelisoa phetoho ea tikoloho NETRA_HTTP_REQUEST_ID_HEADER_NAME. Ho laola boholo ba moelelo ho Netramesh, o ka beha mefuta e latelang ea tikoloho: NETRA_TRACING_CONTEXT_EXPIRATION_MILLISECONDS (nako eo moelelo oa taba o tla bolokoa ka eona) le NETRA_TRACING_CONTEXT_CLEANUP_INTERVAL (khafetsa ea tlhoekiso ea litaba).

Hape hoa khoneha ho kopanya litsela tse ngata tsamaisong ea hau ka ho li tšoaea ka lets'oao le khethehileng la lenaneo. Netra e u lumella ho kenya HTTP_HEADER_TAG_MAP ho fetola lihlooho tsa HTTP hore e be li-tag tse tsamaellanang tsa span. Sena se ka ba molemo haholo bakeng sa tlhahlobo. Ka mor'a ho feta teko ea ts'ebetso, u ka bona hore na ke karolo efe ea tsamaiso e anngoeng ke ho sefa ka konopo ea nako e lumellanang.

Ho khetholla Mohloli oa Kopo

Ho fumana hore na kopo e tsoa hokae, u ka sebelisa ts'ebetso ea ho eketsa hlooho ka mohloli. Ho sebedisa phetoho ya tikoloho NETRA_HTTP_X_SOURCE_HEADER_NAME O ka hlakisa lebitso la hlooho le tla kenngoa ka bo eona. Ka ho sebelisa NETRA_HTTP_X_SOURCE_VALUE o ka beha boleng boo hlooho ea X-Mohloli o tla behoa ho eona bakeng sa likopo tsohle tse tsoang.

Sena se lumella ho ajoa ha sehlooho sena se molemo hore se ajoe ka mokhoa o ts'oanang ho pholletsa le marang-rang. Ebe o ka e sebelisa lits'ebeletso mme oa e eketsa ho logs le metrics.

Tsela ea sephethephethe le basebetsi ba ka hare ba Netramesh

Netramesh e na le likarolo tse peli tse kholo. Ea pele, netra-init, e beha melao ea marang-rang ho thibela sephethephethe. Oa sebelisa iptables e tsamaisa melao ho thibela sephethephethe kaofela kapa karolo ea sephethephethe se ka thoko, e leng karolo ea bobeli ea mantlha ea Netramesh. O ka hlophisa hore na ke likou life tse hlokang ho haneloa bakeng sa linako tsa TCP tse kenang le tse tsoang: INBOUND_INTERCEPT_PORTS, OUTBOUND_INTERCEPT_PORTS.

Sesebelisoa se boetse se na le tšobotsi e khahlisang - probabilistic routing. Haeba u sebelisa Netramesh feela bakeng sa ho bokella marang-rang, joale sebakeng sa tlhahiso u ka boloka lisebelisoa le ho nolofalletsa mokhoa oa ho sebelisa mekhoa e fapaneng. NETRA_INBOUND_PROBABILITY и NETRA_OUTBOUND_PROBABILITY (ho tloha ho 0 ho isa ho 1). Boleng ba kamehla ke 1 (sephethephethe kaofela se amohetsoe).

Kamora ho kenella ka katleho, netra sidecar e amohela khokahano e ncha le ts'ebeliso SO_ORIGINAL_DST khetho ea socket ho fumana moo u eang teng. Netra joale e bula khokahano e ncha ho aterese ea pele ea IP mme e theha puisano ea litsela tse peli tsa TCP pakeng tsa lihlopha, ho mamela sephethephethe sohle se fetang. Haeba boema-kepe bo hlalosoa e le HTTP, Netra e leka ho e bala le ho e latela. Haeba HTTP parsing e hloleha, Netra e khutlela ho TCP mme e fana ka li-byte pepeneneng.

Ho aha kerafo ea ho itšetleha

Ka mor'a ho fumana boitsebiso bo bongata ba ho latela mokhoa oa Jaeger, ke batla ho fumana setšoantšo se feletseng sa litšebelisano tsamaisong. Empa haeba sisteme ea hau e na le thepa e ngata 'me libilione tsa sebaka sa ho latela li bokellana ka letsatsi, ho li kopanya ha se mosebetsi o bonolo. Ho na le mokhoa oa molao oa ho etsa sena: ho itshetleha ka tlhase. Leha ho le joalo, ho tla nka lihora ho etsa kerafo e felletseng mme e tla u qobella ho khoasolla dataset kaofela ho tsoa ho Jaeger bakeng sa lihora tse XNUMX tse fetileng.

Haeba u sebelisa Elasticsearch ho boloka spans, u ka e sebelisa sesebelisoa se bonolo sa Golang, e tla haha ​​​​graph e tšoanang ka metsotso e sebelisang likarolo le bokhoni ba Elasticsearch.

Netramesh - tharollo ea mesh ea tšebeletso e bobebe

Mokhoa oa ho sebelisa Netramesh

Netra e ka eketsoa habonolo ts'ebeletso efe kapa efe e tsamaisang 'mino oa liletsa. O ka bona mohlala mona.

Hajoale, Netra ha e na bokhoni ba ho kenya tšebetsong li-sidecars ho lits'ebeletso, empa ho na le merero ea ts'ebetsong.

Bokamoso ba Netramesh

sepheo se seholo Netramesh ke ho fihlela litšenyehelo tse fokolang tsa lisebelisoa le ts'ebetso e phahameng, ho fana ka bokhoni ba motheo bakeng sa ho bonoa le ho laola puisano pakeng tsa litšebeletso.

Nakong e tlang, Netramesh e tla tšehetsa liprothokholo tse ling tsa lera la kopo ntle le HTTP. L7 routing e tla fumaneha haufinyane.

Sebelisa Netramesh haeba u kopana le mathata a tšoanang 'me u re ngolle ka lipotso le litlhahiso.

Source: www.habr.com

Eketsa ka tlhaloso