Endezyariya Chaos: hunera hilweşandina bi zanebûn. Beş 2

Not. werger.: Ev gotar rêzek girîng a gotaran ji mizgînvanê teknolojiya AWS Adrian Hornsby berdewam dike, ku destnîşan dike ku bi rengek hêsan û zelal girîngiya ceribandinê rave dike da ku encamên têkçûnên di pergalên IT-ê de kêm bike.

Endezyariya Chaos: hunera hilweşandina bi zanebûn. Beş 2

"Heke hûn nekarin planek amade bikin, wê hingê hûn plan dikin ku têk biçin." - Benjamin Franklin

В beşa yekem Di vê rêze gotaran de, min têgeha endezyariya kaosê destnîşan kir û rave kir ku ew çawa dibe alîkar ku hûn xeletiyên pergalê bibînin û rast bikin berî ku ew bibin sedema têkçûna hilberînê. Di heman demê de nîqaş kir ka endezyariya kaosê guhertina çandî ya erênî di nav rêxistinan de pêşve dixe.

Di dawiya beşa yekem de, min soz da ku ez li ser "alav û rêbazên ji bo danasîna têkçûnên nav pergalan" biaxivim. Mixabin, serê min di vî warî de planên xwe hebûn, û di vê gotarê de ez ê hewl bidim ku bersiva pirsa herî populer a ku di nav mirovên ku dixwazin bikevin nav endezyariya kaosê de çêbibe: Pêşî çi bişkînin?

Pirsa mezin! Lêbelê, ew bi taybetî ji vê pandayê aciz nabe ...

Endezyariya Chaos: hunera hilweşandina bi zanebûn. Beş 2
Bi pandaya kaosê re tevlihev nekin!

Bersiva kurt: Karûbarên krîtîk li ser riya daxwaznameyê armanc bikin.

Bersiva dirêjtir lê zelaltir: Ji bo ku hûn fêm bikin ka meriv li ku derê dest bi ceribandina kaosê bike, bala xwe bidin sê deveran:

  1. Nêrîn li dîroka qezayê û qalibên nas bikin;
  2. Biryar bidin girêdayîbûna krîtîk;
  3. Bi navê bikar bînin bandora zêde bawerî.

Kêfxweş e, lê ev beş dikare bi hêsanî were gotin "Rêwîtiyek Berbi Xwedîtin û Ronahîbûnê". Di wê de em ê bi hin amûrên xweş dest bi "lîstin" bikin.

1. Bersiv di paşerojê de ye

Ger tê bîra we, di beşa yekem de min têgeha Rastkirina Çewtiyan (COE) destnîşan kir - rêbazek ku em xeletiyên xwe - xeletiyên di teknolojiyê, pêvajo an rêxistinê de - analîz dikin - da ku em sedem (yên) wan fam bikin û pêşî lê bigirin. dûbarebûn di paşerojê de. Bi gelemperî, li vir divê hûn dest pê bikin.

"Ji bo fêmkirina niha, divê hûn rabirdûyê bizanibin." - Carl Sagan

Li dîroka têkçûnan binihêrin, wan di COE an postmortems de tag bikin û wan dabeş bikin. Nimûneyên hevpar ên ku pir caran dibe sedema pirsgirêkan nas bikin, û ji bo her COE, pirsa jêrîn ji xwe bipirsin:

"Ma dikaribû ev yek were pêşbînîkirin û ji ber vê yekê bi derzîlêdana xeletiyê ve were asteng kirin?"

Di destpêka kariyera xwe de têkçûnek tê bîra min. Ger me çend ceribandinên kaosê yên hêsan pêk bianiya, dikaribû bi hêsanî pêşî lê were girtin:

Di bin şert û mercên normal de, mînakên paşîn bersivê didin kontrolên tenduristiyê yên ji balansa barkirinê (ELB)). ELB van kontrolan bikar tîne da ku daxwazan berbi mînakên saxlem vegerîne. Dema ku derkeve holê ku mînakek "nexweş e", ELB şandina daxwazan ji wê re rawestîne. Rojek, piştî kampanyayek kirrûbirrê ya serketî, qebareya seyrûseferê zêde bû û piştgiran dest bi bersivdana kontrolên tenduristiyê ji gelemperî hêdîtir kirin. Divê bê gotin ku ev kontrolên tenduristiyê bûn kûryanî rewşa girêdayiyan hat kontrolkirin.

Lêbelê, ji bo demekê her tişt baş bû.

