Chaos Engineering: l-arti tal-qerda intenzjonata. Parti 2

Nota. transl.: Dan l-artikolu jkompli sensiela kbira ta’ artikli mill-evanġelista tat-teknoloġija tal-AWS Adrian Hornsby, li għandu l-għan li jispjega b’mod sempliċi u ċar l-importanza tal-esperimentazzjoni biex jittaffew il-konsegwenzi tal-fallimenti fis-sistemi tal-IT.

Chaos Engineering: l-arti tal-qerda intenzjonata. Parti 2

"Jekk tonqos milli tipprepara pjan, allura tippjana li tfalli." - Benjamin Franklin

В l-ewwel parti F'din is-serje ta 'artikoli, introduċejt il-kunċett ta' inġinerija tal-kaos u spjegajt kif tgħin biex issib u tiffissa d-difetti fis-sistema qabel ma jwasslu għal fallimenti fil-produzzjoni. Iddiskuta wkoll kif l-inġinerija tal-kaos tippromwovi bidla kulturali pożittiva fi ħdan l-organizzazzjonijiet.

Fl-aħħar tal-ewwel parti, wegħedt li nitkellem dwar “għodod u metodi għall-introduzzjoni ta’ fallimenti fis-sistemi.” Alas, kap tiegħi kellu l-pjanijiet tiegħu stess f'dan ir-rigward, u f'dan l-artikolu ser nipprova nwieġeb l-iktar mistoqsija popolari li tqum fost in-nies li jridu jidħlu fl-inġinerija tal-kaos: X'għandek tkisser l-ewwel?

Mistoqsija kbira! Madankollu, ma jidhirx li hu partikolarment imdejjaq minn dan il-panda...

Chaos Engineering: l-arti tal-qerda intenzjonata. Parti 2
Tħawwadx mal-panda tal-kaos!

Risposta qasira: Immira s-servizzi kritiċi tul il-mogħdija tat-talba.

Tweġiba itwal iżda aktar ċara: Biex tifhem fejn tibda tesperimenta bil-kaos, oqgħod attent għal tliet oqsma:

  1. Ħares lejn istorja tal-ħabta u tidentifika mudelli;
  2. Iddeċiedi fuq dipendenzi kritiċi;
  3. Uża l-hekk imsejħa effett ta' kunfidenza żejda.

Huwa umoristiċi, iżda din il-parti tista 'faċilment tissejjaħ "Vjaġġ għall-Awto-skoperta u l-Illuminazzjoni". Fiha se nibdew "nilagħbu" b'xi strumenti kesħin.

1. It-tweġiba tinsab fil-passat

Jekk tiftakar, fl-ewwel parti daħħalt il-kunċett ta’ Correction-of-Errors (COE) – metodu li bih nanalizzaw l-iżbalji tagħna – żbalji fit-teknoloġija, proċess jew organizzazzjoni – sabiex nifhmu l-kawża(jiet) tagħhom u nevitaw rikorrenza fil-futur. B'mod ġenerali, dan huwa fejn għandek tibda.

"Biex tifhem il-preżent, trid tkun taf il-passat." — Carl Sagan

Ħares lejn l-istorja tal-fallimenti, immarkahom f'COE jew postmortems u kklassifikahom. Identifika mudelli komuni li ħafna drabi jwasslu għal problemi, u għal kull COE, staqsi lilek innifsek il-mistoqsija li ġejja:

"Dan seta' ġie mbassar u għalhekk evitat b'injezzjoni ta' ħsara?"

Niftakar falliment wieħed kmieni fil-karriera tiegħi. Seta’ jiġi evitat faċilment kieku għamilna ftit esperimenti sempliċi tal-kaos:

