Istio Circuit Breaker: a’ cur às do shoithichean lochtach

Tha na saor-làithean seachad agus tha sinn air ais leis an dàrna post againn san t-sreath Istio Service Mesh.

Istio Circuit Breaker: a’ cur às do shoithichean lochtach

Is e cuspair an latha an-diugh Circuit Breaker, a tha air eadar-theangachadh gu innleadaireachd dealain Ruiseanach a’ ciallachadh “circuit breaker”, ann an co-theacsa cumanta - “circuit breaker”. Is ann dìreach ann an Istio chan eil an inneal seo a’ dì-cheangal cuairt ghoirid no cus cuideim, ach soithichean lochtach.

Mar a bu chòir seo obrachadh gu dòigheil

Nuair a bhios microservices air an riaghladh le Kubernetes, mar eisimpleir taobh a-staigh an àrd-ùrlar OpenShift, bidh iad gu fèin-ghluasadach a ’sgèile suas is sìos a rèir an luchd. Leis gu bheil meanbh-sheirbheisean a’ ruith ann am pods, faodaidh iomadh suidheachadh a bhith ann de mhicro-sheirbheis soithich air aon cheann-uidhe, agus bidh Kubernetes a’ stiùireadh iarrtasan agus a’ luchdachadh cothromachadh eatorra. Agus - gu h-iomchaidh - bu chòir seo uile obrachadh gu foirfe.

Tha sinn a’ cuimhneachadh gu bheil meanbh-sheirbheisean beag agus neo-sheasmhach. Gu tric chan eilear a’ dèanamh dìmeas air neo-sheasmhachd, a tha an seo a’ ciallachadh cho furasta ‘s a tha e nochdadh agus a dhol à sealladh. Tha breith agus bàs eisimpleir eile de mhicro-sheirbheis ann am pod nan rudan ris a bheil dùil, tha OpenShift agus Kubernetes a’ làimhseachadh seo gu math, agus tha a h-uile dad ag obair gu math - ach a-rithist ann an teòiridh.

Mar a tha e dha-rìribh ag obair

A-nis smaoinich gu bheil eisimpleir sònraichte de mhicro-sheirbheis, is e sin, soitheach, air fàs neo-chliùiteach: an dara cuid chan eil e a 'freagairt (mearachd 503), no, dè a tha nas mì-thlachdmhor, bidh e a' freagairt, ach ro shlaodach. Ann am briathran eile, bidh e glitchy no a 'freagairt ri iarrtasan, ach chan eil e gu fèin-obrachail a thoirt air falbh bhon amar. Dè bu chòir a dhèanamh sa chùis seo? Gus feuchainn a-rithist? Am bu chòir dhomh a thoirt air falbh bhon sgeama slighe? Agus dè tha “ro shlaodach” a’ ciallachadh – cia mheud a tha ann an àireamhan, agus cò a bhios gan dearbhadh? Is dòcha dìreach thoir fois dha agus feuch ris a-rithist nas fhaide air adhart? Ma tha, dè cho fada às deidh sin?

Dè a th’ ann an Pool Ejection ann an Istio

Agus an seo tha Istio a’ tighinn gu teasairginn leis na h-innealan dìon Circuit Breaker aige, a bheir air falbh soithichean lochtach airson ùine ghoirid bhon amar goireas sligheachaidh is cothromachaidh luchdan, a’ cur an gnìomh modh Pool Ejection.

A’ cleachdadh ro-innleachd lorgaidh a-muigh, bidh Istio a’ lorg cromagan pod a tha a-mach à loidhne agus gan toirt a-mach às an amar ghoireasan airson ùine ro-shuidhichte, ris an canar uinneag cadail.

Gus sealltainn mar a tha seo ag obair ann an Kubernetes air an àrd-ùrlar OpenShift, tòisichidh sinn le dealbh-sgrìn de mhicro-sheirbheisean a tha ag obair gu h-àbhaisteach bhon eisimpleir san stòr Demos leasaiche Red Hat. An seo tha dà shlat againn, v1 agus v2, gach fear a’ ruith aon soitheach. Nuair nach eilear a’ cleachdadh riaghailtean slighe Istio, tha Kubernetes a’ diùltadh slighe robin cruinn a tha cothromach:

Istio Circuit Breaker: a’ cur às do shoithichean lochtach

Ag ullachadh airson fàilligeadh

Mus dèan thu Pool Ejection, feumaidh tu riaghailt slighe Istio a chruthachadh. Canaidh sinn gu bheil sinn airson iarrtasan a sgaoileadh eadar pods ann an co-mheas 50/50. A bharrachd air an sin, àrdaichidh sinn an àireamh de shoithichean v2 bho aon gu dhà, mar seo:

oc scale deployment recommendation-v2 --replicas=2 -n tutorial

A-nis tha sinn a 'suidheachadh riaghailt slighe gus am bi trafaig air a chuairteachadh eadar pods ann an co-mheas 50/50.

Istio Circuit Breaker: a’ cur às do shoithichean lochtach
Seo cò ris a tha toradh na riaghailt seo coltach:

Istio Circuit Breaker: a’ cur às do shoithichean lochtach
Gheibh thu coire leis nach eil an scrion seo 50/50, ach 14:9, ach le ùine thig piseach air an t-suidheachadh.

A 'dèanamh glitch

A-nis leig leinn aon den dà shoitheach v2 a chuir dheth gus am bi aon inneal v1 fallain againn, aon inneal v2 fallain agus aon inneal v2 lochtach:

Istio Circuit Breaker: a’ cur às do shoithichean lochtach

A 'càradh an glitch

Mar sin, tha inneal lochtach againn, agus tha an t-àm ann airson Pool Ejection. A’ cleachdadh config gu math sìmplidh, cuiridh sinn a-mach an soitheach seo a dh’ fhàillig bho sgeamaichean slighe sam bith airson 15 diogan an dòchas gun till e gu staid fhallain (an dàrna cuid ath-thòiseachadh no coileanadh a thoirt air ais). Seo cò ris a tha an rèiteachadh seo coltach agus toraidhean na h-obrach aige:

Istio Circuit Breaker: a’ cur às do shoithichean lochtach
Istio Circuit Breaker: a’ cur às do shoithichean lochtach
Mar a chì thu, chan eil an soitheach v2 a dh’ fhàillig air a chleachdadh tuilleadh airson iarrtasan slighe oir chaidh a thoirt a-mach às an amar. Ach às deidh 15 diogan tillidh e gu fèin-ghluasadach chun amar. Gu fìrinneach, sheall sinn dìreach mar a tha Pool Ejection ag obair.

Feuch an tòisich sinn a 'togail ailtireachd

Leigidh Pool Ejection, còmhla ri comasan sgrùdaidh Istio, leat tòiseachadh air frèam a thogail airson soithichean lochtach a chuir an àite gu fèin-ghluasadach gus ùine downt agus fàilligidhean a lughdachadh, mura cuir às.

Tha aon fhacal-suaicheantais aig NASA - Chan eil Failure na Roghainn, agus thathas den bheachd gur e an t-ùghdar an stiùiriche itealaich Gene Kranz. Faodar eadar-theangachadh gu Ruisis mar “Chan e roghainn a th’ ann an fàilligeadh," agus is e an ciall an seo gum faodar toirt air a h-uile dad obrachadh ma tha toil gu leòr agad. Ach, ann am fìor bheatha, chan eil fàilligidhean dìreach a’ tachairt, tha iad do-sheachanta, anns a h-uile àite agus anns a h-uile càil. Agus ciamar a dhèiligeas iad riutha ann an cùis microservices? Nar beachd-ne, tha e nas fheàrr a bhith an urra chan ann air cumhachd tiomnaidh, ach air comasan soithichean, Kubernetes, Red Red OpenShiftagus Istio.

Tha Istio, mar a sgrìobh sinn gu h-àrd, a 'cur an gnìomh bun-bheachd luchd-briseadh cuairte, a tha air a dhearbhadh gu math anns an t-saoghal chorporra. Agus dìreach mar a bhios inneal-brisidh cuairteachaidh dealain a’ tionndadh earrann duilgheadas de chuairt, bidh bathar-bog Istio Circuit Breaker a’ fosgladh a’ cheangail eadar sruth iarrtasan agus soitheach trioblaid nuair a tha rudeigin ceàrr air a’ phuing-deiridh, mar eisimpleir, nuair a thuit am frithealaiche no nuair a thòisich e air. Air do shocair.

A bharrachd air an sin, anns an dàrna cùis chan eil ann ach barrachd dhuilgheadasan, leis gu bheil breicichean aon shoitheach chan ann a-mhàin ag adhbhrachadh casg de dhàil anns na seirbheisean a tha ga ruigsinn agus, mar thoradh air sin, a ’lughdachadh coileanadh an t-siostam gu h-iomlan, ach cuideachd a’ gineadh grunn thursan. iarrtasan gu seirbheis a tha mar-thà slaodach, a nì dìreach an suidheachadh nas miosa.

Circuit Breaker ann an teòiridh

Tha Circuit Breaker na neach-ionaid a bhios a’ cumail smachd air sruthadh iarrtasan gu puing crìochnachaidh. Nuair a stadas a’ phuing seo ag obair no, a rèir nan roghainnean a chaidh a shònrachadh, a’ tòiseachadh a’ fàs nas slaodaiche, brisidh an neach-ionaid an ceangal ris a’ ghobhar. Thèid trafaic an uairsin ath-stiùireadh gu soithichean eile, dìreach mar thoradh air cothromachadh luchdan. Tha an ceangal fhathast fosgailte airson uinneag cadail sònraichte, abair dà mhionaid, agus an uairsin air a mheas leth-fhosgailte. Bidh oidhirp air an ath iarrtas a chuir a-steach a’ dearbhadh staid a’ cheangail a bharrachd. Ma tha a h-uile càil ceart gu leòr leis an t-seirbheis, tillidh an ceangal gu suidheachadh obrach agus a-rithist bidh e dùinte. Ma tha rudeigin ceàrr air an t-seirbheis fhathast, tha an ceangal air a dhì-cheangal agus tha an uinneag cadail air a chomasachadh a-rithist. Seo cò ris a tha diagram stàite Circuit Breaker coltach:

Istio Circuit Breaker: a’ cur às do shoithichean lochtach
Tha e cudromach toirt fa-near an seo gu bheil seo uile a’ tachairt aig ìre, mar sin a bhruidhinn, ailtireachd siostam. Mar sin aig àm air choreigin feumaidh tu na tagraidhean agad a theagasg gus obrachadh le Circuit Breaker, leithid a bhith a’ toirt seachad luach bunaiteach mar fhreagairt no, ma ghabhas e dèanamh, a’ seachnadh gu bheil an t-seirbheis ann. Thathas a’ cleachdadh pàtran ceann mòr airson seo, ach tha e taobh a-muigh farsaingeachd an artaigil seo.

Circuit Breaker ann an cleachdadh

Mar eisimpleir, ruithidh sinn dà dhreach den mhion-sheirbheis molaidh againn air OpenShift. Obraichidh dreach 1 gu math, ach ann an v2 togaidh sinn dàil gus a bhith coltach ri slaodachadh air an fhrithealaiche. Gus na toraidhean fhaicinn, cleachd an inneal sèist:

siege -r 2 -c 20 -v customer-tutorial.$(minishift ip).nip.io

Istio Circuit Breaker: a’ cur às do shoithichean lochtach
Tha e coltach gu bheil a h-uile dad ag obair, ach dè a chosgais? Aig a’ chiad sealladh, tha cothrom 100% againn, ach thoir sùil nas mionaidiche - tha an ùine malairt as àirde cho mòr ri 12 diogan. Tha seo gu soilleir na bhotal agus feumar a leudachadh.

Gus seo a dhèanamh, cleachdaidh sinn Istio gus cuir às do ghairmean gu soithichean slaodach. Seo mar a tha an rèiteachadh co-fhreagarrach coltach a’ cleachdadh Circuit Breaker:

Istio Circuit Breaker: a’ cur às do shoithichean lochtach
Tha an loidhne mu dheireadh leis a’ pharameter httpMaxRequestsPerConnection a’ comharrachadh gum bu chòir an ceangal a bhith air a dhì-cheangal nuair a thathar a’ feuchainn ri ceangal eile - an dàrna fear - a chruthachadh a bharrachd air an fhear a th’ ann mar-thà. Leis gu bheil an soitheach againn coltach ri seirbheis slaodach, èiridh suidheachaidhean mar sin bho àm gu àm, agus an uairsin tillidh Istio mearachd 503, ach is e seo a sheallas an t-sèist:

Istio Circuit Breaker: a’ cur às do shoithichean lochtach

Ceart gu leòr, tha Circuit Breaker againn, dè an ath rud?

Mar sin, chuir sinn an gnìomh dùnadh fèin-ghluasadach gun a bhith a’ beantainn ri còd stòr nan seirbheisean fhèin idir. A’ cleachdadh Circuit Breaker agus am modh-obrach Pool Ejection a tha air a mhìneachadh gu h-àrd, is urrainn dhuinn soithichean breic a thoirt air falbh bhon amar ghoireasan gus an till iad gu àbhaisteach, agus sùil a thoirt air an inbhe aca aig tricead sònraichte - san eisimpleir againn, is e seo dà mhionaid (parameter cadailWindow).

Thoir an aire gu bheil comas tagradh freagairt a thoirt do mhearachd 503 fhathast air a shuidheachadh aig ìre còd an tùs. Tha mòran ro-innleachdan ann airson Circuit Breaker a chleachdadh, a rèir an t-suidheachaidh.

Anns an ath phost: Bruidhnidh sinn mu dheidhinn an lorg agus an sgrùdadh a tha mar-thà air a thogail a-steach no air a chuir ri Istio gu furasta, a bharrachd air mar as urrainn dhut mearachdan a thoirt a-steach don t-siostam a dh’aona ghnothach.

Source: www.habr.com

Cuir beachd ann