Kako AWS priprema svoje elastične usluge. Skaliranje servera i baze podataka

Oblaci su poput čarobne kutije - pitate Å”ta vam treba, a resursi se jednostavno pojavljuju niotkuda. Virtuelne maÅ”ine, baze podataka, mreža - sve ovo pripada samo vama. Postoje i drugi zakupci oblaka, ali u vaÅ”em svemiru vi ste jedini vladar. Sigurni ste da ćete uvijek dobiti potrebne resurse, ne vodite računa o nikome i sami određujete kakva će mreža biti. Kako funkcioniÅ”e ova magija koja čini da oblak elastično raspoređuje resurse i potpuno izoluje stanare jedne od drugih?

Kako AWS priprema svoje elastične usluge. Skaliranje servera i baze podataka

AWS oblak je mega-super složen sistem koji se evolucijski razvija od 2006. godine. Dio ovog razvoja se dogodio Vasilij Pantjuhin - Amazon Web Services Architect. Kao arhitekta, on dobija pogled iznutra ne samo na krajnji rezultat, već i na izazove koje AWS savladava. Å to je bolje razumevanje kako sistem funkcioniÅ”e, veće je poverenje. Stoga će Vasilij podijeliti tajne AWS usluga u oblaku. Ispod je dizajn fizičkih AWS servera, elastična skalabilnost baze podataka, prilagođena Amazon baza podataka i metode za povećanje performansi virtuelnih maÅ”ina uz istovremeno smanjenje njihove cene. Poznavanje Amazonovih arhitektonskih pristupa pomoći će vam da efikasnije koristite AWS usluge i može vam dati nove ideje za izgradnju vlastitih rjeÅ”enja.

O govorniku: Vasilij Pantyukhin (kokoŔka) započeo je kao Unix administrator u .ru kompanijama, radio na velikom hardveru Sun Microsystema 6 godina i propovijedao svijet usmjeren na podatke u EMC-u 11 godina. Prirodno je evoluirao u privatne oblake, a 2017. preŔao u javne. Sada pruža tehničke savjete kako bi pomogao u životu i razvoju u AWS oblaku.

Odricanje od odgovornosti: sve ispod je Vasilijevo lično miŔljenje i možda se ne poklapa sa stavom Amazon Web Services. Video snimanje IzvjeŔtaj na kojem se zasniva članak dostupan je na naŔem YouTube kanalu.

ZaÅ”to govorim o Amazon uređaju?

Moj prvi auto je imao ručni menjač. Bilo je odlično zbog osjećaja da mogu voziti auto i imati potpunu kontrolu nad njim. Svidjelo mi se i to Å”to sam barem otprilike razumio princip njegovog rada. Naravno, zamiÅ”ljao sam da je struktura kutije prilično primitivna - neÅ”to poput mjenjača na biciklu.

Kako AWS priprema svoje elastične usluge. Skaliranje servera i baze podataka

Sve je bilo odlično, osim jedne stvari - zaglavljeni u saobraćajnoj gužvi. Čini se kao da sjedite i ne radite niÅ”ta, ali stalno mijenjate brzine, pritiskate kvačilo, gas, kočnicu - to vas zaista umara. Problem saobraćajne gužve je delimično reÅ”en kada je porodica dobila auto-automat. Dok sam vozio, imao sam vremena da razmislim o nečemu i posluÅ”am audio-knjigu.

JoÅ” jedna misterija pojavila se u mom životu, jer sam potpuno prestao da razumijem kako moj auto radi. Savremeni automobil je složen uređaj. Automobil se istovremeno prilagođava na desetine različitih parametara: pritisak na gas, kočnicu, stil vožnje, kvalitet puta. ViÅ”e ne razumijem kako to funkcionira.

Kada sam počeo da radim na Amazon oblaku, i za mene je to bila misterija. Samo je ova misterija za red veličine veća, jer u autu je jedan vozač, a u AWS-u ih ima na milione. Svi korisnici istovremeno upravljaju, pritiskaju gas i kočnicu. Neverovatno je da idu kuda žele - za mene je to čudo! Sistem se automatski prilagođava, skalira i elastično prilagođava svakom korisniku tako da mu se čini da je sam u ovom Univerzumu.