Taħt kundizzjonijiet normali, l-istanzi backend jirrispondu għall-kontrolli tas-saħħa minn bilanċjar tat-tagħbija (ELB)). L-ELB juża dawn il-kontrolli biex jidderieġi mill-ġdid it-talbiet lejn każijiet b'saħħithom. Meta jirriżulta li istanza hija "ħżiena għas-saħħa", ELB jieqaf jibgħat talbiet lilha. Ġurnata waħda, wara kampanja ta 'kummerċjalizzazzjoni ta' suċċess, il-volum tat-traffiku żdied u l-backends bdew jirrispondu għall-kontrolli tas-saħħa aktar bil-mod mis-soltu. Ta’ min jgħid li dawn il-kontrolli tas-saħħa kienu fond, jiġifieri, l-istat tad-dipendenzi ġie kkontrollat.

Madankollu, kollox kien tajjeb għal xi żmien.

Imbagħad, diġà taħt kundizzjonijiet pjuttost stressanti, waħda mill-istanzi bdiet tesegwixxi kompitu cron ETL regolari mhux kritiku. Il-kombinazzjoni ta 'traffiku għoli u cronjob imbuttat l-utilizzazzjoni tas-CPU għal kważi 100%. It-tagħbija żejda tas-CPU kompliet naqqset ir-risponsi għall-kontrolli tas-saħħa, tant li l-ELB iddeċieda li l-istanza kienet qed tesperjenza problemi ta 'prestazzjoni. Kif kien mistenni, il-balancer waqaf iqassam it-traffiku lilu, li, min-naħa tiegħu, wassal għal żieda fit-tagħbija fuq l-istanzi li kien fadal fil-grupp.

F'daqqa waħda, l-istanzi l-oħra kollha wkoll bdew ifallu l-kontroll tas-saħħa.

Il-bidu ta' istanza ġdida kien jeħtieġ it-tniżżil u l-installazzjoni ta' pakketti u dam ħafna aktar milli ħa l-ELB biex iddiżattivahom - wieħed wieħed - fil-grupp tal-autoscaling. Huwa ċar li dalwaqt il-proċess kollu laħaq punt kritiku u l-applikazzjoni ġġarraf.

Imbagħad għal dejjem fhimna l-punti li ġejjin:

  • L-installazzjoni tas-softwer meta tinħoloq istanza ġdida tieħu żmien twil huwa aħjar li tingħata preferenza lill-approċċ immutabbli u Golden AMI.
  • F'sitwazzjonijiet diffiċli, ir-reazzjonijiet għall-kontrolli tas-saħħa u l-ELBs għandhom jieħdu prijorità - l-aħħar ħaġa li trid hija li tikkomplika l-ħajja għall-bqija tal-każijiet.
  • Il-caching lokali tal-kontrolli tas-saħħa jgħin ħafna (anke għal ftit sekondi).
  • F'sitwazzjoni diffiċli, tmexxix kompiti cron u proċessi oħra mhux kritiċi - ħlief ir-riżorsi għall-kompiti l-aktar importanti.
  • Meta autoscaling, uża każijiet iżgħar. Grupp ta’ 10 kampjuni żgħar huwa aħjar minn grupp ta’ 4 kbar; jekk istanza waħda tfalli, fl-ewwel każ 10% tat-traffiku jitqassam fuq 9 punti, fit-tieni - 25% tat-traffiku fuq tliet punti.

Allura, dan seta' ġie previst, u għalhekk evitat bl-introduzzjoni tal-problema?

Iva, u f'diversi modi.

L-ewwel, billi tissimula użu għoli ta 'CPU bl-użu ta' għodod bħal stress-ng jew cpuburn:

❯ stress-ng --matrix 1 -t 60s

Chaos Engineering: l-arti tal-qerda intenzjonata. Parti 2
stress-of

It-tieni, billi tagħbija żejda l-istanza ma wrk u utilitajiet oħra simili:

❯ wrk -t12 -c400 -d20s http://127.0.0.1/api/health

Chaos Engineering: l-arti tal-qerda intenzjonata. Parti 2

L-esperimenti huma relattivament sempliċi, iżda jistgħu jipprovdu xi ikel tajjeb għall-ħsieb mingħajr ma jkollhom jgħaddu mill-istress ta 'falliment reali.

Imma tieqafx hemm. Ipprova jirriproduċi l-ħabta f'ambjent tat-test u ċċekkja t-tweġiba tiegħek għall-mistoqsija "Dan seta' ġie previst u għalhekk evitat bl-introduzzjoni ta' ħsara?" Dan huwa mini esperiment tal-kaos fi ħdan esperiment tal-kaos biex jiġu ttestjati s-suppożizzjonijiet, iżda li jibda b'falliment.

Chaos Engineering: l-arti tal-qerda intenzjonata. Parti 2
Kienet ħolma, jew ġrat tassew?

Allura studja l-istorja tal-fallimenti, tanalizza EOC, tikketta u klassifikahom skond "hit radius"—jew b'mod aktar preċiż, in-numru ta 'klijenti affettwati—u mbagħad tfittex mudelli. Staqsi lilek innifsek jekk dan setax ġie mbassar u evitat billi ddaħħal il-problema. Iċċekkja t-tweġiba tiegħek.

Imbagħad aqleb għall-mudelli l-aktar komuni bl-akbar firxa.

2. Ibni mappa tad-dipendenza

Ħu mument biex taħseb dwar l-applikazzjoni tiegħek. Hemm mappa ċara tad-dipendenzi tagħha? Taf x'impatt se jkollhom jekk ikun hemm falliment?

Jekk m'intix familjari ħafna mal-kodiċi tal-applikazzjoni tiegħek jew din tkun saret kbira ħafna, jista' jkun diffiċli li tifhem x'jagħmel il-kodiċi u x'inhuma d-dipendenzi tiegħu. Il-fehim ta 'dawn id-dipendenzi u l-impatt possibbli tagħhom fuq l-applikazzjoni u l-utenti huwa kritiku biex tkun taf minn fejn tibda bl-inġinerija tal-kaos: il-punt tat-tluq huwa l-komponent bl-akbar raġġ ta' impatt.

L-identifikazzjoni u d-dokumentazzjoni tad-dipendenzi jissejħu "bini ta’ mappa tad-dipendenza» (immappjar tad-dipendenza). Dan tipikament isir għal applikazzjonijiet b'bażi ​​ta 'kodiċi kbira bl-użu ta' għodod ta 'profiling tal-kodiċi. (profil tal-kodiċi) u strumentazzjoni (strumentazzjoni). Tista 'wkoll tibni mappa billi timmonitorja t-traffiku tan-netwerk.

