Kuidas AWS «keedab» oma elastseid teenuseid. Serverite ja andmebaaside skaleerimine

Pilved on nagu maagiline karp - sa mÀÀratled, mida vajad, ja ressursid lihtsalt ilmuvad nagu mingist tĂŒhi kohast. Virtuaalmasinad, andmebaasid, vĂ”rk - kĂ”ik see kuulub ainult sinule. On olemas ka teisi pilveĂŒĂŒrnike, kuid oma universumis oled sa ainus valitseja. Sa vĂ”id olla kindel, et saad alati vajalikke ressursse, ei pea kellegagi arvestama ja mÀÀrad ise, milline on vĂ”rk. Kuidas see ilu töötab, mis paneb pilve paindlikult ressursse jaotama ja tĂ€ielikult isoleerib ĂŒĂŒrnikud ĂŒksteisest?

Kuidas AWS «keedab» oma elastseid teenuseid. Serverite ja andmebaaside skaleerimine

AWS pilv on megasuperkeeruline sĂŒsteem, mis on evolutsiooniliselt arenenud aastast 2006. Osa sellest arengust on nĂ€inud Vassili Pantiuhin — Amazon Web Services'i arhitekt. Arhitektina nĂ€eb ta seest mitte ainult lĂ”pptulemust, vaid ka keerukusi, millega AWS silmitsi seisab. Mida rohkem mĂ”istad sĂŒsteemi tööd, seda rohkem usaldust. SeetĂ”ttu jagab Vassili AWS-i pilveteenuste saladusi. Allpool on ĂŒlevaade AWS-i fĂŒĂŒsiliste serverite seadistusest, paindlikust andmebaasi skaleerimisest, Amazonis kohandatud andmebaasist ja meetoditest virtuaalmasinate jĂ”udluse parandamiseks, samal ajal nende hinda vĂ€hendades. Amazon architectural approach’id aitavad tĂ”husamalt kasutada AWS-i teenuseid ja vĂ”ivad isegi anda uusi ideid oma lahenduste loomiseks.

Esinejast: Vassili Pantiuhin (Hen) alustas Unix-adminnina .ru ettevÔtetes, kuus aastat tegeles suure rauaga Sun Microsystem'is, 11 aastat propageeris andmekeskuse keskset maailma EMC-s. Loomulikult arenes ta privaatsetest pilvedest avalikesse 2017. aastal. Praegu aitab ta tehniliste nÔuannetega, et AWS-is elada ja areneda.

Ebaselgus: kÔik, mis on allpool, on Vassili isiklik arvamus ja see ei pruugi kattuda Amazon Web Services'i seisukohaga. Videoklipp ettekandest, mille pÔhjal see artikkel on loodud, on saadaval meie YouTube'i kanalis.

Miks ma rÀÀgin Amazoniga seadistamisest

Minu esimene auto oli "kĂ€tega" - manuaalkĂ€igukastiga. See oli suurepĂ€rane, sest tundsin, et suudan autot juhtida ja tĂ€ielikult seda kontrollida. Mulle meeldis ka, et ma vĂ€hemalt enam-vĂ€hem mĂ”istsin, kuidas see töötab. Loomulikult kujutasin ma kasti ĂŒlesehitust piisavalt primitiivselt - umbes nagu jalgratta kĂ€igukast.

Kuidas AWS «keedab» oma elastseid teenuseid. Serverite ja andmebaaside skaleerimine

KĂ”ik oli suurepĂ€rane, vĂ€lja arvatud ĂŒks asi — ummikud. NĂ€iliselt istud ja ei tee midagi, aga pidevalt vahetad kĂ€ike, tĂ”stad clutchi, ja vajutad gaasi ning pidurit — sellest vĂ€sid tĂ”eliselt. Uute autode automatiseerimine lahendas osaliselt ummikute probleemi, kui meie peres ilmus automaatkĂ€igukastiga auto. Roolis olles on mul aega mĂ”elda, kuulata audiokogusid.

