Netramesh - vahaolana mesh serivisy maivana

Rehefa miala amin'ny fampiharana monolitika mankany amin'ny maritrano microservices isika dia miatrika fanamby vaovao.

Amin'ny fampiharana monolithic, matetika dia mora ny mamaritra hoe iza amin'ny rafitra misy ny hadisoana. Azo inoana fa ny olana dia ao amin'ny code of the monolith mihitsy, na ao amin'ny database. Saingy rehefa manomboka mitady olana amin'ny maritrano microservice isika dia tsy miharihary intsony ny zava-drehetra. Mila mitady ny lalana manontolo nalain'ny fangatahana hatramin'ny voalohany ka hatramin'ny farany isika ary misafidy izany amin'ny microservices an-jatony. Ankoatra izany, maro amin'izy ireo ihany koa no manana trano fitahirizana azy manokana, izay mety hiteraka hadisoana lojika, ary koa olana amin'ny fandeferana sy ny fandeferana.

Netramesh - vahaolana mesh serivisy maivana

Efa ela aho no nitady fitaovana hanampy amin'ny fiatrehana ny olana toy izany (Nanoratra momba an'io tao amin'ny HabrΓ© aho: 1, 2), fa tamin'ny farany dia nanao vahaolana open source aho. Ato amin'ity lahatsoratra ity dia miresaka momba ny tombontsoa azo avy amin'ny serivisy mesh aho ary mizara fitaovana vaovao amin'ny fampiharana azy.

Ny tracing zaraina dia vahaolana mahazatra amin'ny olana amin'ny fitadiavana lesoka amin'ny rafitra mizara. Ahoana anefa raha mbola tsy nampiharina tao amin'ny rafitra io fomba fanangonana vaovao momba ny fifandraisana amin'ny tambajotra io, na, ratsy kokoa, amin'ny ampahany amin'ny rafitra dia efa mandeha tsara izy io, fa amin'ny ampahany dia tsy mandeha, satria tsy nampidirina tamin'ny serivisy taloha. ? Mba hamaritana ny tena fototry ny olana dia ilaina ny manana sary feno momba ny zava-mitranga ao amin'ny rafitra. Zava-dehibe indrindra ny mahatakatra hoe iza amin'ireo microservices no tafiditra amin'ny lalana manan-danja ara-barotra.

Eto dia afaka manampy antsika ny fomba fiasa amin'ny serivisy, izay hiatrika ny milina rehetra amin'ny fanangonana vaovao momba ny tambajotra amin'ny ambaratonga ambany noho ny fiasan'ny serivisy. Ity fomba fiasa ity dia ahafahantsika manakana ny fifamoivoizana rehetra ary mamakafaka izany amin'ny sidina. Ankoatra izany, ny fampiharana dia tsy mila mahafantatra na inona na inona momba izany.

Service mesh fomba

Ny hevi-dehibe amin'ny fomba fiasa mesh serivisy dia ny manampy sosona fotodrafitrasa hafa amin'ny tambajotra, izay ahafahantsika manao zavatra amin'ny fifandraisan'ny serivisy. Ny ankamaroan'ny fampiharana dia miasa toy izao manaraka izao: kaontenera sidecar fanampiny misy proxy mangarahara dia ampiana amin'ny microservice tsirairay, izay mandalo ny fifamoivoizana miditra sy mivoaka amin'ny serivisy. Ary io no toerana ahafahantsika manao ny fifandanjana amin'ny mpanjifa, mampihatra ny politikam-piarovana, mametraka fameperana ny isan'ny fangatahana ary manangona fampahalalana manan-danja momba ny fifandraisan'ny serivisy amin'ny famokarana.

Netramesh - vahaolana mesh serivisy maivana

vahaolana

