{"id":32777,"date":"2019-10-31T21:48:52","date_gmt":"2019-10-31T18:48:52","guid":{"rendered":"https:\/\/prohoster.info\/blog\/netramesh-legkovesnoe-service-mesh-reshenie\/"},"modified":"2019-10-31T21:48:52","modified_gmt":"2019-10-31T18:48:52","slug":"netramesh-legkovesnoe-service-mesh-reshenie","status":"publish","type":"post","link":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/netramesh-legkovesnoe-service-mesh-reshenie","title":{"rendered":"Netramesh \u2013 lehk\u00e1 service mesh \u0159e\u0161en\u00ed","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>P\u0159i p\u0159echodu od monolitick\u00e9 aplikace k mikroslu\u017ebov\u00e9 architektu\u0159e se setk\u00e1v\u00e1me s nov\u00fdmi probl\u00e9my.<\/p>\n<p><\/p>\n<p>V monolitick\u00e9 aplikaci obvykle sta\u010d\u00ed jednodu\u0161e ur\u010dit, v kter\u00e9 \u010d\u00e1sti syst\u00e9mu do\u0161lo k chyb\u011b. Pravd\u011bpodobn\u011b je probl\u00e9m v k\u00f3du samotn\u00e9ho monolitu nebo v datab\u00e1zi. Kdy\u017e se v\u0161ak za\u010dneme zab\u00fdvat hled\u00e1n\u00edm probl\u00e9mu v mikroslu\u017ebov\u00e9 architektu\u0159e, u\u017e to nen\u00ed tak jasn\u00e9. Mus\u00edme naj\u00edt celou cestu, kterou po\u017eadavek pro\u0161el od za\u010d\u00e1tku do konce, a vy\u010dn\u00edvat ji z \u0159ady stovek mikroslu\u017eeb. P\u0159i\u010dem\u017e mnoh\u00e9 z nich maj\u00ed tak\u00e9 vlastn\u00ed \u00falo\u017ei\u0161t\u011b, kde se mohou tak\u00e9 vyskytnout jak logick\u00e9 chyby, tak probl\u00e9my s v\u00fdkonem a odolnost\u00ed proti v\u00fdpadk\u016fm.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Netramesh \u2013 lehk\u00e1 service mesh \u0159e\u0161en\u00ed\" src=\"\/wp-content\/uploads\/2019\/04\/f583f3d8d4a2239411628aa8f4d06041.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Dlouho jsem hledal n\u00e1stroj, kter\u00fd by pomohl vy\u0159e\u0161it takov\u00e9 probl\u00e9my (o tom jsem psal na Habru: <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/avito\/blog\/419319\/\">1<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/avito\/blog\/433650\/\">2<\/a><\/noindex>), ale nakonec jsem vytvo\u0159il vlastn\u00ed open-source \u0159e\u0161en\u00ed. V \u010dl\u00e1nku hovo\u0159\u00edm o v\u00fdhod\u00e1ch p\u0159\u00edstupu service mesh a sd\u00edl\u00edm nov\u00fd n\u00e1stroj pro jeho realizaci. <\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<p>Distribuovan\u00e9 sledov\u00e1n\u00ed je roz\u0161\u00ed\u0159en\u00fdm \u0159e\u0161en\u00edm probl\u00e9mu nalezen\u00ed chyb v distribuovan\u00fdch syst\u00e9mech. Ale co kdy\u017e v syst\u00e9mu je\u0161t\u011b nebyl implementov\u00e1n takov\u00fd p\u0159\u00edstup ke shroma\u017e\u010fov\u00e1n\u00ed informac\u00ed o s\u00ed\u0165ov\u00fdch interakc\u00edch, nebo, co je hor\u0161\u00ed, v \u010d\u00e1sti syst\u00e9mu ji\u017e funguje, zat\u00edmco v jin\u00e9 \u010d\u00e1sti nen\u00ed, proto\u017ee nebyl p\u0159id\u00e1n do star\u0161\u00edch slu\u017eeb? Pro p\u0159esn\u00e9 ur\u010den\u00ed ko\u0159enov\u00e9 p\u0159\u00ed\u010diny probl\u00e9mu je nezbytn\u00e9 m\u00edt \u00fapln\u00fd obr\u00e1zek o tom, co se v syst\u00e9mu d\u011bje. Je obzvl\u00e1\u0161\u0165 d\u016fle\u017eit\u00e9 rozum\u011bt tomu, kter\u00e9 konkr\u00e9tn\u00ed mikroslu\u017eby se pod\u00edlej\u00ed na hlavn\u00edch kritick\u00fdch obchodn\u00edch cest\u00e1ch.<\/p>\n<p><\/p>\n<p>Zde n\u00e1m m\u016f\u017ee pomoci p\u0159\u00edstup service mesh, kter\u00fd se postar\u00e1 o ve\u0161kerou ma\u0161inerii shroma\u017e\u010fov\u00e1n\u00ed s\u00ed\u0165ov\u00fdch informac\u00ed na \u00farovni, na kter\u00e9 samotn\u00e9 slu\u017eby funguj\u00ed. Tento p\u0159\u00edstup n\u00e1m umo\u017e\u0148uje zachytit ve\u0161ker\u00fd provoz a analyzovat ho za b\u011bhu. A aplikace o n\u011bm ani nemus\u00ed nic v\u011bd\u011bt.<\/p>\n<p><\/p>\n<h1 id=\"service-mesh-podhod\">P\u0159\u00edstup service mesh<\/h1>\n<p><\/p>\n<p>Hlavn\u00ed my\u0161lenkou p\u0159\u00edstupu service mesh je p\u0159id\u00e1n\u00ed dal\u0161\u00ed vrstvy infrastruktury nad s\u00ed\u0165, kter\u00e1 n\u00e1m umo\u017en\u00ed prov\u00e1d\u011bt libovoln\u00e9 \u00fakony s interakc\u00ed mezi slu\u017ebami. V\u011bt\u0161ina implementac\u00ed funguje takto: k ka\u017ed\u00e9 mikroservise je p\u0159id\u00e1n dal\u0161\u00ed kontejner sidecar s transparentn\u00edm proxy, p\u0159es kter\u00fd proch\u00e1z\u00ed ve\u0161ker\u00fd p\u0159\u00edchoz\u00ed a odchoz\u00ed provoz slu\u017eby. A pr\u00e1v\u011b zde m\u016f\u017eeme prov\u00e1d\u011bt klientsk\u00e9 vyva\u017eov\u00e1n\u00ed, aplikovat bezpe\u010dnostn\u00ed politiky, zav\u00e1d\u011bt omezen\u00ed po\u010dtu po\u017eadavk\u016f a shroma\u017e\u010fovat d\u016fle\u017eit\u00e9 informace o interakci slu\u017eeb v produkci.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Netramesh \u2013 lehk\u00e1 service mesh \u0159e\u0161en\u00ed\" src=\"\/wp-content\/uploads\/2019\/04\/b1f8636e3b99a3814138b6443b3e0799.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<h1 id=\"resheniya\">\u0158e\u0161en\u00ed.<\/h1>\n<p><\/p>\n<p>Ji\u017e existuje n\u011bkolik implementac\u00ed tohoto p\u0159\u00edstupu: <noindex><a rel=\"nofollow\" href=\"https:\/\/istio.io\/\">Istio<\/a><\/noindex> a <noindex><a rel=\"nofollow\" href=\"https:\/\/linkerd.io\/2\/overview\/\">linkerd2<\/a><\/noindex>. Nab\u00edzej\u00ed \u0159adu funkc\u00ed ihned po vybalen\u00ed. Sou\u010dasn\u011b v\u0161ak p\u0159ich\u00e1z\u00ed i velk\u00e1 z\u00e1t\u011b\u017e na zdroje. A \u010d\u00edm v\u011bt\u0161\u00ed je klastr, ve kter\u00e9m tato syst\u00e9m funguje, t\u00edm v\u00edce zdroj\u016f bude pot\u0159eba na udr\u017eov\u00e1n\u00ed nov\u00e9 infrastruktury. V Avitu provozujeme Kubernetes klastry, ve kter\u00fdch se nach\u00e1z\u00ed tis\u00edce instanc\u00ed slu\u017eeb (a jejich po\u010det rychle roste). V sou\u010dasn\u00e9 implementaci Istio spot\u0159ebov\u00e1v\u00e1 ~300MB opera\u010dn\u00ed pam\u011bti na ka\u017edou instanci slu\u017eby. Vzhledem k velk\u00e9mu po\u010dtu funkc\u00ed m\u00e1 transparentn\u00ed vyva\u017eov\u00e1n\u00ed tak\u00e9 vliv na celkov\u00fd \u010das odezvy slu\u017eeb (a\u017e 10ms).<\/p>\n<p><\/p>\n<p>Nakonec jsme se pod\u00edvali na to, jak\u00e9 konkr\u00e9tn\u00ed mo\u017enosti nyn\u00ed pot\u0159ebujeme, a rozhodli jsme se, \u017ee hlavn\u00edm d\u016fvodem, pro\u010d jsme za\u010dali implementovat takov\u00e1 \u0159e\u0161en\u00ed, byla mo\u017enost shroma\u017e\u010fovat trace informace z cel\u00e9ho syst\u00e9mu pr\u016fhledn\u011b. Tak\u00e9 jsme cht\u011bli m\u00edt kontrolu nad interakc\u00ed slu\u017eeb a prov\u00e1d\u011bt r\u016fzn\u00e9 manipulace s hlavi\u010dkami, kter\u00e9 jsou mezi slu\u017ebami p\u0159ed\u00e1v\u00e1ny. <\/p>\n<p><\/p>\n<p>Nakonec jsme do\u0161li k na\u0161emu \u0159e\u0161en\u00ed:\u200a <noindex><a rel=\"nofollow\" href=\"http:\/\/bit.ly\/netra_ru\">Netramesh<\/a><\/noindex>.<\/p>\n<p><\/p>\n<h1 id=\"netramesh\">Netramesh<\/h1>\n<p><\/p>\n<p><noindex><a rel=\"nofollow\" href=\"http:\/\/bit.ly\/netra_ru\">Netramesh<\/a><\/noindex> \u2014 je to lehk\u00e9 \u0159e\u0161en\u00ed service mesh s nekone\u010dnou \u0161k\u00e1lovatelnost\u00ed bez ohledu na po\u010det slu\u017eeb v syst\u00e9mu.<\/p>\n<p><\/p>\n<p>Hlavn\u00edmi c\u00edli nov\u00e9ho \u0159e\u0161en\u00ed byly mal\u00e1 z\u00e1t\u011b\u017e na zdroje a vysok\u00fd v\u00fdkon. Z hlavn\u00edch funkc\u00ed jsme cht\u011bli m\u00edt mo\u017enost pr\u016fhledn\u011b odes\u00edlat tracing span'y do na\u0161eho syst\u00e9mu Jaeger.<\/p>\n<p><\/p>\n<p>Dnes v\u011bt\u0161ina cloudov\u00fdch \u0159e\u0161en\u00ed b\u011b\u017e\u00ed na Golangu. A samoz\u0159ejm\u011b, jsou k tomu sv\u00e9 d\u016fvody. Ps\u00e1t s\u00ed\u0165ov\u00e9 aplikace na Golangu, kter\u00e9 pracuj\u00ed asynchronn\u011b se vstupem a v\u00fdstupem a mohou se snadno \u0161k\u00e1lovat na pot\u0159ebn\u00e9 j\u00e1dra, je pohodln\u00e9 a relativn\u011b jednoduch\u00e9. A co je tak\u00e9 velmi d\u016fle\u017eit\u00e9, v\u00fdkon je dostate\u010dn\u00fd pro spln\u011bn\u00ed tohoto \u00fakolu. Proto jsme tak\u00e9 zvolili Golang.<\/p>\n<p><\/p>\n<h1 id=\"proizvoditelnost\">V\u00fdkon<\/h1>\n<p><\/p>\n<p>Zam\u011b\u0159ili jsme na\u0161e \u00fasil\u00ed na dosa\u017een\u00ed maxim\u00e1ln\u00edho v\u00fdkonu. Pro \u0159e\u0161en\u00ed, kter\u00e9 se nasazuje vedle ka\u017ed\u00e9ho instance slu\u017eby, je zapot\u0159eb\u00ed mal\u00e9 spot\u0159eby opera\u010dn\u00ed pam\u011bti a procesorov\u00e9ho \u010dasu. A samoz\u0159ejm\u011b, latence odpov\u011bdi by m\u011bla b\u00fdt tak\u00e9 co nejmen\u0161\u00ed.<\/p>\n<p><\/p>\n<p>Pod\u00edvejme se, jak\u00e9 v\u00fdsledky jsme dos\u00e1hli. <\/p>\n<p><\/p>\n<h2 id=\"ram\">RAM<\/h2>\n<p><\/p>\n<p>Netramesh spot\u0159ebov\u00e1v\u00e1 ~10 Mb bez provozu a 50 Mb maxim\u00e1ln\u011b p\u0159i z\u00e1t\u011b\u017ei a\u017e 10000 RPS na jednu instanci.<\/p>\n<p><\/p>\n<p>Istio envoy proxy v\u017edy spot\u0159ebov\u00e1v\u00e1 ~300 Mb v na\u0161ich clusterech se tis\u00edci instancemi. To neumo\u017e\u0148uje \u0161k\u00e1lovat jej na cel\u00fd cluster.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Netramesh \u2013 lehk\u00e1 service mesh \u0159e\u0161en\u00ed\" src=\"\/wp-content\/uploads\/2019\/04\/665b46c30183d502900027b7b3fcf2aa.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Netramesh \u2013 lehk\u00e1 service mesh \u0159e\u0161en\u00ed\" src=\"\/wp-content\/uploads\/2019\/04\/d862122a15eb92402e35cb68c448f7c7.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>S Netramesh jsme dos\u00e1hli sn\u00ed\u017een\u00ed spot\u0159eby pam\u011bti p\u0159ibli\u017en\u011b 10x.<\/p>\n<p><\/p>\n<h2 id=\"cpu\">CPU<\/h2>\n<p><\/p>\n<p>Pou\u017eit\u00ed CPU je relativn\u011b stejn\u00e9 pod z\u00e1t\u011b\u017e\u00ed. Z\u00e1vis\u00ed na po\u010dtu po\u017eadavk\u016f za jednotku \u010dasu na sidecar. Hodnoty p\u0159i 3000 po\u017eadavc\u00edch za sekundu v maximu:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Netramesh \u2013 lehk\u00e1 service mesh \u0159e\u0161en\u00ed\" src=\"\/wp-content\/uploads\/2019\/04\/6dbae38c42706dc3fbb833fdaf058b48.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Netramesh \u2013 lehk\u00e1 service mesh \u0159e\u0161en\u00ed\" src=\"\/wp-content\/uploads\/2019\/04\/5a2eff682a457b620cbf71b520d90ca4.jpg\" style=\"display:block;margin: 0 auto;\" \/> <\/p>\n<p><\/p>\n<p>Je tu je\u0161t\u011b jeden d\u016fle\u017eit\u00fd bod: Netramesh je \u0159e\u0161en\u00ed bez control plane a bez z\u00e1t\u011b\u017ee nespot\u0159ebov\u00e1v\u00e1 procesorov\u00fd \u010das. S Istio sidecar v\u017edy aktualizuje endpointy slu\u017eeb. Nakonec vid\u00edme takov\u00fd obraz bez z\u00e1t\u011b\u017ee:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Netramesh \u2013 lehk\u00e1 service mesh \u0159e\u0161en\u00ed\" src=\"\/wp-content\/uploads\/2019\/04\/6e0212c6d34f8fdabf7b2f50a4f8137a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Pou\u017e\u00edv\u00e1me HTTP\/1 pro interakci mezi slu\u017ebami. Zpo\u017ed\u011bn\u00ed odpov\u011bdi u Istio p\u0159i proxy p\u0159es envoy bylo a\u017e 5-10 ms, co\u017e je pom\u011brn\u011b hodn\u011b pro slu\u017eby, kter\u00e9 jsou schopny reagovat na milisekundu. S Netramesh se tento \u010das sn\u00ed\u017eil na 0,5-2 ms.<\/p>\n<p><\/p>\n<h1 id=\"masshtabiruemost\">\u0160k\u00e1lovatelnost<\/h1>\n<p><\/p>\n<p>Mal\u00e9 mno\u017estv\u00ed zdroj\u016f, kter\u00e9 ka\u017ed\u00fd proxy spot\u0159ebov\u00e1v\u00e1, umo\u017e\u0148uje um\u00edstit jej vedle ka\u017ed\u00e9 slu\u017eby. Netramesh byl z\u00e1m\u011brn\u011b vytvo\u0159en bez komponenty control plane, aby se usnadnilo udr\u017een\u00ed lehkosti ka\u017ed\u00e9ho sidecaru. \u010casto v \u0159e\u0161en\u00edch service mesh control plane \u0161\u00ed\u0159\u00ed informace o service discovery do ka\u017ed\u00e9ho sidecaru. Spolu s t\u00edm p\u0159ich\u00e1zej\u00ed i informace o timeoutech a nastaven\u00edch vyva\u017eov\u00e1n\u00ed. To v\u0161echno umo\u017e\u0148uje d\u011blat spoustu u\u017eite\u010dn\u00fdch v\u011bc\u00ed, ale bohu\u017eel tak\u00e9 zv\u011bt\u0161uje velikost sidecar\u016f. <\/p>\n<p><\/p>\n<h1 id=\"service-discovery\">Objevov\u00e1n\u00ed slu\u017eeb<\/h1>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Netramesh \u2013 lehk\u00e1 service mesh \u0159e\u0161en\u00ed\" src=\"\/wp-content\/uploads\/2019\/04\/26bc86ed2ebf15a8d51388982e23e16d.jpg\" style=\"display:block;margin: 0 auto;\" \/> <\/p>\n<p><\/p>\n<p>Netramesh nep\u0159id\u00e1v\u00e1 \u017e\u00e1dn\u00e9 dal\u0161\u00ed mechanismy pro service discovery. Ve\u0161ker\u00fd provoz je transparentn\u011b proxy p\u0159es netra sidecar. <\/p>\n<p><\/p>\n<p>Netramesh podporuje aplika\u010dn\u00ed protokol HTTP\/1. Pro jeho definici se pou\u017e\u00edv\u00e1 konfigurovateln\u00fd seznam port\u016f. Obvykle m\u00e1 syst\u00e9m n\u011bkolik port\u016f, p\u0159es kter\u00e9 doch\u00e1z\u00ed k interakci pomoc\u00ed HTTP. Nap\u0159\u00edklad pro interakci slu\u017eeb a extern\u00edch po\u017eadavk\u016f pou\u017e\u00edv\u00e1me porty 80, 8890 a 8080. Tyto porty lze nastavit pomoc\u00ed prom\u011bnn\u00e9 prost\u0159ed\u00ed. <code>NETRA_HTTP_PORTS<\/code>.<\/p>\n<p><\/p>\n<p>Pokud pou\u017e\u00edv\u00e1te Kubernetes jako orchestr\u00e1tor a jeho mechanismus slu\u017eeb pro vnitroklaustrovou interakci mezi slu\u017ebami, mechanismus z\u016fst\u00e1v\u00e1 \u00fapln\u011b stejn\u00fd. Nejprve mikroslu\u017eba z\u00edsk\u00e1 IP adresu slu\u017eby pomoc\u00ed kube-dns a otev\u0159e nov\u00e9 spojen\u00ed k n\u00ed. Toto spojen\u00ed se nejprve vytv\u00e1\u0159\u00ed s lok\u00e1ln\u00edm netra-sidecarem a v\u0161echny TCP pakety p\u016fvodn\u011b doraz\u00ed pr\u00e1v\u011b do netra. Pot\u00e9 netra-sidecar navazuje spojen\u00ed s p\u016fvodn\u00edm c\u00edlem. NAT na pod IP na uzlu z\u016fst\u00e1v\u00e1 stejn\u00fd jako bez netra.<\/p>\n<p><\/p>\n<h1 id=\"raspredelennyy-tracing-i-prokidyvanie-konteksta\">Distribuovan\u00e9 sledov\u00e1n\u00ed a p\u0159en\u00e1\u0161en\u00ed kontextu<\/h1>\n<p><\/p>\n<p>Netramesh poskytuje funk\u010dnost pot\u0159ebnou k odes\u00edl\u00e1n\u00ed sledovac\u00edch span\u016f o HTTP interakci. Netra-sidecar zpracov\u00e1v\u00e1 HTTP protokol, m\u011b\u0159\u00ed zpo\u017ed\u011bn\u00ed dotaz\u016f, vyb\u00edr\u00e1 pot\u0159ebn\u00e9 informace z HTTP hlavi\u010dek. V kone\u010dn\u00e9m d\u016fsledku z\u00edsk\u00e1v\u00e1me v\u0161echny trace v jednotn\u00e9m syst\u00e9mu Jaeger. Pro jemn\u00e9 nastaven\u00ed lze tak\u00e9 pou\u017e\u00edt prom\u011bnn\u00e9 prost\u0159ed\u00ed, kter\u00e9 poskytuje ofici\u00e1ln\u00ed knihovna. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/jaegertracing\/jaeger-client-go#environment-variables\">jaeger go library<\/a><\/noindex>. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Netramesh \u2013 lehk\u00e1 service mesh \u0159e\u0161en\u00ed\" src=\"\/wp-content\/uploads\/2019\/04\/22a2d3be2cef1e495702ad75e062676f.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Netramesh \u2013 lehk\u00e1 service mesh \u0159e\u0161en\u00ed\" src=\"\/wp-content\/uploads\/2019\/04\/20ff67f0c7f3590dce3d41db2a10267e.jpg\" style=\"display:block;margin: 0 auto;\" \/> <\/p>\n<p><\/p>\n<p>Ale je tu probl\u00e9m. Dokud slu\u017eby nebudou generovat a p\u0159en\u00e1\u0161et speci\u00e1ln\u00ed uber hlavi\u010dku, neuvid\u00edme propojen\u00e9 sledovac\u00ed spany v syst\u00e9mu. A to je to, co pot\u0159ebujeme pro rychl\u00e9 vyhled\u00e1v\u00e1n\u00ed p\u0159\u00ed\u010din probl\u00e9m\u016f. Zde m\u00e1 Netramesh op\u011bt \u0159e\u0161en\u00ed. Proxy \u010dtou HTTP hlavi\u010dky a pokud v nich nen\u00ed uber trace id, generuj\u00ed ho. Netramesh tak\u00e9 uchov\u00e1v\u00e1 informace o p\u0159\u00edchoz\u00edch a odchoz\u00edch po\u017eadavc\u00edch v sidecaru a porovn\u00e1v\u00e1 je obohacen\u00edm pot\u0159ebn\u00fdmi hlavi\u010dkami odchoz\u00edch po\u017eadavk\u016f. V\u0161e, co je t\u0159eba v slu\u017eb\u00e1ch ud\u011blat, je p\u0159en\u00e1\u0161et pouze jednu hlavi\u010dku. <code>X-Request-Id<\/code>, kterou lze nakonfigurovat pomoc\u00ed prom\u011bnn\u00e9 prost\u0159ed\u00ed. <code>NETRA_HTTP_REQUEST_ID_HEADER_NAME<\/code>. Pro \u0159\u00edzen\u00ed velikosti kontextu v Netramesh lze zadat n\u00e1sleduj\u00edc\u00ed prom\u011bnn\u00e9 prost\u0159ed\u00ed: <code>NETRA_TRACING_CONTEXT_EXPIRATION_MILLISECONDS<\/code> (doba, po kterou bude kontext uchov\u00e1v\u00e1n) a <code>NETRA_TRACING_CONTEXT_CLEANUP_INTERVAL<\/code> (frekvence \u00faklidu kontextu).<\/p>\n<p><\/p>\n<p>Je tak\u00e9 mo\u017en\u00e9 kombinovat v\u00edce cest ve va\u0161\u00ed syst\u00e9mu ozna\u010den\u00edm speci\u00e1ln\u00edm sezen\u00edm markerem. Netra umo\u017e\u0148uje nastavit <code>HTTP_HEADER_TAG_MAP<\/code> pro p\u0159em\u011bnu HTTP hlavi\u010dek na odpov\u00eddaj\u00edc\u00ed tracing span tagy. To m\u016f\u017ee b\u00fdt obzvl\u00e1\u0161t\u011b u\u017eite\u010dn\u00e9 pro testov\u00e1n\u00ed. Po pr\u016fchodu funk\u010dn\u00edm testem lze vid\u011bt, kter\u00e1 \u010d\u00e1st syst\u00e9mu byla ovlivn\u011bna, filtrov\u00e1n\u00edm podle odpov\u00eddaj\u00edc\u00edho session kl\u00ed\u010de.<\/p>\n<p><\/p>\n<h1 id=\"opredelenie-istochnika-zaprosa\">Ur\u010den\u00ed zdroje po\u017eadavku<\/h1>\n<p><\/p>\n<p>Pro ur\u010den\u00ed odkud po\u017eadavek p\u0159i\u0161el, lze vyu\u017e\u00edt funk\u010dnost automatick\u00e9ho p\u0159id\u00e1n\u00ed hlavi\u010dky se zdrojem. Pomoc\u00ed prom\u011bnn\u00e9 prost\u0159ed\u00ed <code>NETRA_HTTP_X_SOURCE_HEADER_NAME<\/code> lze nastavit n\u00e1zev hlavi\u010dky, kter\u00e1 bude automaticky nastavena. Pomoc\u00ed <code>NETRA_HTTP_X_SOURCE_VALUE<\/code> lze nastavit hodnotu, do kter\u00e9 bude hlavi\u010dka X-Source nastavena pro v\u0161echny odchoz\u00ed po\u017eadavky. <\/p>\n<p><\/p>\n<p>To umo\u017e\u0148uje jednotn\u011b po cel\u00e9 s\u00edti \u0161\u00ed\u0159it tuto u\u017eite\u010dnou hlavi\u010dku. D\u00e1le ji lze ji\u017e vyu\u017e\u00edt v slu\u017eb\u00e1ch a p\u0159idat do log\u016f, metrik.<\/p>\n<p><\/p>\n<h1 id=\"routing-trafika-i-vnutrennosti-netramesh\">Routov\u00e1n\u00ed provozu a vnit\u0159nosti Netramesh<\/h1>\n<p><\/p>\n<p>Netramesh se skl\u00e1d\u00e1 ze dvou hlavn\u00edch komponent\u016f. Prvn\u00ed, netra-init, nastavuje s\u00ed\u0165ov\u00e1 pravidla pro zachycov\u00e1n\u00ed provozu. Pou\u017e\u00edv\u00e1 <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Lookyan\/netramesh\/blob\/master\/iptables-rules.sh\">iptables redirect pravidla<\/a><\/noindex> k zachycov\u00e1n\u00ed ve\u0161ker\u00e9ho nebo \u010d\u00e1sti provozu na sidecar, kter\u00fd je druhou hlavn\u00ed komponentou Netramesh. M\u016f\u017eete nastavit, kter\u00e9 porty je t\u0159eba zachytit pro p\u0159\u00edchoz\u00ed a odchoz\u00ed TCP sezen\u00ed: <code>INBOUND_INTERCEPT_PORTS, OUTBOUND_INTERCEPT_PORTS<\/code>.<\/p>\n<p><\/p>\n<p>N\u00e1stroj tak\u00e9 nab\u00edz\u00ed zaj\u00edmavou mo\u017enost \u2014 pravd\u011bpodobnostn\u00ed routov\u00e1n\u00ed. Pokud pou\u017e\u00edv\u00e1te Netramesh v\u00fdhradn\u011b pro sb\u011br tracing span\u016f, m\u016f\u017eete v produk\u010dn\u00edm prost\u0159ed\u00ed u\u0161et\u0159it zdroje a zapnout pravd\u011bpodobnostn\u00ed routov\u00e1n\u00ed pomoc\u00ed prom\u011bnn\u00fdch <code>NETRA_INBOUND_PROBABILITY<\/code> a <code>NETRA_OUTBOUND_PROBABILITY<\/code> (od 0 do 1). V\u00fdchoz\u00ed hodnota je 1 (zachycov\u00e1n ve\u0161ker\u00fd provoz).<\/p>\n<p><\/p>\n<p>Po \u00fasp\u011b\u0161n\u00e9m zachycen\u00ed netra sidecar p\u0159ij\u00edm\u00e1 nov\u00e9 spojen\u00ed a pou\u017e\u00edv\u00e1 <code>SO_ORIGINAL_DST<\/code> mo\u017enost soketu pro z\u00edsk\u00e1n\u00ed p\u016fvodn\u00edho c\u00edlov\u00e9ho m\u00edsta. Pot\u00e9 Netra otev\u00edr\u00e1 nov\u00e9 spojen\u00ed k p\u016fvodn\u00edmu IP adrese a vytv\u00e1\u0159\u00ed oboustrannou TCP komunikaci mezi stranami, sleduj\u00edce ve\u0161ker\u00fd proch\u00e1zej\u00edc\u00ed provoz. Pokud je port definov\u00e1n jako HTTP, Netra se pokou\u0161\u00ed jej parsovat a trace-it. Pokud je parsov\u00e1n\u00ed HTTP ne\u00fasp\u011b\u0161n\u00e9, Netra se vr\u00e1t\u00ed na TCP a transparentn\u011b prozrazuje bajty.<\/p>\n<p><\/p>\n<h1 id=\"postroenie-grafa-zavisimostey\">Vytv\u00e1\u0159en\u00ed grafu z\u00e1vislost\u00ed<\/h1>\n<p><\/p>\n<p>Po z\u00edsk\u00e1n\u00ed velk\u00e9ho mno\u017estv\u00ed tracing informac\u00ed v Jaegeru byste cht\u011bli z\u00edskat kompletn\u00ed graf interakc\u00ed v syst\u00e9mu. Pokud je v\u0161ak v\u00e1\u0161 syst\u00e9m dostate\u010dn\u011b zat\u00ed\u017een a za den se nahromad\u00ed miliardy tracing span\u016f, agregace t\u011bchto dat se st\u00e1v\u00e1 sp\u00ed\u0161e slo\u017eit\u00fdm \u00fakolem. Existuje ofici\u00e1ln\u00ed zp\u016fsob, jak to prov\u00e9st: <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/jaegertracing\/spark-dependencies\">spark-dependencies<\/a><\/noindex>. Nicm\u00e9n\u011b to zabere hodiny na vytvo\u0159en\u00ed kompletn\u00edho grafu a zp\u016fsob\u00ed, \u017ee bude nutn\u00e9 st\u00e1hnout cel\u00fd dataset z Jaegeru za uplynul\u00fdch 24 hodin. <\/p>\n<p><\/p>\n<p>Pokud pou\u017e\u00edv\u00e1te Elasticsearch pro uchov\u00e1v\u00e1n\u00ed tracing span\u016f, m\u016f\u017eete vyu\u017e\u00edt <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/Lookyan\/jaeger-dependencies\">jednoduchou utilitu napsanou v Golangu<\/a><\/noindex>, kter\u00e1 postav\u00ed stejn\u00fd graf b\u011bhem minut, vyu\u017e\u00edvaj\u00edc\u00ed funkcionality a mo\u017enosti Elasticsearch.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Netramesh \u2013 lehk\u00e1 service mesh \u0159e\u0161en\u00ed\" src=\"\/wp-content\/uploads\/2019\/04\/26eb13e066ed8482010fde103d3832fd.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<h1 id=\"kak-ispolzovat-netramesh\">Jak pou\u017e\u00edvat Netramesh<\/h1>\n<p><\/p>\n<p>Netra m\u016f\u017ee b\u00fdt jednodu\u0161e p\u0159id\u00e1na k jak\u00e9koliv slu\u017eb\u011b b\u011b\u017e\u00edc\u00ed na jak\u00e9mkoliv orchestr\u00e1toru. M\u016f\u017eete se pod\u00edvat na p\u0159\u00edklad <noindex><a rel=\"nofollow\" href=\"http:\/\/bit.ly\/2HVRv7D\">tady<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>V sou\u010dasn\u00e9 dob\u011b Netra nem\u00e1 mo\u017enost automatick\u00e9ho nasazen\u00ed sidecaru k slu\u017eb\u00e1m, ale pl\u00e1nuje se to implementovat. <\/p>\n<p><\/p>\n<h1 id=\"buduschee-netramesh\">Budoucnost Netramesh<\/h1>\n<p><\/p>\n<p>Hlavn\u00edm c\u00edlem <noindex><a rel=\"nofollow\" href=\"http:\/\/bit.ly\/netra_ru\">Netramesh<\/a><\/noindex> je dos\u00e1hnout minim\u00e1ln\u00edch n\u00e1klad\u016f na zdroje a vysok\u00e9ho v\u00fdkonu, p\u0159i\u010dem\u017e poskytuje z\u00e1kladn\u00ed funkce pro sledov\u00e1n\u00ed a kontrolu meziservisn\u00ed interakce. <\/p>\n<p><\/p>\n<p>V budoucnu Netramesh z\u00edsk\u00e1 podporu dal\u0161\u00edch aplika\u010dn\u00edch protokol\u016f krom\u011b HTTP. Brzy bude dostupn\u00e1 mo\u017enost L7 routingu.<\/p>\n<p><\/p>\n<p>Pou\u017eijte Netramesh, pokud se setk\u00e1v\u00e1te s podobn\u00fdmi probl\u00e9my, a nev\u00e1hejte n\u00e1m ps\u00e1t dotazy a n\u00e1vrhy.<\/p>\n<p>Zdroj: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/avito\/blog\/449974\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u043e\u0442 \u043c\u043e\u043d\u043e\u043b\u0438\u0442\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043a \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435 \u043c\u044b \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0435\u043c\u0441\u044f \u0441 \u043d\u043e\u0432\u044b\u043c\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u043c\u0438. \u0412 \u043c\u043e\u043d\u043e\u043b\u0438\u0442\u043d\u043e\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u043e\u0431\u044b\u0447\u043d\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u0432 \u043a\u0430\u043a\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430 \u043e\u0448\u0438\u0431\u043a\u0430. \u0421\u043a\u043e\u0440\u0435\u0435 \u0432\u0441\u0435\u0433\u043e, \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430 \u0432 \u043a\u043e\u0434\u0435 \u0441\u0430\u043c\u043e\u0433\u043e \u043c\u043e\u043d\u043e\u043b\u0438\u0442\u0430, \u043b\u0438\u0431\u043e \u0432 \u0431\u0430\u0437\u0435 \u0434\u0430\u043d\u043d\u044b\u0445. \u041d\u043e \u043a\u043e\u0433\u0434\u0430 \u043c\u044b \u043d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0438\u0441\u043a\u0430\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0443 \u0432 \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435, \u0432\u0441\u0451 \u0443\u0436\u0435 \u043d\u0435 \u0442\u0430\u043a \u043e\u0447\u0435\u0432\u0438\u0434\u043d\u043e. \u041d\u0443\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 \u0432\u0435\u0441\u044c [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":24554,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-32777","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u043e\u0442 \u043c\u043e\u043d\u043e\u043b\u0438\u0442\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043a \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435 \u043c\u044b \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0435\u043c\u0441\u044f \u0441 \u043d\u043e\u0432\u044b\u043c\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u043c\u0438. \u0412 \u043c\u043e\u043d\u043e\u043b\u0438\u0442\u043d\u043e\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u043e\u0431\u044b\u0447\u043d\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u0432 \u043a\u0430\u043a\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/netramesh-legkovesnoe-service-mesh-reshenie\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"cs_CZ\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Netramesh \u2013 \u043b\u0435\u0433\u043a\u043e\u0432\u0435\u0441\u043d\u043e\u0435 service mesh \u0440\u0435\u0448\u0435\u043d\u0438\u0435 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u043e\u0442 \u043c\u043e\u043d\u043e\u043b\u0438\u0442\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043a \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435 \u043c\u044b \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0435\u043c\u0441\u044f \u0441 \u043d\u043e\u0432\u044b\u043c\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u043c\u0438. \u0412 \u043c\u043e\u043d\u043e\u043b\u0438\u0442\u043d\u043e\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u043e\u0431\u044b\u0447\u043d\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u0432 \u043a\u0430\u043a\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/netramesh-legkovesnoe-service-mesh-reshenie\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:48:52+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:48:52+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Netramesh \u2013 lehk\u00e9 \u0159e\u0161en\u00ed service mesh | ProHoster","description":"P\u0159i p\u0159echodu z monolitick\u00e9 aplikace na mikroslu\u017ebovou architekturu \u010del\u00edme nov\u00fdm probl\u00e9m\u016fm. V monolitick\u00e9 aplikaci obvykle sta\u010d\u00ed jen ur\u010dit, v kter\u00e9 \u010d\u00e1sti syst\u00e9mu do\u0161lo k probl\u00e9mu.","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/netramesh-legkovesnoe-service-mesh-reshenie","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"cs_CZ","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Netramesh \u2013 \u043b\u0435\u0433\u043a\u043e\u0432\u0435\u0441\u043d\u043e\u0435 service mesh \u0440\u0435\u0448\u0435\u043d\u0438\u0435 | ProHoster","og:description":"\u0412 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0430 \u043e\u0442 \u043c\u043e\u043d\u043e\u043b\u0438\u0442\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043a \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043d\u043e\u0439 \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0435 \u043c\u044b \u0441\u0442\u0430\u043b\u043a\u0438\u0432\u0430\u0435\u043c\u0441\u044f \u0441 \u043d\u043e\u0432\u044b\u043c\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430\u043c\u0438. \u0412 \u043c\u043e\u043d\u043e\u043b\u0438\u0442\u043d\u043e\u043c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u043e\u0431\u044b\u0447\u043d\u043e \u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u043e \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u044c, \u0432 \u043a\u0430\u043a\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u043f\u0440\u043e\u0438\u0437\u043e\u0448\u043b\u0430.","og:url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/netramesh-legkovesnoe-service-mesh-reshenie","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:48:52+00:00","article:modified_time":"2019-10-31T18:48:52+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"32777","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-21 12:29:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 10:20:44","updated":"2026-01-21 12:29:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/32777","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/comments?post=32777"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/32777\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media\/24554"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=32777"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=32777"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=32777"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}