Minu elus tekkis veel ĂŒks mĂ”istatus, kuna ma ei mĂ”istnud enam, kuidas minu auto töötab. Kaasaegne auto on keeruline seade. Auto kohandub samaaegselt kĂŒmnete erinevate parameetritega: gaasi vajutamine, pidur, sĂ”idustiil, tee kvaliteet. Ma ei saa enam aru, kuidas see töötab.

Kui ma hakkasin tegelema Amazon Cloudiga, oli see minu jaoks samuti saladus. Kuid see saladus on kordades suurem, sest autos on ainult ĂŒks juht, kuid AWS-is on neid miljoneid. KĂ”ik kasutajad sĂ”idavad samal ajal, vajutavad gaasi ja pidurit. Huvitav on see, et nad jĂ”uavad sinna, kuhu soovivad — see on minu jaoks ime! SĂŒsteem kohandub automaatselt, skaleerub ja paindlikult kohandub iga kasutaja jaoks, nii et talle tundub, et ta on selles Universumit ĂŒksi.

Maagia hajus veidi, kui tulin hiljem Amazonisse arhitektina töötama. NĂ€gin, milliste probleemidega me kokku puutume, kuidas me neid lahendame ja kuidas arendame teenuseid. SĂŒsteemi töö mĂ”istmine suurendab usaldust teenuse vastu. SeetĂ”ttu tahan jagada pilti sellest, mis on AWS-i pilve all.

Millest rÀÀgime

Olen valinud mitmekesise lĂ€henemise — valisin neli huvitavat teenust, millest tasub rÀÀkida.

Serverite optimeerimine. Efemeersed pilved fĂŒĂŒsilise kehaga: fĂŒĂŒsilised andmekeskused, kus seisavad fĂŒĂŒsilised serverid, mis sumisevad, soojenevad ja vilguvad tuled.

Serverless funktsioonid (Lambda) — tĂ”enĂ€oliselt kĂ”ige skaleeritavam teenus pilves.

Andmebaasi skaleerimine. RÀÀgin sellest, kuidas me ehitame oma skaleeritavad andmebaasid.

VĂ”rgu skaleerimine. Viimane osa, kus avandan meie vĂ”rgu ĂŒlesehitust. See on imeline asi — iga pilve kasutaja arvab, et ta on pilves ĂŒksi ja ei nĂ€e teisi tenant’e.

MĂ€rkus. KĂ€esolevas artiklis kĂ€sitleme serverite optimeerimist ja andmebaaside skaleerimist. VĂ”rgu skaleerimist arutame jĂ€rgmises artiklis. Kuhu jÀÀvad serverless-funktsioonid? Nendest on ilmunud eraldi tĂ”lgendus «VĂ€ike, aga vinge. Firecracker'i mikrovĂ”rgu avamine». Selles on rÀÀkida mitmest erinevast skaleerimisviisist ning ĂŒksikasjalikult on kĂ€sitletud Firecracker'i lahendust — parimate virtuaalmasina ja konteinerite omaduste sĂŒmbioos.

Serverid

Pilv on efemeerne. Kuid sellel efemeersusel on siiski fĂŒĂŒsiline kehastus — serverid. Alguses oli nende arhitektuur klassikaline. Tavaline x86 kiibistik, vĂ”rgukaardid, Linux, hĂŒperviisor Xen, millel kĂ€itusid virtuaalmasinad.

Kuidas AWS «keedab» oma elastseid teenuseid. Serverite ja andmebaaside skaleerimine

2012. aastal tĂ€itis selline arhitektuur oma ĂŒlesandeid kenasti. Xen on suurepĂ€rane hĂŒperviisor, kuid ĂŒhe tĂ”sise puudusega. Sel on piisavalt suured seadme emuleerimise kulud. Kui turule ilmusid uued kiiremad vĂ”rgukaardid vĂ”i SSD-d, muutusid need kulud liiga kĂ”rgeks. Kuidas sellega toime tulla? Otsustasime töötada kohe kahes suunas — optimeerida nii riistvara kui ka hĂŒperviisorit. Ülesanne on vĂ€ga tĂ”sine.

Riistvara ja hĂŒperviisori optimeerimine

KÔike korraga ja hÀsti ei Ônnestu. Mis on «hÀsti», alguses ei olnud ka selge.

Otsustasime rakendada evolutsioonilist lĂ€henemist — muutma ĂŒhte olulist arhitektuuri elementi ja viima selle produtsendile.

Astume kÔigile takistustele, kuulame kaebusi ja ettepanekuid. Siis muutame teist komponenti. Nii, vÀikeste sammudega, muudame kogu arhitektuuri radikaalselt vastavalt kasutajate ja toe tagasisidele.

Muudatused algasid 2013. aastal kĂ”ige keerulisemast — vĂ”rgust. C3 instantsidesse lisati standardse vĂ”rgukaardi juurde spetsiaalne Network Accelerator kaart. See ĂŒhendati lihtsalt lĂŒhikese loopback kaabliga esipaneelil. Ehkki see nĂ€gi vĂ€lja inetu, ei olnud see pilves nĂ€ha. Kuid otsene suhtlemine riistvaraga parandas pĂ”himĂ”tteliselt jitterit ja vĂ”rgu lĂ€bilaskevĂ”imet. Edasi otsustasime tegeleda EBS — Elastic Block Storage andmete plokkide sĂ€ilitamise vĂ”rgu juurdepÀÀsu parandamisega. See on vĂ”rgu ja ladustamise kombinatsioon. Probleem seisneb selles, et kui turul olid olemas Network Accelerator kaardid, siis ei olnud vĂ”imalust lihtsalt osta Storage Accelerator riistvara. SeetĂ”ttu pöördusime startup'i poole

Annapurna Labs Annapurna Labs, mis valmistati meile spetsiaalsed ASIC-kiibid. Need vĂ”imaldasid ĂŒhendada kaugseid EBS-mahte NVMe-seadmetena.

Instantsides C4 lahendasime kaks ĂŒlesannet. Esiteks - loobusime tuleviku suunaga perspektiivikast, kuid tol ajal veel uudsest NVMe-tehnoloogiast. Teiseks - oluliselt leevendasime keskprotsessori koormust, viies EBS-i pĂ€ringute töötlemise uuele kaardile. See Ă”nnestus, seetĂ”ttu on Annapurna Labs nĂŒĂŒd osa Amazonist.

November 2017. aastaks olime aru saanud, et on aeg muuta ka hĂŒperviisorit.

Uus hĂŒperviisor arendati vĂ€lja tĂ€iustatud KVM-i tuumamoodulite pĂ”hjal.

See vĂ”imaldas oluliselt vĂ€hendada seadmete emulatsiooniga seotud kulu ja töötada otse uute ASIC-idega. Instantsid C5 olid esimesed virtuaalmasinad, mille all on uus hĂŒperviisor. Nimeks saime selle Nitro.

Kuidas AWS «keedab» oma elastseid teenuseid. Serverite ja andmebaaside skaleerimineInstantside evolutsioon ajajoone jÀrgi.

KĂ”ik uued virtuaalmasinate tĂŒĂŒbid, mis ilmusid novembris 2017, töötavad selle hĂŒperviisori peal. Raudse Bare Metal instantsidel ei ole hĂŒperviisorit, kuid neid nimetatakse samuti Nitroks, kuna nad kasutavad spetsialiseeritud Nitro-kaarte.

JĂ€rgnevate kahe aasta jooksul ĂŒletas Nitro-instantside tĂŒĂŒpide arv paarikĂŒmne: A1, C5, M5, T3 ja teised.

Kuidas AWS «keedab» oma elastseid teenuseid. Serverite ja andmebaaside skaleerimine
Instantside tĂŒĂŒbid.

Kuidas modernsed Nitro-masinad on ĂŒles ehitatud

Neil on kolm peamist komponenti: Nitro-hĂŒperviisor (millest rÀÀgiti varem), turvakiip ja Nitro-kaardid.

Turvakiip on integreeritud otse emaplaadi. See kontrollib mitmeid olulisi funktsioone, nĂ€iteks hosti operatsioonisĂŒsteemi laadimise kontrolli.

Nitro-kaardid – neid on neli tĂŒĂŒpi. KĂ”ik need on vĂ€lja töötatud Annapurna Labs'i poolt ja pĂ”hinevad ĂŒldistel ASIC-idel. Osa nende pĂŒsivara on samuti ĂŒhine.

Kuidas AWS «keedab» oma elastseid teenuseid. Serverite ja andmebaaside skaleerimine
Neli tĂŒĂŒpi Nitro-kaarte.

Üks kaart on ette nĂ€htud tööks vĂ”rgugaVPC. Just see on virtuaalmasinates nĂ€htav kui vĂ”rgukaart ENA — Elastic Network Adaptor. Samuti kapseldab see andmeid, kui need edastatakse fĂŒĂŒsilise vĂ”rgu kaudu (sellest rÀÀgime artikli teises osas), kontrollib Security Groupi tulemĂŒĂŒri, vastutab marsruutimise ja teiste vĂ”rguasjade eest.

Erilised kaardid töötavad plokkhoidla EBS ja serverisse integreeritud ketastega. KĂŒlastavale virtuaalmasinale esitatakse need kui NVMe-adapterid. Samuti vastutavad nad andmete krĂŒpteerimise ja ketaste jĂ€lgimise eest.

Nitro-kaartide, hĂŒperviisori ja turvakiibi sĂŒsteem on ĂŒhendatud SDN-vĂ”rku ehk Software Defined NetworkSelle vĂ”rgu (Control Plane) haldamise eest vastutab kaardikontroller.

Muidugi jĂ€tkame uute ASIC-ide arendamist. NĂ€iteks 2018. aasta lĂ”pus tĂ”ime turule Inferentia kiibi, mis vĂ”imaldab töötada masinĂ”ppe ĂŒlesannetega efektiivsemalt.

Kuidas AWS «keedab» oma elastseid teenuseid. Serverite ja andmebaaside skaleerimine
Inferentia masinÔppe protsessor.

Mastaabilehe andmebaas

Traditsiooniline andmebaas on kihiline struktuur. Kui vÀga lihtsustatult öelda, siis eristatakse jÀrgmisi tasandeid.

  • SQL — sellega töötavad kliendi- ja pĂ€ringuhaldurid.
  • Kindlustamine tehingud — siin on kĂ”ik selge, ACID ja kĂ”ik selline.
  • VahemĂ€lu, mida tagavad puhvritooted.
  • Logimine — tagab redo-logide töö. MySQL-is nimetatakse neid Bin Logs, PostgreSQL-is — Write Ahead Logs (WAL).
  • Salvestamine – andmete kirjutamine kettale.

Kuidas AWS «keedab» oma elastseid teenuseid. Serverite ja andmebaaside skaleerimine
Andmebaasi kihiline struktuur.

Andmebaaside mastaabilaiendamiseks on olemas erinevad meetodid: sharding, arhitektuur Shared Nothing, jagatud kettad.

Kuidas AWS «keedab» oma elastseid teenuseid. Serverite ja andmebaaside skaleerimine

Siiski, kĂ”ik need meetodid sĂ€ilitavad sama monoliitse andmebaasi struktuuri. See piirab mastaapsust oluliselt. Selle probleemi lahendamiseks töötasime vĂ€lja oma andmebaasi — Amazon Aurora. See on ĂŒhilduv MySQL-i ja PostgreSQL-iga.

Amazon Aurora

Peamine arhitektuuriidee — eraldada salvestuse ja logimise tasandid peamisest andmebaasist.

Korraks öeldes, et ka vahemÀlu tase on meil tehtud sÔltumatuks. Arhitektuur lÔpetab monoliidi olemise ja saame lisavabaduste mastaabilaiendamiseks erinevates blokides.