Efa misy fampiharana maromaro amin'ity fomba fiasa ity: Istio ΠΈ linkerd2. Manome endri-javatra maro ivelan'ny boaty izy ireo. Saingy miaraka amin'izay koa, misy ny vola be amin'ny loharano. Ambonin'izany, arakaraky ny haben'ny cluster izay iasan'ny rafitra toy izany no ilaina bebe kokoa amin'ny fitazonana ny fotodrafitrasa vaovao. Ao amin'ny Avito, miasa ny cluster kubernetes izay misy ohatra serivisy an'arivony (ary mitombo haingana ny isan'izy ireo). Amin'ny fampiharana azy ankehitriny, Istio dia mandany ~ 300Mb RAM isaky ny serivisy. Noho ny habetsahan'ny fahafaha-manao, ny fifandanjana mangarahara dia misy fiantraikany amin'ny fotoana famaliana ny serivisy (hatramin'ny 10ms).

Vokatr'izany, nijery tsara ny fahaiza-manao ilainay izahay amin'izao fotoana izao, ary nanapa-kevitra izahay fa ny tena antony nanombohanay nametraka vahaolana toy izany dia ny fahafahana manangona vaovao momba ny fanaraha-maso avy amin'ny rafitra manontolo amin'ny mangarahara. Te-hifehy ny fifandraisan'ny serivisy ihany koa izahay ary hanao fanodinkodinana isan-karazany amin'ny lohapejy afindra eo amin'ny serivisy.

Vokatr'izany dia tonga tamin'ny fanapahan-kevitray izahay:β€Š Netramesh.

Netramesh

Netramesh dia vahaolana mesh serivisy maivana miaraka amin'ny fahafahana mizana tsy manam-petra, na inona na inona isan'ny serivisy ao amin'ny rafitra.

Ny tena tanjona amin'ny vahaolana vaovao dia ambany ny harena ambony sy ny fahombiazana ambony. Anisan'ireo endri-javatra lehibe indrindra, naniry avy hatrany izahay ny handefa mangarahara amin'ny rafitra Jaeger.

Ankehitriny, ny ankamaroan'ny vahaolana rahona dia ampiharina ao Golang. Ary mazava ho azy fa misy antony mahatonga izany. Ny fanoratana fampiharana amin'ny tambajotra amin'ny Golang izay miasa tsy mifanaraka amin'ny I/O sy ny mari-pandrefesana amin'ny cores raha ilaina dia mety ary tena tsotra. Ary, ny tena zava-dehibe koa, ny fampisehoana dia ampy hamahana ity olana ity. Izany no antony nisafidiananay an'i Golang.

vokatra

Nampifantoka ny ezakay izahay tamin'ny fahazoana vokatra ambony indrindra. Ho an'ny vahaolana apetraka eo akaikin'ny serivisy tsirairay dia ilaina ny fanjifana kely ny RAM sy ny fotoana CPU. Ary, mazava ho azy, tokony ho kely ihany koa ny fahataran'ny valiny.

Andeha hojerentsika izay vokatra azo.

ram

Ny Netramesh dia mandany ~ 10Mb tsy misy fifamoivoizana ary 50Mb ambony indrindra miaraka amin'ny entana hatramin'ny 10000 RPS isaky ny tranga.

Istio envoy proxy dia mandany ~ 300Mb foana ao amin'ny cluster misy antsika miaraka amin'ny tranga an'arivony. Izany dia tsy mamela azy hihena amin'ny cluster manontolo.

Netramesh - vahaolana mesh serivisy maivana

Netramesh - vahaolana mesh serivisy maivana

Miaraka amin'ny Netramesh dia nahazo ~10x fampihenana ny fanjifana fahatsiarovana.

UnitΓ© centrale

Ny fampiasana CPU dia mitovy amin'ny enta-mavesatra. Miankina amin'ny isan'ny fangatahana isaky ny adiny iray amin'ny sidecar izany. Sanda amin'ny fangatahana 3000 isan-tsegondra amin'ny faratampony:

Netramesh - vahaolana mesh serivisy maivana

Netramesh - vahaolana mesh serivisy maivana

Misy teboka iray manan-danja kokoa: Netramesh - vahaolana tsy misy fiaramanidina fanaraha-maso ary tsy misy entana dia tsy mandany fotoana CPU. Miaraka amin'i Istio, ny sidecars dia manavao foana ny teboka fiafaran'ny serivisy. Vokatr'izany dia afaka mahita ity sary tsy misy entana ity isika:

Netramesh - vahaolana mesh serivisy maivana

Mampiasa HTTP/1 izahay mba hifandraisana eo amin'ny serivisy. Ny fitomboan'ny fotoana famaliana ho an'i Istio rehefa manao proxy amin'ny alΓ lan'ny iraka dia hatramin'ny 5-10ms, izay be dia be ho an'ny serivisy vonona hamaly ao anatin'ny milisegondra. Miaraka amin'ny Netramesh tamin'ity indray mitoraka ity dia nihena ho 0.5-2ms.

Scalability

Ny habetsaky ny loharanon-karena lanin'ny proxy tsirairay dia ahafahana mametraka azy eo akaikin'ny serivisy tsirairay. Netramesh dia noforonina tsy misy singa fiaramanidina fanaraha-maso mba hitazonana fotsiny ny lanja tsirairay. Matetika amin'ny vahaolana amin'ny serivisy mesh, ny fiaramanidina fanaraha-maso dia mizara fampahalalana momba ny fitadiavana serivisy ho an'ny sidecar tsirairay. Miaraka amin'izany dia misy fampahalalana momba ny fotoana fiatoana sy ny fandanjana. Izany rehetra izany dia ahafahanao manao zavatra mahasoa maro, saingy, indrisy, bloats sidecars ny habeny.

Fahitana serivisy

Netramesh - vahaolana mesh serivisy maivana

Netramesh dia tsy manampy mekanika fanampiny amin'ny fitadiavana serivisy. Ny fifamoivoizana rehetra dia alefa mangarahara amin'ny alΓ lan'ny sidecar netra.

Ny Netramesh dia manohana ny protocol fampiharana HTTP/1. Mba hamaritana azy dia misy lisitry ny seranan-tsambo azo fehezina. Amin'ny ankapobeny, ny rafitra dia manana seranana maromaro izay ahafahan'ny fifandraisana HTTP. Ohatra, mampiasa 80, 8890, 8080 izahay ho an'ny fifandraisana eo amin'ny serivisy sy ny fangatahana ivelany NETRA_HTTP_PORTS.

Raha mampiasa Kubernetes ianao ho mpandrindra sy ny rafitra sampan-draharahan'ny Serivisy ho an'ny fifandraisana an-tsokosoko eo amin'ny serivisy, dia tsy miova ny mekanika. Voalohany, ny microservice dia mahazo adiresy IP serivisy mampiasa kube-dns ary manokatra fifandraisana vaovao aminy. Ity fifandraisana ity dia napetraka voalohany amin'ny netra-sidecar eo an-toerana ary ny fonosana TCP rehetra dia tonga any amin'ny netra. Manaraka, ny netra-sidecar dia mametraka fifandraisana amin'ny toerana voalohany. Ny NAT amin'ny pod IP amin'ny node dia mitovy tanteraka amin'ny tsy misy netra.

Fizarana tracing sy contexte forwarding

Ny Netramesh dia manome ny fampiasa ilaina handefasana tsipika momba ny fifandraisana HTTP. Ny Netra-sidecar dia mamadika ny protocol HTTP, mandrefy ny fahatarana amin'ny fangatahana, ary maka ny fampahalalana ilaina amin'ny lohatenin'ny HTTP. Amin'ny farany, mahazo ny dian-tongotra rehetra ao anaty rafitra Jaeger tokana isika. Ho an'ny fanamafisam-peo tsara dia azonao atao koa ny mampiasa ny fari-piainan'ny tontolo iainana omen'ny tranomboky ofisialy jaeger go library.

Netramesh - vahaolana mesh serivisy maivana

Netramesh - vahaolana mesh serivisy maivana

Saingy misy olana. Mandra-pamoaka sy mandefa lohatenin'ny uber manokana ny serivisy, dia tsy ho hitantsika ao amin'ny rafitra ny elanelana fanaraha-maso mifandray. Ary izany no ilaintsika mba hahitana haingana ny anton'ny olana. Eto indray dia manana vahaolana i Netramesh. Mamaky lohatenin'ny HTTP ny proxy ary, raha tsy misy ny id uber trace, dia mamorona iray. Ny Netramesh koa dia mitahiry vaovao momba ny fangatahana miditra sy mivoaka ao anaty sidecar ary mampifanaraka azy ireo amin'ny alΓ lan'ny fampitomboana azy ireo amin'ny lohatenin'ny fangatahana mivoaka ilaina. Ny hany tokony hataonao amin'ny serivisy dia ny mandefa lohapejy iray monja X-Request-Id, izay azo amboarina amin'ny alΓ lan'ny fari-piainan'ny tontolo iainana NETRA_HTTP_REQUEST_ID_HEADER_NAME. Mba hifehezana ny haben'ny contexte ao amin'ny Netramesh dia azonao atao ny mametraka ireto fari-piainana manaraka ireto: NETRA_TRACING_CONTEXT_EXPIRATION_MILLISECONDS (ny fotoana hitehirizana ny contexte) ary NETRA_TRACING_CONTEXT_CLEANUP_INTERVAL (fahatekan'ny fanadiovana ny contexte).

Azo atao ihany koa ny manambatra lalana maro ao amin'ny rafitrao amin'ny alalan'ny fanamarihana azy ireo amin'ny mari-pamantarana fivoriana manokana. Netra dia mamela anao hametraka HTTP_HEADER_TAG_MAP hanova ny lohatenin'ny HTTP ho marika mifanandrify amin'ny halaviran-dalana. Ity dia mety ilaina indrindra amin'ny fitsapana. Rehefa avy nandalo ny fitsapana miasa ianao dia afaka mahita izay ampahany amin'ny rafitra no voakasika tamin'ny sivana tamin'ny fanalahidin'ny session mifandraika amin'izany.

Famaritana ny loharanon'ny fangatahana

Mba hamaritana hoe avy aiza ny fangatahana dia azonao atao ny mampiasa ny fampiasa amin'ny fampidirana ho azy lohapejy miaraka amin'ny loharano. Mampiasa fari-piainana manodidina NETRA_HTTP_X_SOURCE_HEADER_NAME Azonao atao ny mamaritra anarana lohateny izay hapetraka ho azy. Amin'ny fampiasana NETRA_HTTP_X_SOURCE_VALUE azonao atao ny mametraka ny sandan'ny lohatenin'ny X-Source ho an'ny fangatahana mivoaka rehetra.

Izany dia ahafahan'ny fizarana an'ity lohapejy mahasoa ity ho zaraina mitovy manerana ny tambajotra. Avy eo dia azonao ampiasaina amin'ny serivisy izany ary ampio amin'ny logs sy metrika.

Fifamoivoizana fifamoivoizana sy Netramesh anatiny

Ny Netramesh dia misy singa roa lehibe. Ny voalohany, netra-init, dia mametraka fitsipika momba ny tambajotra hanakanana ny fifamoivoizana. Mampiasa iptables redirect fitsipika hanakana ny rehetra na ny ampahany amin'ny fifamoivoizana amin'ny sidecar, izay singa lehibe faharoa amin'ny Netramesh. Azonao atao ny manitsy izay seranan-tsambo mila sakana amin'ny fivoriana TCP miditra sy mivoaka: INBOUND_INTERCEPT_PORTS, OUTBOUND_INTERCEPT_PORTS.

Ny fitaovana dia manana endri-javatra mahaliana ihany koa - ny lalana mety. Raha mampiasa Netramesh fotsiny ianao amin'ny fanangonana ny halaviran-dalana, dia ao anatin'ny tontolo famokarana dia afaka mitahiry loharano ianao ary mamela ny lalana mety amin'ny fampiasana variables. NETRA_INBOUND_PROBABILITY ΠΈ NETRA_OUTBOUND_PROBABILITY (avy amin'ny 0 ka hatramin'ny 1). Ny sandan'ny default dia 1 (voasakana ny fifamoivoizana rehetra).

Taorian'ny interception nahomby, netra sidecar dia manaiky ny fifandraisana sy ny fampiasana vaovao SO_ORIGINAL_DST safidy faladia hahazoana ny toerana voalohany. Manokatra fifandraisana vaovao amin'ny adiresy IP tany am-boalohany i Netra avy eo ary mametraka fifandraisana TCP roa tonta eo amin'ireo antoko, mihaino ny fifamoivoizana rehetra mandalo. Raha faritana ho HTTP ny seranan-tsambo, Netra dia manandrana manara-maso sy manara-maso azy. Raha toa ka tsy mahomby ny fanaparitahana HTTP, dia miverina amin'ny TCP i Netra ary mamadika mangarahara ireo bytes.

Manangana tabilao fiankinan-doha

Taorian'ny nahazoako fampahalalana be dia be ao amin'ny Jaeger, te-hahazo grafika feno momba ny fifandraisana ao amin'ny rafitra aho. Saingy raha toa ka feno entana ny rafitrao ary miangona isan'andro ny halaviran-dalana an'arivony tapitrisa, dia tsy mora ny manambatra azy ireo. Misy fomba ofisialy hanaovana izany: fiankinan-doha. Na izany aza, haharitra ora maro ny fananganana tabilao feno ary hanery anao hisintona ny angona manontolo avy amin'ny Jaeger nandritra ny 24 ora lasa.

Raha mampiasa Elasticsearch ianao hitahiry ny halaviran-dalana dia azonao ampiasaina fampiasa Golang tsotra, izay hanangana tabilao mitovy amin'ny minitra amin'ny fampiasana ny endri-javatra sy ny fahaiza-manaon'ny Elasticsearch.

Netramesh - vahaolana mesh serivisy maivana

Ahoana ny fampiasana Netramesh

Netra dia azo ampiana mora foana amin'ny serivisy rehetra mandeha amin'ny orkestra. Afaka mahita ohatra ianao eto.

Amin'izao fotoana izao, ny Netra dia tsy manana fahafahana hampihatra ho azy ny sidecars amin'ny serivisy, fa misy drafitra ho an'ny fampiharana.

Ny hoavin'i Netramesh

Ny tanjona fototra Netramesh dia ny hahatratrarana ny sandan'ny loharanon-karena faran'izay kely indrindra sy ny fahombiazana ambony, manome ny fahaiza-manao fototra amin'ny fanaraha-maso sy ny fanaraha-maso ny fifandraisana eo amin'ny samy serivisy.

Amin'ny ho avy, ny Netramesh dia hanohana protocols sosona fampiharana hafa ankoatra ny HTTP. Ny zotra L7 dia ho hita ato ho ato.

Ampiasao ny Netramesh raha sendra olana mitovy amin'izany ianao ary manorata aminay misy fanontaniana sy soso-kevitra.

Source: www.habr.com

Add a comment