Failover: meid nuhtleb perfektsionism ja... laiskus

Suvel vĂ€heneb tavaliselt nii ostjate aktiivsus kui ka veebiprojektide infrastruktuuri muudatuste intensiivsus, ĂŒtleb meile Kapten Ilmselge. Lihtsalt sellepĂ€rast, et isegi IT- spetsialistid, juhtub, kĂ€ivad puhkamas. Ja CTO ka. Mida raskem on neile, kes jÀÀvad ametisse, aga praegu ei ole sellest juttu: vĂ”ib-olla on just sellepĂ€rast suvi - parim aeg, et rahulikult mĂ”elda olemasolevale broneerimise skeemile ja koostada plaan selle parendamiseks. Ja selles osas on teile kasulik Einar Andrejevi kogemus AdminDivision, millest ta rÀÀkis konverentsil Uptime day.

Backup-platvormide loomisel ja broneerimisel on mitmeid lĂ”kse, millesse vĂ”ib sattuda. Ja nendesse sattuda ei tohi. Meid hukutab kĂ”ikjal selles, nagu ka paljus muus, perfektsionism ja
 laiskus. PĂŒĂŒame teha kĂ”ike tĂ€iesti tĂ€iuslikult, kuigi tĂ€iuslikult ei pea! Tuleb teha ainult teatud asju, aga teha need Ă”igesti, lĂ”puni viia, et need korralikult töötaksid.

Failover ei ole mingi lĂ”bus mĂ€nguasi, mis on lihtsalt olemas; see on asi, mis peab saavutama ĂŒhe eesmĂ€rgi — vĂ€hendada seisakuaega, et teenus ja ettevĂ”te kaotaks vĂ€hem raha. KĂ”ikide varukoopiametodite puhul soovitan mĂ”elda jĂ€rgmistel ridadel: kus on raha?

Failover: meid nuhtleb perfektsionism ja... laiskus

Esimene lĂ”ks: kui me ehitame suurt ja usaldusvÀÀrset sĂŒsteemi ning tegeleme varukoopiate tegemisega — vĂ€hendame Ă”nnetuste arvu. See on kohutav eksitus. Varukoopia tegemisega suurendame tĂ”enĂ€oliselt Ă”nnetuste arvu. Kui teeme kĂ”ik Ă”igesti, vĂ€hendame kombineeritult seisakuaega. Õnnetusi tuleb rohkem, kuid need toimuvad vĂ€iksemate kuludega. Mis on varukoopia tegemine? — see on sĂŒsteemi keerukuse suurendamine. Iga keerukus on halb: meil on rohkem kruve, rohkem hammasrattasid, kokku rohkem komponente — seega on rike tĂ”enĂ€olisem. Ja nad murduvad tĂ”epoolest. Ja nad murduvad sagedamini. NĂ€iteks: ĂŒtleme, et meil on mingi veebileht PHP ja MySQL abil. Ja see tuleb kiiresti varundada.

Noh, vĂ”tame teise platvormi, loome identse sĂŒsteemi... keerukus kahekordistub — meil on kaks ĂŒksust. Ja lisaks rakendame me teatud andmete ĂŒlekande loogikat ĂŒhelt platvormilt teisele — see tĂ€hendab andmete replikatsiooni, staatika kopeerimist ja nii edasi. Noh, replikatsiooni loogika on tavaliselt vĂ€ga keeruline, mistĂ”ttu sĂŒsteemi kogune keerukus vĂ”ib olla mitte 2, vaid 3, 5, 10 korda suurem.

Teine lĂ”ks: kui me ehitame tĂ”eliselt suuri ja keerulisi sĂŒsteeme, fantaseerime, mida me lĂ”ppkokkuvĂ”ttes soovime. VoilĂ : me tahame superusaldusvÀÀrset sĂŒsteemi, mis töötab tĂ€iesti katkestusteta, lĂŒlitub ĂŒle poole sekundi (veel parem, kui kohe), ja hakkame oma unistusi ellu viima. Kuid siin on ĂŒks nĂŒanss: mida vĂ€hem soovitud ĂŒmberlĂŒlitusaeg on, seda keerulisemaks muutub sĂŒsteemi loogika. Mida keerukamaks me peame seda loogikat tegema, seda sagedamini sĂŒsteem rikki lĂ€heb. Ja vĂ”ib juhtuda, et satume vĂ€ga ebameeldivasse olukorda: me pĂŒĂŒame iga hinna eest katkestusaega vĂ€hendada, aga tegelikult teeme kĂ”ik keerukamaks, ja kui midagi lĂ€heb valesti, on katkestusaeg lĂ”ppkokkuvĂ”ttes suurem. Tihti tabad ennast mĂ”ttelt: oh
 oleks parem, kui me ei oleks varunud. Oluliselt parem oleks, kui see ĂŒksnes töötaks ja oleks arusaadav katkestusaeg.