Dûv re, jixwe di bin şert û mercên zordar de, yek ji wan bûyeran dest bi pêkanîna karekî ne-krîtîk, birêkûpêk ETL kir. Kombûna seyrûsefera bilind û cronjob karanîna CPU-yê hema hema 100%. Zêdebûna CPU-ê bersivên li ser kontrolên tenduristiyê hêdîtir kir, ji ber vê yekê ELB biryar da ku mînak bi pirsgirêkên performansê re rû bi rû maye. Wekî ku tê hêvî kirin, balanser belavkirina seyrûsefera wê rawestand, ku, di encamê de, bû sedema zêdebûna bargiraniyê li ser mînakên mayî di komê de.

Ji nişkê ve, hemî rewşên din jî dest bi têkçûna kontrola tenduristiyê kirin.

Ji bo destpêkirina mînakek nû dakêşandin û sazkirina pakêtan hewce bû û ji ya ku ELB-ê di nav grûpa otoscaling-ê de neçalak kir - yek bi yek - pir dirêjtir girt. Eşkere ye ku di demek kurt de tevahiya pêvajo gihîştiye xalek krîtîk û serlêdan têk çû.

Dûv re me her dem van xalên jêrîn fêm kir:

  • Sazkirina nermalavê dema afirandina mînakek nû demek dirêj digire; çêtir e ku meriv berê xwe bide nêzîkatiya neguhêrbar û Zêrîn AMI.
  • Di rewşên tevlihev de, bersivên li ser kontrolên tenduristiyê û ELB-ê divê pêşîniyê bigirin - ya paşîn ku hûn dixwazin ev e ku hûn ji bo mînakên mayî jiyanê tevlihev bikin.
  • Veşartina herêmî ya kontrolên tenduristiyê gelek arîkar dike (heta çend saniyeyan).
  • Di rewşek dijwar de, karên kron û pêvajoyên din ên ne-krîtîk nemeşînin - çavkaniyan ji bo karên herî girîng hilînin.
  • Dema ku otoscaling, mînakên piçûktir bikar bînin. Komek ji 10 nimûneyên piçûk ji komek 4 mezin çêtir e; heke mînakek têk neçe, di rewşa yekem de 10% seyrûseferê dê li ser 9 xalan, di ya duyemîn de - 25% seyrûseferê li ser sê xalan were dabeş kirin.

Û vî awayî, gelo dikaribû ev yek were pêşbînîkirin û ji ber vê yekê bi danasîna pirsgirêkê pêşî lê were girtin?

ku, û bi çend awayan.

Pêşîn, bi simulasyona karanîna CPU ya bilind bi karanîna amûrên wekî stress-ng an cpuburn:

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

Endezyariya Chaos: hunera hilweşandina bi zanebûn. Beş 2
stres-ng

Ya duyemîn, bi zêdekirina nimûneyê bi wrk û karûbarên din ên mîna:

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

Endezyariya Chaos: hunera hilweşandina bi zanebûn. Beş 2

Ceribandin nisbeten hêsan in, lê dikarin ji bo ramanê hin xwarinek baş peyda bikin bêyî ku hûn di stresa têkçûnek rastîn de derbas bibin.

Lêbelê, li wir nesekinin. Biceribînin ku hilweşînê di hawîrdorek ceribandinê de dubare bikin û bersiva xwe ya pirsê kontrol bikin "Ma dikaribû ev yek were pêşbînîkirin û ji ber vê yekê bi danasîna xeletiyekê ve were asteng kirin?" Ev ceribandinek kaosê ya piçûk e ku di nav ceribandinek kaosê de ceribandina texmînan dike, lê bi têkçûnek dest pê dike.

Endezyariya Chaos: hunera hilweşandina bi zanebûn. Beş 2
Xewnek bû, an bi rastî jî çêbû?

Ji ber vê yekê dîroka têkçûnan lêkolîn bikin, analîz bikin EOC, wan bi "radyûsa lêdanê"-an jî rasttir, hejmara xerîdarên bandorkirî- etîket bikin û dabeş bikin û dûv re li qalibên bigerin. Ji xwe bipirsin gelo ev dikaribû bi danasîna pirsgirêkê were pêşbînîkirin û pêşî lê were girtin. Bersiva xwe kontrol bikin.

Dûv re veguherînin qalibên herî gelemperî yên bi rêjeya herî mezin.

2. Nexşeya girêdayîbûnê ava bikin

Demek bisekinin ku li ser serlêdana xwe bifikirin. Ma nexşeyek zelal a girêdayîbûna wê heye? Ma hûn dizanin eger têkçûnek hebe dê çi bandorek wan hebe?

