PiezÄ«me. tulk.: Å is raksts turpina AWS tehnoloÄ£iju evaÅÄ£Älista Adriana Hornsbija lielisko rakstu sÄriju, kura mÄrÄ·is ir vienkÄrÅ”Ä un skaidrÄ veidÄ izskaidrot eksperimentu nozÄ«mi, lai mazinÄtu IT sistÄmu kļūmju sekas.
Š pirmÄ daļa Å ajÄ rakstu sÄrijÄ es iepazÄ«stinÄju ar haosa inženierijas jÄdzienu un paskaidroju, kÄ tas palÄ«dz atrast un labot sistÄmas trÅ«kumus, pirms tie noved pie ražoÅ”anas kļūmÄm. TajÄ arÄ« tika apspriests, kÄ haosa inženierija veicina pozitÄ«vas kultÅ«ras pÄrmaiÅas organizÄcijÄs.
PirmÄs daļas beigÄs es apsolÄ«ju runÄt par "rÄ«kiem un metodÄm kļūmju ievieÅ”anai sistÄmÄs". DiemžÄl manai galvai Å”ajÄ ziÅÄ bija savi plÄni, un Å”ajÄ rakstÄ es mÄÄ£inÄÅ”u atbildÄt uz populÄrÄko jautÄjumu, kas rodas starp cilvÄkiem, kuri vÄlas iekļūt haosa inženierijÄ: Ko vispirms lauzt?
Lielisks jautÄjums! TomÄr Ŕķiet, ka viÅu Ŕī panda Ä«paÅ”i neuztrauc...
Tas ir smieklÄ«gi, bet Å”o daļu tikpat viegli varÄtu nosaukt "Ceļojums uz sevis izzinÄÅ”anu un apgaismÄ«bu". TajÄ sÄksim āspÄlÄtiesā ar dažiem forÅ”iem instrumentiem.
1. Atbilde slÄpjas pagÄtnÄ
Ja atceraties, pirmajÄ daÄ¼Ä es iepazÄ«stinÄju ar kļūdu laboÅ”anas (COE) jÄdzienu - metodi, ar kuras palÄ«dzÄ«bu mÄs analizÄjam savas kļūdas - kļūdas tehnoloÄ£ijÄ, procesÄ vai organizÄcijÄ -, lai izprastu to cÄloni(s) un novÄrstu. atkÄrtoÅ”anÄs nÄkotnÄ. KopumÄ tas ir tas, kur jums vajadzÄtu sÄkt.
Apskatiet kļūmju vÄsturi, atzÄ«mÄjiet tÄs COE vai pÄcnÄves un klasificÄjiet tÄs. Nosakiet izplatÄ«tÄkos modeļus, kas bieži rada problÄmas, un par katru COE uzdodiet sev Å”Ädu jautÄjumu:
"Vai to varÄja paredzÄt un tÄpÄc novÄrst ar defektu injekciju?"
Es atceros vienu neveiksmi savas karjeras sÄkumÄ. To varÄja viegli novÄrst, ja mÄs bÅ«tu veikuÅ”i pÄris vienkÄrÅ”us haosa eksperimentus:
NormÄlos apstÄkļos aizmugursistÄmas instances reaÄ£Ä uz veselÄ«bas pÄrbaudÄm no slodzes balansÄtÄjs (ELB)). ELB izmanto Ŕīs pÄrbaudes, lai novirzÄ«tu pieprasÄ«jumus uz veseliem gadÄ«jumiem. Kad izrÄdÄs, ka instance ir āneveselÄ«gaā, ELB pÄrtrauc tai sÅ«tÄ«t pieprasÄ«jumus. KÄdu dienu pÄc veiksmÄ«gas mÄrketinga kampaÅas satiksmes apjoms pieauga, un aizmugursistÄmas sÄka reaÄ£Ät uz veselÄ«bas pÄrbaudÄm lÄnÄk nekÄ parasti. JÄsaka, ka Ŕīs veselÄ«bas pÄrbaudes bija dziļi, tas ir, tika pÄrbaudÄ«ts atkarÄ«bu stÄvoklis.
TomÄr kÄdu laiku viss bija kÄrtÄ«bÄ.
Tad jau diezgan saspringtos apstÄkļos viens no gadÄ«jumiem sÄka izpildÄ«t nekritisku, regulÄru ETL cron uzdevumu. Liela trafika un cronjob kombinÄcija palielinÄja CPU noslogojumu lÄ«dz gandrÄ«z 100%. CPU pÄrslodze vÄl vairÄk palÄninÄja reakcijas uz veselÄ«bas pÄrbaudÄm, tik ļoti, ka ELB nolÄma, ka instancÄ ir veiktspÄjas problÄmas. KÄ gaidÄ«ts, balansÄtÄjs pÄrtrauca tam sadalÄ«t trafiku, kas, savukÄrt, palielinÄja atlikuÅ”o grupas gadÄ«jumu slodzi.
PÄkÅ”Åi arÄ« visas pÄrÄjÄs instances sÄka izgÄzties veselÄ«bas pÄrbaudÄ.
Jaunas instances palaiÅ”anai bija nepiecieÅ”ama pakotÅu lejupielÄde un instalÄÅ”ana, un tas prasÄ«ja daudz ilgÄku laiku, nekÄ vajadzÄja ELB, lai tÄs pa vienam atspÄjotu automÄtiskÄs mÄrogoÅ”anas grupÄ. Skaidrs, ka drÄ«z vien viss process sasniedza kritisko punktu un aplikÄcija avarÄja.
Tad mÄs uz visiem laikiem sapratÄm Å”Ädus punktus:
ProgrammatÅ«ras instalÄÅ”ana, veidojot jaunu gadÄ«jumu, labÄk ir dot priekÅ”roku nemainÄ«gai pieejai Zelta AMI.
SarežģītÄs situÄcijÄs atbildÄm uz veselÄ«bas pÄrbaudÄm un ELB ir jÄbÅ«t prioritÄrÄm ā pÄdÄjÄ lieta, ko vÄlaties, ir sarežģīt dzÄ«vi atlikuÅ”ajiem gadÄ«jumiem.
Ä»oti palÄ«dz lokÄla veselÄ«bas pÄrbaužu keÅ”atmiÅa (pat uz dažÄm sekundÄm).
SarežģītÄ situÄcijÄ nepalaidiet cron uzdevumus un citus nekritiskus procesus - taupiet resursus svarÄ«gÄkajiem uzdevumiem.
Veicot automÄtisko mÄrogoÅ”anu, izmantojiet mazÄkus gadÄ«jumus. 10 mazu Ä«patÅu grupa ir labÄka nekÄ 4 lielu Ä«patÅu grupa; ja viena instance neizdodas, pirmajÄ gadÄ«jumÄ 10% trafika tiks sadalÄ«ti pa 9 punktiem, otrajÄ - 25% trafika pa trim punktiem.
TÄtad, vai to varÄja paredzÄt un tÄdÄjÄdi novÄrst, ievieÅ”ot problÄmu?
JÄ, un vairÄkos veidos.
PirmkÄrt, simulÄjot augstu CPU izmantoÅ”anu, izmantojot tÄdus rÄ«kus kÄ stress-ng vai cpuburn:
āÆ stress-ng --matrix 1 -t 60s
stress-ng
OtrkÄrt, pÄrslogojot instanci ar wrk un citi lÄ«dzÄ«gi komunÄlie pakalpojumi:
Eksperimenti ir salÄ«dzinoÅ”i vienkÄrÅ”i, taÄu tie var sniegt labu vielu pÄrdomÄm, nepÄrdzÄ«vojot patiesas neveiksmes radÄ«to stresu.
Bet neapstÄjieties pie tÄ. MÄÄ£iniet atveidot avÄriju testa vidÄ un pÄrbaudiet savu atbildi uz jautÄjumu "Vai to varÄja paredzÄt un tÄpÄc novÄrst, ievieÅ”ot kļūdu?" Å is ir neliels haosa eksperiments haosa eksperimenta ietvaros, lai pÄrbaudÄ«tu pieÅÄmumus, taÄu sÄkot ar neveiksmi.
Vai tas bija sapnis, vai tas tieÅ”Äm notika?
TÄpÄc izpÄtiet neveiksmju vÄsturi, analizÄjiet ÄD, atzÄ«mÄjiet un klasificÄjiet tos pÄc ātrÄpÄ«juma rÄdiusaā jeb, precÄ«zÄk, ietekmÄto klientu skaita, un pÄc tam meklÄjiet modeļus. PajautÄjiet sev, vai to varÄja paredzÄt un novÄrst, iepazÄ«stinot ar problÄmu. PÄrbaudiet savu atbildi.
PÄc tam pÄrejiet uz visizplatÄ«tÄkajiem modeļiem ar lielÄko diapazonu.
2. Izveidojiet atkarības karti
Veltiet brÄ«di, lai pÄrdomÄtu savu pieteikumu. Vai ir skaidra tÄ atkarÄ«bu karte? Vai jÅ«s zinÄt, kÄda bÅ«s to ietekme, ja notiks neveiksme?
Ja neesat ļoti iepazinies ar savas lietojumprogrammas kodu vai tas ir kļuvis ļoti liels, var bÅ«t grÅ«ti saprast, ko kods dara un kÄdas ir tÄ atkarÄ«bas. Izpratne par Ŕīm atkarÄ«bÄm un to iespÄjamo ietekmi uz lietojumprogrammu un lietotÄjiem ir ļoti svarÄ«ga, lai zinÄtu, kur sÄkt ar haosa inženieriju: sÄkumpunkts ir komponents ar lielÄko trieciena rÄdiusu.
AtkarÄ«bu identificÄÅ”ana un dokumentÄÅ”ana tiek saukta par "atkarÄ«bas kartes izveideĀ» (atkarÄ«bas kartÄÅ”ana). Parasti tas tiek darÄ«ts lietojumprogrammÄm ar lielu kodu bÄzi, izmantojot kodu profilÄÅ”anas rÄ«kus. (koda profilÄÅ”ana) un instrumentÄcija (instrumenti). Varat arÄ« izveidot karti, uzraugot tÄ«kla trafiku.
TomÄr ne visas atkarÄ«bas ir vienÄdas (kas vÄl vairÄk sarežģī procesu). Dažas kritisks, cits - sekundÄrais(vismaz teorÄtiski, jo avÄrijas bieži notiek tÄdu atkarÄ«bu problÄmu dÄļ, kuras tika uzskatÄ«tas par nekritiskÄm).
Bez kritiskÄm atkarÄ«bÄm pakalpojums nevar darboties. Nekritiskas atkarÄ«bas "nevajadzÄtuĀ» ietekmÄt pakalpojumu kritiena gadÄ«jumÄ. Lai izprastu atkarÄ«bas, jums ir jÄbÅ«t skaidrai izpratnei par jÅ«su lietojumprogrammas izmantotajÄm API. Tas var bÅ«t daudz grÅ«tÄk, nekÄ Å”Ä·iet ā vismaz lieliem lietojumiem.
SÄciet, izpÄtot visas API. Izcelt visvairÄk nozÄ«mÄ«gs un kritisks... Å em atkarÄ«bas no kodu krÄtuves, pÄrbaudiet to savienojumu žurnÄli, pÄc tam skatiet dokumentÄcija (protams, ja tas pastÄv - pretÄjÄ gadÄ«jumÄ jums joprojÄm irŠ¾lielÄkas problÄmas). Izmantojiet rÄ«kus, lai profilÄÅ”ana un izsekoÅ”ana, filtrÄjiet ÄrÄjos zvanus.
Varat izmantot tÄdas programmas kÄ netstat - komandrindas utilÄ«ta, kas parÄda visu sistÄmas tÄ«kla savienojumu (aktÄ«vÄs ligzdas) sarakstu. PiemÄram, lai uzskaitÄ«tu visus paÅ”reizÄjos savienojumus, ierakstiet:
āÆ netstat -a | more
AWS varat izmantot plÅ«smas žurnÄli (plÅ«smas žurnÄli) VPC ir metode, kas ļauj apkopot informÄciju par IP trafiku, kas iet uz vai no VPC tÄ«kla saskarnÄm. Å Ädi žurnÄli var palÄ«dzÄt arÄ« citos uzdevumos ā piemÄram, meklÄjot atbildi uz jautÄjumu, kÄpÄc noteikta trafika nesasniedz instanci.
Varat arÄ« izmantot AWS rentgens. X-Ray ļauj iegÅ«t detalizÄtu, "galÄ«go" (no gala lÄ«dz galam) pÄrskatu par pieprasÄ«jumiem, kad tie pÄrvietojas lietojumprogrammÄ, kÄ arÄ« izveido lietojumprogrammas pamatÄ esoÅ”o komponentu karti. Ä»oti Ärti, ja nepiecieÅ”ams noteikt atkarÄ«bas.
AWS rentgena konsole
TÄ«kla atkarÄ«bas karte ir tikai daļÄjs risinÄjums. JÄ, tas parÄda, kura lietojumprogramma ar kuru sazinÄs, taÄu ir arÄ« citas atkarÄ«bas.
Daudzas lietojumprogrammas izmanto DNS, lai izveidotu savienojumu ar atkarÄ«bÄm, savukÄrt citas var izmantot pakalpojumu atklÄÅ”anu vai pat cieti kodÄtas IP adreses konfigurÄcijas failos (piem., /etc/hosts).
PiemÄram, jÅ«s varat izveidot DNS melnais caurums via iptables un paskaties, kas saplÄ«st. Lai to izdarÄ«tu, ievadiet Å”Ädu komandu:
Ja /etc/hosts vai citus konfigurÄcijas failus, jÅ«s atradÄ«sit IP adreses, par kurÄm jÅ«s neko nezinÄt (jÄ, diemžÄl, tÄ arÄ« notiek), varat atkal nÄkt palÄ«gÄ iptables. PieÅemsim, ka esat atklÄjis 8.8.8.8 un nezina, ka Ŕī ir Google publiskÄ DNS servera adrese. Izmantojot iptables Varat bloÄ·Ät ienÄkoÅ”o un izejoÅ”o trafiku uz Å”o adresi, izmantojot Å”Ädas komandas:
āÆ 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"
Tiek slÄgta piekļuve
Pirmais noteikums noÅem visas paketes no Google publiskÄ DNS: ping darbojas, bet paketes netiek atgrieztas. Otrais noteikums pamet visas paketes, kas nÄk no jÅ«su sistÄmas uz Google publisko DNS ā atbildot uz ping mÄs saÅemam DarbÄ«ba nav atļauta.
PiezÄ«me: Å”ajÄ konkrÄtajÄ gadÄ«jumÄ to bÅ«tu labÄk izmantot whois 8.8.8.8, bet tas ir tikai piemÄrs.
MÄs varam iet vÄl dziļÄk truÅ”a bedrÄ, jo viss, kas izmanto TCP un UDP, faktiski ir atkarÄ«gs arÄ« no IP. VairumÄ gadÄ«jumu IP ir piesaistÄ«ts ARP. Neaizmirstiet par ugunsmÅ«riem...
Ja iedzersi sarkano tableti, tu paliksi BrÄ«numzemÄ, un es tev parÄdÄ«Å”u, cik dziļa ir truÅ”a bedre.
RadikÄlÄka pieeja ir atvienot maŔīnas pa vienai un redzÄt, kas salauzts... kļūsti par "haosa mÄrkaÄ·i". Protams, daudzas ražoÅ”anas sistÄmas nav paredzÄtas Å”Ädam brutÄla spÄka uzbrukumam, bet vismaz to var izmÄÄ£inÄt testa vidÄ.
AtkarÄ«bas kartes izveide bieži ir ļoti ilgstoÅ”s pasÄkums. Es nesen runÄju ar klientu, kurÅ” gandrÄ«z divus gadus pavadÄ«ja, izstrÄdÄjot rÄ«ku, kas pusautomÄtiski Ä£enerÄ atkarÄ«bas kartes simtiem mikropakalpojumu un komandu.
TomÄr rezultÄts ir ļoti interesants un noderÄ«gs. JÅ«s uzzinÄsiet daudz par savu sistÄmu, tÄs atkarÄ«bÄm un darbÄ«bÄm. VÄlreiz esiet pacietÄ«gs: pats ceļojums ir vissvarÄ«gÄkais.
3. Sargieties no pÄrmÄrÄ«gas paÅ”pÄrliecinÄtÄ«bas
"Kas par ko sapÅo, tas tam tic." ā DÄmostens
Vai esat kÄdreiz dzirdÄjuÅ”i par pÄrmÄrÄ«gas pÄrliecÄ«bas efekts?
SaskaÅÄ ar VikipÄdiju, pÄrmÄrÄ«gas paÅ”pÄrliecinÄtÄ«bas efekts ir "kognitÄ«va novirze, kurÄ personas pÄrliecÄ«ba par savÄm darbÄ«bÄm un lÄmumiem ir ievÄrojami lielÄka par Å”o spriedumu objektÄ«vo precizitÄti, Ä«paÅ”i, ja pÄrliecÄ«bas lÄ«menis ir salÄ«dzinoÅ”i augsts."
Balstīts uz instinktu un pieredzi...
No savas pieredzes varu teikt, ka Ŕī kropļoÅ”ana ir lielisks mÄjiens, kur sÄkt ar haosa inženieriju.
Uzmanieties no pÄrÄk paÅ”pÄrliecinÄta operatora:
ÄÄrlijs: "Å Ä« lieta nav kritusi piecus gadus, viss ir kÄrtÄ«bÄ!"
AvÄrija: "Pagaidiet... Es drÄ«z bÅ«Å”u klÄt!"
NeobjektivitÄte kÄ pÄrmÄrÄ«gas paÅ”pÄrliecinÄtÄ«bas sekas ir mÄnÄ«ga un pat bÄ«stama lieta dažÄdu to ietekmÄjoÅ”o faktoru dÄļ. Tas jo Ä«paÅ”i attiecas uz gadÄ«jumiem, kad komandas dalÄ«bnieki ir ielikuÅ”i sirdi tehnoloÄ£ijÄ vai veltÄ«juÅ”i daudz laika tÄs ālaboÅ”anaiā.
SummÄjot
Haosa inženierijas sÄkumpunkta meklÄÅ”ana vienmÄr sniedz vairÄk rezultÄtu, nekÄ gaidÄ«ts, un komandas, kuras pÄrÄk Ätri sÄk lauzt lietas, aizmirst par globÄlÄko un interesantÄko (haosa-) bÅ«tÄ«bu.inženierzinÄtnes - radoÅ”a izmantoÅ”ana zinÄtniskÄs metodes Šø empÄ«riski pierÄdÄ«jumi (programmatÅ«ras) sistÄmu projektÄÅ”anai, izstrÄdei, ekspluatÄcijai, uzturÄÅ”anai un uzlaboÅ”anai.
Ar to noslÄdzas otrÄ daļa. LÅ«dzu, rakstiet atsauksmes, dalieties viedokļos vai vienkÄrÅ”i uzsitiet plaukstas vidÄjs. NÄkamajÄ daÄ¼Ä I tieÅ”Äm Es apsvÄrÅ”u rÄ«kus un metodes kļūmju ievieÅ”anai sistÄmÄs. LÄ«dz!