Istio ug Kubernetes sa produksyon. Bahin 2. Pagsubay

Sa ulahi artikulo Gitan-aw namon ang mga sukaranan nga sangkap sa Service Mesh Istio, nahibal-an ang sistema ug gitubag ang mga nag-unang pangutana nga kasagarang motungha kung nagsugod sa pagtrabaho kauban si Istio. Niini nga bahin atong tan-awon kon unsaon pag-organisar ang pagkolekta sa impormasyon sa pagsubay sa usa ka network.

Istio ug Kubernetes sa produksyon. Bahin 2. Pagsubay

Ang una nga butang nga naa sa hunahuna sa daghang mga developer ug system administrator kung makadungog sila sa mga pulong nga gisubay sa Service Mesh. Sa tinuud, nagdugang kami usa ka espesyal nga proxy server sa matag network node diin ang tanan nga trapiko sa TCP moagi. Morag posible na karon nga daling magpadala og impormasyon bahin sa tanang interaksyon sa network sa network. Ikasubo, sa tinuud adunay daghang mga nuances nga kinahanglan nga tagdon. Atong tan-awon sila.

Sayop nga pagsabut numero uno: makakuha kami online nga data sa pag-hiking nga libre.

Sa tinuud, alang sa medyo libre, makuha ra namon ang mga node sa among sistema nga konektado sa mga pana ug ang rate sa datos nga moagi taliwala sa mga serbisyo (sa tinuud, ang gidaghanon sa mga byte matag yunit sa oras). Bisan pa, sa kadaghanan nga mga kaso, ang among mga serbisyo nakigsulti sa usa ka matang sa protocol sa layer sa aplikasyon, sama sa HTTP, gRPC, Redis, ug uban pa. Ug, siyempre, gusto namong makita ang pagsubay sa impormasyon ilabi na alang niini nga mga protocol; gusto namong makita ang request rate, dili ang data rate. Gusto namon nga masabtan ang latency sa mga hangyo gamit ang among protocol. Sa katapusan, gusto namon nga makita ang tibuuk nga agianan nga makuha sa usa ka hangyo gikan sa pag-log in sa among sistema hangtod sa pagdawat usa ka tubag gikan sa tiggamit. Kini nga problema dili na sayon ​​sulbaron.

Una, atong tan-awon kung unsa ang hitsura sa pagpadala sa pagsubay sa mga span gikan sa usa ka punto sa arkitektura sa Istio. Sama sa atong nahinumduman gikan sa unang bahin, ang Istio adunay usa ka bulag nga sangkap nga gitawag og Mixer alang sa pagkolekta sa telemetry. Bisan pa, sa kasamtangan nga bersyon 1.0.*, ang pagpadala direkta nga gihimo gikan sa mga proxy server, nga mao, gikan sa envoy proxy. Ang Envoy proxy nagsuporta sa pagpadala sa mga tracing span gamit ang zipkin protocol gikan sa kahon. Posible nga makonektar ang ubang mga protocol, apan pinaagi lamang sa usa ka plugin. Uban sa Istio nakakuha dayon kami usa ka gitigum ug gi-configure nga envoy proxy, nga nagsuporta lamang sa zipkin protocol. Kung gusto namong gamiton, pananglitan, ang protocol sa Jaeger ug ipadala ang pagsubay sa mga span pinaagi sa UDP, nan kinahanglan namon nga magtukod og among kaugalingon nga istio-proxy nga imahe. Adunay suporta alang sa custom nga mga plugins alang sa istio-proxy, apan kini anaa pa sa alpha nga bersyon. Busa, kung gusto namon nga buhaton nga wala’y daghang mga naandan nga setting, ang sakup sa mga teknolohiya nga gigamit alang sa pagtipig ug pagdawat sa mga gilay-on sa pagsubay gipakunhod. Sa mga nag-unang sistema, sa tinuud, mahimo nimong gamiton ang Zipkin mismo, o Jaeger, apan ipadala ang tanan didto gamit ang zipkin compatible protocol (nga dili kaayo episyente). Ang zipkin protocol mismo naglakip sa pagpadala sa tanang impormasyon sa pagsubay sa mga kolektor pinaagi sa HTTP protocol, nga medyo mahal.

Sama sa akong giingon, gusto namon nga masubay ang mga protocol sa lebel sa aplikasyon. Kini nagpasabot nga ang mga proxy server nga nagbarug sunod sa matag serbisyo kinahanglan nga makasabut unsa nga matang sa interaksyon ang nahitabo karon. Sa default, gi-configure ni Istio ang tanan nga mga pantalan nga mahimong yano nga TCP, nga nagpasabut nga walay mga pagsubay nga ipadala. Aron mapadala ang mga pagsubay, kinahanglan nimo, una, i-enable kini nga kapilian sa main mesh config ug, kung unsa ang hinungdanon, nganlan ang tanan nga mga pantalan sa mga entidad sa serbisyo sa kubernetes uyon sa protocol nga gigamit sa serbisyo. Kana, pananglitan, sama niini:

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

Mahimo usab nimo gamiton ang mga compound nga ngalan sama sa http-magic (Makita ni Istio ang http ug mailhan kana nga pantalan ingon usa ka http endpoint). Ang porma mao ang: proto-extra.

