Istio u Kubernetes fil-produzzjoni. Parti 2. Traċċar

Fl-aħħar artikolu Ħarsa lejn il-komponenti bażiċi ta 'Service Mesh Istio, ffamiljarizzajna mas-sistema u wieġeb il-mistoqsijiet ewlenin li normalment iqumu meta tibda taħdem ma' Istio. F'din il-parti se nħarsu lejn kif norganizzaw il-ġbir ta 'informazzjoni ta' traċċar fuq netwerk.

Istio u Kubernetes fil-produzzjoni. Parti 2. Traċċar

L-ewwel ħaġa li tiġi f'moħħna għal ħafna żviluppaturi u amministraturi tas-sistema meta jisimgħu l-kliem Service Mesh qed jittraċċa. Tabilħaqq, aħna nżidu proxy server speċjali għal kull node tan-netwerk li minnu jgħaddi t-traffiku TCP kollu. Jidher li issa huwa possibbli li tintbagħat faċilment informazzjoni dwar l-interazzjonijiet kollha tan-netwerk fuq in-netwerk. Sfortunatament, fir-realtà hemm ħafna sfumaturi li jeħtieġ li jitqiesu. Ejja nħarsu lejhom.

Kunċett żbaljat numru wieħed: nistgħu niksbu dejta tal-mixi onlajn b'xejn.

Fil-fatt, b'xejn relattivament, nistgħu niksbu biss in-nodi tas-sistema tagħna konnessi permezz ta 'vleġeġ u r-rata tad-dejta li tgħaddi bejn is-servizzi (fil-fatt, in-numru ta' bytes biss għal kull unità ta 'ħin). Madankollu, f'ħafna każijiet, is-servizzi tagħna jikkomunikaw fuq xi tip ta 'protokoll ta' saff ta 'applikazzjoni, bħal HTTP, gRPC, Redis, eċċ. U, ovvjament, irridu naraw l-informazzjoni tat-traċċar speċifikament għal dawn il-protokolli; irridu naraw ir-rata tat-talba, mhux ir-rata tad-dejta. Irridu nifhmu l-latenza tat-talbiet bl-użu tal-protokoll tagħna. Fl-aħħarnett, irridu naraw it-triq sħiħa li tieħu talba minn meta tidħol fis-sistema tagħna sa tirċievi tweġiba mill-utent. Din il-problema m'għadhiex daqshekk faċli biex tissolva.

L-ewwel, ejja nħarsu lejn kif jintbagħtu tracing spans jidher qisu mill-aspett arkitettoniku f'Istio. Kif niftakru mill-ewwel parti, Istio għandu komponent separat imsejjaħ Mixer għall-ġbir tat-telemetrija. Madankollu, fil-verżjoni attwali 1.0.*, il-bgħit isir direttament minn proxy servers, jiġifieri, minn proxy mibgħut. Il-prokura tal-Mibgħut tappoġġja l-bgħit ta’ medda ta’ traċċar bl-użu tal-protokoll zipkin barra mill-kaxxa. Huwa possibbli li tikkonnettja protokolli oħra, iżda biss permezz ta 'plugin. B'Istio immedjatament niksbu prokura tal-mibgħut immuntat u kkonfigurat, li jappoġġja biss il-protokoll zipkin. Jekk irridu nużaw, pereżempju, il-protokoll Jaeger u nibagħtu spans ta 'traċċar permezz ta' UDP, allura jkollna bżonn nibnu l-immaġni istio-proxy tagħna stess. Hemm appoġġ għall-plugins tad-dwana għal istio-proxy, iżda għadu fil-verżjoni alpha. Għalhekk, jekk irridu ngħaddu mingħajr numru kbir ta 'settings tad-dwana, il-firxa ta' teknoloġiji użati għall-ħażna u r-riċeviment ta 'firxiet ta' traċċar titnaqqas. Mis-sistemi ewlenin, fil-fatt, issa tista 'tuża Zipkin innifsu, jew Jaeger, iżda tibgħat kollox hemm billi tuża l-protokoll kompatibbli zipkin (li huwa ħafna inqas effiċjenti). Il-protokoll zipkin innifsu jinvolvi li tibgħat l-informazzjoni kollha tat-traċċar lil kolletturi permezz tal-protokoll HTTP, li huwa pjuttost għoli.

Kif diġà għedt, irridu ntraċċaw protokolli fil-livell tal-applikazzjoni. Dan ifisser li s-servers proxy li jinsabu ħdejn kull servizz iridu jifhmu x'tip ta' interazzjoni qed isseħħ issa. B'mod awtomatiku, Istio jikkonfigura l-portijiet kollha biex ikunu TCP sempliċi, li jfisser li l-ebda traċċi ma jintbagħtu. Sabiex jintbagħtu traċċi, trid, l-ewwelnett, tattiva din l-għażla fil-konfigurazzjoni tal-malji prinċipali u, dak li hu importanti ħafna, issemmi l-portijiet kollha tal-entitajiet tas-servizz kubernetes skont il-protokoll li jintuża fis-servizz. Jiġifieri, pereżempju, bħal dan:

apiVersion: v1
kind: Service
metadata:
  name: nginx
spec:
  ports:
  - port: 80
    targetPort: 80
    name: http
  selector:
    app: nginx

Tista 'wkoll tuża ismijiet komposti bħal http-magic (Istio se jara http u jagħraf dak il-port bħala punt ta' tmiem http). Il-format huwa: proto-extra.