Kuidas AWS «keedab» oma elastseid teenuseid. Serverite ja andmebaaside skaleerimine
Logimise ja salvestamise tasandid on eraldatud andmebaasist.

Traditsiooniline DBMS salvestab andmed salvestussĂŒsteemi plokkide kujul. Amazon Auroras lĂ”ime "nutika" salvestuse, mis suudab rÀÀkida redo-logidest. Salvestuses muudetakse logid andmeplokkideks, jĂ€lgitakse nende terviklikkust ja varundatakse automaatselt.

See lÀhenemine vÔimaldab rakendada selliseid huvitavaid asju nagu kloneerimine. See töötab pÔhimÔtteliselt kiiremini ja ökonoomsemalt, kuna ei vaja tÀieliku andmete koopia loomist.

Salvestustase on rakendatud jaotatud sĂŒsteemina. See koosneb vĂ€ga suurest fĂŒĂŒsiliste serverite arvust. Iga redo-log töödeldakse ja salvestatakse samaaegselt kuue sĂ”lme poolt. See tagab andmete kaitse ja koormuse jaotamise.

Kuidas AWS «keedab» oma elastseid teenuseid. Serverite ja andmebaaside skaleerimine

Lugemise skaala saavutamiseks saab kasutada vastavaid koopiaid. Jaotatud salvestus kĂ”rvaldab vajaduse sĂŒnkroonimise jĂ€rele peamise andmebaasi instantsiga, mille kaudu me andmeid kirjutame, ja teiste koopiatega. Aktiivsed andmed on tagatud kĂ”igile koopiatele.

Ainus probleem on lugemise koopiate vanade andmete vahemĂ€lu. Kuid seda probleemi on vĂ”imalik lahendada kĂ”igi redo-logide edastamisega koopiatesse sisemiste vĂ”rkude kaudu. Kui logi on vahemĂ€lus, siis mĂ€rgitakse see kehtetuks ja kirjutatakse ĂŒle. Kui vahemĂ€lus seda ei ole, siis lihtsalt kĂ”rvaldatakse.

Kuidas AWS «keedab» oma elastseid teenuseid. Serverite ja andmebaaside skaleerimine

Salvestuse osas oleme selged.

Kuidas skaleerida andmebaasi tasemeid

Siin on horisontaalne skaleerimine palju keerulisem. SeetÔttu liigume kindlat rada pidi klassikalise vertikaalse skaleerimise poole.

Oletame, et meil on rakendus, mis suhtleb andmebaasiga lÀbi meistrinoodi.

Vertikaalse skaleerimise korral jagame uue nodi, millel on rohkem protsessoreid ja mÀlu.

Kuidas AWS «keedab» oma elastseid teenuseid. Serverite ja andmebaaside skaleerimine

SeejÀrel suuname rakenduse vanalt meistrinoodilt uuele. TÔstatub probleem.

  • See vajab rakenduse jaoks mĂ€rkimisvÀÀrset seiskamist.
  • Uuel meistrinode on kĂŒlm vahemĂ€lu. Andmebaasi sooritusvĂ”ime on maksimaalne alles pĂ€rast vahemĂ€lu soojenemist.

Kuidas AWS «keedab» oma elastseid teenuseid. Serverite ja andmebaaside skaleerimine

Kuidas olukorda parandada? Paigaldada vaheproksi rakenduse ja meistrinode vahele.

Kuidas AWS «keedab» oma elastseid teenuseid. Serverite ja andmebaaside skaleerimine

Mida see meile annab? NĂŒĂŒd ei ole kĂ”ik rakendused vaja kĂ€sitsi suunata uuele nodile. Ülemineku vĂ”ib teha lĂ€bi vaheproksi ja see on oluliselt kiire.

Tundub, et probleem on lahendatud. Kuid ei, me kannatame endiselt vahemĂ€lu soojendamise vajaduse all. Lisaks on ilmnenud uus probleem — nĂŒĂŒd on vaheproksi potentsiaalne rikepunkt.

LÔplik lahendus Amazon Aurora serverless

Kuidas me need probleemid lahendasime?

JĂ€tsime vaheproksi. See ei ole mingi eraldi instants, vaid terve jaotatud vaheproksi laevastik, mille kaudu rakendused on ĂŒhendatud andmebaasiga. ÜkskĂ”ik millist nodi saab vajadusel peaaegu viivitamatult asendada.

Lisatud oli soe nodide tÔttu erineva suurusega. SeetÔttu on vajadusel uue suurema vÔi vÀiksema nodi saamine kohe kergesti saadaval. Ei pea ootama, kuni see laaditakse.

Kogu skaleerimisprotsess on kontrollitud spetsiaalse jĂ€lgimissĂŒsteemiga. JĂ€lgimine jĂ€lgib pidevalt praeguse master-noodi olekut. Kui ta avastab nĂ€iteks, et protsessori koormus on jĂ”udnud kriitilisele tasemele, teavitab ta soe instantside gruppi vajadusest uue noodiga varustamiseks.

Kuidas AWS «keedab» oma elastseid teenuseid. Serverite ja andmebaaside skaleerimine
Jaotatud proksid, soojad instantsid ja jÀlgimine.

Vajalikul vĂ”imsusel olev node on saadaval. Sellele kopeeritakse puhvri grupid ning sĂŒsteem hakkab ootama ohutut hetke ĂŒmberlĂŒlitamiseks.

Kuidas AWS «keedab» oma elastseid teenuseid. Serverite ja andmebaaside skaleerimine

Tavaliselt saab ĂŒmberlĂŒlitamise hetk kergesti kĂ€tte. Siis peatub side proksi ja vana master-noodi vahel, kĂ”ik sessioonid lĂŒlitatakse ĂŒle uuele nodile.

Kuidas AWS «keedab» oma elastseid teenuseid. Serverite ja andmebaaside skaleerimine

Andmebaasiga töötamine jÀtkub.

Kuidas AWS «keedab» oma elastseid teenuseid. Serverite ja andmebaaside skaleerimine

Graafikult on nĂ€ha, et peatus on tĂ”epoolest vĂ€ga lĂŒhike. Sinisel graafikul on koormus ja punastele astmetele jÀÀvad skaleerimise hetked. LĂŒhikesed langused sinisel graafikul on just see lĂŒhike viivitus.

Kuidas AWS «keedab» oma elastseid teenuseid. Serverite ja andmebaaside skaleerimine

Muide, Amazon Aurora vĂ”imaldab ÀÀrmiselt sÀÀstlikult lĂ”petada andmebaasi, kui see ei ole kasutuses, nĂ€iteks nĂ€dalavahetustel. PĂ€rast seiskamist hakkab andmebaasi koormus jĂ€rk-jĂ€rgult vĂ€henema ja jÀÀb mĂ”neks ajaks vĂ€lja lĂŒlitatud. Kui koormus naaseb, tĂ”useb see jĂ€lle sujuvalt.

JÀrgmises osas AmazonÀ seadistamise latiteerimisest rÀÀgime vÔrgu skaleerimisest. Registreeruge uudiskirjadele ja jÀlgige uuendusi, et mitte jÀÀda artiklist ilma.

Pealehe HighLoad++ Vassili Pantjuhin esitab ettekande „Houston, meil on probleem. TalitlushĂ€irete kavandamise sĂŒsteemid, Amazon'i pilveteenuste sisetöötamise mustrid“. Milliseid jaotatud sĂŒsteemide kujundamise mustreid kasutavad Amazon'i arendajad, millised on teenuste talitlushĂ€irete pĂ”hjused, mis on Cell-based architecture, Constant Work, Shuffle Sharding — see on huvitav. Konverentsini on vĂ€hem kui kuu — broneerige pileteid. 24. oktoobril tĂ”useb hind.

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster