Istio Circuit Breaker: diżattivazzjoni ta' kontenituri difettużi

Il-vaganzi spiċċaw u erġajna bit-tieni post tagħna fis-sensiela Istio Service Mesh.

Istio Circuit Breaker: diżattivazzjoni ta' kontenituri difettużi

Is-suġġett tal-lum huwa Circuit Breaker, li tradott fl-inġinerija elettrika Russa tfisser "circuit breaker", fil-lingwaġġ komuni - "circuit breaker". F'Istio biss din il-magna ma tiskonnettjax ċirkwit shorted jew mgħobbi żżejjed, iżda kontenituri difettużi.

Kif dan għandu jaħdem idealment

Meta l-mikroservizzi jiġu ġestiti minn Kubernetes, pereżempju fi ħdan il-pjattaforma OpenShift, dawn awtomatikament jiżdiedu u jonqsu skont it-tagħbija. Minħabba li l-mikroservizzi jitħaddmu f'miżwed, jista 'jkun hemm bosta każijiet ta' mikroservizz fil-kontejners fuq endpoint wieħed, u Kubernetes se jindirizza t-talbiet u l-bilanċ tat-tagħbija bejniethom. U - idealment - dan kollu għandu jaħdem perfettament.

Niftakru li l-mikroservizzi huma żgħar u effimeri. L-effimeralità, li hawnhekk tfisser il-faċilità li tidher u tisparixxi, ħafna drabi hija sottovalutata. It-twelid u l-mewt ta 'istanza oħra ta' mikroservizz f'pod huma affarijiet pjuttost mistennija, OpenShift u Kubernetes jimmaniġġjaw dan tajjeb, u kollox jaħdem tajjeb - iżda għal darb'oħra fit-teorija.

Kif taħdem fil-fatt

Issa immaġina li eżempju speċifiku ta 'mikroservizz, jiġifieri, kontenitur, ma jistax jintuża: jew ma jirrispondix (żball 503), jew, dak li huwa aktar spjaċevoli, jirrispondi, iżda bil-mod wisq. Fi kliem ieħor, isir glitchy jew ma jirrispondix għat-talbiet, iżda ma jitneħħax awtomatikament mill-pool. X'għandu jsir f'dan il-każ? Biex terġa' tipprova? Għandi neħħiha mill-iskema tar-rotot? U xi jfisser "bil-mod wisq" - kemm huwa fin-numri, u min jiddeterminahom? Forsi agħtiha waqfa u erġa' pprova aktar tard? Jekk iva, kemm wara?

X'inhu Pool Ejection f'Istio

U hawn Istio jiġi għas-salvataġġ bil-magni ta 'protezzjoni Circuit Breaker tiegħu, li temporanjament ineħħu kontenituri difettużi mill-grupp tar-riżorsi tar-rotot u l-ibbilanċjar tat-tagħbija, billi timplimenta l-proċedura ta' Pool Ejection.

Bl-użu ta 'strateġija ta' skoperta ta 'outlier, Istio jiskopri l-imżiewed tal-kurva li huma barra mill-linja u jneħħihom mill-ġabra tar-riżorsi għal ammont speċifikat ta' żmien, imsejħa tieqa ta 'rqad.

Biex turi kif dan jaħdem f'Kubernetes fuq il-pjattaforma OpenShift, ejja nibdew bi screenshot ta' mikroservizzi li jaħdmu normalment mill-eżempju fir-repożitorju Red Hat Developer Demos. Hawnhekk għandna żewġ imżiewed, v1 u v2, kull wieħed jaħdem kontenitur wieħed. Meta r-regoli tar-rotot Istio ma jintużawx, Kubernetes jaqbel għal routing round-robin ibbilanċjat b'mod ugwali:

Istio Circuit Breaker: diżattivazzjoni ta' kontenituri difettużi

Tħejjija għall-falliment

Qabel ma tagħmel Pool Ejection, trid toħloq regola ta' routing Istio. Ejja ngħidu li rridu nqassmu t-talbiet bejn il-miżwed fi proporzjon 50/50. Barra minn hekk, se nżidu n-numru ta’ kontenituri v2 minn wieħed għal tnejn, bħal dan:

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

Issa waqqafna regola tar-routing sabiex it-traffiku jitqassam bejn il-miżwed fi proporzjon 50/50.

