Ilana Aidaniloju Heisenberg sọ pe o ko le wiwọn ipo ohun kan ati iyara rẹ ni akoko kanna. Ti ohun kan ba n gbe, lẹhinna ko ni ipo. Ati pe ti ipo ba wa, o tumọ si pe ko ni iyara.

Bi fun awọn iṣẹ microservices lori pẹpẹ Red Hat OpenShift (ati ṣiṣe Kubernetes), o ṣeun si sọfitiwia orisun ṣiṣi ti o yẹ, wọn le ṣe ijabọ iṣẹ ṣiṣe ati ilera wọn ni nigbakannaa. Eyi, dajudaju, ko kọ Heisenberg atijọ, ṣugbọn o yọkuro aidaniloju nigba ṣiṣẹ pẹlu awọn ohun elo awọsanma. Istio jẹ ki o rọrun lati ṣe atẹle ati atẹle awọn ohun elo wọnyi lati tọju ohun gbogbo labẹ iṣakoso.
Asọye awọn oro
Labẹ wiwa kakiri (Itọpa) a ni oye gedu iṣẹ ṣiṣe eto. Eyi dun ni gbogbogbo, ṣugbọn ni otitọ ọkan ninu awọn ofin ipilẹ nibi ni lati da data itọpa naa sinu ibi ipamọ ti o yẹ laisi aibalẹ nipa tito akoonu rẹ. Ati gbogbo iṣẹ wiwa ati itupalẹ data wa pẹlu olumulo. Istio nlo eto wiwapa Jaeger, eyiti o ṣe imuse awoṣe data OpenTracing.
Lori awọn itọpa (Awọn itọpa, ati ọrọ naa “awọn itọpa” ni a lo nibi ni ori ti “awọn itọpa”, fun apẹẹrẹ, ni idanwo ballistic) a yoo pe data ti o ṣe apejuwe kikun ti aye ti ibeere tabi apakan iṣẹ, bi wọn ti sọ, "lati ati si." Fun apẹẹrẹ, ohun gbogbo ti o ṣẹlẹ lati akoko ti olumulo kan tẹ bọtini kan lori oju-iwe wẹẹbu titi ti data yoo fi pada, pẹlu gbogbo awọn iṣẹ microservices ti o kan. A le sọ pe itọpa kan ṣapejuwe patapata (tabi awọn awoṣe) irin-ajo iyipo ti ibeere kan. Ni wiwo Jaeger, awọn itọpa ti wa ni idinku sinu awọn paati lẹgbẹẹ akoko akoko, bii bii bii pq kan ṣe le jẹ jijẹ sinu awọn ọna asopọ kọọkan. Nikan dipo awọn ọna asopọ, ipa ọna naa ni awọn ohun ti a npe ni igba.
igba jẹ aarin lati ibẹrẹ ti ẹyọkan iṣẹ si ipari rẹ. Tesiwaju ni apéerẹìgbìyànjú, a le so pe kọọkan igba duro kan lọtọ ọna asopọ ninu awọn pq. Igba kan le (tabi ko le) ni ọkan tabi diẹ ẹ sii awọn akoko ọmọde. Bi abajade, akoko ti o ga julọ (igba gbongbo) yoo ni iye akoko lapapọ kanna bi itọpa ti o jẹ ti.
Abojuto - Eyi ni, ni otitọ, akiyesi pupọ ti eto rẹ - pẹlu oju rẹ, nipasẹ UI tabi awọn irinṣẹ adaṣe. Abojuto da lori data itọpa. Ni Istio, ibojuwo ti wa ni imuse nipa lilo Prometheus ati pe o ni UI ti o yẹ. Prometheus ṣe atilẹyin ibojuwo adaṣe ni lilo Awọn titaniji ati Awọn Alakoso Itaniji.
A fi awọn aami silẹ
Fun wiwa kakiri lati ṣee ṣe, ohun elo gbọdọ ṣẹda akojọpọ awọn ipari. Lẹhinna wọn nilo lati gbejade si Jaeger, nitorinaa o ṣẹda aṣoju wiwo ti itọpa naa. Lara awọn ohun miiran, awọn ipari wọnyi samisi orukọ iṣẹ naa, bakanna bi ibẹrẹ ati awọn akoko ipari rẹ. Gbigbe awọn igba jẹ ṣiṣe nipasẹ didari awọn akọle ibeere HTTP pato-Jaeger lati awọn ibeere ti nwọle si awọn ibeere ti njade. Da lori ede siseto ti a lo, eyi le nilo awọn iyipada kekere si koodu orisun ohun elo. Ni isalẹ ni koodu apẹẹrẹ ni Java (lilo ilana Boot Orisun omi) ti o ṣafikun awọn akọle B3 (Zipkin-style) si ibeere rẹ ni kilasi iṣeto orisun omi:

Awọn eto akọsori wọnyi ni a lo:

Ti o ba nlo Java, lẹhinna o le fi koodu naa silẹ nikan ki o kan fi awọn ila diẹ kun si faili Maven POM ati ṣeto awọn iyipada ayika. Eyi ni awọn ila ti o nilo lati ṣafikun si faili POM.XML rẹ lati ṣe imuse Jaeger Tracer Resolver:

Ati awọn oniyipada ayika ti o baamu ti ṣeto ni Dockerfile:

Iyẹn ni, ni bayi ohun gbogbo ti tunto ati pe awọn iṣẹ microservices wa yoo bẹrẹ ṣiṣẹda data itọpa.
Jẹ ká wo ni apapọ awọn ofin
Istio pẹlu nronu iṣakoso ti o rọrun ti o da lori Grafana. Ni kete ti ohun gbogbo ba tunto ati ṣiṣe lori pẹpẹ Red Hat OpenShift PaaS (ninu apẹẹrẹ wa, Red Hat OpenShift ati Kubernetes ti wa ni ransogun lori minishift), nronu yii ti ṣe ifilọlẹ pẹlu aṣẹ atẹle:
open "$(minishift openshift service grafana -u)/d/1/istio-dashboard?refresh=5⩝Id=1"
Igbimọ Grafana gba ọ laaye lati ṣe iṣiro iṣẹ ṣiṣe eto ni kiakia. Ajeku ti nronu yii jẹ afihan ni aworan ni isalẹ:

Nibi o le rii pe microservice onibara n pe ayanfẹ v1 microservice, eyiti o pe ni iṣeduro v1 ati v2 microservices. Igbimọ Grafana naa ni idinaduro Row Dashboard fun awọn metiriki ipele giga, gẹgẹbi apapọ nọmba awọn ibeere (Iwọn ibeere Agbaye), awọn oṣuwọn aṣeyọri, awọn aṣiṣe 4xx. Ni afikun, wiwo Mesh Server kan wa pẹlu awọn aworan fun iṣẹ kọọkan ati Àkọsílẹ Row Awọn iṣẹ fun wiwo alaye alaye nipa eiyan kọọkan fun iṣẹ kọọkan.
Bayi jẹ ki ká ma wà jinle
Pẹlu wiwa kakiri ti tunto daradara, Istio, bi wọn ti sọ, ọtun lati inu apoti gba ọ laaye lati jinlẹ jinlẹ sinu itupalẹ ti iṣẹ ṣiṣe eto. Ni Jaeger's UI, o le wo awọn itọpa ki o wo bii wọn ti jinna ati jinna, bakanna bi oju ṣe agbegbe awọn igo iṣẹ ṣiṣe. Nigbati o ba nlo Red Hat OpenShift lori pẹpẹ minishift, ṣe ifilọlẹ Jaeger UI pẹlu aṣẹ atẹle:
minishift openshift service jaeger-query --in-browser