Kuidas sellise olukorraga vĂ”idelda? Tuleb lĂ”petada endale valetamist, lĂ”petada endale meelitamine, et me hakkame siin ehitama kosmoselaeva, vaid mĂ”ista adekvaatselt, kui kaua projekt vĂ”ib seisma jÀÀda. Ja selle maksimaalse aja alusel valime, milliseid meetodeid kasutame meie sĂŒsteemi usaldusvÀÀrsuse suurendamiseks.

Failover: meid nuhtleb perfektsionism ja... laiskus

Õige aeg «elust lugude» jaoks... muidugi elust.

NĂ€ide number ĂŒks

Kujutage ette visiitkaardisaidi torutootmisettevĂ”ttest nr 1 linnas N. Sellel on suured kirjad — TORUTOOTMISETTEVÕTE NR 1. Natuke allpool on loosung: «Meie torud on N linna kĂ”ige ĂŒmaramad torud». Ja all on peadirektori telefoninumber ja tema nimi. MĂ”istame, et broneerimine on vajalik — see on vĂ€ga oluline asjaolu! Alustame uurimisega, millest see koosneb. HTML-staatika — see tĂ€hendab paar pilti, kus peadirektor koos oma partneriga arutavad mingit kokkulepet sauna lauas. Alustame mĂ”tlema seiskamisaegadele. Tuleb meelde: seal peab olema viis minutit, mitte rohkem. Ja siis kĂŒsimus: kui palju on meie saidilt tulnud mĂŒĂŒke? Kui palju-kui palju? Mis tĂ€hendab «null»? Ja see tĂ€hendab: sest kĂ”ik neli tehingut eelmisel aastal tegi peadirektor sama laua taga, nende samade inimestega, kellega nad saunas laua taga istuvad. Ja mĂ”istame, et isegi kui pĂ€ev veedetakse saidiga — pole midagi hullu.

Sissejuhatuse pĂ”hjal on selle loo tĂ”stmiseks aega pĂ€ev. Alustame broneerimissemma mĂ”tlemist. Valime parima broneerimisplaane antud nĂ€ite jaoks: me ei kasuta broneerimist. KĂ”ik see tĂ”useb ĂŒles ĂŒhe administraatori poolt poole tunni jooksul, sealhulgas pauside jooksul. Paigaldada veebiserver, laadida failid — kĂ”ik. See hakkab tööle. Mingeid tĂ€helepanusid ei ole vaja jĂ€lgida, millelegi ei ole vaja erilist tĂ€helepanu pöörata. Seega on esimese nĂ€ite jĂ€reldus ĂŒsna ilmne: teenuseid, mida ei ole vaja broneerida — ei ole vaja broneerida.

Failover: meid nuhtleb perfektsionism ja... laiskus

Teine nÀide

EttevĂ”tte blogi: spetsiaalselt koolitatud inimesed kirjutavad sinna uudiseid, nĂ€iteks osalesime sellises nĂ€itusel ja nĂŒĂŒd oleme vĂ€lja lasknud uue toote ja nii edasi. Oletame, et see on tavaline PHP koos WordPressiga, vĂ€ike andmebaas ja natuke staatilist sisu. Muidugi tuleb jĂ€lle meeldiv mĂ”te, et kauem ei tohi kindlasti oodata — "mitte rohkem kui viis minutit!", kĂ”ik see. Aga mĂ”elgem edasi. Mida see blogi teeb? Sinna tulevad kĂŒlastajad Yandexist ja Google'ist mingite pĂ€ringute kaudu, orgaaniliselt. VĂ€ga hea. Aga kas mĂŒĂŒk on kuidagi sellele seotud? Üks arusaam: mitte just palju. Reklaamiliiklus suundub peamisele veebisaidile, mis asub teisel serveril. Alustame mĂ”tlemist broneeringu skeemile blogis. Hea oleks, kui selle paaritunni jooksul ĂŒles tĂ”sta ja sellele oleks mĂ”istlik ette valmistuda. MĂ”istlik on vĂ”tta teises andmekeskuses server, installida sellele keskkond, st veebiserver, PHP, WordPress, MySQL ja hoida see ootereĆŸiimil. Hetkel, kui me mĂ”istame, et kĂ”ik on katki, peame tegema kaks asja — taastama 50 MB suuruse MySQL dumpi, mis lĂ€heb seal nagu minutiga, ja taastama sinna mingi koguse pilte varukoopiast. See ei vĂ”ta samuti kaua aega. Seega tĂ”useb kogu see asi poole tunni jooksul. Ei mingeid replikatsioone vĂ”i halastas jumal, automaatset failover'it. JĂ€reldus: see, mida me saame kiiresti varukoopiast taastada, pole broneerimise tegemiseks vajalik.

