Chaos Engineering: kos duab ntawm txhob txwm rhuav tshem. Ntu 2

Nco tseg. txhais.: Kab lus no txuas ntxiv cov lus zoo los ntawm AWS thev naus laus zis tshaj tawm xov xwm Adrian Hornsby, uas tau teeb tsa los piav qhia hauv txoj hauv kev yooj yim thiab meej txog qhov tseem ceeb ntawm kev sim txhawm rau txo qhov tshwm sim ntawm kev ua tsis tiav hauv IT systems.

Chaos Engineering: kos duab ntawm txhob txwm rhuav tshem. Ntu 2

"Yog tias koj tsis npaj ib txoj kev npaj, ces koj npaj yuav ua tsis tiav." - Benjamin Franklin

В thawj ntu Hauv cov kab lus no, kuv tau qhia txog lub tswv yim ntawm chaos engineering thiab piav qhia nws yuav pab nrhiav thiab kho qhov tsis zoo hauv lub cev ua ntej lawv ua rau kev ua tsis tiav. Nws kuj tau tham txog yuav ua li cas chaos engineering txhawb kev hloov pauv kev coj noj coj ua hauv cov koom haum.

Thaum kawg ntawm thawj ntu, kuv tau cog lus tias yuav tham txog "cov cuab yeej thiab txoj hauv kev los qhia txog kev ua tsis tiav rau hauv cov tshuab." Alas, kuv lub taub hau muaj nws cov phiaj xwm hauv qhov no, thiab hauv tsab xov xwm no kuv yuav sim teb cov lus nug nrov tshaj plaws uas tshwm sim ntawm cov neeg uas xav nkag mus rau hauv chaos engineering: Yuav ua li cas ua ntej?

Lus nug zoo! Txawm li cas los xij, nws zoo li tsis muaj kev cuam tshuam tshwj xeeb los ntawm panda no ...

Chaos Engineering: kos duab ntawm txhob txwm rhuav tshem. Ntu 2
Tsis txhob mess nrog chaos panda!

Luv teb: Npaj cov kev pabcuam tseem ceeb raws li txoj kev thov.

Ntev dua tab sis cov lus teb meej dua: Kom nkag siab qhov twg yuav pib sim nrog chaos, xyuam xim rau peb thaj chaw:

  1. Saib keeb kwm tsoo thiab txheeb xyuas cov qauv;
  2. Txiav txim siab rau tseem ceeb dependencies;
  3. Siv lub npe overconfidence nyhuv.

Nws yog funny, tab sis qhov no yuav cia li yooj yim hu ua "Kev Taug Kev Mus Rau Kev Tshawb Nrhiav Tus Kheej thiab Kev Txawj Ntse". Hauv nws peb yuav pib "ua si" nrog qee cov twj paj nruag txias.

1. Cov lus teb yog yav dhau los

Yog tias koj nco qab, hauv thawj ntu kuv tau qhia txog lub tswv yim ntawm Kev Kho-ntawm-Yeeb Yam (COE) - ib txoj hauv kev uas peb txheeb xyuas peb qhov yuam kev - kev ua yuam kev hauv tshuab, txheej txheem lossis lub koom haum - txhawm rau nkag siab txog lawv qhov laj thawj thiab tiv thaiv. rov tshwm sim yav tom ntej. Feem ntau, qhov no yog qhov uas koj yuav tsum pib.

"Yuav kom nkag siab txog tam sim no, koj yuav tsum paub yav dhau los." - Carl Sagan

Saib keeb kwm ntawm kev ua tsis tiav, sau lawv hauv COE lossis postmortems thiab faib lawv. Txheeb xyuas cov qauv uas feem ntau ua rau muaj teeb meem, thiab rau txhua tus COE, nug koj tus kheej cov lus nug hauv qab no:

"Qhov no puas tau kwv yees thiab yog li tiv thaiv los ntawm kev txhaj tshuaj txhaum cai?"

Kuv nco txog ib qho kev ua tsis tiav thaum ntxov hauv kuv txoj haujlwm. Nws tuaj yeem tiv thaiv tau yooj yim yog tias peb tau ua ob peb qhov kev sim chaos yooj yim:

Raws li ib txwm muaj, cov xwm txheej backend teb rau kev kuaj mob los ntawm Load Balancer (ELB)). ELB siv cov tshev no los hloov cov lus thov mus rau cov xwm txheej zoo. Thaum nws pom tias ib qho piv txwv "tsis zoo", ELB tsis xa cov lus thov mus rau nws. Muaj ib hnub, tom qab kev tshaj tawm kev lag luam ua tiav, qhov ntim ntawm cov tsheb thauj mus los tau nce thiab cov backends pib teb cov kev kuaj mob qeeb dua li niaj zaus. Nws yuav tsum tau hais tias cov kev kuaj mob no yog tob, uas yog, lub xeev ntawm dependencies raug soj ntsuam.

Txawm li cas los xij, txhua yam tau zoo rau ib ntus.

Tom qab ntawd, twb nyob rau hauv cov kev ntxhov siab heev, ib qho ntawm cov xwm txheej pib ua haujlwm tsis tseem ceeb, tsis tu ncua ETL cron txoj haujlwm. Kev sib xyaw ua ke ntawm cov tsheb loj thiab cronjob thawb CPU siv yuav luag 100%. CPU overload ua rau qeeb qeeb cov lus teb rau kev kuaj mob, ntau heev kom ELB txiav txim siab tias qhov piv txwv tau ntsib teeb meem kev ua haujlwm. Raws li kev cia siab, tus balancer nres faib tsheb mus rau nws, uas, nyob rau hauv lem, coj mus rau ib tug nce nyob rau hauv lub load ntawm cov seem nyob rau hauv cov pab pawg neeg.

Dheev, tag nrho lwm qhov xwm txheej kuj pib ua tsis tiav kev kuaj mob.

Pib qhov piv txwv tshiab yuav tsum rub tawm thiab txhim kho cov pob khoom thiab siv sijhawm ntev dua li nws tau siv ELB los lov tes taw lawv - ib qho los ntawm ib qho - hauv pawg autoscaling. Nws yog qhov tseeb tias tsis ntev tag nrho cov txheej txheem tau mus txog qhov tseem ceeb thiab daim ntawv thov poob.

Tom qab ntawd peb mus ib txhis to taub cov ntsiab lus hauv qab no:

  • Txhim kho software thaum tsim ib qho piv txwv tshiab yuav siv sij hawm ntev; nws yog qhov zoo dua los muab kev nyiam rau qhov kev hloov pauv tsis tau thiab Golden AMI.
  • Hauv cov xwm txheej nyuaj, cov lus teb rau kev kuaj xyuas kev noj qab haus huv thiab ELBs yuav tsum ua qhov tseem ceeb - qhov kawg uas koj xav tau yog ua rau lub neej nyuaj rau cov xwm txheej ntxiv.
  • Hauv zos caching ntawm kev kuaj mob pab ntau heev (txawm li ob peb feeb).
  • Hauv qhov xwm txheej nyuaj, tsis txhob khiav cov haujlwm cron thiab lwm cov txheej txheem tsis tseem ceeb - txuag cov peev txheej rau cov haujlwm tseem ceeb tshaj plaws.
  • Thaum autoscaling, siv me me. Ib pawg ntawm 10 tus qauv me me zoo dua li ib pawg ntawm 4 loj; Yog tias ib qho piv txwv tsis ua tiav, thawj zaug 10% ntawm cov tsheb yuav raug faib tawm ntau dua 9 cov ntsiab lus, hauv qhov thib ob - 25% ntawm cov tsheb khiav dhau peb lub ntsiab lus.

Thiab yog li ntawd, Qhov no puas tau pom dua, thiab yog li tiv thaiv los ntawm kev qhia txog qhov teeb meem?

Yog, thiab nyob rau hauv ntau txoj kev.

Ua ntej, los ntawm kev simulating siab CPU siv cov cuab yeej xws li stress-ng los yog cpuburn:

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

Chaos Engineering: kos duab ntawm txhob txwm rhuav tshem. Ntu 2
kev nyuaj siab

Thib ob, los ntawm overloading piv txwv nrog wrk thiab lwm yam khoom siv zoo sib xws:

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

Chaos Engineering: kos duab ntawm txhob txwm rhuav tshem. Ntu 2

Cov kev sim no kuj yooj yim, tab sis tuaj yeem muab qee yam zaub mov zoo rau kev xav yam tsis tas yuav mus dhau qhov kev ntxhov siab ntawm qhov ua tsis tiav tiag tiag.

Txawm li cas los, txhob nres ntawd. Sim rov tsim dua qhov kev sib tsoo hauv qhov chaw sim thiab xyuas koj cov lus teb rau lo lus nug "Qhov no puas tau pom dua thiab yog li tiv thaiv los ntawm kev qhia txog qhov txhaum?" Qhov no yog qhov kev sim me me hauv kev sim chaos los sim cov kev xav, tab sis pib nrog qhov ua tsis tiav.

Chaos Engineering: kos duab ntawm txhob txwm rhuav tshem. Ntu 2
Puas yog npau suav, lossis nws puas tau tshwm sim tiag?

Yog li kawm keeb kwm ntawm kev ua tsis tiav, txheeb xyuas CO, cim npe thiab faib lawv los ntawm "kev ntaus lub vojvoog" - lossis ntau dua, cov neeg siv khoom cuam tshuam - thiab tom qab ntawd nrhiav cov qauv. Nug koj tus kheej yog tias qhov no tuaj yeem raug kwv yees thiab tiv thaiv los ntawm kev qhia txog qhov teeb meem. Xyuas koj cov lus teb.

Tom qab ntawd hloov mus rau cov qauv feem ntau nrog rau qhov loj tshaj plaws.

2. Tsim ib daim ntawv qhia kev vam khom

Siv sijhawm ib pliag los xav txog koj daim ntawv thov. Puas muaj daim ntawv qhia meej ntawm nws qhov kev vam meej? Koj puas paub tias lawv yuav cuam tshuam dab tsi yog tias muaj kev ua tsis tiav?

Yog tias koj tsis paub zoo txog koj daim ntawv thov cov cai lossis nws tau dhau los ua qhov loj heev, nws tuaj yeem nyuaj rau kev nkag siab tias tus lej ua li cas thiab nws qhov kev vam khom yog dab tsi. Nkag siab txog cov kev vam khom no thiab lawv qhov cuam tshuam rau daim ntawv thov thiab cov neeg siv yog qhov tseem ceeb kom paub qhov twg yuav pib nrog chaos engineering: qhov pib yog qhov cuam tshuam nrog qhov cuam tshuam loj tshaj plaws.

Kev txheeb xyuas thiab sau cov ntaub ntawv kev vam meej yog hu ua "tsim ib daim ntawv qhia kev vam meej» (dependency map). Qhov no feem ntau ua rau cov ntawv thov nrog lub hauv paus loj siv cov cuab yeej code profile. (code profileing) thiab instrumentation (instrumentation). Koj tuaj yeem tsim ib daim ntawv qhia los ntawm kev saib xyuas cov tsheb khiav hauv lub network.

Txawm li cas los xij, tsis yog txhua qhov kev vam khom yog tib yam (uas ua rau cov txheej txheem nyuaj ntxiv). Ib txhia tseem ceeb, lwm- theem nrab (tsawg kawg hauv txoj kev xav, txij li kev sib tsoo feem ntau tshwm sim vim muaj teeb meem nrog kev vam khom uas tau txiav txim siab tsis tseem ceeb).

Yog tsis muaj kev cuam tshuam tseem ceeb, kev pabcuam tsis tuaj yeem ua haujlwm. Tsis muaj kev cuam tshuam "yuav tsum tsis txhob» los cuam tshuam kev pabcuam thaum lub caij nplooj zeeg. Txhawm rau nkag siab txog kev vam khom, koj yuav tsum muaj kev nkag siab meej txog APIs siv los ntawm koj daim ntawv thov. Qhov no tuaj yeem nyuaj dua li qhov zoo li - tsawg kawg rau cov ntawv thov loj.

Pib los ntawm kev mus dhau tag nrho cov APIs. Qhia qhov tseem ceeb tshaj plaws tseem ceeb thiab tseem ceeb. Noj txaus siab los ntawm lub chaw khaws ntaub ntawv code, kos nws tawm cov ntaub ntawv sib txuas, ces saib cov ntaub ntawv (tau kawg, yog tias nws muaj - txwv tsis pub koj tseem muajоteeb meem loj dua). Siv cov cuab yeej los profileing thiab tracing, lim tawm sab nraud hu.

Koj tuaj yeem siv cov program zoo li netstat - cov kab hluav taws xob hais kom ua uas qhia cov npe ntawm txhua qhov kev sib txuas hauv network (sockets nquag) hauv qhov system. Piv txwv li, txhawm rau sau tag nrho cov kev sib txuas tam sim no, ntaus:

❯ netstat -a | more 

Chaos Engineering: kos duab ntawm txhob txwm rhuav tshem. Ntu 2

Hauv AWS koj tuaj yeem siv flow logs (cov cav khiav) VPC yog ib txoj hauv kev uas tso cai rau koj los sau cov ntaub ntawv hais txog IP tsheb mus lossis los ntawm kev sib txuas hauv network hauv VPC. Xws li cov cav kuj tseem tuaj yeem pab nrog lwm yam dej num - piv txwv li, nrhiav cov lus teb rau cov lus nug ntawm vim li cas qee qhov kev khiav tsheb tsis mus txog qhov piv txwv.

Koj kuj siv tau AWS X-Ray. X-Ray tso cai rau koj kom paub meej, "qhov kawg" (kawg-rau-kawg) lub ntsiab lus ntawm kev thov thaum lawv txav mus los ntawm daim ntawv thov, thiab tseem tsim ib daim ntawv qhia ntawm daim ntawv thov cov hauv paus ntsiab lus. Yooj yim heev yog tias koj xav txheeb xyuas qhov kev vam meej.

Chaos Engineering: kos duab ntawm txhob txwm rhuav tshem. Ntu 2
AWS X-Ray Console

Daim ntawv qhia kev vam khom network tsuas yog ib qho kev daws teeb meem xwb. Yog, nws qhia tau hais tias daim ntawv thov sib txuas lus nrog leej twg, tab sis muaj lwm yam kev vam meej.

Ntau daim ntawv thov siv DNS los txuas rau kev vam khom, thaum lwm tus tuaj yeem siv kev pabcuam nrhiav lossis txawm tias nyuaj-coded IP chaw nyob hauv cov ntaub ntawv teeb tsa (xws li. /etc/hosts).

Piv txwv li, koj tuaj yeem tsim DNS blackhole nrog kev pab iptables thiab saib dab tsi tawg. Txhawm rau ua qhov no, nkag mus rau cov lus txib hauv qab no:

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

Chaos Engineering: kos duab ntawm txhob txwm rhuav tshem. Ntu 2
DNS qhov dub

Yog hais tias nyob rau hauv /etc/hosts lossis lwm cov ntaub ntawv teeb tsa, koj yuav pom IP chaw nyob uas koj tsis paub dab tsi txog (yog, hmoov tsis, qhov no kuj tshwm sim), koj tuaj yeem rov qab los cawm iptables. Wb hais tias koj nrhiav tau 8.8.8.8 thiab tsis paub tias qhov no yog Google qhov chaw nyob DNS server. Los ntawm kev siv iptables Koj tuaj yeem thaiv kev nkag mus thiab tawm mus rau qhov chaw nyob no siv cov lus txib hauv qab no:

❯ 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: kos duab ntawm txhob txwm rhuav tshem. Ntu 2
Kev nkag mus kaw

Thawj txoj cai poob tag nrho cov pob ntawv los ntawm Google pej xeem DNS: ping ua haujlwm, tab sis pob ntawv tsis rov qab los. Txoj cai thib ob tso tseg tag nrho cov pob ntawv los ntawm koj lub cev mus rau Google cov pej xeem DNS - teb rau ping peb tau Tsis tso cai ua haujlwm.

Lus Cim: Hauv qhov tshwj xeeb no nws yuav zoo dua los siv whois 8.8.8.8, tab sis qhov no yog ib qho piv txwv xwb.

Peb tuaj yeem nkag mus tob dua hauv lub qhov luav, vim tias txhua yam uas siv TCP thiab UDP yeej nyob ntawm IP ib yam nkaus. Feem ntau, IP raug khi rau ARP. Tsis txhob hnov ​​​​qab txog firewalls ...

Chaos Engineering: kos duab ntawm txhob txwm rhuav tshem. Ntu 2
Yog tias koj noj tshuaj liab, koj nyob hauv Wonderland, thiab kuv yuav qhia koj tias lub qhov luav mus tob npaum li cas."

Ib txoj hauv kev tshaj radical yog mus cuam ​​tshuam tsheb ib tug los ntawm ib tug thiab pom dab tsi tawg ... ua "chaos liab." Tau kawg, ntau lub tshuab tsim khoom tsis yog tsim los rau kev tawm tsam brute quab yuam, tab sis tsawg kawg nws tuaj yeem raug sim hauv qhov chaw sim.

Kev tsim ib daim ntawv qhia kev vam khom feem ntau yog kev ua haujlwm ntev heev. Tsis ntev los no kuv tau tham nrog tus neeg siv khoom uas tau siv sijhawm yuav luag 2 xyoos tsim cov cuab yeej uas ib nrab tsis siv neeg tsim cov ntawv qhia kev vam meej rau ntau pua microservices thiab cov lus txib.

Qhov tshwm sim, txawm li cas los xij, yog qhov nthuav heev thiab muaj txiaj ntsig. Koj yuav kawm ntau yam txog koj qhov system, nws qhov kev vam khom thiab kev ua haujlwm. Ntxiv dua thiab, ua siab ntev: nws yog txoj kev taug kev nws tus kheej tseem ceeb tshaj plaws.

3. Ceev faj ntawm kev ntseeg siab

"Leej twg npau suav txog dab tsi, ntseeg nws." - Demosthenes

Koj puas tau hnov overconfidence nyhuv?

Raws li Wikipedia, qhov kev ntseeg siab dhau los yog "kev paub tsis meej uas ib tus neeg muaj kev ntseeg siab hauv lawv cov kev ua thiab kev txiav txim siab ntau dua li qhov tseeb ntawm lub hom phiaj ntawm cov kev txiav txim siab, tshwj xeeb tshaj yog thaum qib kev ntseeg siab kuj siab."

Chaos Engineering: kos duab ntawm txhob txwm rhuav tshem. Ntu 2
Raws li kev xav thiab kev paub ...

Hauv kuv qhov kev paub dhau los, qhov kev tsis sib haum xeeb no yog qhov pom zoo ntawm qhov chaw pib nrog chaos engineering.

Ua tib zoo saib xyuas tus neeg ua haujlwm overconfident:

Charlie: "Qhov no tsis tau poob hauv tsib xyoos, txhua yam zoo!"
Crash: "Tom... Kuv yuav nyob ntawd sai sai no!"

Kev tsis ncaj ncees raws li qhov tshwm sim ntawm kev ntseeg siab dhau yog qhov tsis txaus ntseeg thiab txawm tias txaus ntshai vim muaj ntau yam cuam tshuam rau nws. Qhov no yog qhov tseeb tshwj xeeb tshaj yog thaum cov neeg koom tes tau nchuav lawv lub siab rau hauv kev siv tshuab lossis siv sijhawm ntau "kho" nws.

Summing txog

Kev tshawb nrhiav rau qhov pib ntawm chaos engineering ib txwm coj tau ntau dua li qhov xav tau, thiab pab pawg uas pib rhuav tshem cov khoom sai sai tsis pom ntau lub ntiaj teb thiab nthuav cov ntsiab lus ntawm (chaos-)engineering - siv tswv yim txoj kev tshawb fawb и pov thawj empirical rau kev tsim, kev tsim kho, kev ua haujlwm, kev saib xyuas thiab txhim kho (software) systems.

Qhov no xaus qhov thib ob. Thov sau cov kev tshuaj xyuas, qhia tawm tswv yim lossis tsuas yog npuaj tes ntawm koj txhais tes Medium. Hauv ntu tom ntej I tiag tiag Kuv yuav xav txog cov cuab yeej thiab cov txheej txheem los qhia txog kev ua tsis tiav rau hauv cov tshuab. Txog thaum!

PS los ntawm tus txhais lus

Nyeem kuj ntawm peb blog:

Tau qhov twg los: www.hab.com

Ntxiv ib saib