Chaos Engineering: luso lowononga mwadala. Gawo 2

Zindikirani. transl.: Nkhaniyi ikupitirizabe mndandanda waukulu wa nkhani kuchokera kwa mlaliki waukadaulo wa AWS Adrian Hornsby, yemwe amafotokoza m'njira yosavuta komanso yomveka bwino kufunika koyesera kuchepetsa zotsatira za kulephera kwa machitidwe a IT.

Chaos Engineering: luso lowononga mwadala. Gawo 2

"Ngati mukulephera kukonzekera pulani, ndiye kuti mukufuna kulephera." - Benjamin Franklin

В gawo loyamba M'nkhani zotsatizanazi, ndidayambitsa lingaliro la uinjiniya wa chipwirikiti ndikufotokozera momwe zimathandizire kupeza ndikuwongolera zolakwika m'dongosolo zisanachitike kulephera kupanga. Idakambirananso momwe uinjiniya wachisokonezo umathandizira kusintha kwachikhalidwe m'mabungwe.

Kumapeto kwa gawo loyamba, ndinalonjeza kuti ndidzalankhula za "zida ndi njira zobweretsera zolephera mu machitidwe." Tsoka, mutu wanga unali ndi zolinga zake pankhaniyi, ndipo m'nkhaniyi ndiyesera kuyankha funso lodziwika kwambiri lomwe limakhalapo pakati pa anthu omwe akufuna kulowa muumisiri wachisokonezo: Choyenera kuswa choyamba?

Funso lalikulu! Komabe, sakuwoneka kuti akuvutitsidwa kwambiri ndi panda uyu ...

Chaos Engineering: luso lowononga mwadala. Gawo 2
Osasokoneza ndi chipwirikiti panda!

Yankho lalifupi: Yang'anani mautumiki ovuta panjira yopempha.

Yankho lalitali koma lomveka bwino: Kuti mumvetse komwe mungayambire kuyesa chipwirikiti, tcherani khutu kumadera atatu:

  1. Yang'anani mbiri ya ngozi ndi kuzindikira mapangidwe;
  2. Sankhani kudalira kwambiri;
  3. Gwiritsani otchedwa kudzidalira mopambanitsa.

Ndizoseketsa, koma gawo ili likhoza kutchedwa mosavuta "Ulendo Wodzipezera Wekha ndi Kuzindikira". Mmenemo tidzayamba "kusewera" ndi zida zina zozizira.

1. Yankho lake lili m’mbuyomu

Ngati mukukumbukira, mu gawo loyamba ndidayambitsa lingaliro la Correction-of-Errors (COE) - njira yomwe timasanthula zolakwa zathu - zolakwika muukadaulo, njira kapena bungwe - kuti timvetsetse zomwe zimayambitsa (zawo) ndikupewa. kubwerezanso m’tsogolo . Mwambiri, apa ndipamene muyenera kuyambira.

"Kuti mumvetse zomwe zikuchitika, muyenera kudziwa zam'mbuyo." - Carl Sagan

Yang'anani mbiri ya zolephera, ikani mu COE kapena postmortems ndikuziyika m'magulu. Dziwani njira zomwe nthawi zambiri zimabweretsa mavuto, ndipo pa COE iliyonse, dzifunseni funso ili:

"Kodi izi zikananenedweratu motero kutetezedwa ndi jakisoni wolakwika?"

Ndimakumbukira kulephera kumodzi kumayambiriro kwa ntchito yanga. Zikadatha kupewedwa mosavuta tikadachita zoyeserera zingapo zosavuta zachisokonezo:

M'mikhalidwe yabwinobwino, zochitika zakumbuyo zimayankha pakuwunika zaumoyo kuchokera katundu balancer (ELB)). ELB imagwiritsa ntchito macheke awa kuti atumize zopempha kuzochitika zathanzi. Zikadziwika kuti chochitika "ndichopanda thanzi", ELB imasiya kutumiza zopempha. Tsiku lina, pambuyo pochita malonda opambana, kuchuluka kwa magalimoto kunawonjezeka ndipo obwerera m'mbuyo adayamba kuyankha kuwunika kwaumoyo pang'onopang'ono kuposa nthawi zonse. Ziyenera kunenedwa kuti macheke awa azaumoyo anali zakuya, ndiko kuti, mkhalidwe wa odalira adafufuzidwa.

Komabe, zonse zinali bwino kwakanthawi.

Kenako, m'malo ovuta kwambiri, imodzi mwazochitikazo idayamba kuchita ntchito yosafunikira, yokhazikika ya ETL cron. Kuphatikiza kwa kuchuluka kwa magalimoto ndi cronjob kudakankhira kugwiritsidwa ntchito kwa CPU pafupifupi 100%. Kuchulukitsitsa kwa CPU kunachepetsanso mayankho pakuwunika zaumoyo, kotero kuti ELB idaganiza kuti chochitikacho chikukumana ndi zovuta. Monga momwe zimayembekezeredwa, wolinganiza anasiya kugawa magalimoto kwa iwo, zomwe zinachititsa kuti kuwonjezeka kwa katundu pazochitika zotsalira mu gululo.

Mwadzidzidzi, zochitika zina zonse zidayambanso kulephera kuyesa thanzi.

Kuyambitsa chochitika chatsopano kumafuna kutsitsa ndikuyika ma phukusi ndipo kudatenga nthawi yayitali kuposa momwe zidatengera ELB kuwaletsa - m'modzi ndi m'modzi - pagulu la autoscaling. Zikuwonekeratu kuti posakhalitsa ndondomeko yonseyi inafika pachimake ndipo ntchitoyo inagwa.

Kenako tidamvetsetsa mfundo izi mpaka kalekale:

  • Kuyika mapulogalamu popanga chochitika chatsopano kumatenga nthawi yayitali; ndibwino kuti musankhe njira yosasinthika komanso Golden AMI.
  • Munthawi zovuta, mayankho owunika zaumoyo ndi ma ELB ayenera kukhala patsogolo - chomaliza chomwe mukufuna ndikusokoneza moyo pazotsalazo.
  • Kusunga macheke am'deralo kumathandiza kwambiri (ngakhale kwa masekondi angapo).
  • Munthawi yovuta, musamayendetse ntchito za cron ndi njira zina zosafunikira - sungani zida zantchito zofunika kwambiri.
  • Pogwiritsa ntchito autoscaling, gwiritsani ntchito zing'onozing'ono. Gulu la zitsanzo zazing'ono 10 ndi zabwino kuposa gulu la 4 lalikulu; Ngati chochitika chimodzi chikulephera, koyamba 10% ya magalimoto idzagawidwa pa mfundo 9, chachiwiri - 25% ya magalimoto pa mfundo zitatu.

Ndipo kotero, kodi izi zikanadziwikiratu, motero kupewedwa mwa kuyambitsa vutoli?

kuti, ndipo m’njira zingapo.

Choyamba, poyerekezera kugwiritsa ntchito kwakukulu kwa CPU pogwiritsa ntchito zida monga stress-ng kapena cpuburn:

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

Chaos Engineering: luso lowononga mwadala. Gawo 2
kupanikizika-ng

Kachiwiri, pakudzaza chitsanzocho ndi wrk ndi zida zina zofananira:

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

Chaos Engineering: luso lowononga mwadala. Gawo 2

Zoyesererazo ndizosavuta, koma zimatha kupereka chakudya chabwino choganiza popanda kupsinjika ndi kulephera kwenikweni.

Komabe, osayima pamenepo. Yesetsani kutulutsanso ngoziyi pamalo oyesera ndikuwona yankho lanu ku funso "Kodi izi zikanadziwikiratu ndipo motero kupewedwa mwa kuyambitsa cholakwika?" Uku ndi kuyesa kwa chipwirikiti kakang'ono mkati mwa kuyesa kwachisokonezo kuyesa malingaliro, koma kuyambira ndi kulephera.

Chaos Engineering: luso lowononga mwadala. Gawo 2
Kodi anali maloto, kapena zinachitikadi?

Choncho phunzirani mbiri ya zolephera, pendani Mtengo wa EOC, ikani ndi kuwaika m'magulu a "hit radius" - kapena molondola, chiwerengero cha makasitomala omwe akhudzidwa - ndiyeno yang'anani mapatani. Dzifunseni nokha ngati izi zikananenedweratu ndikupewa poyambitsa vutoli. Yang'anani yankho lanu.

Kenako sinthani kumitundu yodziwika kwambiri yokhala ndi mitundu yayikulu kwambiri.

2. Pangani mapu odalira

Tengani kamphindi kuti muganizire za ntchito yanu. Kodi pali mapu omveka bwino azomwe zimadalira? Kodi mukudziwa zomwe zingawathandize ngati atalephera?