Istio Circuit Breaker: diżattivazzjoni ta' kontenituri difettużi
Hawn kif jidher ir-riżultat ta' din ir-regola:

Istio Circuit Breaker: diżattivazzjoni ta' kontenituri difettużi
Tista 'ssib tort fil-fatt li dan l-iskrin mhuwiex 50/50, iżda 14:9, iżda maż-żmien is-sitwazzjoni se titjieb.

Nagħmlu glitch

Issa ejja tiddiżattiva wieħed miż-żewġ kontenituri v2 sabiex ikollna kontenitur v1 b'saħħtu, kontenitur v2 b'saħħtu u kontenitur v2 difettuż:

Istio Circuit Breaker: diżattivazzjoni ta' kontenituri difettużi

Iffissar tal-glitch

Allura, għandna kontenitur difettuż, u wasal iż-żmien għal Pool Ejection. Bl-użu ta 'konfigurazzjoni sempliċi ħafna, aħna se neskludu dan il-kontenitur fallut minn kwalunkwe skemi ta' rotta għal 15-il sekonda bit-tama li jerġa 'lura għal stat b'saħħtu (jew jerġa' jibda jew jirrestawra l-prestazzjoni). Dan huwa kif tidher din il-konfigurazzjoni u r-riżultati tax-xogħol tagħha:

Istio Circuit Breaker: diżattivazzjoni ta' kontenituri difettużi
Istio Circuit Breaker: diżattivazzjoni ta' kontenituri difettużi
Kif tistgħu taraw, il-kontenitur v2 fallut m'għadux jintuża għat-talbiet tar-routing minħabba li tneħħa mill-pool. Iżda wara 15-il sekonda awtomatikament se terġa 'lura fil-pool. Fil-fatt, aħna biss urejna kif jaħdem Pool Ejection.

Ejja nibdew nibnu l-arkitettura

Pool Ejection, flimkien mal-kapaċitajiet ta 'monitoraġġ ta' Istio, jippermettilek tibda tibni qafas biex tissostitwixxi awtomatikament kontenituri difettużi biex tnaqqas, jekk mhux telimina, il-perijodi ta 'waqfien u l-fallimenti.

In-NASA għandha motto wieħed qawwi - Il-falliment mhuwiex għażla, li l-awtur tiegħu huwa meqjus bħala d-direttur tat-titjira Gene Kranz. Jista 'jiġi tradott għar-Russu bħala "Il-falliment mhix għażla," u t-tifsira hawnhekk hija li kollox jista' jsir biex jaħdem jekk ikollok biżżejjed rieda. Madankollu, fil-ħajja reali, il-fallimenti ma jseħħux biss, huma inevitabbli, kullimkien u f'kollox. U kif tittrattahom fil-każ ta 'mikroservizzi? Fl-opinjoni tagħna, huwa aħjar li tiddependi mhux fuq ir-rieda, iżda fuq il-kapaċitajiet tal-kontenituri, Kubernetes, RedHat OpenShiftU Istio.

Istio, kif ktibna hawn fuq, jimplimenta l-kunċett ta 'circuit breakers, li wera ruħu tajjeb fid-dinja fiżika. U bħal circuit breaker elettriku jitfi sezzjoni problematika ta 'ċirkwit, is-softwer Istio Circuit Breaker jiftaħ il-konnessjoni bejn fluss ta' talbiet u kontenitur problema meta xi ħaġa ħażina mal-endpoint, pereżempju, meta s-server ġġarraf jew beda inaqqas il-mod.

Barra minn hekk, fit-tieni każ hemm biss aktar problemi, peress li l-brejkijiet ta 'kontenitur wieħed mhux biss jikkawżaw kaskata ta' dewmien fis-servizzi li jaċċessawha u, bħala riżultat, inaqqsu l-prestazzjoni tas-sistema kollha kemm hi, iżda wkoll jiġġeneraw ripetuti. talbiet lil servizz li diġà qed jaħdem bil-mod, li jaggrava biss is-sitwazzjoni .

Circuit Breaker fit-teorija

Circuit Breaker huwa prokura li tikkontrolla l-fluss tat-talbiet lejn endpoint. Meta dan il-punt jieqaf jaħdem jew, skont is-settings speċifikati, jibda jonqos, il-prokura jkisser il-konnessjoni mal-kontenitur. It-traffiku mbagħad jiġi ridirett lejn kontenituri oħra, sempliċement minħabba l-ibbilanċjar tat-tagħbija. Il-konnessjoni tibqa 'miftuħa għal tieqa ta' rqad partikolari, ngħidu aħna żewġ minuti, u mbagħad titqies nofsha miftuħa. Tentattiv biex tintbagħat it-talba li jmiss jiddetermina l-istat ulterjuri tal-konnessjoni. Jekk kollox huwa tajjeb bis-servizz, il-konnessjoni terġa 'lura għall-kundizzjoni tax-xogħol u terġa' tingħalaq. Jekk għad hemm xi ħaġa ħażina fis-servizz, il-konnessjoni tiġi skonnettjata u t-tieqa tal-irqad terġa 'tiġi attivata. Hawn kif tidher dijagramma simplifikata tal-istat Circuit Breaker:

Istio Circuit Breaker: diżattivazzjoni ta' kontenituri difettużi
Huwa importanti li wieħed jinnota hawnhekk li dan kollu jiġri fil-livell ta ', biex ngħidu hekk, arkitettura tas-sistema. Allura f'xi punt ikollok tgħallem l-applikazzjonijiet tiegħek biex taħdem ma 'Circuit Breaker, bħal li tipprovdi valur default bi tweġiba jew, jekk possibbli, tinjora l-eżistenza tas-servizz. Għal dan jintuża mudell ta 'paratija, iżda huwa lil hinn mill-ambitu ta' dan l-artikolu.

Circuit Breaker fil-prattika

Pereżempju, se nħaddmu żewġ verżjonijiet tal-mikroservizz tar-rakkomandazzjoni tagħna fuq OpenShift. Il-verżjoni 1 se taħdem tajjeb, iżda f'v2 se nibnu f'dewmien biex nisimulaw tnaqqis fir-ritmu fuq is-server. Biex tara r-riżultati, uża l-għodda assedju:

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

Istio Circuit Breaker: diżattivazzjoni ta' kontenituri difettużi
Jidher li kollox jaħdem, imma b'liema prezz? Ewwel daqqa t'għajn, għandna disponibbiltà ta '100%, iżda agħti ħarsa aktar mill-qrib - it-tul massimu tat-tranżazzjoni huwa daqs 12-il sekonda. Huwa ċar li dan huwa ostaklu u jeħtieġ li jiġi estiż.

Biex tagħmel dan, aħna se nużaw Istio biex neliminaw sejħiet biex bil-mod il-kontenituri. Dan huwa kif tidher il-konfigurazzjoni korrispondenti bl-użu ta 'Circuit Breaker:

Istio Circuit Breaker: diżattivazzjoni ta' kontenituri difettużi
L-aħħar linja bil-parametru httpMaxRequestsPerConnection tindika li l-konnessjoni magħha għandha tiġi skonnettjata meta tipprova toħloq konnessjoni oħra - it-tieni - minbarra dik eżistenti. Peress li l-kontenitur tagħna jissimula servizz bil-mod, sitwazzjonijiet bħal dawn se jinqalgħu perjodikament, u mbagħad Istio se jirritorna żball 503, iżda dan huwa dak li se juri l-assedju:

Istio Circuit Breaker: diżattivazzjoni ta' kontenituri difettużi

OK, għandna Circuit Breaker, x'inhu jmiss?

Għalhekk, implimentajna għeluq awtomatiku mingħajr ma tmiss il-kodiċi tas-sors tas-servizzi nfushom. Bl-użu ta 'Circuit Breaker u l-proċedura Pool Ejection deskritta hawn fuq, nistgħu nneħħu kontenituri tal-brejk mill-pool tar-riżorsi sakemm jerġgħu lura għan-normal, u jiċċekkjaw l-istatus tagħhom bi frekwenza speċifikata - fl-eżempju tagħna, dan huwa żewġ minuti (parametru sleepWindow).

Innota li l-abbiltà ta' applikazzjoni li tirrispondi għal żball 503 għadha stabbilita fil-livell tal-kodiċi tas-sors. Hemm ħafna strateġiji għall-użu ta 'Circuit Breaker, skont is-sitwazzjoni.

Fil-post li jmiss: Aħna ser nitkellmu dwar it-traċċar u l-monitoraġġ li diġà huma integrati jew miżjuda faċilment ma 'Istio, kif ukoll kif intenzjonalment jiġu introdotti żbalji fis-sistema.

Sors: www.habr.com

Żid kumment