Magija je malo nestala kada sam kasnije doÅ”ao da radim kao arhitekta u Amazonu. Vidio sam sa kakvim se problemima suočavamo, kako ih rjeÅ”avamo i kako razvijamo usluge. Sa sve većim razumijevanjem kako sistem funkcionira, pojavljuje se viÅ”e povjerenja u uslugu. Stoga želim podijeliti sliku onoga Å”to se nalazi ispod haube AWS oblaka.

O čemu da pričamo

Odabrao sam raznolik pristup - odabrao sam 4 zanimljive usluge o kojima vrijedi govoriti.

Optimizacija servera. Efemerni oblaci sa fizičkim oličenjem: fizički centri podataka u kojima postoje fizički serveri koji bruje, greju i trepću svetlima.

Funkcije bez servera (Lambda) je vjerovatno najskalabilniji servis u oblaku.

Skaliranje baze podataka. Reći ću vam o tome kako gradimo vlastite skalabilne baze podataka.

Mrežno skaliranje. Posljednji dio u kojem ću otvoriti uređaj naÅ”e mreže. Ovo je divna stvar - svaki korisnik oblaka vjeruje da je sam u oblaku i uopće ne vidi druge stanare.

BiljeÅ”ka. Ovaj članak će raspravljati o optimizaciji servera i skaliranju baze podataka. Razmotrit ćemo skaliranje mreže u sljedećem članku. Gdje su funkcije bez servera? O njima je objavljen poseban transkript ā€œMali, ali pametan. Otpakivanje Firecracker mikrovirtuelno" Govori o nekoliko različitih metoda skaliranja i detaljno razmatra Firecracker rjeÅ”enje - simbiozu najboljih kvaliteta virtuelne maÅ”ine i kontejnera.

Serveri

Oblak je prolazan. Ali ta prolazna priroda ipak ima fizičko utjelovljenje – servere. U početku je njihova arhitektura bila klasična. Standardni x86 čipset, mrežne kartice, Linux, Xen hipervizor na kojem su pokrenute virtuelne maÅ”ine.

Kako AWS priprema svoje elastične usluge. Skaliranje servera i baze podataka

U 2012. godini ova arhitektura se prilično dobro nosila sa svojim zadacima. Xen je odličan hipervizor, ali ima jedan veliki nedostatak. Dosta mu je visoki troÅ”kovi za emulaciju uređaja. Kako nove, brže mrežne kartice ili SSD diskovi postaju dostupni, ovi troÅ”kovi postaju previsoki. Kako se nositi s ovim problemom? Odlučili smo da radimo na dva fronta odjednom - optimizirati i hardver i hipervizor. Zadatak je veoma ozbiljan.

Optimizacija hardvera i hipervizora

Uraditi sve odjednom i to dobro neće raditi. Å ta je ā€ždobroā€œ takođe je u početku bilo nejasno.

Odlučili smo se za evolutivni pristup - mijenjamo jedan važan element arhitekture i bacamo ga u proizvodnju.

Nagazimo na svaku grabu, sluŔamo pritužbe i sugestije. Zatim mijenjamo drugu komponentu. Dakle, u malim koracima, radikalno mijenjamo cjelokupnu arhitekturu na osnovu povratnih informacija korisnika i podrŔke.

Transformacija je počela 2013. godine sa najsloženijom stvari - mrežom. IN S3 U slučajevima, standardnoj mrežnoj kartici dodana je posebna kartica Network Accelerator. Bio je povezan bukvalno kratkim loopback kablom na prednjoj ploči. Nije lijepo, ali se ne vidi u oblaku. Ali direktna interakcija sa hardverom je suŔtinski poboljŔala podrhtavanje i mrežnu propusnost.

Zatim smo odlučili da poboljÅ”amo pristup blok memoriji podataka EBS - Elastic Block Storage. To je kombinacija mreže i skladiÅ”ta. PoteÅ”koća je u tome Å”to, dok su kartice Network Accelerator postojale na tržiÅ”tu, nije bilo mogućnosti da se jednostavno kupi hardver Storage Accelerator. Pa smo se okrenuli startupu Annapurna Labs, koji je za nas razvio posebne ASIC čipove. Dozvolili su da se udaljeni EBS volumeni montiraju kao NVMe uređaji.

U slučajevima C4 rijeÅ”ili smo dva problema. Prvi je da smo implementirali temelj za budućnost obećavajuće, ali u to vrijeme nove, NVMe tehnologije. Drugo, značajno smo rasteretili centralni procesor prebacivanjem obrade zahtjeva u EBS na novu karticu. Ispalo je dobro, tako da je sada Annapurna Labs dio Amazona.

Do novembra 2017. shvatili smo da je vrijeme da promijenimo sam hipervizor.

Novi hipervizor je razvijen na osnovu modifikovanih modula KVM kernela.

Omogućio je fundamentalno smanjenje troÅ”kova emulacije uređaja i direktan rad s novim ASIC-ovima. Instance S5 bile su prve virtuelne maÅ”ine sa novim hipervizorom koji je radio ispod haube. Dali smo mu ime Nitro.

Kako AWS priprema svoje elastične usluge. Skaliranje servera i baze podatakaEvolucija instanci na vremenskoj liniji.

Sve nove vrste virtuelnih maŔina koje su se pojavile od novembra 2017. rade na ovom hipervizoru. Bare Metal instance nemaju hipervizor, ali se nazivaju i Nitro, jer koriste specijalizovane Nitro kartice.

U naredne dvije godine broj tipova Nitro instanci premaŔio je nekoliko desetina: A1, C5, M5, T3 i drugi.

Kako AWS priprema svoje elastične usluge. Skaliranje servera i baze podataka
Tipovi instanci.

Kako rade moderne Nitro maŔine

Imaju tri glavne komponente: Nitro hipervizor (o kome je već bilo riječi), sigurnosni čip i Nitro kartice.

Sigurnosni čip integrisan direktno u matičnu ploču. On kontrolira mnoge važne funkcije, kao Ŕto je kontrola učitavanja host OS-a.

Nitro kartice - Postoje četiri vrste njih. Sve ih je razvila Annapurna Labs i zasnovani su na uobičajenim ASIC-ovima. Neki od njihovih firmvera su također uobičajeni.

Kako AWS priprema svoje elastične usluge. Skaliranje servera i baze podataka
Četiri vrste Nitro kartica.

Jedna od kartica je dizajnirana za rad mrežaVPC. To je ono Å”to je vidljivo u virtuelnim maÅ”inama kao mrežna kartica ENA - Elastični mrežni adapter. Također inkapsulira promet prilikom njegovog prijenosa kroz fizičku mrežu (o tome ćemo govoriti u drugom dijelu članka), kontrolira firewall sigurnosnih grupa i odgovoran je za usmjeravanje i druge mrežne stvari.

Odabrane kartice rade sa blok memorijom EBS i diskove koji su ugrađeni u server. Gostujućoj virtuelnoj maÅ”ini se pojavljuju kao NVMe adapteri. Oni su također odgovorni za enkripciju podataka i nadzor diska.

Sistem Nitro kartica, hipervizora i sigurnosnog čipa integrisan je u SDN mrežu ili Softverski definirana mreža. Odgovoran za upravljanje ovom mrežom (Control Plane) kartica kontrolera.

Naravno, nastavljamo sa razvojem novih ASIC-ova. Na primjer, krajem 2018. objavili su čip Inferentia, koji vam omogućava da efikasnije radite sa zadacima maÅ”inskog učenja.

Kako AWS priprema svoje elastične usluge. Skaliranje servera i baze podataka
Inferentia čip procesora za maŔinsko učenje.

Skalabilna baza podataka