Ngati simukuidziwa bwino nambala ya pulogalamu yanu kapena yakhala yayikulu kwambiri, zitha kukhala zovuta kumvetsetsa zomwe codeyo imachita komanso kudalira kwake. Kumvetsetsa zodalira izi komanso momwe zingakhudzire kugwiritsa ntchito ndi ogwiritsa ntchito ndikofunikira kuti mudziwe komwe mungayambire ndi uinjiniya wachisokonezo: poyambira ndi gawo lomwe lili ndi radius yayikulu kwambiri.

Kuzindikira ndi kulemba zodalira kumatchedwa "kupanga mapu odalira» (kudalira mapu). Izi zimachitika makamaka pamapulogalamu omwe ali ndi ma code akuluakulu pogwiritsa ntchito zida zowonetsera ma code. (mbiri ya kodi) ndi zida (zida). Mutha kupanganso mapu powunika kuchuluka kwa ma network.

Komabe, sizinthu zonse zodalira zomwe zili zofanana (zomwe zimapangitsa kuti ntchitoyi ikhale yovuta). Ena wotsutsa, zina - sekondale (mwinamwake, chifukwa kusweka kumachitika nthawi zambiri chifukwa cha zovuta za kudalira komwe kumawoneka kuti sikunali kofunikira).

Popanda kudalira kwambiri, ntchitoyo singagwire ntchito. Kudalira kosafunikira "sayenera» kukopa utumiki pakagwa kugwa. Kuti mumvetse kudalira, muyenera kumvetsetsa bwino ma API omwe amagwiritsidwa ntchito ndi pulogalamu yanu. Izi zitha kukhala zovuta kwambiri kuposa momwe zimawonekera - makamaka pamapulogalamu akuluakulu.

Yambani podutsa ma API onse. Onetsani kwambiri wofunikira komanso wotsutsa. Tengani зависимости kuchokera ku code repository, yang'anani zipika zolumikizira, ndiye onani zolemba (zowona, ngati alipo - apo ayi mukadali nawoоmavuto aakulu). Gwiritsani ntchito zida kufotokoza ndi kutsatira, sefa mafoni akunja.

Mutha kugwiritsa ntchito mapulogalamu ngati netstat - chida cholamula chomwe chikuwonetsa mndandanda wamalumikizidwe onse a netiweki (sockets yogwira) mudongosolo. Mwachitsanzo, kuti mulembe maulaliki onse apano, lembani:

❯ netstat -a | more 

Chaos Engineering: luso lowononga mwadala. Gawo 2

Mu AWS mungagwiritse ntchito zipika zoyenda (flow logs) VPC ndi njira yomwe imakulolani kusonkhanitsa zambiri za IP traffic kupita kapena kuchokera ku network interfaces mu VPC. Mitengo yotereyi ingathandizenso ndi ntchito zina - mwachitsanzo, kupeza yankho ku funso loti chifukwa chiyani magalimoto ena safika.

Mukhozanso kugwiritsa ntchito AWS X-ray. X-Ray imakulolani kuti mudziwe zambiri, "zomaliza" (mapeto mpaka kumapeto) kufotokozera mwachidule zopempha pamene akudutsa muzogwiritsira ntchito, komanso amapanga mapu a zofunikira za pulogalamuyo. Zothandiza kwambiri ngati mukufuna kudziwa zomwe zimadalira.

Chaos Engineering: luso lowononga mwadala. Gawo 2
AWS X-Ray Console

Mapu odalira pa netiweki ndi njira yochepa chabe. Inde, zikuwonetsa kuti ndi pulogalamu iti yomwe imalumikizana nayo, koma pali zodalira zina.

Mapulogalamu ambiri amagwiritsira ntchito DNS kuti agwirizane ndi zodalira, pamene ena angagwiritse ntchito kupeza ntchito kapena ma adilesi a IP olimba kwambiri pamafayilo osintha (mwachitsanzo. /etc/hosts).

Mwachitsanzo, mukhoza kupanga DNS yakuda ndi thandizo iptables ndikuwona zomwe zasweka. Kuti muchite izi, lowetsani lamulo ili:

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

Chaos Engineering: luso lowononga mwadala. Gawo 2
DNS dzenje lakuda

Ngati /etc/hosts kapena mafayilo ena osinthira, mupeza ma adilesi a IP omwe simudziwa chilichonse (inde, mwatsoka, izi zimachitikanso), mutha kupulumutsanso. iptables. Tiyerekeze kuti mwapeza 8.8.8.8 ndipo sindikudziwa kuti iyi ndi adilesi ya seva ya Google ya DNS. Pogwiritsa ntchito iptables Mutha kuletsa magalimoto obwera ndi otuluka ku adilesiyi pogwiritsa ntchito malamulo awa:

❯ 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: luso lowononga mwadala. Gawo 2
Kutseka mwayi

Lamulo loyamba limagwetsa mapaketi onse kuchokera ku Google DNS yapagulu: ping amagwira ntchito, koma mapaketi sabwezeredwa. Lamulo lachiwiri limagwetsa mapaketi onse ochokera kudongosolo lanu kupita ku DNS yapagulu ya Google - poyankha ping timapeza Kugwira ntchito sikuloledwa.

Zindikirani: mu nkhani iyi zingakhale bwino kugwiritsa ntchito whois 8.8.8.8, koma ichi ndi chitsanzo chabe.

Titha kulowa pansi pa dzenje la kalulu, chifukwa chilichonse chomwe chimagwiritsa ntchito TCP ndi UDP chimadaliranso IP. Nthawi zambiri, IP imalumikizidwa ndi ARP. Musaiwale za ma firewall ...

Chaos Engineering: luso lowononga mwadala. Gawo 2
Mukamwa mapiritsi ofiira, mumakhala ku Wonderland, ndipo ndikuwonetsani kuya kwa dzenje la kalulu."

Njira yowonjezereka ndiyo ku kusagwirizana magalimoto imodzi ndi imodzi ndikuwona zomwe zasweka ... kukhala "nyani wachisokonezo." Zachidziwikire, machitidwe ambiri opanga sanapangidwe kuti aziwukira mwankhanza, koma amatha kuyesedwa pamalo oyeserera.

Kupanga mapu odalirana nthawi zambiri ndi ntchito yayitali kwambiri. Posachedwa ndidalankhula ndi kasitomala yemwe adakhala pafupifupi zaka 2 ndikupanga chida chomwe chimapanga mamapu odalira mazana a ma microservices ndi malamulo.

Zotsatira zake, komabe, ndizosangalatsa komanso zothandiza. Muphunzira zambiri za dongosolo lanu, kudalira kwake ndi ntchito zake. Apanso, khalani oleza mtima: ndi ulendo womwewo womwe ndi wofunika kwambiri.

3. Chenjerani ndi kudzidalira mopambanitsa

"Aliyense amene amalota zomwe amakhulupirira." - Demosthenes

Kodi munayamba mwamvapo kudzidalira mopambanitsa?

Malinga ndi Wikipedia, kudzidalira mopambanitsa ndi "kukondera kwachidziwitso komwe munthu amakhulupirira zochita ndi zosankha zake amakhala wamkulu kwambiri kuposa kulondola kwa zigamulozo, makamaka ngati chidaliro chakwera kwambiri."

Chaos Engineering: luso lowononga mwadala. Gawo 2
Kutengera chibadwa komanso zokumana nazo...

Mwachidziwitso changa, kupotoza uku ndi lingaliro lalikulu la komwe mungayambire ndi uinjiniya wachisokonezo.

Chenjerani ndi wodzidalira mopambanitsa:

Charlie: "Chinthu ichi sichinagwe m'zaka zisanu, zonse zili bwino!"
Kuwonongeka: "Dikirani ... ndibwera posachedwa!"

Kukondera chifukwa chodzidalira mopambanitsa ndi chinthu chobisika komanso chowopsa chifukwa cha zinthu zosiyanasiyana zomwe zimakhudza. Izi ndi zoona makamaka pamene mamembala a timu atsanulira mitima yawo mu luso lamakono kapena athera nthawi yochuluka "akukonza" izo.

Kufotokozera mwachidule

Kusaka poyambira uinjiniya wachisokonezo nthawi zonse kumabweretsa zotsatira zambiri kuposa momwe amayembekezera, ndipo magulu omwe amayamba kuswa zinthu mwachangu samawona tanthauzo lapadziko lonse lapansi komanso losangalatsa la (chipwirikiti-)uinjiniya - kulenga ntchito njira zasayansi и umboni wotsimikizika pakupanga, kukonza, kugwira ntchito, kukonza ndi kukonza (mapulogalamu) machitidwe.

Izi zikumaliza gawo lachiwiri. Chonde lembani ndemanga, gawanani malingaliro kapena ingoomberani m'manja sing'anga. Mu gawo lotsatira I kwenikweni Ndidzalingalira zida ndi njira zowonetsera zolephera mu machitidwe. Mpaka!

PS kuchokera kwa womasulira

Werenganinso pa blog yathu:

Source: www.habr.com

Kuwonjezera ndemanga