Chaos Engineering: ang arte sa tinuyo nga pagguba. Bahin 2

Nota. transl.: Kini nga artikulo nagpadayon sa usa ka maayo nga serye sa mga artikulo gikan sa AWS teknolohiya ebanghelista Adrian Hornsby, nga nagtakda sa pagpatin-aw sa usa ka yano ug tin-aw nga paagi sa kamahinungdanon sa eksperimento sa pagpakunhod sa mga sangputanan sa mga kapakyasan sa IT sistema.

Chaos Engineering: ang arte sa tinuyo nga pagguba. Bahin 2

"Kung mapakyas ka sa pag-andam sa usa ka plano, nan nagplano ka nga mapakyas." - Benjamin Franklin

В ang una nga bahin Niini nga serye sa mga artikulo, akong gipaila ang konsepto sa chaos engineering ug gipatin-aw kung giunsa kini makatabang sa pagpangita ug pagtul-id sa mga sayup sa sistema sa wala pa kini mosangpot sa mga kapakyasan sa produksiyon. Gihisgutan usab niini kung giunsa ang chaos engineering nagpasiugda sa positibo nga pagbag-o sa kultura sulod sa mga organisasyon.

Sa katapusan sa unang bahin, misaad ko nga maghisgot mahitungod sa "mga himan ug pamaagi sa pagpaila sa mga kapakyasan ngadto sa mga sistema." Alaut, ang akong ulo adunay kaugalingon nga mga plano bahin niini, ug sa kini nga artikulo sulayan nako nga tubagon ang labing inila nga pangutana nga mitungha sa mga tawo nga gusto nga mosulod sa chaos engineering: Unsay una nga buwagan?

Nindot nga pangutana! Bisan pa, ingon siya dili labi nga nahasol sa kini nga panda ...

Chaos Engineering: ang arte sa tinuyo nga pagguba. Bahin 2
Ayaw pagsamok sa kagubot nga panda!

Mubo nga tubag: Target ang mga kritikal nga serbisyo subay sa dalan sa paghangyo.

Mas taas apan mas klaro nga tubag: Aron masabtan kung asa magsugod sa pag-eksperimento sa kagubot, pagtagad sa tulo ka mga bahin:

  1. Tan-awa kasaysayan sa pagkahagsa ug pag-ila sa mga sumbanan;
  2. Pagdesisyon sa kritikal nga pagsalig;
  3. Gamita ang gitawag nga epekto sa sobrang pagsalig.

Kataw-anan, apan kini nga bahin dali ra matawag "Usa ka Panaw padulong sa Kaugalingon nga Pagdiskobre ug Kalamdagan". Niini magsugod kami sa "pagdula" uban ang pipila ka cool nga mga instrumento.

1. Ang tubag anaa sa nangagi

Kung mahinumduman nimo, sa unang bahin akong gipaila ang konsepto sa Correction-of-Errors (COE) - usa ka pamaagi diin atong analisahon ang atong mga kasaypanan - mga sayop sa teknolohiya, proseso o organisasyon - aron masabtan ang ilang (mga) hinungdan ug mapugngan pagbalik sa umaabot. Sa kinatibuk-an, dinhi ka kinahanglan magsugod.

"Aron masabtan ang karon, kinahanglan nimo mahibal-an ang nangagi." — Carl Sagan

Tan-awa ang kasaysayan sa mga kapakyasan, i-tag kini sa COE o postmortems ug klasipikasyon kini. Ilha ang kasagarang mga sumbanan nga sagad mosangpot sa mga problema, ug alang sa matag COE, pangutan-a ang imong kaugalingon sa mosunod nga pangutana:

"Mahimo ba kini nga gitagna ug busa napugngan pinaagi sa fault injection?"

Nahinumdom ko sa usa ka kapakyasan sayo sa akong karera. Mahimo unta kini nga dali nga mapugngan kung naghimo kami og duha ka yano nga mga eksperimento sa kagubot:

Ubos sa normal nga mga kahimtang, ang mga backend nga mga higayon nagtubag sa mga pagsusi sa kahimsog gikan sa load balancer (ELB)). Gigamit sa ELB kini nga mga tseke aron i-redirect ang mga hangyo sa himsog nga mga higayon. Kung nahibal-an nga ang usa ka pananglitan "dili maayo", ang ELB mihunong sa pagpadala sa mga hangyo niini. Usa ka adlaw, pagkahuman sa usa ka malampuson nga kampanya sa pagpamaligya, ang gidaghanon sa trapiko misaka ug ang mga backend nagsugod sa pagtubag sa mga pagsusi sa kahimsog nga labi ka hinay kaysa sa naandan. Kini kinahanglan nga giingon nga kini nga mga pagsusi sa kahimsog lawom, nga mao, ang kahimtang sa mga dependency gisusi.

Bisan pa, ang tanan maayo sa makadiyot.

Pagkahuman, sa ilawom sa labi ka tensiyonado nga mga kahimtang, usa sa mga higayon nagsugod sa pagpatuman sa usa ka dili kritikal, regular nga buluhaton sa ETL cron. Ang kombinasyon sa taas nga trapiko ug cronjob nagduso sa paggamit sa CPU ngadto sa halos 100%. Ang sobra nga karga sa CPU labi nga nagpahinay sa mga tubag sa mga pagsusi sa kahimsog, mao nga nakahukom ang ELB nga ang pananglitan nakasinati mga problema sa pasundayag. Sama sa gipaabut, ang balancer mihunong sa pag-apod-apod sa trapiko niini, nga, sa baylo, misangpot sa pagtaas sa load sa nahabilin nga mga higayon sa grupo.

Sa kalit, ang tanan nga uban pang mga higayon nagsugod usab nga mapakyas sa pagsusi sa kahimsog.

Ang pagsugod sa usa ka bag-ong instance nanginahanglan sa pag-download ug pag-install sa mga pakete ug mas dugay pa kaysa gikuha sa ELB aron ma-disable kini - usa-usa - sa grupo sa autoscaling. Klaro nga sa wala madugay ang tibuok proseso nakaabot sa kritikal nga punto ug ang aplikasyon nahagsa.

Dayon among nasabtan sa walay katapusan ang mosunod nga mga punto:

  • Ang pag-install sa software kung maghimo usa ka bag-ong higayon nagkinahanglag taas nga panahon; mas maayo nga hatagan ang pagpalabi sa dili mausab nga pamaagi ug Bulawan nga AMI.
  • Sa komplikado nga mga sitwasyon, ang mga tubag sa mga pagsusi sa kahimsog ug mga ELB kinahanglan unahon - ang katapusan nga butang nga gusto nimo mao ang pagkomplikado sa kinabuhi alang sa nahabilin nga mga higayon.
  • Ang lokal nga pag-cache sa mga pagsusi sa kahimsog makatabang kaayo (bisan sa pipila ka segundo).
  • Sa usa ka lisud nga sitwasyon, ayaw pagdagan ang mga buluhaton sa cron ug uban pang dili kritikal nga mga proseso - pagtipig mga kapanguhaan alang sa labing hinungdanon nga mga buluhaton.
  • Kung nag-autoscaling, gamita ang gagmay nga mga higayon. Ang usa ka grupo sa 10 ka gagmay nga mga espesimen mas maayo kay sa usa ka grupo sa 4 ka dagko; kung ang usa ka higayon mapakyas, sa una nga kaso 10% sa trapiko ipang-apod-apod sa 9 puntos, sa ikaduha - 25% sa trapiko sa tulo ka puntos.

Ug busa, mahimo ba kini nga nakita nang daan, ug busa mapugngan pinaagi sa pagpaila sa problema?

Oo, ug sa daghang paagi.

Una, pinaagi sa pagsundog sa taas nga paggamit sa CPU gamit ang mga himan sama sa stress-ng o cpuburn:

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

Chaos Engineering: ang arte sa tinuyo nga pagguba. Bahin 2
stress-ng

Ikaduha, pinaagi sa pag-overload sa pananglitan sa wrk ug uban pang susamang mga gamit:

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

Chaos Engineering: ang arte sa tinuyo nga pagguba. Bahin 2

Ang mga eksperimento medyo yano, apan makahatag pipila ka maayong pagkaon alang sa paghunahuna nga dili kinahanglan nga moagi sa tensiyon sa usa ka tinuud nga kapakyasan.

Hinuon, ayaw paghunong didto. Sulayi nga kopyahon ang pagkahagsa sa usa ka palibot sa pagsulay ug susiha ang imong tubag sa pangutana "Mahimo ba kini nga nakita nang daan ug busa napugngan pinaagi sa pagpaila sa usa ka sayup?" Kini usa ka mini nga eksperimento sa kagubot sulod sa usa ka eksperimento sa kagubot aron sulayan ang mga pangagpas, apan nagsugod sa usa ka kapakyasan.

Chaos Engineering: ang arte sa tinuyo nga pagguba. Bahin 2
Damgo ba kadto, o nahitabo ba gayod?

Busa tun-i ang kasaysayan sa mga kapakyasan, analisa EOC, tag ug iklasipikar sila pinaagi sa “hit radius”—o mas tukma, ang gidaghanon sa mga kustomer nga apektado—ug dayon pangitaa ang mga sumbanan. Pangutan-a ang imong kaugalingon kung mahimo ba kini nga matagna ug mapugngan pinaagi sa pagpaila sa problema. Susiha ang imong tubag.

Dayon ibalhin ngadto sa labing komon nga mga pattern nga adunay pinakadako nga range.

2. Paghimo ug dependency map

Paggahin og panahon sa paghunahuna mahitungod sa imong aplikasyon. Aduna bay klaro nga mapa sa mga dependency niini? Nahibal-an ba nimo kung unsa ang epekto niini kung adunay kapakyasan?

Kung dili ka kaayo pamilyar sa code sa imong aplikasyon o kini nahimong dako kaayo, mahimong lisud sabton kung unsa ang gibuhat sa code ug kung unsa ang mga dependency niini. Ang pagsabut niini nga mga dependency ug ang ilang posible nga epekto sa aplikasyon ug mga tiggamit hinungdanon aron mahibal-an kung asa magsugod sa chaos engineering: ang punto sa pagsugod mao ang sangkap nga adunay pinakadako nga radius sa epekto.

Ang pag-ila ug pagdokumento sa mga dependency gitawag nga "paghimo ug dependency map» (dependency mapping). Kasagaran kini gihimo alang sa mga aplikasyon nga adunay daghang base sa code gamit ang mga tool sa profile sa code. (pag-profile sa code) ug instrumentasyon (instrumentasyon). Mahimo ka usab nga maghimo usa ka mapa pinaagi sa pag-monitor sa trapiko sa network.

Bisan pa, dili tanan nga mga dependency parehas (nga labi nga nagpalisud sa proseso). Ang uban kritikal, uban - sekondarya (labing menos sa teorya, tungod kay ang mga pag-crash kanunay nga mahitabo tungod sa mga problema sa mga dependency nga giisip nga dili kritikal).

Kung walay mga kritikal nga pagsalig, ang serbisyo dili molihok. Dili kritikal nga mga pagsalig "dili» aron maimpluwensyahan ang serbisyo kung adunay pagkahulog. Aron masabtan ang mga dependency, kinahanglan nimo nga adunay klaro nga pagsabut sa mga API nga gigamit sa imong aplikasyon. Mahimo kini nga labi ka labi ka lisud kaysa sa ingon - labing menos alang sa dagkong mga aplikasyon.

Pagsugod pinaagi sa pag-agi sa tanan nga mga API. I-highlight ang pinakadaghan mahinungdanon ug kritikal. Dad-a pagsalig gikan sa code repository, susiha kini mga log sa koneksyon, unya tan-awa dokumentasyon (siyempre, kung naa kini - kung dili, naa pa nimoоmas dagkong mga problema). Gamita ang mga himan sa profiling ug pagsubay, pagsala sa gawas nga mga tawag.

Mahimo nimong gamiton ang mga programa sama sa netstat - usa ka command line utility nga nagpakita sa lista sa tanang koneksyon sa network (aktibong mga socket) sa sistema. Pananglitan, aron ilista ang tanang kasamtangang koneksyon, i-type ang:

❯ netstat -a | more 

Chaos Engineering: ang arte sa tinuyo nga pagguba. Bahin 2

Sa AWS mahimo nimong gamiton flow logs (flow logs) Ang VPC usa ka pamaagi nga nagtugot kanimo sa pagkolekta og impormasyon bahin sa IP traffic nga moadto o gikan sa network interface sa usa ka VPC. Ang ingon nga mga troso mahimo usab nga makatabang sa ubang mga buluhaton - pananglitan, pagpangita og tubag sa pangutana kung ngano nga ang pipila nga trapiko wala makaabut sa higayon.

Mahimo usab nimo gamiton AWS X-Ray. Gitugotan ka sa X-Ray nga makakuha og detalyado, "ultimate" (katapusan-sa-katapusan) overview sa mga hangyo samtang naglihok sila sa aplikasyon, ug nagtukod usab usa ka mapa sa nagpahiping mga sangkap sa aplikasyon. Kombenyente kaayo kung kinahanglan nimo nga mailhan ang mga dependency.

Chaos Engineering: ang arte sa tinuyo nga pagguba. Bahin 2
AWS X-Ray Console

Ang usa ka mapa sa pagsalig sa network usa lamang ka partial nga solusyon. Oo, kini nagpakita kung unsang aplikasyon ang nakigsulti kung diin, apan adunay uban nga mga dependency.

Daghang mga aplikasyon ang naggamit sa DNS aron makonektar sa mga dependency, samtang ang uban mahimong mogamit sa pagdiskubre sa serbisyo o bisan ang mga hard-coded IP address sa mga file sa pag-configure (eg. /etc/hosts).

Pananglitan, makahimo ka DNS blackhole sa panabang iptables ug tan-awa kung unsa ang naguba. Aron mahimo kini, pagsulod sa mosunod nga sugo:

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

Chaos Engineering: ang arte sa tinuyo nga pagguba. Bahin 2
DNS itom nga lungag

Kung sa /etc/hosts o uban pang mga file sa pag-configure, makit-an nimo ang mga IP adres nga wala nimo nahibal-an (oo, sa kasubo, mahitabo usab kini), mahimo ka nga makaluwas pag-usab iptables. Ingnon ta nga nakadiskobre ka 8.8.8.8 ug wala mahibal-an nga kini ang adres sa publiko nga DNS server sa Google. Pinaagi sa paggamit iptables Mahimo nimong babagan ang umaabot ug paggawas nga trapiko sa kini nga adres gamit ang mosunud nga mga mando:

❯ 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: ang arte sa tinuyo nga pagguba. Bahin 2
Pagsira sa access

Ang una nga lagda naghulog sa tanan nga mga pakete gikan sa publiko nga DNS sa Google: ping nagtrabaho, apan ang mga pakete wala ibalik. Ang ikaduha nga lagda naghulog sa tanan nga mga pakete nga naggikan sa imong sistema padulong sa publiko nga DNS sa Google - agig tubag sa ping atong makuha Dili gitugutan ang operasyon.

Hinumdomi: sa kini nga partikular nga kaso mas maayo nga gamiton whois 8.8.8.8, apan kini usa lamang ka pananglitan.

Mahimo pa nga mas lawom pa kita sa lungag sa kuneho, tungod kay ang tanan nga naggamit sa TCP ug UDP nagdepende usab sa IP. Sa kadaghanan nga mga kaso, ang IP nahigot sa ARP. Ayaw kalimti ang bahin sa mga firewall ...

Chaos Engineering: ang arte sa tinuyo nga pagguba. Bahin 2
Kung moinom ka sa pula nga pildoras, magpabilin ka sa Wonderland, ug ipakita ko kanimo kung unsa ka lawom ang lungag sa koneho."

Ang usa ka mas radikal nga pamaagi mao ang idiskonekta ang mga sakyanan sa tagsa-tagsa ug tan-awa kung unsa ang nabuak ... nahimong usa ka "chaos monkey." Siyempre, daghang mga sistema sa produksiyon ang wala gidisenyo alang sa ingon nga usa ka brute force nga pag-atake, apan labing menos kini mahimong sulayan sa usa ka palibot sa pagsulay.

Ang paghimo og usa ka dependency nga mapa sa kasagaran usa ka taas nga buluhaton. Bag-ohay lang nakigsulti ako sa usa ka kliyente nga migugol sa hapit 2 ka tuig sa paghimo sa usa ka himan nga semi-awtomatikong nagmugna og mga mapa sa pagsalig alang sa gatusan nga mga microservice ug mga mando.

Ang resulta, bisan pa, labi ka makapaikag ug mapuslanon. Daghan ka nga makakat-on bahin sa imong sistema, mga dependency ug mga operasyon niini. Sa makausa pa, pagpailub: ang panaw mismo ang labing hinungdanon.

3. Pagbantay sa sobra nga pagsalig

"Bisan kinsa nga nagdamgo sa unsa, motuo niini." — Demosthenes

Nakadungog ka na ba sa epekto sa sobrang pagsalig?

Sumala sa Wikipedia, ang epekto sa sobra nga pagsalig mao ang "usa ka pagpihig sa panghunahuna diin ang pagsalig sa usa ka tawo sa ilang mga aksyon ug mga desisyon labi ka dako kaysa sa katuyoan nga katukma sa mga hukom, labi na kung ang lebel sa pagsalig medyo taas."

Chaos Engineering: ang arte sa tinuyo nga pagguba. Bahin 2
Base sa instinct ug experience...

Sa akong kasinatian, kini nga pagtuis usa ka maayong timailhan kung asa magsugod sa chaos engineering.

Pagbantay sa sobra nga pagsalig sa operator:

Charlie: "Kini nga butang wala mahulog sa lima ka tuig, maayo ang tanan!"
Crash: “Wait... muadto ko dayon!”

Ang pagpihig isip resulta sa sobra nga pagsalig usa ka malimbungon ug gani peligroso nga butang tungod sa lainlaing mga hinungdan nga nag-impluwensya niini. Tinuod kini ilabi na kung ang mga miyembro sa team nagbubo sa ilang mga kasingkasing ngadto sa usa ka teknolohiya o migahin og daghang panahon sa "pag-ayo" niini.

Summing up

Ang pagpangita alang sa usa ka punto sa pagsugod alang sa chaos engineering kanunay nga nagdala og daghang mga resulta kaysa sa gipaabut, ug ang mga team nga nagsugod sa pagbungkag sa mga butang nga dali ra mawad-an sa panan-aw sa labi ka kalibutanon ug makapaikag nga esensya sa (kagubot-)Engineering - mamugnaon nga paggamit siyentipikanhong mga pamaagi и empirikal nga ebidensya alang sa disenyo, pagpalambo, operasyon, pagmentinar ug pagpaayo sa (software) nga mga sistema.

Kini nagtapos sa ikaduhang bahin. Palihug pagsulat og mga review, pagpaambit og mga opinyon o pagpakpak lang sa imong mga kamot medium. Sa sunod nga bahin I gyud Akong ikonsiderar ang mga himan ug pamaagi sa pagpaila sa mga kapakyasan sa mga sistema. Hangtod!

PS gikan sa tighubad

Basaha usab sa among blog:

Source: www.habr.com

Idugang sa usa ka comment