Aron dili ma-patch ang daghang gidaghanon sa mga pag-configure aron mahibal-an ang protocol, mahimo nimong gamiton ang usa ka hugaw nga workaround: i-patch ang sangkap sa Pilot sa higayon nga kini bag-o pa. naghimo sa lohika sa kahulugan sa protocol. Sa katapusan, siyempre, kinahanglan nga usbon kini nga lohika sa sumbanan ug ibalhin sa usa ka kombensyon sa pagngalan alang sa tanan nga mga pantalan.

Aron masabtan kung husto ba nga gihubit ang protocol, kinahanglan ka nga moadto sa bisan unsang mga sulud sa sidecar nga adunay proxy nga envoy ug maghimo usa ka hangyo sa admin port sa interface sa envoy nga adunay lokasyon /config_dump. Sa resulta nga pagsumpo, kinahanglan nimo nga tan-awon ang natad sa operasyon sa gusto nga serbisyo. Gigamit kini sa Istio isip usa ka identifier kung diin gihimo ang hangyo. Aron ipasibo ang bili niini nga parameter sa Istio (atong makita kini sa atong sistema sa pagsubay), gikinahanglan nga ipiho ang serviceCluster nga bandila sa yugto sa paglansad sa sudlanan sa sidecar. Pananglitan, kini mahimong kalkulado sama niini gikan sa mga variable nga nakuha gikan sa ubos nga kubernetes API:

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

Usa ka maayong panig-ingnan aron masabtan kung giunsa ang pagsubay sa buhat sa envoy dinhi.

Ang endpoint mismo para sa pagpadala sa mga tracing span kinahanglan usab nga ipiho sa envoy proxy launch flags, pananglitan: --zipkinAddress tracing-collector.tracing:9411

Sayop nga pagsabut numero nga duha: kita dili mahal nga makakuha og kompleto nga pagsubay sa mga hangyo pinaagi sa sistema sa gawas sa kahon

Ikasubo, kini dili. Ang pagkakomplikado sa pagpatuman nagdepende kung giunsa nimo gipatuman ang interaksyon sa mga serbisyo. Ngano man?

Ang tinuod mao nga aron masabtan sa istio-proxy ang mga sulat sa umaabot nga mga hangyo sa usa ka serbisyo sa mga mibiya sa parehas nga serbisyo, dili igo nga ma-intercept lang ang tanan nga trapiko. Kinahanglan ka nga adunay usa ka matang sa identifier sa komunikasyon. Ang HTTP envoy proxy naggamit ug espesyal nga mga ulohan, diin ang envoy nakasabut kung unsang espesipikong hangyo sa serbisyo ang nagpatunghag piho nga mga hangyo sa ubang mga serbisyo. Listahan sa maong mga ulohan:

  • x-hangyo-id
  • x-b3-traceid,
  • x-b3-spanid,
  • x-b3-ginikanan,
  • x-b3-sample,
  • x-b3-flag,
  • x-ot-span-konteksto.

Kung ikaw adunay usa ka punto, pananglitan, usa ka sukaranan nga kliyente, diin mahimo nimong idugang ang ingon nga lohika, nan maayo ang tanan, kinahanglan ka maghulat nga kini nga librarya ma-update alang sa tanan nga mga kliyente. Apan kung ikaw adunay usa ka kaayo nga heterogenous nga sistema ug walay panaghiusa sa pagbalhin gikan sa serbisyo ngadto sa serbisyo sa network, nan kini lagmit usa ka dako nga problema. Kung wala’y pagdugang sa ingon nga lohika, ang tanan nga kasayuran sa pagsubay mahimo ra nga "single-level". Sa ato pa, makadawat kami sa tanan nga inter-service nga interaksyon, apan dili sila ipapilit sa usa ka kadena sa agianan pinaagi sa network.

konklusyon

Naghatag ang Istio usa ka dali nga himan alang sa pagkolekta sa kasayuran sa pagsubay sa usa ka network, apan kinahanglan nimo nga masabtan nga alang sa pagpatuman kinahanglan nimo nga ipahiangay ang imong sistema ug tagdon ang mga bahin sa pagpatuman sa Istio. Ingon usa ka sangputanan, duha ka punoan nga punto ang kinahanglan masulbad: pagtino sa lebel sa aplikasyon nga protocol (nga kinahanglan suportahan sa envoy proxy) ug pag-set up sa pagpasa sa kasayuran bahin sa koneksyon sa mga hangyo sa serbisyo gikan sa mga hangyo gikan sa serbisyo (gamit ang mga ulohan. , sa kaso sa HTTP protocol). Kung nasulbad na kini nga mga isyu, kami adunay usa ka kusgan nga himan nga nagtugot kanamo nga mahayag nga mangolekta og kasayuran gikan sa network, bisan sa mga heterogenous kaayo nga mga sistema nga gisulat sa daghang lainlaing mga pinulongan ug mga balangkas.

Sa sunod nga artikulo bahin sa Service Mesh, atong tan-awon ang usa sa pinakadako nga problema sa Istio - ang dako nga konsumo sa RAM sa matag sidecar proxy nga sudlanan ug hisgutan kung giunsa nimo kini atubangon.

Source: www.habr.com

Idugang sa usa ka comment