Failover: meid nuhtleb perfektsionism ja... laiskus

NĂ€ide number kolm, keerulisem

Veebipood. PhP koos natuke muudetud open heartiga, mysql tugevate andmetega. Üksjagu staatilist sisu (sest veebipoes on ilusad HD-pildid ja kĂ”ik selline), Redis sessioonide jaoks ja Elasticsearch otsingu jaoks. Hakkame mĂ”tlema seisakuajale. Siin on selge, et pĂ€ev ilma probleemideta veebipoe olla ei saa. Mida kauem see seisab, seda rohkem raha me kaotame. Peame kiirendama. Ja kui palju? Arvan, et kui me tunni jooksul seisame, ei juhtu kellegagi midagi. Jah, me kaotame midagi, kuid kui hakkame liiga pingutama - see ainult halvendab olukorda. MÀÀratleme seiskamise skeemi, mis on tunni jooksul lubatud.

Kuidas kĂ”ik see broneerida? Masin on igal juhul vajalik: tund aega on ĂŒsna vĂ€he. Mysql: siin on juba vajalik replikatsioon, elav replikatsioon, sest tunniga 100 GB dump'i tĂ”enĂ€oliselt ei mahuks. Statiika, pildid: taas, tunni jooksul vĂ”ib 500 GB mitte sisse mahtuda. Seega on parem pildid kohe kopeerida. Redis: siin on huvitavam. Redis-asetsevad seansid — me ei saa seda lihtsalt Ă€ra hĂ€vitada. Sest see ei oleks just vĂ€ga hea: kĂ”ik kasutajad jÀÀvad vĂ€lja logitud, ostukorvid jÀÀvad tĂŒhjaks ja nii edasi. Inimesed peavad uuesti oma login'i ja paroolid sisestama ning palju inimesi vĂ”ib lahkuda ja ostu lĂ”petada. Taas, konversioon langeb. Teiselt poolt, Redis on tĂ€pselt sama aktiivne, viimane sisseloginud kasutajatega, ega ka see ei ole vajalik. Hea kompromiss on vĂ”tta Redis ja taastada see varukoopiatest, eilsest, vĂ”i kui teil on see iga tunni pĂ€rast olemas, siis tunni vanusest. Õnneks on selle taastamine varukoopiast ĂŒhe faili kopeerimine. Ja kĂ”ige huvitavam lugu on Elasticsearch. Kes on kunagi kĂ€ivitanud MySQL replikatsiooni? Kes on kunagi kĂ€ivitanud Elasticsearch replikatsiooni? Ja kelle replikatsioon töötas pĂ€rast tavaliselt normaalselt? Mida ma silmas pean: me nĂ€eme meie sĂŒsteemis mingit olemust. See nĂ€ib olevat kasulik, kuid siiski keeruline.
Kompleksne, kuna meie inseneridel pole selle kasutamise kogemust. VĂ”i on olemas negatiivsed kogemused. Olles teadlikud, et see on endiselt ĂŒsna uus tehnoloogia, millega kaasnevad teatud nĂŒansid ja toimetulekud. MĂ”tleme
 Mis siis nĂŒĂŒd, elastic on samuti ĂŒsna mahukas, ka selle taastamine vĂ”tab aega, mida teha? Saame aru, et elasticit kasutatakse meie puhul otsimiseks. Kuidas meie e-pood siis mĂŒĂŒb? KĂ”nnime turundajate juurde, kĂŒsime, kust inimesed tulevad. Nad vastavad: "90% tulevad Yandexi turult otse toote lehele." Ja kas ostavad vĂ”i mitte. SeetĂ”ttu vajab 10% kasutajatest otsingut. Ja elastic'i replikatsiooni hoidmine, eriti erinevate andmekeskuste vahel erinevates tsoonides, - seal on tĂ”esti palju nĂŒansse. Mis on lahendus? VĂ”tame elastic'i reserveeritud platvormil ja ei tee sellega midagi. Kui protsess venib, siis vĂ”ib-olla tĂ”stame selle kunagi, kuid see pole kindel. Üldiselt jÀÀb jĂ€reldus enam-vĂ€hem samaks: teenuseid, millel pole rahalisi tagajĂ€rgi, me ei reserveeri. Et skeem pĂŒsiks lihtsamana.

Failover: meid nuhtleb perfektsionism ja... laiskus

NĂ€ide number neli, veel keerulisem

Integratsioon: lillede mĂŒĂŒk, taksoteenuse vĂ€ljakutse, kaupade mĂŒĂŒk – sisuliselt ĂŒkskĂ”ik, mida. TĂ”sine asi, mis töötab 24/7 suure kasutajate arvu juures. TĂ€is huvitavat tehnoloogiat, kus on huvitavad andmebaasid, lahendused, suur koormus, ja mis kĂ”ige tĂ€htsam, see ei saa olla nelja minuti jooksul vĂ€lja lĂŒlitatud. Mitte ainult mitte selles osas, et inimesed ei osta, vaid sellepĂ€rast, et inimesed nĂ€evad, et see ei tööta, tunnevad pettumust ja vĂ”ivad ĂŒldse mitte tagasi tulla.

Olgu. Viis minutit. Mida me sellega teeme? Sellisel juhul ehitame tĂ”siselt, kogu raha eest, tegeliku varukoha koos kogu ja kĂ”igega replikeerimisega, ja vĂ”ib-olla isegi automatiseerime selle varukoha vahetamise maksimaalselt. Ja lisaks ei tohi unustada teha ĂŒhte olulist asja: kirjutada ĂŒmberlĂŒlitamise eeskiri. Eeskiri, isegi kui teil on kĂ”ik automaatne, vĂ”ib olla vĂ€ga lihtne. NĂ€iteks: "kĂ€ivitada selline ansible'i stsenaarium", "route 53-s vajuta sellele rukile" jne – kuid see peab olema mingi tĂ€pne tegevuste loetelu.

Ja, see on arusaadav. Replikatsiooni vahetamine on triviaalne ĂŒlesanne, vĂ”i siis vahetub see iseenesest. Domeeninime muutmine DNS-is on sama lihtne. Probleem on aga selles, et kui selline projekt kokku kukub, algab paanika, ja isegi kĂ”ige tugevamad, kogenud adminnid vĂ”ivad selle ees nĂ”rkena tunduda. Ilma selgete juhisteta "ava terminal, mine siia, meie serveri aadress on endiselt see" on raske ĂŒlesande viie minuti jooksul ellu viia. Lisaks, kui me seda regulatsiooni jĂ€rgime, on lihtne fikseerida igasuguseid muudatusi infrastruktuuris, nĂ€iteks – ja vastavalt regulatsiooni muuta.
Aga kui varundussĂŒsteem on vĂ€ga keeruline ja mingil hetkel teeme vea, siis vĂ”ime ka meie varukoha maapinda jĂ€tta, ning lisaks muuta andmed mĂ”lemal platvormil kĂ”ikeks, see oleks vĂ€ga kurb.

Failover: meid nuhtleb perfektsionism ja... laiskus

NÀide number viis, tÀielik hardcore

Rahvusvaheline teenus, mis omab sadu miljoneid kasutajaid ĂŒle kogu maailma. KĂ”ik ajavööndid, mis vaid olemas, kĂ”rge koormusega, ei tohi mingil juhul vĂ€lja kukkuda. Üks minut — ja juba on kurb. Mida teha? Reserveerige, uuesti tĂ€ieliku programmiga. Oleme teinud kĂ”ik, millest rÀÀkis eelnevas nĂ€ites, ja isegi natuke rohkem. TĂ€iuslik maailm ja meie infrastruktuur — see on kĂ”ik IaaC DevOps mĂ”istes. See tĂ€hendab, et kĂ”ik on git'is, ja vajutage lihtsalt nuppu.

Mida puudu jÀÀb? Ühte — harjutustest. Ilma nendeta ei saa. Tundub, et meil on kĂ”ik ideaalne, meil on kĂ”ik tĂ€iesti kontrolli all. Vajutame nuppu, kĂ”ik toimub. Isegi kui see nii on — ja me mĂ”istame, et nii ei juhtu — meie sĂŒsteem suhtleb mĂ”ne muu sĂŒsteemiga. NĂ€iteks DNS Route 53-lt, S3 salvestusruum, integratsioon erinevate API-dega. Me ei suuda kĂ”ike ette nĂ€ha selles hĂŒpoteetilises eksperimendis. Ja seni, kuni me tĂ”esti lĂŒlitit ei lĂŒkka — ei saa me teada, kas see töötab vĂ”i mitte.

Failover: meid nuhtleb perfektsionism ja... laiskus

KĂŒllap see ongi kĂ”ik. Ärge laiskuge ja Ă€rge liialdage. Ja olgu uptime teiega!

Allikas: habr.com

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster