{"id":55700,"date":"2020-01-26T00:00:00","date_gmt":"2020-01-25T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/trassirovka-i-monitoring-v-istio-mikroservisy-i-printsip-neopredelennosti"},"modified":"2020-02-18T14:03:50","modified_gmt":"2020-02-18T11:03:50","slug":"trassirovka-i-monitoring-v-istio-mikroservisy-i-printsip-neopredelennosti","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/trassirovka-i-monitoring-v-istio-mikroservisy-i-printsip-neopredelennosti","title":{"rendered":"J\u00e4lgimine ja monitooring Istios: mikroteenused ja ebakindluse printsiip","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Heisenbergi ebamugavuse p\u00f5him\u00f5te \u00fctleb, et ei saa samal ajal m\u00f5\u00f5ta objekti asukohta ja selle kiirus. Kui objekt liigub, siis ei ole tal asukohta. Ja kui asukoht on olemas \u2013 siis tal ei ole kiirus.<\/p>\n<p><img decoding=\"async\" alt=\"J\u00e4lgimine ja monitooring Istios: mikroteenused ja ebakindluse printsiip\" src=\"\/wp-content\/uploads\/2020\/01\/617ace5f892b62652b404b24585537b0.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nMis puudutab mikroteenuseid Red Hat OpenShift platvormil (ja Kubernetes'i juhtimisel), siis t\u00e4nu avatud koodiga tarkvarale saavad nad samal ajal raporteerida nii oma j\u00f5udlust kui ka t\u00f6\u00f6kindlust. Heisenbergi ebamugavus j\u00e4\u00e4b kehtima, kuid see k\u00f5rvaldab ebamugavuse pilve rakenduste kasutamisel. Istio v\u00f5imaldab h\u00f5lpsasti korraldada nende rakenduste j\u00e4lgimist ja monitooringut, et k\u00f5ik oleks kontrolli all.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>M\u00e4\u00e4ratleme terminoloogia<\/h3>\n<p>\nAlustama <b>j\u00e4lgimine<\/b> (Tracing) me m\u00f5istame s\u00fcsteemi tegevuse logimist. See k\u00f5lab \u00fcsna \u00fcldiselt, kuid tegelikult on siin \u00fcks peamisi reegleid andmete j\u00e4lgimise suunamine sobivasse salvestusse, muretsemata nende vormingu p\u00e4rast. K\u00f5ik andmete otsimise ja anal\u00fc\u00fcsimise t\u00f6\u00f6 j\u00e4\u00e4b nende tarbija \u00f5lgadele. Istios kasutatakse j\u00e4lgimiss\u00fcsteemi Jaeger, mis rakendab OpenTracing andmemudelit.<\/p>\n<p><b>J\u00e4ljed<\/b> (Traces, ja s\u00f5na \u201ej\u00e4ljed\u201d kasutatakse siin t\u00e4henduses \u201em\u00e4rke\u201d, nagu n\u00e4iteks ballistika eksamineerimisel) nimetame me andmeid, mis kirjeldavad t\u00e4ielikult p\u00e4ringu v\u00f5i t\u00f6\u00f6\u00fclesande l\u00e4bimist, nagu \u00f6eldakse, \u201ek\u00f5ik alates ja kuni\u201d. N\u00e4iteks k\u00f5ik, mis juhtub hetkest, kui kasutaja vajutab nuppu veebilehel, kuni andmete tagastamise hetkeni, sealhulgas k\u00f5ik kaasatud mikroteenused. \u00dche j\u00e4lje kohta v\u00f5ib \u00f6elda, et see kirjeldab (v\u00f5i modelleerib) p\u00e4ringu l\u00e4bimist sinna ja tagasi. Jaegeri liideses jagunevad j\u00e4ljed ajateljel koostisosadeks, just nagu ahelat v\u00f5iks jagada eraldi l\u00fclideks. Ainult et l\u00fclide asemel koosneb j\u00e4lg nn span'idest.<\/p>\n<p><b>Span<\/b> \u2013 see on ajavahemik t\u00f6\u00f6de tegemise algusest kuni nende l\u00f5petamiseni. J\u00e4tkates analoogiat, v\u00f5ib \u00f6elda, et iga span esindab eraldi l\u00fcli ketis. Span v\u00f5ib omada (v\u00f5i mitte omada) \u00fchte v\u00f5i mitut alam span'i. Seet\u00f5ttu on k\u00f5ige k\u00f5rgema taseme span'il (root span) sama kogukestus nagu rada, millele see viitab.<\/p>\n<p><b>J\u00e4lgimine<\/b> \u2013 see on tegelikult teie s\u00fcsteemi j\u00e4lgimine \u2013 silmade kaudu, kasutajaliidese kaudu v\u00f5i automatiseerimise vahendite abil. J\u00e4lgimise aluseks on j\u00e4lgimisandmed. Istios on j\u00e4lgimine rakendatud Prometheuse vahenditega, millel on ka vastav kasutajaliides. Prometheus toetab automaatset j\u00e4lgimist, kasutades teavitusi Alerts ja Alert Managers.<\/p>\n<h3>J\u00e4tame m\u00e4rgid<\/h3>\n<p>\nEtte, et j\u00e4lgimine oleks v\u00f5imalik, peab rakendus looma span'ide kogumi. Seej\u00e4rel tuleb need eksportida Jaegerisse, et see omakorda looks j\u00e4lgimise visuaalse esituse. Nende span'ide hulka kuuluvad muu hulgas operatsiooni nimi ning ajam\u00e4rke selle alguse ja l\u00f5pu kohta. Span'ide edastamine toimub Jaegerile suunatud HTTP-p\u00e4ringute pealkirjade samuti sisse- ja v\u00e4ljaminevate p\u00e4ringute vahelise suunamise teel. S\u00f5ltuvalt kasutatavast programmeerimiskeelest v\u00f5ib see n\u00f5uda v\u00e4ikseid muudatusi rakenduste l\u00e4htekoodis. Allpool on n\u00e4ide Java koodist (kasutades Spring Boot raamistikku), mis lisab B3 (Zipkin-stiilis) pealkirjad teie p\u00e4ringule Springi konfigureerimisklassis:<\/p>\n<p><img decoding=\"async\" alt=\"J\u00e4lgimine ja monitooring Istios: mikroteenused ja ebakindluse printsiip\" src=\"\/wp-content\/uploads\/2020\/01\/2314e2d156dc9b9fdb299af2dac01f66.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nKasutatakse j\u00e4rgmisi pealkirja seadeid:<\/p>\n<p><img decoding=\"async\" alt=\"J\u00e4lgimine ja monitooring Istios: mikroteenused ja ebakindluse printsiip\" src=\"\/wp-content\/uploads\/2020\/01\/18f0a13af27665ec2d154ff4cff48157.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nKui kasutate Java't, siis koodi pole vaja muuta, piisab, kui lisada paar rida Maven POM-faili ning m\u00e4\u00e4rata keskkonnamuutujad. Siin on read, mida peate lisama POM.XML faili, et Jaeger Tracer Resolverit integreerida:<\/p>\n<p><img decoding=\"async\" alt=\"J\u00e4lgimine ja monitooring Istios: mikroteenused ja ebakindluse printsiip\" src=\"\/wp-content\/uploads\/2020\/01\/a63a634c2c22fc09a237cafc4873855d.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nJa vastavad keskkonnamuutujad m\u00e4\u00e4ratakse Dockerfile'is:<\/p>\n<p><img decoding=\"async\" alt=\"J\u00e4lgimine ja monitooring Istios: mikroteenused ja ebakindluse printsiip\" src=\"\/wp-content\/uploads\/2020\/01\/7fe9046242d7e628342a6266e4a2f743.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nN\u00fc\u00fcd on k\u00f5ik seadistatud, ja meie mikroteenused hakkavad genereerima j\u00e4lgimisandmeid.<\/p>\n<h3>Vaatame \u00fcldiselt<\/h3>\n<p>\nIstio sisaldab lihtsat juhtpaneeli, mis on \u00fcles ehitatud Grafana p\u00f5hjal. Kui k\u00f5ik on seadistatud ja t\u00f6\u00f6tab Red Hat OpenShift PaaS platvormil (meie n\u00e4ites on Red Hat OpenShift ja Kubernetes paigaldatud minishiftile), k\u00e4ivitatakse see paneel j\u00e4rgmise k\u00e4suga:<\/p>\n<pre><code class=\"plaintext\">open \"$(minishift openshift service grafana -u)\/d\/1\/istio-dashboard?refresh=5&amp;ord;Id=1\"\n<\/code><\/pre>\n<p>\nGrafana paneel v\u00f5imaldab kiiresti hinnata s\u00fcsteemi toimimist. Selle paneeli fragment on n\u00e4idatud alloleval joonisel:<\/p>\n<p><img decoding=\"async\" alt=\"J\u00e4lgimine ja monitooring Istios: mikroteenused ja ebakindluse printsiip\" src=\"\/wp-content\/uploads\/2020\/01\/2c10cd23fd5166f437c2b3c1d50c6a18.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nSiit on n\u00e4ha, et mikroteenus customer kutsub mikroteenust preference v1, mis omakorda kutsub mikroteenuseid recommendation v1 ja v2. Grafana paneelil on Dashboard Row plokk k\u00f5rgetasemeliste m\u00f5\u00f5dikute jaoks, nagu globaalne p\u00e4ringute maht (Global Request Volume), edukaid p\u00e4ringute osakaal (success rates) ja 4xx vead. Samuti on seal Server Mesh esitus diagrammide kujul iga teenuse kohta ja Services Row plokk, et vaadata \u00fcksikasjalikke andmeid iga konteineri kohta iga teenuse jaoks.<\/p>\n<h3>N\u00fc\u00fcd uurime s\u00fcgavamale<\/h3>\n<p>\nKorrektselt seadistatud Istio j\u00e4lgimine v\u00f5imaldab kohe s\u00fcvitsi minna s\u00fcsteemi sooritusv\u00f5ime anal\u00fc\u00fcsi. Jaegeri kasutajaliideses saab j\u00e4lgimisi vaadata ning n\u00e4ha, kui kaugele ja s\u00fcgavale need ulatuvad, samuti visuaalselt lokaliseerida sooritusv\u00f5ime kitsaskohti. Red Hat OpenShift platvormil minishift k\u00e4ivitate Jaegeri kasutajaliidese j\u00e4rgmise k\u00e4su abil:<\/p>\n<pre><code class=\"plaintext\">minishift openshift service jaeger-query --in-browser\n<\/code><\/pre>\n<p>\n<img decoding=\"async\" alt=\"J\u00e4lgimine ja monitooring Istios: mikroteenused ja ebakindluse printsiip\" src=\"\/wp-content\/uploads\/2020\/01\/074fea646ad191f819a9a67a3f311c8f.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nMida saab sellel ekraanipildil j\u00e4lgimise kohta \u00f6elda:<\/p>\n<ul>\n<li>See jaguneb 7 span'iks.<\/li>\n<li>Kogu t\u00e4itmise aeg on 6,99 ms.<\/li>\n<li>Mikros\u00fcsteemil recommendation, mis on ahelas viimane, kulub 0,69 ms.<\/li>\n<\/ul>\n<p>\nSellised diagrammid aitavad kiiresti olukorda m\u00f5ista, kui m\u00f5ni \u00fcksik toimiv teenus m\u00f5jutab kogu s\u00fcsteemi sooritusv\u00f5imet.<\/p>\n<p>N\u00fc\u00fcd teeme \u00fclesande keerulisemaks ja k\u00e4ivitame kaks eksemplari mikros\u00fcsteemist recommendation:v2 k\u00e4suga oc scale --replicas=2 deployment\/recommendation-v2. Niisiis, millised pod'id meil n\u00fc\u00fcd on:<\/p>\n<p><img decoding=\"async\" alt=\"J\u00e4lgimine ja monitooring Istios: mikroteenused ja ebakindluse printsiip\" src=\"\/wp-content\/uploads\/2020\/01\/0ecb8d78d6967d0392de67be6553b870.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nKui n\u00fc\u00fcd tagasi Jaegeri peale l\u00fclituda ja soovituse teenuse span'i laiendada, n\u00e4eme, millisele pod'ile p\u00e4ringud suunatakse. Nii suudame h\u00f5lpsasti lokaliseerida viivitused konkreetse pod'i tasemel. Vaadata tuleb node_id v\u00e4lja.<\/p>\n<p><img decoding=\"async\" alt=\"J\u00e4lgimine ja monitooring Istios: mikroteenused ja ebakindluse printsiip\" src=\"\/wp-content\/uploads\/2020\/01\/474da66c581692cd11070a1732ac5458.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Kuhu ja kuidas k\u00f5ik liigub<\/h3>\n<p>\nN\u00fc\u00fcd liikume Prometheuse liidese poole ja \u00fcsna oodatult n\u00e4eme seal, et p\u00e4ringud soovituse teenuse teise ja esimese versiooni vahel jagunevad suhe 2:1, rangelt tegutsevate pod'ide arvu alusel. Samuti muutub see diagramm d\u00fcnaamiliselt pod'ide \u00fcles- ja allaskaalumisel, mis on eriti kasulik Canary t\u00e4itmisel (me vaatame seda deployment'i skeemi j\u00e4rgmine kord l\u00e4hemalt).<\/p>\n<p><img decoding=\"async\" alt=\"J\u00e4lgimine ja monitooring Istios: mikroteenused ja ebakindluse printsiip\" src=\"\/wp-content\/uploads\/2020\/01\/c080fffd2398b0a2eac3e63665bdb0a7.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>K\u00f5ik on alles algamas<\/h3>\n<p>\nTegelikult oleme t\u00e4na, nagu \u00f6eldakse, vaid kergelt puudutanud kasuliku teabe varasalve Jaegeri, Grafana ja Prometheuse kohta. \u00dcldiselt oli see meie eesm\u00e4rk \u2013 suunata teid \u00f5iges suunas ja avada Istio v\u00f5imalusi.<\/p>\n<p>Ja pidage meeles, et k\u00f5ik see on juba integreeritud Istiosse. Teatud programmeerimiskeelte (n\u00e4iteks Java) ja raamistike (nt Spring Boot) kasutamisel saab seda k\u00f5ike rakendada, puudutamata rakenduste enda koodi. Jah, koodi tuleb veidi muuta, kui kasutate teisi keeli, peamiselt Nodejs v\u00f5i C#. Kuid kuna j\u00e4lgitavus (loe: \u201elingitamine\u201d) on usaldusv\u00e4\u00e4rsete pilves\u00fcsteemide loomise \u00fcks kohustuslikke tingimusi, peate te igal juhul koodi muutma, olgu teil Istio v\u00f5i mitte. Miks siis mitte suunata oma j\u00f5upingutusi kasulikuma eesm\u00e4rgi nimel?<\/p>\n<p>Isegi selleks, et vastata k\u00fcsimustele \u201ekus?\u201d ja \u201ekui kiiresti?\u201d 100% kindlalt.<\/p>\n<h3>Kaosinseneria Istios: nii see oli ette n\u00e4htud<\/h3>\n<p><\/p>\n<h3>Asjade purustamise oskus aitab tagada, et need ei puruneks<\/h3>\n<p>\nTarkvara testimine on mitte ainult keeruline, vaid ka oluline. Samas on testimine, et kontrollida, kas funktsioon tagastab \u00f5ige tulemuse, \u00fcks asi, aga testimine usaldusv\u00e4\u00e4rse v\u00f5rgu tingimustes on hoopis teine \u00fclesanne (tihti arvatakse, et v\u00f5rk t\u00f6\u00f6tab alati t\u00f5rgeteta, ja see on esimene kaheksast eksitusest jaotatud arvutustes). \u00dcks raskusi selle \u00fclesande lahendamisel seisneb selles, kuidas simuleerida s\u00fcsteemi rikkeid v\u00f5i sisestada neid tahtlikult, tehes nii nimetatud fault injection. Seda saab teha, muutes rakenduse algkoodi. Kuid siis testite te mitte oma algset koodi, vaid selle versiooni, mis simuleerib spetsiaalselt rikkeid. Tulemusena riskite sattuda surmavate fault injection'ite embustesse ja kokku puutuda geisenbug'idega \u2013 t\u00f5rgetega, mis kaovad katsetamisel, et neid avastada.<\/p>\n<p>Ja n\u00fc\u00fcd n\u00e4itame, kuidas Istio aitab neid raskusi lahendada kiirelt ja lihtsalt.<\/p>\n<h3>Nii see v\u00e4lja n\u00e4eb, kui k\u00f5ik on suurep\u00e4raselt<\/h3>\n<p>\nKaalu j\u00e4rgmine stsenaarium: meil on kaks pod'i meie soovitusmikroteenuses, mille v\u00f5tsime Istio \u00f5pikust. \u00dcks pod on m\u00e4rgitud kui v1 ja teine kui v2. Nagu n\u00e4eme, t\u00f6\u00f6tab k\u00f5ik praegu suurep\u00e4raselt:<\/p>\n<p><img decoding=\"async\" alt=\"J\u00e4lgimine ja monitooring Istios: mikroteenused ja ebakindluse printsiip\" src=\"\/wp-content\/uploads\/2020\/01\/c50387b7cfd12298cfab8123f13b2ca4.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n(Muide, paremal number on lihtsalt igas pod'is tehtud k\u00f5nede loend)<\/p>\n<p>Aga me ei vaja t\u00f5epoolest seda, eks? Proovime siis k\u00f5ik purustada, puudutamata algseid koode.<\/p>\n<h3>Teeme mikroteenusele katkestusi<\/h3>\n<p>\nAllpool on n\u00e4idatud yaml-fail Istio marsruutimisreegli jaoks, mis pooltel juhtudel tekitab vea (veateate). <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/et\/server\/dts-los-angeles\/\"   title=\"serverid\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"3597\">serverid<\/a> 503):<\/p>\n<p><img decoding=\"async\" alt=\"J\u00e4lgimine ja monitooring Istios: mikroteenused ja ebakindluse printsiip\" src=\"\/wp-content\/uploads\/2020\/01\/8fb3ed7f16ed7fd1a57b27dfc3bfd2da.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nPange t\u00e4hele, et me kirjeldame selgelt, et pooltel juhtudel peab toimuma viga 503.<\/p>\n<p>Nii n\u00e4eb v\u00e4lja pildiscreenshot jooksutatud curl'i k\u00e4sust p\u00e4rast reegli aktiveerimist, et simuleerida katkestusi. Nagu n\u00e4eme, tagastab pool p\u00e4ringutest veateate 503, s\u00f5ltumata sellest, kas need suunatakse pod'ile v1 v\u00f5i v2:<\/p>\n<p><img decoding=\"async\" alt=\"J\u00e4lgimine ja monitooring Istios: mikroteenused ja ebakindluse printsiip\" src=\"\/wp-content\/uploads\/2020\/01\/3d9760cf5abc7480ad3aab826c274766.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nNormaalse t\u00f6\u00f6 taastamiseks piisab reegli kustutamisest, meie puhul k\u00e4suga istioctl delete routerule recommendation-503 -n tutorial. Siin on Tutorial Red Hat OpenShift'i projekti nimi, kus meie Istio \u00f5pik t\u00f6\u00f6tab.<\/p>\n<h3>Lisame kunstlikud viivitused<\/h3>\n<p>\nTehislikud 503 vead aitavad testida s\u00fcsteemi taluvust riketeks, kuid v\u00f5ime prognoosida ja hallata viivitusi peaks teid veelgi rohkem h\u00e4mmastama. Ja tegelikus elus esinevad viivitused sageli rohkem kui rikete probleemid. Aeglaselt t\u00f6\u00f6tav mikroteenus on m\u00fcrgine, mis m\u00f5jutab kogu s\u00fcsteemi. Istio abil saame testida koodi, mis k\u00e4sitleb viivitusi, seda muudatusi tegemata. Alustuseks n\u00e4itame, kuidas seda teha kunstlikult tekitatud v\u00f5rgu viivituste korral.<\/p>\n<p>Pange t\u00e4hele, et sellise testimise j\u00e4rel v\u00f5ib teil olla vajadus (v\u00f5i soov) oma koodi t\u00e4iendada. Hea uudis on see, et sellisel juhul tegutsete proaktiivselt, mitte reaktiivselt. Just nii peaks olema \u00fcles ehitatud arendusts\u00fckkel: kodeerimine-testeerimine-tagasiside-kodeerimine-testeerimine\u2026<\/p>\n<p>Nii n\u00e4eb v\u00e4lja reegel, mis\u2026 Kuigi teadsite, mis? Istio on nii lihtne ja see yaml-fail on nii arusaadav, et k\u00f5ik selles n\u00e4ites r\u00e4\u00e4gib ise enda eest, lihtsalt vaadake:<\/p>\n<p><img decoding=\"async\" alt=\"J\u00e4lgimine ja monitooring Istios: mikroteenused ja ebakindluse printsiip\" src=\"\/wp-content\/uploads\/2020\/01\/e077e891cbccc66ebc4d4c7b67a0f1ec.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nPooles juhtudel on meil 7-sekundiline viivitus. See ei ole sama, nagu oleksime sisestanud algkoodis k\u00e4su sleep, kuna Istio viivitab p\u00e4ringu tegelikult 7 sekundiks. Kuna Istio toetab Jaegeri j\u00e4litamist, on see viivitus selgelt n\u00e4htav Jaegeri kasutajaliideses, nagu on n\u00e4idatud alloleval ekraanipildil. Pange t\u00e4hele, et paremas \u00fclanurgas on pikk p\u00e4ring \u2013 selle kestus on 7,02 sekundit:<\/p>\n<p><img decoding=\"async\" alt=\"J\u00e4lgimine ja monitooring Istios: mikroteenused ja ebakindluse printsiip\" src=\"\/wp-content\/uploads\/2020\/01\/97a7b33fb7e0455973c7fd1b2aefadf3.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nSee stsenaarium v\u00f5imaldab testida koodi v\u00f5rgu viivituse tingimustes. On selge, et kui eemaldame selle reegli, eemaldame ka kunstliku viivituse. Kordame end, kuid me tegime k\u00f5ik selle, puutumatult algkoodi.<\/p>\n<h3>\u00c4rge tagasi astuge ja \u00e4rge alla andke<\/h3>\n<p>\nTeine kasulik funktsioon Istios, mis aitab kaosetehnoloogiate valdkonnas, on v\u00f5imalus teha teenusele korduvaid p\u00e4ringuid antud arvu kordi. Idee on see, et me ei katkestaks katseid, kui esimene p\u00e4ring l\u00f5ppeb veaga 503 \u2013 ja v\u00f5ib-olla, N-ndal korral \u00f5nnestub meil. V\u00f5ib-olla on teenus lihtsalt m\u00f5neks ajaks puhkusele l\u00e4inud. Jah, see p\u00f5hjus tuleks kindlasti v\u00e4lja selgitada ja k\u00f5rvaldada. Aga see on hiljem, praegu proovime s\u00fcsteemi t\u00f6\u00f6s hoida.<\/p>\n<p>Nii et me tahame, et teenus aeg-ajalt v\u00e4ljastaks vea 503, ja Istio p\u00fc\u00fcab sellele j\u00e4rgnevalt uuesti \u00fchendust v\u00f5tta. Siinkohal on kindlasti vaja viisi genereerida viga 503, muutmata koodi ise\u2026<\/p>\n<p>Peatu, oota! Me just tegime seda.<\/p>\n<p>See fail muudab nii, et teenus recommendation-v2 v\u00e4ljastab pooled korrad vea 503:<\/p>\n<p><img decoding=\"async\" alt=\"J\u00e4lgimine ja monitooring Istios: mikroteenused ja ebakindluse printsiip\" src=\"\/wp-content\/uploads\/2020\/01\/f446528f9c968e40cc2cf318cf0acde9.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nIlmselgelt osa p\u00e4ringutest l\u00f5ppeb eba\u00f5nnestumisega:<\/p>\n<p><img decoding=\"async\" alt=\"J\u00e4lgimine ja monitooring Istios: mikroteenused ja ebakindluse printsiip\" src=\"\/wp-content\/uploads\/2020\/01\/f998513746604beda241b8d6de2ed727.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nN\u00fc\u00fcd rakendame Istio retry funktsiooni:<\/p>\n<p><img decoding=\"async\" alt=\"J\u00e4lgimine ja monitooring Istios: mikroteenused ja ebakindluse printsiip\" src=\"\/wp-content\/uploads\/2020\/01\/32e210b6ecbf4c1ecf121ee73e64ba35.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nSee marsruutingureegel teeb kolm kordust kahe sekundi intervalliga ja peaks v\u00e4hendama (ideaalis t\u00e4iesti k\u00f5rvaldama) vea 503:<\/p>\n<p><img decoding=\"async\" alt=\"J\u00e4lgimine ja monitooring Istios: mikroteenused ja ebakindluse printsiip\" src=\"\/wp-content\/uploads\/2020\/01\/7f9711c52949072b823399e59141cb64.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nKokkuv\u00f5tteks k\u00fcsime: kuidas Istio, k\u00f5igepealt, genereerib 503 viga poolele p\u00e4ringutele. Ja teiseks, sama Istio teeb kolm katset, et uuesti \u00fchendust v\u00f5tta teenusega 503 vea ilmnemisel. Tulemuseks t\u00f6\u00f6tab k\u00f5ik suurep\u00e4raselt. Seega, kasutades Retry funktsiooni, t\u00e4itsime oma lubaduse mitte alla anda.<\/p>\n<p>Ja jah, me tegime seda taas, puudutamata koodi. K\u00f5ik, mis meil vaja oli, oli kaks Istio marsruutimise reeglit:<\/p>\n<p><img decoding=\"async\" alt=\"J\u00e4lgimine ja monitooring Istios: mikroteenused ja ebakindluse printsiip\" src=\"\/wp-content\/uploads\/2020\/01\/c21a1cfd2d78ae4145a57d1cefcc6c59.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<h3>Kuidas mitte kasutajat alt vedada v\u00f5i seitsme\u00fche ootamine<\/h3>\n<p>\nJa n\u00fc\u00fcd keerame olukorra tagurpidi ja vaatame stsenaariumi, kus mitte alla anda on \u00f5igustatud ainult m\u00e4\u00e4ratud ajavahemiku jooksul. Ja siis tuleb lihtsalt katsetest loobuda, et mitte sundida k\u00f5iki ootama \u00fchte aeglast teenust. Teisis\u00f5nu, me ei kaitse kaduma l\u00e4inud positsiooni, vaid taganeme varupositsioonile, et mitte kasutajat petta ja mitte sundida teda teadmatuses vaevlema.<\/p>\n<p>Istios on v\u00f5imalik seada p\u00e4ringu t\u00e4itmise ajapiirang. Kui teenus \u00fcletab selle ajapiirangu, tagastatakse viga 504 (Gateway Timeout) \u2013 k\u00f5ik see toimub taas l\u00e4bi Istio konfiguratsiooni. Kuid meil tuleb lisada teenuse l\u00e4htekoodi k\u00e4sk sleep (ja seej\u00e4rel loomulikult teha rebuild ja redeploy), et simuleerida teenuse aeglast t\u00f6\u00f6d. Kahjuks muidu ei \u00f5nnestu.<\/p>\n<p>Nii et me lisasime teenuse recommendation v2 koodis kolmese kunduses sleep, rekonstrueerisime vastava pildi ja tegime konteineri rediplomatise, n\u00fc\u00fcd lisame ajapiirangu j\u00e4rgmise Istio marsruutimise reegli kaudu:<\/p>\n<p><img decoding=\"async\" alt=\"J\u00e4lgimine ja monitooring Istios: mikroteenused ja ebakindluse printsiip\" src=\"\/wp-content\/uploads\/2020\/01\/c03fc452b98dd875a8a7d3ac561893ca.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n\u00dclaltoodud ekraanipildilt on n\u00e4ha, et katkestame katse \u00fchendust v\u00f5tta teenusega recommendation, kui me ei saa vastust \u00fche sekundi jooksul, st isegi enne, kui 504 viga esineb. P\u00e4rast selle marsruutimise reegli rakendamist (ja kolme sekundi sleep'i lisamist teenuse recommendation:v2 koodi) saame j\u00e4rgmist:<\/p>\n<p><img decoding=\"async\" alt=\"J\u00e4lgimine ja monitooring Istios: mikroteenused ja ebakindluse printsiip\" src=\"\/wp-content\/uploads\/2020\/01\/ed6e80052c67254718b1fde2bd873e71.png\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nKorrame j\u00e4lle, kuid ajapiirangut saab seadistada, puudutamata l\u00e4htekoodi. T\u00e4iendav boonus on see, et n\u00fc\u00fcd saate oma koodi muuta nii, et see reageerib ajapiirangule, ja h\u00f5lpsasti testida neid muudatusi Istio abil.<\/p>\n<h3>Ja n\u00fc\u00fcd k\u00f5ik koos<\/h3>\n<p>\nIsto'ga kaose toomis on suurep\u00e4rane viis katsetada oma koodi ja kogu s\u00fcsteemi usaldusv\u00e4\u00e4rsust. Tagasil\u00f6\u00f6gimallid, bulkhead ja circuit breaker, kunstlike rike ja viivitusmehhanismid, samuti uuesti kutsumised ja aja\u00fclemised on \u00e4\u00e4rmiselt kasulikud usaldusv\u00e4\u00e4rsete pilves\u00fcsteemide loomisel. Koos Kubernetes'i ja Red Hat OpenShift'iga aitavad need t\u00f6\u00f6riistad tulevikku kindlalt siseneda.<br \/>\n<br \/>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/redhatrussia\/blog\/485136\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u043d\u0446\u0438\u043f \u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0413\u0435\u0439\u0437\u0435\u043d\u0431\u0435\u0440\u0433\u0430 \u0433\u043b\u0430\u0441\u0438\u0442, \u0447\u0442\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0438\u0437\u043c\u0435\u0440\u0438\u0442\u044c \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0438 \u0435\u0433\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c. \u0415\u0441\u043b\u0438 \u043e\u0431\u044a\u0435\u043a\u0442 \u0434\u0432\u0438\u0436\u0435\u0442\u0441\u044f, \u0442\u043e \u0443 \u043d\u0435\u0433\u043e \u043d\u0435\u0442 \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f. \u0410 \u0435\u0441\u043b\u0438 \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0435\u0441\u0442\u044c \u2013 \u0437\u043d\u0430\u0447\u0438\u0442 \u0443 \u043d\u0435\u0433\u043e \u043d\u0435\u0442 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u0438. \u0427\u0442\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u043e\u0432 \u043d\u0430 \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435 Red Hat OpenShift (\u0438 \u043f\u043e\u0434 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c Kubernetes), \u0442\u043e \u0431\u043b\u0430\u0433\u043e\u0434\u0430\u0440\u044f \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u043c\u0443 \u0441\u043e\u0444\u0442\u0443 \u0441 \u043e\u0442\u043a\u0440\u044b\u0442\u044b\u043c \u043a\u043e\u0434\u043e\u043c \u043e\u043d\u0438 \u043c\u043e\u0433\u0443\u0442 \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0440\u0430\u043f\u043e\u0440\u0442\u043e\u0432\u0430\u0442\u044c \u043a\u0430\u043a [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-55700","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.0.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u043d\u0446\u0438\u043f \u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0413\u0435\u0439\u0437\u0435\u043d\u0431\u0435\u0440\u0433\u0430 \u0433\u043b\u0430\u0441\u0438\u0442, \u0447\u0442\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0438\u0437\u043c\u0435\u0440\u0438\u0442\u044c \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0438 \u0435\u0433\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c. \u0415\u0441\u043b\u0438 \u043e\u0431\u044a\u0435\u043a\u0442 \u0434\u0432\u0438\u0436\u0435\u0442\u0441\u044f, \u0442\u043e \u0443 \u043d\u0435\u0433\u043e \u043d\u0435\u0442 \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f.\" \/>\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\/et\/blog\/administrirovanie\/trassirovka-i-monitoring-v-istio-mikroservisy-i-printsip-neopredelennosti\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.0.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\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\udd47\u0422\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0430 \u0438 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u0432 Istio: \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u044b \u0438 \u043f\u0440\u0438\u043d\u0446\u0438\u043f \u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0441\u0442\u0438 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u043d\u0446\u0438\u043f \u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0413\u0435\u0439\u0437\u0435\u043d\u0431\u0435\u0440\u0433\u0430 \u0433\u043b\u0430\u0441\u0438\u0442, \u0447\u0442\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0438\u0437\u043c\u0435\u0440\u0438\u0442\u044c \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0438 \u0435\u0433\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c. \u0415\u0441\u043b\u0438 \u043e\u0431\u044a\u0435\u043a\u0442 \u0434\u0432\u0438\u0436\u0435\u0442\u0441\u044f, \u0442\u043e \u0443 \u043d\u0435\u0433\u043e \u043d\u0435\u0442 \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/trassirovka-i-monitoring-v-istio-mikroservisy-i-printsip-neopredelennosti\" \/>\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=\"2020-01-25T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:03:50+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\udd47J\u00e4lgimine ja j\u00e4lgimine Istios: mikroteenused ja ebamugavuste p\u00f5him\u00f5te | ProHoster","description":"Heisenbergi m\u00e4\u00e4ramatuse printsiip \u00fctleb, et ei saa samal ajal m\u00f5\u00f5ta objekti asukohta ja selle kiirus. Kui objekt liigub, siis tal ei ole kindlat asukohta.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/trassirovka-i-monitoring-v-istio-mikroservisy-i-printsip-neopredelennosti","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","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\udd47\u0422\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0430 \u0438 \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433 \u0432 Istio: \u043c\u0438\u043a\u0440\u043e\u0441\u0435\u0440\u0432\u0438\u0441\u044b \u0438 \u043f\u0440\u0438\u043d\u0446\u0438\u043f \u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0441\u0442\u0438 | ProHoster","og:description":"\u041f\u0440\u0438\u043d\u0446\u0438\u043f \u043d\u0435\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u043e\u0441\u0442\u0438 \u0413\u0435\u0439\u0437\u0435\u043d\u0431\u0435\u0440\u0433\u0430 \u0433\u043b\u0430\u0441\u0438\u0442, \u0447\u0442\u043e \u043d\u0435\u043b\u044c\u0437\u044f \u043e\u0434\u043d\u043e\u0432\u0440\u0435\u043c\u0435\u043d\u043d\u043e \u0438\u0437\u043c\u0435\u0440\u0438\u0442\u044c \u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043e\u0431\u044a\u0435\u043a\u0442\u0430 \u0438 \u0435\u0433\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c. \u0415\u0441\u043b\u0438 \u043e\u0431\u044a\u0435\u043a\u0442 \u0434\u0432\u0438\u0436\u0435\u0442\u0441\u044f, \u0442\u043e \u0443 \u043d\u0435\u0433\u043e \u043d\u0435\u0442 \u043c\u0435\u0441\u0442\u043e\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f.","og:url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/trassirovka-i-monitoring-v-istio-mikroservisy-i-printsip-neopredelennosti","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":"2020-01-25T21:00:00+00:00","article:modified_time":"2020-02-18T11:03:50+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"55700","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":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 19:38:32","updated":"2026-02-22 15:29:16","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/55700","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=55700"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/55700\/revisions"}],"predecessor-version":[{"id":162124,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/55700\/revisions\/162124"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=55700"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=55700"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=55700"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}