Sabiex ma twaħħalx numru kbir ta 'konfigurazzjonijiet biex tiddetermina l-protokoll, tista' tuża soluzzjoni maħmuġa: waħħal il-komponent Pilot fil-mument meta jkun biss iwettaq il-loġika tad-definizzjoni tal-protokoll. Fl-aħħar, ovvjament, ikun meħtieġ li din il-loġika tinbidel għal standard u tinbidel għal konvenzjoni ta 'ismijiet għall-portijiet kollha.

Sabiex tifhem jekk il-protokoll huwiex verament definit b'mod korrett, trid tidħol f'xi wieħed mill-kontenituri sidecar bi prokura tal-mibgħut u tagħmel talba lill-port tal-amministrazzjoni tal-interface tal-mibgħut b'lokazzjoni /config_dump. Fil-konfigurazzjoni li tirriżulta, trid tħares lejn il-qasam tal-operat tas-servizz mixtieq. Jintuża f'Istio bħala identifikatur għal fejn issir it-talba. Sabiex tippersonalizza l-valur ta 'dan il-parametru f'Istio (imbagħad narawha fis-sistema ta' traċċar tagħna), huwa meħtieġ li tiġi speċifikata l-bandiera serviceCluster fl-istadju tat-tnedija tal-kontenitur sidecar. Pereżempju, jista 'jiġi kkalkulat bħal dan minn varjabbli miksuba mill-API kubernetes 'l isfel:

--serviceCluster ${POD_NAMESPACE}.$(echo ${POD_NAME} | sed -e 's/-[a-z0-9]*-[a-z0-9]*$//g')

Eżempju tajjeb biex tifhem kif jaħdem it-traċċar fl-envoy hawn.

L-endpoint innifsu biex jintbagħtu spans ta' traċċar għandu jiġi speċifikat ukoll fil-bnadar tal-varar tal-prokura tal-mibgħut, pereżempju: --zipkinAddress tracing-collector.tracing:9411

Kunċett żbaljat numru tnejn: nistgħu niksbu b'mod irħis traċċi kompluti ta 'talbiet permezz tas-sistema barra mill-kaxxa

Sfortunatament, mhuwiex. Il-kumplessità tal-implimentazzjoni tiddependi fuq kif diġà implimentajt l-interazzjoni tas-servizzi. Għalfejn?

Il-fatt hu li biex istio-proxy ikun jista’ jifhem il-korrispondenza ta’ talbiet deħlin lil servizz ma’ dawk li jħallu l-istess servizz, mhux biżżejjed li sempliċement jinterċettaw it-traffiku kollu. Jeħtieġ li jkollok xi tip ta' identifikatur tal-komunikazzjoni. Il-prokura tal-mibgħut HTTP juża headers speċjali, li bihom il-mibgħut jifhem liema talba speċifika lis-servizz tiġġenera talbiet speċifiċi lil servizzi oħra. Lista ta' headers bħal dawn:

  • x-talba-id,
  • x-b3-traceid,
  • x-b3-spanid,
  • x-b3-parentspanid,
  • x-b3-kampjun,
  • x-b3-bnadar,
  • x-ot-span-context.

Jekk għandek punt wieħed, pereżempju, klijent bażiku, li fih tista 'żżid loġika bħal din, allura kollox huwa tajjeb, għandek bżonn biss li tistenna li din il-librerija tiġi aġġornata għall-klijenti kollha. Imma jekk għandek sistema eteroġena ħafna u m'hemm l-ebda unifikazzjoni fil-mixja minn servizz għal servizz fuq in-netwerk, allura din x'aktarx tkun problema kbira. Mingħajr ma żżid loġika bħal din, l-informazzjoni kollha tat-traċċar tkun biss "livell wieħed". Jiġifieri, se nirċievu l-interazzjonijiet kollha bejn is-servizzi, iżda mhux se jkunu inkollati f'ktajjen ta 'passaġġ singoli min-netwerk.

Konklużjoni

Istio jipprovdi għodda konvenjenti għall-ġbir ta' informazzjoni ta' traċċar fuq netwerk, iżda trid tifhem li għall-implimentazzjoni ser ikollok bżonn tadatta s-sistema tiegħek u tqis il-karatteristiċi tal-implimentazzjoni ta' Istio. Bħala riżultat, jeħtieġ li jiġu solvuti żewġ punti ewlenin: id-definizzjoni tal-protokoll tal-livell tal-applikazzjoni (li għandu jkun appoġġat mill-prokura tal-mibgħut) u t-twaqqif tat-trażmissjoni ta’ informazzjoni dwar il-konnessjoni ta’ talbiet mas-servizz minn talbiet mis-servizz (bl-użu ta’ headers). , fil-każ tal-protokoll HTTP). Meta dawn il-kwistjonijiet jiġu solvuti, għandna għodda b'saħħitha li tippermettilna niġbru informazzjoni b'mod trasparenti min-netwerk, anke f'sistemi eteroġeni ħafna miktuba f'ħafna lingwi u oqfsa differenti.

Fl-artiklu li jmiss dwar Service Mesh, se nħarsu lejn waħda mill-akbar problemi ma 'Istio - il-konsum kbir ta' RAM minn kull kontenitur ta 'proxy sidecar u niddiskutu kif tista' tittrattaha.

Sors: www.habr.com

Żid kumment