Madankollu, mhux id-dipendenzi kollha huma l-istess (li jkompli jikkomplika l-proċess). Xi wħud kritika, oħra - sekondarja (mill-inqas fit-teorija, peress li l-ħabtiet spiss iseħħu minħabba problemi b'dipendenzi li kienu kkunsidrati mhux kritiċi).

Mingħajr dipendenzi kritiċi, is-servizz ma jistax jaħdem. Dipendenzi mhux kritiċi "m'għandux» biex jinfluwenza s-servizz f’każ ta’ waqgħa. Biex tifhem id-dipendenzi, jeħtieġ li jkollok fehim ċar tal-APIs użati mill-applikazzjoni tiegħek. Dan jista 'jkun ħafna aktar diffiċli milli jidher - għall-inqas għal applikazzjonijiet kbar.

Ibda billi tgħaddi mill-APIs kollha. Enfasizza l-aktar sinifikanti u kritiku. Ħu dipendenzi mir-repożitorju tal-kodiċi, iċċekkjaha zkuk tal-konnessjoni, imbagħad tara dokumentazzjoni (naturalment, jekk teżisti - inkella għad għandekоproblemi akbar). Uża l-għodda biex profiling u traċċar, iffiltra sejħiet esterni.

Tista' tuża programmi bħal netstat - utilità tal-linja tal-kmand li turi lista tal-konnessjonijiet tan-netwerk kollha (sokits attivi) fis-sistema. Pereżempju, biex telenka l-konnessjonijiet kurrenti kollha, ittajpja:

❯ netstat -a | more 

Chaos Engineering: l-arti tal-qerda intenzjonata. Parti 2

Fl-AWS tista' tuża zkuk tal-fluss (logs tal-fluss) VPC huwa metodu li jippermettilek tiġbor informazzjoni dwar it-traffiku tal-IP li jmur lejn jew minn interfaces tan-netwerk f'VPC. Tali zkuk jistgħu jgħinu wkoll f'kompiti oħra - pereżempju, issib tweġiba għall-mistoqsija dwar għaliex ċertu traffiku ma jilħaqx l-istanza.

Tista 'wkoll tuża AWS X-Ray. X-Ray jippermettilek li tikseb dettaljati, "aħħari" (tarf sa tarf) ħarsa ġenerali tat-talbiet hekk kif jimxu fl-applikazzjoni, u wkoll tibni mappa tal-komponenti sottostanti tal-applikazzjoni. Konvenjenti ħafna jekk għandek bżonn tidentifika dipendenzi.

Chaos Engineering: l-arti tal-qerda intenzjonata. Parti 2
AWS X-Ray Console

Mappa tad-dipendenza tan-netwerk hija biss soluzzjoni parzjali. Iva, turi liema applikazzjoni tikkomunika ma' liema, iżda hemm dipendenzi oħra.

Ħafna applikazzjonijiet jużaw id-DNS biex jikkonnettjaw mad-dipendenzi, filwaqt li oħrajn jistgħu jużaw l-iskoperta tas-servizz jew saħansitra indirizzi IP kodifikati iebes fil-fajls tal-konfigurazzjoni (eż. /etc/hosts).

Per eżempju, tista 'toħloq DNS blackhole bl-għajnuna iptables u ara x'jinkisser. Biex tagħmel dan, daħħal il-kmand li ġej:

❯ iptables -I OUTPUT -p udp --dport 53 -j REJECT -m comment --comment "Reject DNS"

Chaos Engineering: l-arti tal-qerda intenzjonata. Parti 2
toqba sewda tad-DNS

Jekk /etc/hosts jew fajls ta’ konfigurazzjoni oħra, issib indirizzi IP li ma taf xejn dwarhom (iva, sfortunatament, dan jiġri wkoll), tista’ terġa’ tiġi salvata iptables. Ejja ngħidu li skoprejt 8.8.8.8 u ma nafx li dan huwa l-indirizz pubbliku tas-server DNS ta' Google. Bl-użu iptables Tista' timblokka t-traffiku deħlin u ħerġin lejn dan l-indirizz billi tuża l-kmandi li ġejjin:

❯ iptables -A INPUT -s 8.8.8.8 -j DROP -m comment --comment "Reject from 8.8.8.8"
❯ iptables -A OUTPUT -d 8.8.8.8 -j DROP -m comment --comment "Reject to 8.8.8.8"

Chaos Engineering: l-arti tal-qerda intenzjonata. Parti 2
Aċċess tal-għeluq

L-ewwel regola twaqqa' l-pakketti kollha mid-DNS pubbliku ta' Google: ping jaħdem, iżda l-pakketti ma jiġux ritornati. It-tieni regola twaqqa' l-pakketti kollha li joriġinaw mis-sistema tiegħek lejn id-DNS pubbliku ta' Google - bi tweġiba għal ping nikbru Operazzjoni mhux permessa.

Nota: f'dan il-każ partikolari jkun aħjar li tuża whois 8.8.8.8, iżda dan huwa biss eżempju.

Nistgħu mmorru saħansitra aktar fil-fond fit-toqba tal-fenek, għax dak kollu li juża TCP u UDP fil-fatt jiddependi fuq l-IP ukoll. Fil-biċċa l-kbira tal-każijiet, l-IP huwa marbut ma 'ARP. Tinsiex dwar il-firewalls...

Chaos Engineering: l-arti tal-qerda intenzjonata. Parti 2
Jekk tieħu l-pillola l-ħamra, tibqa’ f’Wonderland, u jiena nurik kemm tidħol il-fond it-toqba tal-fenek.”

Approċċ aktar radikali huwa li skonnettja karozzi wieħed wieħed u ara x'inhu miksur... issir "xadina tal-kaos." Naturalment, ħafna sistemi ta 'produzzjoni mhumiex iddisinjati għal tali attakk ta' forza bruta, iżda għall-inqas jista 'jiġi ppruvat f'ambjent ta' test.

Il-bini ta' mappa tad-dipendenza huwa spiss impriża twila ħafna. Dan l-aħħar tkellimt ma' klijent li qatta' kważi sentejn jiżviluppa għodda li tiġġenera b'mod semi-awtomatiku mapep ta' dipendenza għal mijiet ta' mikroservizzi u kmandi.

Ir-riżultat, madankollu, huwa estremament interessanti u utli. Int titgħallem ħafna dwar is-sistema tiegħek, id-dipendenzi u l-operazzjonijiet tagħha. Għal darb'oħra, kun paċenzja: huwa l-vjaġġ innifsu li jgħodd l-aktar.

3. Oqgħod attent mill-kunfidenza żejda

"Min joħlom dwar xiex, jemmen fih." — Demostene

Qatt smajt bih effett ta' kunfidenza żejda?

Skont il-Wikipedija, l-effett ta’ kunfidenza żejda huwa “preġudizzju konjittiv li fih il-fiduċja ta’ persuna fl-azzjonijiet u d-deċiżjonijiet tagħha hija akbar b’mod sinifikanti mill-eżattezza oġġettiva ta’ dawk il-ġudizzji, speċjalment meta l-livell ta’ kunfidenza huwa relattivament għoli.”

Chaos Engineering: l-arti tal-qerda intenzjonata. Parti 2
Ibbażat fuq l-istint u l-esperjenza...

Mill-esperjenza tiegħi, nista 'ngħid li din id-distorsjoni hija ħjiel kbir ta' fejn tibda bl-inġinerija tal-kaos.

Oqgħod attent mill-operatur kunfidenti żżejjed:

Charlie: "Din il-ħaġa ma waqgħetx f'ħames snin, kollox sew!"
Crash: "Stenna... dalwaqt se nkun hemm!"

Il-preġudizzju bħala konsegwenza tal-kunfidenza żejda hija ħaġa insidjuża u saħansitra perikoluża minħabba d-diversi fatturi li jinfluwenzawha. Dan huwa veru speċjalment meta l-membri tat-tim ikunu ferraw qalbhom f'teknoloġija jew qattgħu ħafna ħin "jiffissawha".

Fil-qosor

It-tfittxija għal punt tat-tluq għall-inġinerija tal-kaos dejjem iġġib aktar riżultati milli mistenni, u timijiet li jibdew ikissru l-affarijiet malajr wisq jitilfu l-essenza aktar globali u interessanti ta’ (kaos-)inġinerija - użu kreattiv metodi xjentifiċi и evidenza empirika għad-disinn, żvilupp, tħaddim, manutenzjoni u titjib ta' sistemi (softwer).

Dan jikkonkludi t-tieni parti. Jekk jogħġbok ikteb ir-reviżjonijiet, taqsam l-opinjonijiet jew sempliċement agħfas idejk Medja. Fil-parti li jmiss I tassew Se nikkunsidra għodod u metodi għall-introduzzjoni ta' fallimenti fis-sistemi. Sa!

PS minn traduttur

Aqra wkoll fuq il-blog tagħna:

Sors: www.habr.com

Żid kumment