Kini o le sọ nipa wiwa lori iboju yii:
- O ti pin si 7 igba.
- Lapapọ akoko ipaniyan jẹ 6.99 ms.
- Microservice iṣeduro, eyiti o jẹ ti o kẹhin ninu pq, na 0.69 ms.
Awọn aworan atọka ti iru yii gba ọ laaye lati ni oye ipo naa ni kiakia nigbati, nitori iṣẹ kan ti ko ṣiṣẹ, iṣẹ ti gbogbo eto n jiya.
Bayi jẹ ki a ṣe idiju iṣẹ-ṣiṣe naa ki a ṣe ifilọlẹ awọn iṣẹlẹ meji ti iṣeduro:v2 microservice pẹlu aṣẹ oc scale —replicas=2 imuṣiṣẹ/iṣeduro-v2. Eyi ni awọn podu ti a yoo ni lẹhin eyi:

Ti a ba yipada ni bayi pada si Jaeger ki o faagun akoko fun iṣẹ iṣeduro, a le rii iru podu ti awọn ibeere naa ti lọ si. Nitorinaa, a le ni irọrun agbegbe awọn idaduro ni ipele ti podu kan pato. Ni idi eyi, o nilo lati wo aaye node_id:

Nibo ati bi ohun gbogbo ṣe lọ
Ni bayi a lọ si wiwo Prometheus ati pe a nireti pe awọn ibeere laarin awọn ẹya keji ati akọkọ ti iṣẹ iṣeduro ti pin ni ipin ti 2: 1, ni ibamu si nọmba awọn adarọ-ese ti n ṣiṣẹ. Pẹlupẹlu, ayaworan yii yoo yipada ni agbara bi awọn adarọ-ese ṣe iwọn si oke ati isalẹ, eyiti yoo wulo paapaa fun Ifilọlẹ Canary (a yoo wo isunmọ si ero imuṣiṣẹ yii ni akoko miiran).

O n bẹrẹ nikan
Ni otitọ, loni a ni, bi wọn ti sọ, nikan ti yọ dada ti ọrọ ti alaye to wulo nipa Jaeger, Grafana ati Prometheus. Ni gbogbogbo, eyi ni ibi-afẹde wa - lati tọka si ọ ni itọsọna ti o tọ ati ṣii awọn ireti fun Istio.
Ati ki o ranti, gbogbo eyi ni a ti kọ tẹlẹ sinu Istio. Nigbati o ba nlo awọn ede siseto kan (fun apẹẹrẹ, Java) ati awọn ilana (fun apẹẹrẹ, Boot Orisun omi), gbogbo eyi le ṣee ṣe laisi fifọwọkan koodu ohun elo funrararẹ rara. Bẹẹni, koodu naa yoo ni lati yipada diẹ ti o ba lo awọn ede miiran, ni akọkọ tumọ Nodejs tabi C #. Ṣugbọn niwọn igba ti wiwa kakiri (ka: “kakiri”) jẹ ọkan ninu awọn ohun pataki fun ṣiṣẹda awọn ọna ṣiṣe awọsanma ti o gbẹkẹle, iwọ yoo ni lati ṣatunkọ koodu naa lọnakọna, boya o ni Istio tabi rara. Nitorinaa kilode ti o ko fi awọn akitiyan rẹ si lilo dara julọ?
O kere ju lati le dahun awọn ibeere nigbagbogbo "nibo?" ati "bawo ni o yara?" pẹlu 100% dajudaju.
Imọ-ẹrọ Idarudapọ ni Istio: iyẹn ni a ti pinnu rẹ
Agbara lati fọ awọn nkan ṣe iranlọwọ lati ṣe idiwọ wọn lati fifọ.
Idanwo sọfitiwia kii ṣe nira nikan, ṣugbọn tun ṣe pataki. Ni akoko kanna, idanwo fun titọ (fun apẹẹrẹ, boya iṣẹ kan ba pada abajade to tọ) jẹ ohun kan, ṣugbọn idanwo ni nẹtiwọọki ti ko ni igbẹkẹle jẹ iṣẹ-ṣiṣe ti o yatọ patapata (o jẹ igbagbogbo pe nẹtiwọọki n ṣiṣẹ nigbagbogbo laisi awọn ikuna, ati eyi jẹ akọkọ ti awọn aburu mẹjọ nipa awọn iṣiro pinpin). Ọkan ninu awọn iṣoro ni ipinnu iṣoro yii ni bii o ṣe le ṣe afiwe awọn ikuna ninu eto tabi ṣafihan wọn ni imomose, ṣiṣe ohun ti a pe ni abẹrẹ aṣiṣe. Eyi le ṣee ṣe nipa yiyipada koodu orisun ti ohun elo funrararẹ. Ṣugbọn lẹhinna iwọ kii yoo ṣe idanwo koodu atilẹba rẹ mọ, ṣugbọn ẹya kan ti o ṣe adaṣe pataki awọn ikuna. Bi abajade, o ni ewu lati ṣubu sinu ifaramọ apaniyan ti abẹrẹ ẹbi ati ipade Heisenbugs - awọn ikuna ti o parẹ nigbati o gbiyanju lati rii wọn.
Bayi a yoo fihan ọ bi Istio ṣe ṣe iranlọwọ fun ọ lati koju awọn idiju wọnyi ni nkan kan.
Kini ohun gbogbo dabi nigbati ohun gbogbo ba dara?
Wo oju iṣẹlẹ atẹle yii: a ni awọn adarọ-ese meji fun iṣeduro microservice wa, eyiti a mu lati ikẹkọ Istio. Podu kan jẹ aami v1 ati ekeji ni aami v2. Bi o ti le rii, ohun gbogbo n ṣiṣẹ daradara titi di isisiyi:

(Nipa ọna, nọmba ti o wa ni apa ọtun jẹ counter ipe fun adarọ ese kọọkan)
Ṣugbọn kii ṣe ohun ti a nilo, otun? O dara, jẹ ki a gbiyanju lati fọ ohun gbogbo laisi fọwọkan koodu orisun rara.
A ṣeto awọn idilọwọ ni iṣẹ ti microservice
Ниже приведен yaml-файл для правила маршрутизации Istio, которое в половине случаев будет выдавать сбой (ошибку olupin 503):

Jọwọ ṣe akiyesi pe a sọ ni gbangba pe aṣiṣe 503 yẹ ki o pada ni idaji awọn ọran naa.
Ati pe eyi ni ohun ti sikirinifoto ti aṣẹ curl ti n ṣiṣẹ ni lupu kan yoo dabi lẹhin ti a mu ofin yii ṣiṣẹ lati ṣe adaṣe awọn ikuna. Bii o ti le rii, idaji awọn ibeere naa pada aṣiṣe 503, laibikita iru podu – v1 tabi v2 – wọn lọ si:

Lati mu iṣẹ ṣiṣe deede pada, o to lati pa ofin yii rẹ, ninu ọran wa pẹlu istioctl pa awọn iṣeduro routerule-503 -n pipaṣẹ ikẹkọ. Nibi, Tutorial ni orukọ Red Hat OpenShift ise agbese ti o nṣiṣẹ ikẹkọ Istio wa.
Agbekale Oríkĕ idaduro
Awọn aṣiṣe 503 iro ṣe iranlọwọ lati ṣe idanwo resilience eto kan si ikuna, ṣugbọn agbara lati ṣe asọtẹlẹ ati mu awọn idaduro yẹ ki o ṣe iwunilori rẹ paapaa diẹ sii. Ati awọn idaduro ni igbesi aye gidi ṣẹlẹ diẹ sii ju awọn ikuna lọ. A lọra microservice ni a majele ti o ni ipa lori gbogbo eto. Pẹlu Istio, o le ṣe idanwo koodu ti o ni ibatan idaduro laisi iyipada ni eyikeyi ọna. Ni akọkọ, a yoo ṣafihan bi a ṣe le ṣe eyi ni ọran ti awọn idaduro nẹtiwọọki ti a ṣe afihan lasan.
Jọwọ ṣe akiyesi pe lẹhin idanwo ni ọna yii, o le nilo (tabi fẹ) lati tweak koodu rẹ. Irohin ti o dara nibi ni pe ninu ọran yii iwọ yoo jẹ alaapọn kuku ju ifaseyin. Eyi ni deede bi o ṣe yẹ ki ọna idagbasoke idagbasoke jẹ tito: ifaminsi-igbeyewo-esi-iforukọsilẹ-igbeyewo…
Eyi ni ohun ti ofin naa dabi ... Biotilejepe o mọ kini? Istio rọrun pupọ ati pe faili yaml yii han gbangba pe ohun gbogbo ti o wa ninu apẹẹrẹ yii sọrọ fun ararẹ, kan wo:

Idaji akoko ti a yoo ni iriri a 7 aaya idaduro. Ati pe eyi kii ṣe kanna bii ti a ba fi aṣẹ oorun sinu koodu orisun, nitori Istio ṣe idaduro ibeere naa ni iṣẹju 7. Niwọn igba ti Istio ṣe atilẹyin wiwa Jaeger, idaduro yii jẹ akiyesi ni Jaeger UI, bi o ṣe han ninu sikirinifoto ni isalẹ. San ifojusi si ibeere gigun ni igun apa ọtun oke ti aworan atọka - iye akoko rẹ jẹ awọn aaya 7.02:

Iwe afọwọkọ yii ngbanilaaye lati ṣe idanwo koodu rẹ labẹ awọn ipo airi nẹtiwọki. Ati pe o han gbangba pe nipa yiyọ ofin yii, a yoo yọ idaduro atọwọda naa kuro. A tun ṣe, ṣugbọn lẹẹkansi a ṣe gbogbo eyi laisi fọwọkan koodu orisun ni eyikeyi ọna.
Maṣe pada sẹhin ki o maṣe fi ara rẹ silẹ
Ẹya miiran ti o wulo ti Istio fun imọ-ẹrọ rudurudu jẹ awọn ipe atunwi si iṣẹ naa nọmba awọn akoko kan pato. Ojuami nibi ni lati tẹsiwaju igbiyanju nigbati ibeere akọkọ ba pari pẹlu aṣiṣe 503 - ati lẹhinna boya N-kọkanla akoko a yoo ni orire. Boya iṣẹ naa kan sọkalẹ fun igba diẹ fun idi kan tabi omiiran. Bẹẹni, idi yii yẹ ki o wa jade ki o si parẹ. Ṣugbọn iyẹn yoo wa nigbamii, ṣugbọn fun bayi a yoo gbiyanju lati rii daju pe eto naa tẹsiwaju lati ṣiṣẹ.
Nitorinaa, a fẹ ki iṣẹ naa jabọ aṣiṣe 503 lati igba de igba, lẹhinna Istio yoo gbiyanju lati kan si lẹẹkansi. Ati pe nibi a nilo kedere ọna lati ṣe ipilẹṣẹ aṣiṣe 503 laisi fọwọkan koodu funrararẹ…
Duro, duro! A kan ṣe.
Faili yii yoo jẹ ki iṣẹ iṣeduro-v2 yoo fun aṣiṣe 503 ni idaji akoko naa:

O han ni, diẹ ninu awọn ibeere yoo kuna:

Bayi jẹ ki a lo iṣẹ Istio Tun gbiyanju:

Ofin ipa-ọna yii tun ṣe ni igba mẹta ni awọn aaye arin iṣẹju-aaya ati pe o yẹ ki o dinku (ati pe o yẹ yọ kuro lati radar) awọn aṣiṣe 503:

Lati ṣe akopọ: a ṣe ki Istio, ni akọkọ, ṣe ipilẹṣẹ aṣiṣe 503 fun idaji awọn ibeere naa. Ati ni ẹẹkeji, Istio kanna ṣe awọn igbiyanju mẹta lati tun kan si iṣẹ naa nigbati aṣiṣe 503 ba waye. Bi abajade, ohun gbogbo ṣiṣẹ daradara. Nitorinaa, nipa lilo ẹya Tun gbiyanju, a ti mu ileri wa ti ko juwọ silẹ ati ki o ma ṣe juwọ silẹ.
Ati bẹẹni, a tun ṣe laisi fọwọkan koodu naa rara. Gbogbo ohun ti a nilo ni awọn ofin ipa-ọna Istio meji:

Bii o ṣe le jẹ ki olumulo silẹ tabi meje ko nireti ọkan
Nisisiyi jẹ ki a yi ipo naa pada ki o si wo oju iṣẹlẹ kan nibiti ohun kan ti o nilo lati ṣe kii ṣe afẹyinti tabi fi silẹ fun iye akoko ti o wa titi. Ati lẹhinna o kan nilo lati da igbiyanju lati ṣe ilana ibeere naa, ki o má ba fi ipa mu gbogbo eniyan lati duro fun iṣẹ ti o lọra kan. Ni awọn ọrọ miiran, a kii yoo daabobo ipo ti o sọnu, ṣugbọn yoo pada sẹhin si laini ifipamọ ki a maṣe jẹ ki olumulo aaye naa silẹ ki o ma ṣe fi ipa mu u lati rẹwẹsi ni aimọkan.
Ni Istio, o le ṣeto akoko ṣiṣe ṣiṣe ibeere kan. Ti iṣẹ naa ba kọja akoko asiko yii, aṣiṣe 504 kan (Aago ẹnu-ọna ẹnu-ọna) ti pada - lẹẹkansi, gbogbo eyi ni a ṣe nipasẹ iṣeto Istio. Ṣugbọn a yoo ni lati ṣafikun aṣẹ oorun si koodu orisun iṣẹ (ati lẹhinna, nitorinaa, ṣe atunṣe ati atunkọ) lati ṣe adaṣe iṣẹ ti o lọra ti iṣẹ naa. Alas, kii yoo ṣiṣẹ ni ọna miiran.
Nitorinaa, a fi oorun-aaya mẹta-mẹta sinu koodu iṣẹ v2 iṣeduro, tun ṣe aworan ti o baamu ati tun gbe eiyan naa, ati ni bayi a yoo ṣafikun akoko ipari ni lilo ofin ipa-ọna Istio atẹle:

Ninu sikirinifoto loke o le rii pe a fi silẹ igbiyanju lati kan si iṣẹ iṣeduro ti a ko ba gba esi laarin iṣẹju-aaya kan, iyẹn ni, ṣaaju ki aṣiṣe 504 waye. si koodu iṣẹ iṣeduro: v2), a gba eyi:

A tun tun ṣe, ṣugbọn akoko ipari le ṣee ṣeto laisi fọwọkan koodu orisun ni eyikeyi ọna. Ati pe ẹbun ti a ṣafikun nibi ni pe o le yipada koodu rẹ bayi lati dahun si akoko ipari, ati ni irọrun ṣe idanwo awọn iyipada wọnyi ni lilo Istio.
Ati nisisiyi o ni gbogbo papo
Abẹrẹ idarudapọ kekere pẹlu Istio jẹ ọna nla lati ṣe idanwo koodu rẹ ati igbẹkẹle ti eto rẹ lapapọ. Ipadabọ, olopobobo ati awọn ilana fifọ iyika, awọn ọna ṣiṣe fun ṣiṣẹda awọn ikuna atọwọda ati awọn idaduro, bakanna bi awọn ipe tun gbiyanju ati awọn akoko ipari yoo wulo pupọ nigbati o ṣẹda awọn eto awọsanma ọlọdun ẹbi. Ni idapọ pẹlu Kubernetes ati Red Hat OpenShift, awọn irinṣẹ wọnyi yoo ran ọ lọwọ lati koju ọjọ iwaju pẹlu igboiya.
orisun: www.habr.com