Heke hûn bi koda serîlêdana xwe re pir ne nas in an ew pir mezin bûye, dibe ku dijwar be ku hûn fêm bikin ka kod çi dike û girêdayî wê çi ne. Fêmkirina van girêdanan û bandora wan a gengaz a li ser serîlêdan û bikarhêneran ji bo zanîna ku meriv bi endezyariya kaosê li ku derê dest pê bike krîtîk e: xala destpêkê pêkhateya bi tîrêjê bandora herî mezin e.

Naskirin û belgekirina pêwendiyan tê gotin "avakirina nexşeya pêwendiyê» (nexşeya girêdayîbûnê). Ev bi gelemperî ji bo serîlêdanên xwedan bingehek kodek mezin bi karanîna amûrên profîla kodê tête kirin. (profilkirina kodê) û amûr (alav). Her weha hûn dikarin bi şopandina seyrûsefera torê nexşeyek ava bikin.

Lêbelê, ne hemî girêdan yek in (ku pêvajoyê bêtir tevlihev dike). Hin rexneyan, din - dûwemdor (bi kêmanî di teoriyê de, ji ber ku têkçûn bi gelemperî ji ber pirsgirêkên bi girêdanên ku ne-krîtîk têne hesibandin diqewimin).

Bêyî girêdanên krîtîk, karûbar nikare bixebite. Girêdanên ne krîtîk "nabe» ji bo bandorkirina servîsê di dema hilweşînê de. Ji bo fêmkirina pêwendiyan, hûn hewce ne ku têgihiştinek zelal a API-yên ku ji hêla serîlêdana we ve têne bikar anîn hebin. Ev dikare ji ya ku xuya dike pir dijwartir be - bi kêmanî ji bo serîlêdanên mezin.

Bi derbasbûna hemî API-yan dest pê bikin. Herî zêde ronî bikin girîng û krîtîk. Wergirtin girêdayîbûna ji depoya kodê, wê kontrol bikin têketinên girêdanê, paşê bibînin belgekirin (bê guman, heke ew hebe - wekî din hûn hîn jî heneоpirsgirêkên mezintir). Amûrên bikar bînin profîlkirin û şopandin, bangên derve fîlter bikin.

Hûn dikarin bernameyên wekî bikar bînin netstat - amûrek rêzika fermanê ya ku navnîşek hemî girêdanên torê (soketên çalak) di pergalê de nîşan dide. Mînakî, ji bo navnîşkirina hemî girêdanên heyî, binivîsin:

❯ netstat -a | more 

Endezyariya Chaos: hunera hilweşandina bi zanebûn. Beş 2

Di AWS de hûn dikarin bikar bînin têketinên herikînê (têketinên herikînê) VPC rêbazek e ku dihêle hûn agahdariya li ser seyrûsefera IP-yê ku diçin an ji navbeynkarên torê yên di VPC de berhev bikin. Têketinên weha dikarin bi karên din re jî bibin alîkar - mînakî, dîtina bersivek ji pirsa çima hin seyrûsefer nagihêje nimûneyê.

Hûn jî dikarin bikar bînin AWS X-Ray. X-Ray dihêle hûn hûrgulî, "paşîn" bistînin (dawî-bi-dawî) dema ku ew di serîlêdanê re derbas dibin nêrînek giştî ya daxwazan, û di heman demê de nexşeyek beşên bingehîn ên serîlêdanê jî ava dike. Heke hûn hewce ne ku pêwendiyan nas bikin pir hêsan e.

Endezyariya Chaos: hunera hilweşandina bi zanebûn. Beş 2
AWS X-Ray Console

Nexşeya girêdayîbûna torê tenê çareseriyek qismî ye. Erê, ew destnîşan dike ku kîjan serîlêdanê bi kîjan re têkilî dike, lê girêdayîyên din hene.

Gelek serîlêdan DNS-ê bikar tînin da ku bi girêdanan ve girêbidin, hinên din dikarin vedîtina karûbarê an jî navnîşanên IP-ya hişk-kodkirî di pelên vesazkirinê de bikar bînin (mînak. /etc/hosts).

Ji bo nimûne, hûn dikarin çêbikin DNS reşhole bi alîkariya iptables û bibînin ka çi dişkîne. Ji bo vê yekê, emrê jêrîn binivîse:

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

Endezyariya Chaos: hunera hilweşandina bi zanebûn. Beş 2
DNS çala reş

Ku di /etc/hosts an pelên mîhengê yên din, hûn ê navnîşanên IP-yê yên ku hûn pê nizanin bibînin (erê, mixabin, ev jî diqewime), hûn dikarin dîsa werin rizgariyê iptables. Em bêjin ku we kifş kir 8.8.8.8 û nizanin ku ev navnîşana servera DNS ya giştî ya Google-ê ye. Bi karanîna iptables Hûn dikarin bi fermanên jêrîn seyrûsefera hatin û derketinê ya vê navnîşanê asteng bikin:

❯ 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"

Endezyariya Chaos: hunera hilweşandina bi zanebûn. Beş 2
Girtina gihîştinê

Rêbaza yekem hemî pakêtan ji DNS-ya giştî ya Google davêje: ping dixebite, lê pakêt nayên vegerandin. Rêzika duyemîn hemî pakêtên ku ji pergala we derdikevin ber bi DNS-ya giştî ya Google-ê davêje - di bersivê de ping Em distînin Operasyon destûr nayê dayîn.

Nîşe: di vê rewşa taybetî de çêtir e ku meriv bikar bîne whois 8.8.8.8, lê ev tenê mînakek e.

Em dikarin hê kûrtir ber bi qulika kevokê ve biçin, ji ber ku her tiştê ku TCP û UDP bikar tîne bi rastî bi IP-yê jî ve girêdayî ye. Di pir rewşan de, IP bi ARP ve girêdayî ye. Firewallan ji bîr nekin...

Endezyariya Chaos: hunera hilweşandina bi zanebûn. Beş 2
Ger tu hebeke sor bixwî, tu li Welatê Heyranan bimînî, û ez ê nîşanî te bidim ka çala keroşkê çiqas kûr diçe."

Nêzîkatiyek radîkaltir ew e ku hevqetandin erebe yek bi yek û bibînin ka çi şikestiye... bibin "meymûnek kaosê". Bê guman, gelek pergalên hilberînê ji bo êrîşek hêzek wusa hov ne hatine sêwirandin, lê bi kêmanî ew dikare di hawîrdorek ceribandinê de were ceribandin.

Avakirina nexşeyek pêwendiyê bi gelemperî karekî pir dirêj e. Min herî dawî bi xerîdarek re peyivî ku hema hema 2 sal derbas kir ku amûrek ku nîv-otomatîkî ji bo bi sedan mîkroservîs û fermanan nexşeyên girêdayîbûnê çêdike.

Lêbelê, encam pir balkêş û kêrhatî ye. Hûn ê di derbarê pergala xwe, girêdayî û karûbarên wê de pir fêr bibin. Dîsa, bîhnfireh bin: ew rêwîtiyê bixwe ye ku herî girîng e.

3. Hay ji xwebaweriya zêde hebe

"Kî çi xewnê dibîne, jê bawer dike." - Demostenes

Ma we qet bihîstiye bandora zêde bawerî?

Li gorî Wîkîpediyayê, bandora zêdebaweriyê "alîbûnek cognitive e ku tê de pêbaweriya kesek bi kiryar û biryarên xwe bi girîngî ji rastbûna objektîv a wan dadbaran mezintir e, nemaze dema ku asta pêbaweriyê nisbeten bilind be."

Endezyariya Chaos: hunera hilweşandina bi zanebûn. Beş 2
Li ser bingeha însiyat û ezmûnê...

Di ezmûna min de, ev tehlîlkirinek mezin e ku meriv bi endezyariya kaosê ji ku derê dest pê bike.

Hay ji operatorê zêde pêbawer bin:

Charlie: "Ev tişt ev pênc sal in neketiye, her tişt baş e!"
Crash: "Bisekine ... ez ê di demek nêzîk de li wir bim!"

Bias wekî encama pêbaweriya zêde ji ber faktorên cihêreng ên ku bandorê li wê dikin, tiştek nerast û hetta xeternak e. Ev bi taybetî rast e dema ku endamên tîmê dilê xwe di teknolojiyekê de rijandine an jî gelek wext ji bo "serrastkirina" wê derbas kirine.

Kurtekirin

Lêgerîna li xalek destpêkek ji bo endezyariya kaosê her gav ji ya ku dihat hêvî kirin bêtir encam bi xwe re tîne, û tîmên ku zû dest bi şikandina tiştan dikin çavê xwe ji cewhera gerdûnî û balkêş a (kaos-) winda dikin.endezyariyê - bikaranîna afirîner rêbazên zanistî и delîlên ampîrîk ji bo sêwirandin, pêşkeftin, xebitandin, parastin û başkirina pergalên (nermalavê).

Ev beşa duyemîn bi dawî dike. Ji kerema xwe nirxandinan binivîsin, ramanan parve bikin an jî tenê li çepikan bidin Medya. Di beşa paşîn de I rastî Ez ê amûr û rêbazan ji bo danasîna têkçûnên nav pergalan binirxînim. Ta!

PS ji wergêr

Li ser bloga me jî bixwînin:

Source: www.habr.com

Add a comment