Istio Circuit Breaker: manafoana ny kaontenera diso

Tapitra ny fialan-tsasatra ary miverina miaraka amin'ny lahatsoratra faharoa amin'ny andiany Istio Service Mesh isika.

Istio Circuit Breaker: manafoana ny kaontenera diso

Ny lohahevitra androany dia ny Circuit Breaker, izay nadika amin'ny teny rosiana injeniera elektrika dia midika hoe "fampiato ny circuit", amin'ny fiteny mahazatra - "mpikatroka circuit". Ao amin'ny Istio ihany io milina io dia tsy manala ny circuit shorted na overloaded, fa ny kaontenera diso.

Ahoana no tokony hiasa tsara indrindra

Rehefa tantanan'ny Kubernetes ny microservices, ohatra ao anatin'ny sehatra OpenShift, dia miakatra sy midina ho azy ireo arakaraka ny entana. Satria ny microservices dia mandeha amin'ny pods, dia mety misy tranga maromaro amin'ny microservice voatahiry amin'ny teboka iray, ary ny Kubernetes dia handefa fangatahana sy hampifandanja ny entana eo anelanelan'izy ireo. Ary - ny tsara indrindra - izany rehetra izany dia tokony hiasa tsara.

Tsaroanay fa ny microservices dia kely sy mihelina. Ny ephemerality, izay midika eto hoe mora miseho sy manjavona, dia matetika atao ambanin-javatra. Ny fahaterahana sy ny fahafatesan'ny ohatra iray hafa amin'ny microservice ao anaty pod dia zavatra tena andrasana, ny OpenShift sy Kubernetes dia mitantana tsara izany, ary mandeha tsara ny zava-drehetra - fa amin'ny teoria indray.

Ahoana no tena miasa

Alao sary an-tsaina izao fa lasa tsy azo ampiasaina ny ohatra iray manokana amin'ny microservice, izany hoe, container iray: na tsy mamaly (error 503), na, ny tena tsy mahafinaritra, dia mamaly, fa miadana loatra. Raha lazaina amin'ny teny hafa dia lasa manjavozavo na tsy mamaly ny fangatahana, fa tsy esorina ho azy ao anaty dobo. Inona no tokony hatao amin'ity tranga ity? Hanandrana indray? Tokony esorina amin'ny teti-pilalaovana ve aho? Ary inona no dikan'ny hoe "miadana loatra" - firy ny isa, ary iza no mamaritra azy ireo? Avelao kely fotsiny angamba dia andramo indray rehefa avy eo? Raha eny, ohatrinona avy eo?

Inona no atao hoe Pool Ejection ao Istio

Ary eto dia tonga hamonjy ny Istio miaraka amin'ireo milina mpiaro ny Circuit Breaker, izay manala vonjimaika ireo kaontenera diso ao amin'ny dobo loharanon-karena fampitaovana sy fampifandanjana entana, amin'ny fampiharana ny fomba Ejection Pool.

Amin'ny fampiasana paikadin'ny fitsirihana lavitra kokoa, i Istio dia mahita ireo pods miolakolaka izay tsy eo amin'ny tsipika ary manala azy ireo ao amin'ny dobo loharano mandritra ny fotoana voafaritra, antsoina hoe varavarankely torimaso.

Mba hampisehoana ny fomba fiasan'izany ao amin'ny Kubernetes amin'ny sehatra OpenShift, andao hanomboka amin'ny pikantsary misy microservices miasa mahazatra avy amin'ny ohatra ao amin'ny tahiry. Demo Developer Red Hat. Eto isika dia manana pods roa, v1 sy v2, samy mitondra fitoeran-javatra iray. Rehefa tsy ampiasaina ny fitsipiky ny zotra Istio, ny Kubernetes dia tsy mivadika amin'ny fandalovana round-robin mifandanja tsara:

Istio Circuit Breaker: manafoana ny kaontenera diso

Miomana amin'ny fianjerana

Alohan'ny hanaovana Pool Ejection dia mila mamorona fitsipika zotra Istio ianao. Andeha atao hoe te hizara fangatahana eo amin'ny pods amin'ny tahan'ny 50/50. Ho fanampin'izany, hampitombo ny isan'ny kaontenera v2 ho roa isika, toy izao:

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

Ankehitriny dia mametraka fitsipika zotra izahay mba hizarana ny fifamoivoizana eo amin'ny pods amin'ny tahan'ny 50/50.

Istio Circuit Breaker: manafoana ny kaontenera diso
Toy izao ny vokatr'ity fitsipika ity:

Istio Circuit Breaker: manafoana ny kaontenera diso
Azonao atao ny mahita hadisoana amin'ny hoe tsy 50/50 ity efijery ity, fa 14: 9, fa rehefa mandeha ny fotoana dia hihatsara ny toe-javatra.

Manao glitch

Andeha isika hanaisotra ny iray amin'ireo kaontenera v2 roa mba hananantsika kaontenera v1 salama, fitoeran-javatra v2 salama ary fitoeran-javatra v2 iray diso:

Istio Circuit Breaker: manafoana ny kaontenera diso

Fanamboarana ny glitch

Noho izany, manana kaontenera diso izahay, ary fotoanan'ny Ejection Pool izao. Amin'ny fampiasana config tena tsotra, dia hanilika ity kaontenera tsy nahomby ity amin'ny teti-pilalaovana rehetra mandritra ny 15 segondra amin'ny fanantenana fa hiverina amin'ny toe-pahasalamana (na mamerina na mamerina ny zava-bita). Toy izao ny endriky ity config ity sy ny vokatry ny asany:

Istio Circuit Breaker: manafoana ny kaontenera diso
Istio Circuit Breaker: manafoana ny kaontenera diso
Araka ny hitanao, ny kaontenera v2 tsy nahomby dia tsy ampiasaina intsony amin'ny fangatahana zotra satria nesorina tao anaty dobo. Fa rehefa afaka 15 segondra dia hiverina ho azy ao amin'ny dobo. Raha ny marina, nasehonay fotsiny ny fomba fiasan'ny Pool Ejection.

Andao hanomboka hanorina architecture

Pool Ejection, miaraka amin'ny fahaiza-manara-maso an'i Istio, dia ahafahanao manomboka manangana rafitra fanoloana ho azy ireo kaontenera diso mba hampihenana, raha tsy manafoana, ny fahatapahana sy ny tsy fahombiazana.
 
Manana teny filamatra mafy iray ny NASA - Tsy safidy ny tsy fahombiazana, ny mpanoratra azy dia heverina ho talen'ny sidina. Gene Kranz. Azo adika amin'ny teny Rosiana hoe "Tsy safidy ny tsy fahombiazana", ary ny dikany eto dia ny hoe azo atao ny miasa ny zava-drehetra raha manana finiavana ampy ianao. Na izany aza, amin'ny tena fiainana, ny tsy fahombiazana dia tsy mitranga fotsiny, tsy azo ihodivirana, na aiza na aiza ary amin'ny zava-drehetra. Ary ahoana ny fomba hiatrehana azy ireo amin'ny raharaha microservice? Araka ny hevitray, tsara kokoa ny miantehitra tsy amin'ny finiavana, fa amin'ny fahaizan'ny kaontenera, Kubernetes, RedHat OpenShiftary Istio.

Istio, araka ny nosoratanay etsy ambony, dia mampihatra ny foto-kevitry ny fiatoana amin'ny faritra, izay nanaporofo tsara ny tenany teo amin'ny tontolo ara-batana. Ary sahala amin'ny famonoan'ny mpanelanelana elektrika ny faritra misy olana amin'ny faritra iray, ny rindrankajy Istio Circuit Breaker dia manokatra ny fifandraisana misy eo amin'ny reniranon'ny fangatahana sy ny fitoeran-javatra misy olana rehefa misy zavatra tsy mety amin'ny teboka farany, ohatra, rehefa nianjera ny mpizara na nanomboka nianjera. moramora.

Ankoatr'izay, amin'ny tranga faharoa dia misy olana bebe kokoa, satria ny frein'ny kaontenera iray dia tsy vitan'ny hoe miteraka fahatarana amin'ny serivisy miditra aminy ary, vokatr'izany, mampihena ny fahombiazan'ny rafitra amin'ny ankapobeny, fa miteraka miverimberina. fangatahana amin'ny serivisy efa mandeha miadana, izay vao mainka mampitombo ny toe-javatra .

Circuit Breaker amin'ny teoria

Circuit Breaker dia proxy mifehy ny fikorianan'ny fangatahana mankany amin'ny teboka iray. Rehefa tsy miasa intsony ity teboka ity na, miankina amin'ny toe-javatra voatondro, dia manomboka miadana, ny proxy dia tapaka ny fifandraisana amin'ny fitoeran-javatra. Avy eo dia alefa any amin'ny kaontenera hafa ny fifamoivoizana, noho ny fifandanjana entana fotsiny. Misokatra ho an'ny varavarankelin'ny torimaso nomena ny fifandraisana, hoy ny roa minitra, ary avy eo dia heverina fa misokatra. Ny fanandramana handefa ny fangatahana manaraka dia mamaritra ny toetry ny fifandraisana. Raha OK ny zava-drehetra amin'ny serivisy dia miverina amin'ny toe-javatra miasa ny fifandraisana ary mihidy indray. Raha mbola misy zavatra tsy mety amin'ny serivisy dia tapaka ny fifandraisana ary alefa indray ny varavarankelin'ny torimaso. Toy izao ny sarin'ny fanjakan'ny Circuit Breaker notsorina:

Istio Circuit Breaker: manafoana ny kaontenera diso
Zava-dehibe ny manamarika eto fa izany rehetra izany dia mitranga amin'ny haavon'ny rafitra rafitra. Noho izany, amin'ny fotoana iray dia tsy maintsy mampianatra ny fampiharana anao ianao hiara-miasa amin'ny Circuit Breaker, toy ny fanomezana sanda default ho valiny na, raha azo atao, tsy miraharaha ny fisian'ny serivisy. Misy lamina sandoka ampiasaina amin'izany, saingy mihoatra ny sahan'ity lahatsoratra ity.

Circuit Breaker amin'ny fampiharana

Ohatra, hamoaka dikan-teny roa amin'ny microservice izahay amin'ny OpenShift. Ny dikan-teny 1 dia hiasa tsara, fa ao amin'ny v2 dia hanorina ao anatin'ny fahatarana isika mba hanaraha-maso ny fihenan'ny serivisy. Mba hijerena ny vokatra dia ampiasao ny fitaovana fahirano:

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

Istio Circuit Breaker: manafoana ny kaontenera diso
Toa mandeha ny zava-drehetra, nefa amin'ny vidiny inona? Raha vao jerena dia manana fahafahana 100% isika, fa jereo akaiky - ny faharetan'ny fifampiraharahana ambony indrindra dia 12 segondra. Mazava ho azy fa fahasembanana izany ary mila velarina.

Mba hanaovana izany dia hampiasa Istio izahay mba hanafoanana ny antso amin'ny fitahirizana miadana. Toy izao ny endriky ny config mifanaraka amin'izany amin'ny fampiasana Circuit Breaker:

Istio Circuit Breaker: manafoana ny kaontenera diso
Ny andalana farany miaraka amin'ny mari-pamantarana httpMaxRequestsPerConnection dia manondro fa ny fifandraisana amin'ny dia tokony ho tapaka rehefa manandrana mamorona hafa - faharoa - fifandraisana ankoatry ny efa misy. Koa satria ny kaontenintsika dia manamboatra serivisy miadana, ny toe-javatra toy izany dia hipoitra tsindraindray, ary avy eo i Istio dia hamerina fahadisoana 503, fa izao no haseho ny fahirano:

Istio Circuit Breaker: manafoana ny kaontenera diso

OK, manana Circuit Breaker izahay, inona no manaraka?

Noho izany, nampiato ny fanakatonana mandeha ho azy izahay nefa tsy nikasika ny kaody loharanon'ny serivisy mihitsy. Amin'ny fampiasana ny Circuit Breaker sy ny fomba fandroahana dobo voalaza etsy ambony, dia azontsika atao ny manaisotra ireo kaontenera frein ao amin'ny dobo loharano mandra-piveriny amin'ny ara-dalΓ na, ary manamarina ny sata misy azy amin'ny matetika voafaritra - amin'ny ohatra asehontsika, izany dia roa minitra (parameter sleepWindow).

Mariho fa ny fahafahan'ny fampiharana iray mamaly ny hadisoana 503 dia mbola napetraka amin'ny ambaratonga loharano. Betsaka ny paikady amin'ny fampiasana Circuit Breaker, arakaraka ny toe-javatra.

Ao amin'ny lahatsoratra manaraka: Hiresaka momba ny fanaraha-maso sy ny fanaraha-maso izay efa naorina na mora ampidirina amin'ny Istio isika, ary koa ny fomba iniana hampidirana lesoka ao amin'ny rafitra.

Source: www.habr.com

Add a comment