Istio Circuit Breaker: kudzima midziyo isina kunaka

Mazororo apera uye tadzoka neyedu yechipiri positi muIstio Service Mesh akatevedzana.

Istio Circuit Breaker: kudzima midziyo isina kunaka

Nyaya yemazuva ano ndeye Circuit Breaker, iyo yakashandurwa muchiRussia yemagetsi emagetsi inoreva "circuit breaker", mumutauro wakafanana - "circuit breaker". MuIstio chete muchina uyu haubvisi dunhu rakapfupika kana rakaremerwa, asi midziyo ine mhosva.

Izvi zvinofanira kushanda zvakanaka sei

Kana mamicroservices achitungamirwa naKubernetes, semuenzaniso mukati meOpenShift chikuva, ivo vanongokwira kumusoro nekudzika zvichienderana nemutoro. Sezvo mamicroservices achimhanya mumapods, panogona kuve nezvakawanda zviitiko zvemukati mesevhisi microservice pane imwe magumo, uye Kubernetes achafambisa zvikumbiro uye chiyero chemutoro pakati pavo. Uye - zvakanaka - zvese izvi zvinofanirwa kushanda zvakakwana.

Isu tinorangarira kuti microservices idiki uye ephemeral. Ephemerality, iyo pano inoreva kureruka kwekuonekwa uye kunyangarika, inowanzotarisirwa pasi. Kuzvarwa uye kufa kweimwe chiitiko che microservice mune pod zvinhu zvinotarisirwa, OpenShift naKubernetes vanobata izvi nemazvo, uye zvese zvinoshanda zvakanaka - asi zvakare mune dzidziso.

Kuti zvinoshanda sei chaizvo

Iye zvino fungidzira kuti chimwe chiitiko che microservice, kureva, mudziyo, chave chisingagoneki: kana hachipinduri (kukanganisa 503), kana, chii chisingafadzi, chinopindura, asi zvishoma nezvishoma. Mune mamwe mazwi, inova glitchy kana kusapindura kune zvikumbiro, asi haingobviswe kubva padziva. Chii chinofanira kuitwa munyaya iyi? Kuedzazve? Ndoibvisa here pachirongwa chekufambisa? Uye zvinorevei kuti "kunonoka" zvinorevei - zvingani muhuwandu, uye ndiani anodzisarudza? Zvichida imbozvipa zororo uye edza zvakare gare gare? Kana zvakadaro, inguvai gare gare?

Chii chinonzi Pool Ejection muIstio

Uye pano Istio inouya kuzonunura nemichina yekudzivirira yeCircuit Breaker, iyo inobvisa kwenguva pfupi midziyo isina kunaka kubva panzira uye kuremedza zviwanikwa dziva, kuita iyo Pool Ejection maitiro.

Ichishandisa nzira yekuona yekunze, Istio inoona macurve pods ari kunze kwemutsara uye inoabvisa kubva mudziva rekushandisa kwenguva yakatarwa, inonzi hwindo rekurara.

Kuratidza kuti izvi zvinoshanda sei muKubernetes papuratifomu yeOpenShift, ngatitange neiyo skrini yeanowanzo shanda mamicroservices kubva kumuenzaniso mune repository. Red Hat Developer Demos. Pano tine mapodhi maviri, v1 uye v2, imwe neimwe inoshandisa chigadziko chimwe. Kana Istio routing mitemo isingashandiswe, Kubernetes inokanganisa kune yakaenzana yakaenzana kutenderera-robin nzira:

Istio Circuit Breaker: kudzima midziyo isina kunaka

Kugadzirira kuparara

Usati waita Pool Ejection, unofanirwa kugadzira mutemo weIstio routing. Ngatitii tinoda kugovera zvikumbiro pakati pemapodhi muchiyero che50/50. Pamusoro pezvo, isu tichawedzera huwandu hwev2 midziyo kubva kune imwe kusvika kune mbiri, seizvi:

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

Iye zvino tinoisa mutemo wekufambisa kuitira kuti traffic igoverwe pakati pemapodhi muchiyero che50/50.

Istio Circuit Breaker: kudzima midziyo isina kunaka
Hezvino izvo mhedzisiro yemutemo uyu inotaridzika:

Istio Circuit Breaker: kudzima midziyo isina kunaka
Iwe unogona kuwana mhosva nenyaya yekuti iyi skrini haisi 50/50, asi 14: 9, asi nekufamba kwenguva mamiriro acho achavandudza.

Kuita glitch

Zvino ngatidzime imwe yemidziyo miviri yev2 kuitira kuti tive negaba rimwe rine hutano v1, mudziyo une hutano v2 uye imwe ine mhosva v2:

Istio Circuit Breaker: kudzima midziyo isina kunaka

Kugadzirisa glitch

Saka, isu tine chigadziko chinokanganisa, uye yave nguva yePool Ejection. Tichishandisa yakapusa gadziriso, isu tinobvisa iyi yakakundikana chigaba kubva kune chero routing zvirongwa kwemasekonzi gumi nemashanu netarisiro yekuti ichadzokera kune ine hutano mamiriro (zvichida kutangazve kana kudzoreredza kuita). Izvi ndizvo zvinoita senge config uye mhedzisiro yebasa rayo:

Istio Circuit Breaker: kudzima midziyo isina kunaka
Istio Circuit Breaker: kudzima midziyo isina kunaka
Sezvauri kuona, iyo yakakundikana v2 mudziyo haichashandiswe pakukumbira nzira nekuti yakabviswa padziva. Asi mushure memasekonzi gumi nemashanu inozodzokera kudziva. Chaizvoizvo, isu tangoratidza kuti Pool Ejection inoshanda sei.

Ngatitange kuvaka zvivakwa

Pool Ejection, yakasanganiswa neIstio yekutarisisa kugona, inokutendera iwe kuti utange kuvaka dhizaini yekutsiva otomatiki midziyo isina kunaka kudzikisa, kana ikasabvisa, kuderera uye kutadza.
 
NASA ine motto imwe ine ruzha - Kukundikana Haisi Sarudzo, munyori wayo anoonekwa semutungamiriri wendege. Gene Kranz. Inogona kushandurirwa muchiRussia se "Kukundikana haisi sarudzo," uye zvinoreva pano ndezvokuti zvose zvinogona kuitwa kushanda kana iwe uine chido chakakwana. Zvisinei, muhupenyu chaihwo, kukundikana hakungoitiki chete, hazvidzivisiki, kwose kwose uye mune zvose. Uye maitiro ekuita navo munyaya ye microservices? Semaonero edu, zviri nani kuti usavimba nesimba, asi nekugona kwemidziyo, Kubernetes, RedHat OpenShiftuye Istio.

Istio, sezvatakanyora pamusoro, inoshandisa pfungwa yevanoputsa dunhu, iyo yakaratidza pachayo zvakanaka munyika yepanyama. Uye sezvakangoita magetsi emagetsi emagetsi anodzima chikamu chedambudziko redunhu, Istio's software Circuit Breaker inovhura kubatana pakati perukova rwezvikumbiro nemudziyo wedambudziko kana chimwe chinhu chisina kumira zvakanaka nemagumo, semuenzaniso, sevha payakadonha kana kutanga. dzora.

Uyezve, muchiitiko chechipiri kune mamwe matambudziko chete, sezvo mabhureki emudziyo mumwe chete asingakonzere kunonoka kwekunonoka mumasevhisi anowanikwa uye, nekudaro, anoderedza mashandiro ehurongwa sese, asi zvakare anogadzira anodzokororwa. zvikumbiro zvebasa rinogara richinonoka, izvo zvinongowedzera mamiriro acho ezvinhu .

Circuit Breaker in theory

Circuit Breaker iproxy inodzora kuyerera kwezvikumbiro kusvika kumagumo. Kana iyi poindi inomira kushanda kana, zvichienderana nezvirongwa zvakatsanangurwa, inotanga kuderera, proxy inotyora kubatana nemudziyo. Traffic inozoendeswa kune mamwe macontainer, nekuda kwekuremerwa kwekutakura. Iyo yekubatanidza inoramba yakavhurika kune yakapihwa hwindo rekurara, iti maminetsi maviri, uyezve inoonekwa sehafu-yakavhurika. Kuedza kutumira chikumbiro chinotevera kunogadzirisa imwe mamiriro ekubatanidza. Kana zvese zvakanaka nesevhisi, kubatana kunodzokera kumamiriro ekushanda uye zvakare inovharwa. Kana pachine chimwe chinhu chisina kunaka nebasa racho, chinongedzo chinobviswa uye hwindo rekurara rinogoneswa zvakare. Hezvino izvo zvakareruka Circuit Breaker state dhizaini inoita senge:

Istio Circuit Breaker: kudzima midziyo isina kunaka
Izvo zvakakosha kuti uzive pano kuti zvese izvi zvinoitika pamwero we, sekutaura, system architecture. Naizvozvo, pane imwe nguva iwe uchafanirwa kudzidzisa zvikumbiro zvako kushanda neCircuit Breaker, semuenzaniso nekupa kukosha kwakasarudzika mukupindura kana, kana zvichibvira, kusazvidza kuvepo kwesevhisi. A bulkhead pateni inoshandiswa pane izvi, asi iri mhiri kwechikamu chechinyorwa ichi.

Circuit Breaker mukuita

Semuenzaniso, isu tichamhanyisa maviri mavhezheni edu ekurudziro microservice paOpenShift. Shanduro 1 ichashanda zvakanaka, asi muv2 isu tichavaka mukunonoka kutevedzera kudzikira pane server. Kuti uone zvawanikwa, shandisa chishandiso kukomba:

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

Istio Circuit Breaker: kudzima midziyo isina kunaka
Zvose zvinoita sezviri kushanda, asi pamutengo wei? Pakutanga kuona, isu tine 100% kuwanikwa, asi nyatso tarisisa - iyo yakanyanya transaction nguva inosvika gumi nemaviri masekonzi. Izvi zvakajeka bhodhoro uye rinoda kuwedzerwa.

Kuti tiite izvi, isu tichashandisa Istio kubvisa mafoni ekunonoka midziyo. Izvi ndizvo zvinoita senge inoenderana config uchishandisa Circuit Breaker:

Istio Circuit Breaker: kudzima midziyo isina kunaka
Mutsetse wekupedzisira une httpMaxRequestsPerConnection parameter inoratidza kuti kubatana neiyo kunofanira kubviswa paunenge uchiedza kugadzira imwe - yechipiri - yekubatanidza kuwedzera kune iripo. Sezvo mudziyo wedu unoteedzera sevhisi inononoka, mamiriro akadai anomuka nguva nenguva, uye ipapo Istio inodzosa kukanganisa kwe503, asi izvi ndizvo zvicharatidza kukomba:

Istio Circuit Breaker: kudzima midziyo isina kunaka

Zvakanaka, tine Circuit Breaker, chii chinotevera?

Saka, isu takaita otomatiki kudzima pasina kubata iyo kodhi kodhi yemasevhisi pachawo zvachose. Tichishandisa Circuit Breaker uye Pool Ejection maitiro anotsanangurwa pamusoro, tinogona kubvisa midziyo yemabhureki kubva padziva rekushandisa kudzamara vadzokera kune zvakajairwa, uye tarisa chimiro chavo pane yakatarwa frequency - mumuenzaniso wedu, aya maminetsi maviri (sleepWindow parameter).

Ziva kuti kugona kwechishandiso kupindura kukanganisa kwe503 kuchiri kusetwa padanho rekodhi kodhi. Kune akawanda mazano ekushandisa Circuit Breaker, zvichienderana nemamiriro ezvinhu.

Mutsamba inotevera: Isu tichataura nezve yekutevera uye yekutarisa iyo yakatovakwa-mukati kana nyore nyore kuwedzerwa kuIstio, pamwe nemaune yekuunza zvikanganiso muhurongwa.

Source: www.habr.com

Voeg