Tradicionalna baza podataka ima slojevitu strukturu. Da bismo uvelike pojednostavili, razlikuju se sljedeći nivoi.

  • SQL — na tome rade dispečeri klijenata i zahteva.
  • Odredbe transakcije - Ovde je sve jasno, ACID i sve to.
  • keÅ”iranje, koju obezbjeđuju puferski pulovi.
  • Logging — omogućava rad sa redo logovima. U MySQL-u se zovu Bin Logs, u PosgreSQL-u - Write Ahead Logs (WAL).
  • SkladiÅ”tenje – direktno snimanje na disk.

Kako AWS priprema svoje elastične usluge. Skaliranje servera i baze podataka
Slojevita struktura baze podataka.

Postoje različiti načini za skaliranje baza podataka: dijeljenje, Shared Nothing arhitektura, dijeljeni diskovi.

Kako AWS priprema svoje elastične usluge. Skaliranje servera i baze podataka

Međutim, sve ove metode održavaju istu monolitnu strukturu baze podataka. Ovo značajno ograničava skaliranje. Da bismo rijeÅ”ili ovaj problem, razvili smo vlastitu bazu podataka āˆ’ Amazon Aurora. Kompatibilan je sa MySQL i PostgreSQL.

Amazon Aurora

Glavna arhitektonska ideja je da se nivoi skladiŔtenja i evidentiranja odvoje od glavne baze podataka.

Gledajući unaprijed, reći ću da smo također učinili neovisnim nivo keÅ”iranja. Arhitektura prestaje da bude monolit i dobijamo dodatne stepene slobode u skaliranju pojedinačnih blokova.

Kako AWS priprema svoje elastične usluge. Skaliranje servera i baze podataka
Nivoi evidentiranja i skladiŔtenja su odvojeni od baze podataka.

Tradicionalni DBMS zapisuje podatke u sistem skladiŔtenja u obliku blokova. U Amazon Aurori smo kreirali pametnu pohranu koja može govoriti jezik redo-logs. Unutra, skladiŔte pretvara evidencije u blokove podataka, nadgleda njihov integritet i automatski pravi rezervne kopije.

Ovaj pristup vam omogućava da implementirate takve zanimljive stvari kao Å”to su kloniranje. Funkcionalno radi brže i ekonomičnije zbog činjenice da ne zahtijeva stvaranje potpune kopije svih podataka.

Sloj za skladiÅ”tenje je implementiran kao distribuirani sistem. Sastoji se od veoma velikog broja fizičkih servera. Svaki redo log se obrađuje i pohranjuje istovremeno Å”est čvorova. Ovo osigurava zaÅ”titu podataka i balansiranje opterećenja.

Kako AWS priprema svoje elastične usluge. Skaliranje servera i baze podataka

Skaliranje čitanja može se postići koriÅ”tenjem odgovarajućih replika. Distribuirano skladiÅ”te eliminira potrebu za sinhronizacijom između glavne instance baze podataka, preko koje piÅ”emo podatke, i preostalih replika. Zagarantovano je da će ažurirani podaci biti dostupni svim replikama.

Jedini problem je keŔiranje starih podataka na pročitanim replikama. Ali ovaj problem se rjeŔava prijenos svih redo dnevnika na replike preko interne mreže. Ako je dnevnik u keŔu, on je označen kao netačan i prepisan. Ako nije u keŔu, jednostavno se odbacuje.

Kako AWS priprema svoje elastične usluge. Skaliranje servera i baze podataka

Sredili smo skladiŔte.

Kako skalirati nivoe DBMS-a

Ovdje je horizontalno skaliranje mnogo teže. Pa idemo niz utabanu stazu klasično vertikalno skaliranje.

Pretpostavimo da imamo aplikaciju koja komunicira sa DBMS-om preko glavnog čvora.

Prilikom vertikalnog skaliranja, dodjeljujemo novi čvor koji će imati viÅ”e procesora i memorije.

Kako AWS priprema svoje elastične usluge. Skaliranje servera i baze podataka

Zatim prebacimo aplikaciju sa starog glavnog čvora na novi. Nastaju problemi.

  • Ovo će zahtijevati značajno vrijeme zastoja aplikacije.
  • Novi glavni čvor će imati hladnu keÅ” memoriju. Performanse baze podataka će biti maksimalne tek nakon Å”to se predmemorija zagrije.

Kako AWS priprema svoje elastične usluge. Skaliranje servera i baze podataka

Kako poboljÅ”ati situaciju? Postavite proxy između aplikacije i glavnog čvora.

Kako AWS priprema svoje elastične usluge. Skaliranje servera i baze podataka

Å ta će nam ovo dati? Sada sve aplikacije ne moraju biti ručno preusmjerene na novi čvor. Prebacivanje se može izvrÅ”iti pod proxyjem i suÅ”tinski je brže.

Čini se da je problem rijeÅ”en. Ali ne, joÅ” uvijek patimo od potrebe za zagrijavanjem keÅ”a. Osim toga, pojavio se novi problem - sada je proxy potencijalna tačka kvara.

Konačno rjeŔenje s Amazon Aurora bez servera

Kako smo rijeŔili ove probleme?

Ostavio proxy. Ovo nije zasebna instanca, već čitava distribuirana flota proksija preko kojih se aplikacije povezuju na bazu podataka. U slučaju kvara, bilo koji od čvorova može se zamijeniti gotovo trenutno.

Dodan bazen toplih čvorova različitih veličina. Stoga, ako je potrebno dodijeliti novi čvor veće ili manje veličine, on je odmah dostupan. Nema potrebe čekati da se učita.

Cijeli proces skaliranja kontrolira se posebnim sistemom za praćenje. Monitoring stalno prati stanje trenutnog glavnog čvora. Ako otkrije, na primjer, da je opterećenje procesora dostiglo kritičnu vrijednost, obavjeÅ”tava skup toplih instanci o potrebi da se dodijeli novi čvor.

Kako AWS priprema svoje elastične usluge. Skaliranje servera i baze podataka
Distribuirani proksiji, tople instance i praćenje.

Dostupan je čvor sa potrebnom snagom. Skupovi međuspremnika se kopiraju u njega i sistem počinje da čeka siguran trenutak za prebacivanje.

Kako AWS priprema svoje elastične usluge. Skaliranje servera i baze podataka

Obično trenutak za prebacivanje dođe prilično brzo. Tada se prekida komunikacija između proxyja i starog glavnog čvora, sve sesije se prebacuju na novi čvor.

Kako AWS priprema svoje elastične usluge. Skaliranje servera i baze podataka

Rad sa bazom podataka se nastavlja.

Kako AWS priprema svoje elastične usluge. Skaliranje servera i baze podataka

Grafikon pokazuje da je suspenzija zaista vrlo kratka. Plavi grafikon prikazuje opterećenje, a crveni koraci pokazuju momente skaliranja. Kratkoročni padovi na plavom grafikonu su upravo to kratko kaÅ”njenje.

Kako AWS priprema svoje elastične usluge. Skaliranje servera i baze podataka

Inače, Amazon Aurora vam omogućava da potpuno uÅ”tedite novac i isključite bazu podataka kada nije u upotrebi, na primjer, vikendom. Nakon zaustavljanja opterećenja, DB postupno smanjuje svoju snagu i gasi se neko vrijeme. Kada se opterećenje vrati, ponovo će lagano rasti.

U sljedećem dijelu priče o Amazon uređaju govorit ćemo o skaliranju mreže. Pretplatite se mail i ostanite sa nama kako ne biste propustili članak.

U HighLoad++ Vasilij Pantjuhin će dati izvjeÅ”taj ā€œHjuston, imamo problem. Dizajn sistema za kvar, razvojni obrasci za interne Amazon cloud usluge" Koje Å”ablone dizajna za distribuirane sisteme koriste Amazon programeri, koji su razlozi otkazivanja servisa, Å”ta je Cell-based arhitektura, Konstantni rad, Shuffle Sharding - biće zanimljivo. Manje od mjesec dana do konferencije - rezerviÅ”ite svoje karte. Konačno poskupljenje 24. oktobra.

izvor: www.habr.com

Kupite pouzdan hosting za sajtove sa DDoS zaÅ”titom, VPS VDS servere šŸ”„ Kupite pouzdan web hosting sa DDoS zaÅ”titom, VPS VDS servere | ProHoster