Kuidas AWS oma elastseid teenuseid „keedab”. VĂ”rgustiku skaleerimine

Amazon Web Services'i vĂ”rgustiku ulatus on 69 tsooni 22 piirkonnas ĂŒle kogu maailma: Ameerikas, Euroopas, Aasias, Aafrikas ja Austraalias. Igas tsoonis asub kuni 8 andmekeskust. Igas andmekeskuses on tuhandeid vĂ”i kĂŒmneid tuhandeid servereid. VĂ”rk on ĂŒles ehitatud nii, et kĂ”ik ebatĂ”enĂ€olised katkestused on ette nĂ€htud. NĂ€iteks on kĂ”ik piirkonnad ĂŒksteisest isoleeritud ning ligipÀÀsus tsoonid on paigutatud kilomeetrite kaugusele. Ieven kui kaabel katkeb, lĂ€heb sĂŒsteem varukanalitele ning info kaotus on vaid mĂ”ne andmepaketi jagu. Lisainfot sellest, millistel pĂ”himĂ”tetel vĂ”rk pĂ”hineb ja kuidas see on ĂŒles ehitatud, rÀÀgib Vasili Pantjuhin.

Kuidas AWS oma elastseid teenuseid „keedab”. VĂ”rgustiku skaleerimine

Vasili Pantjuhin algas Unix-administraatorina .ru ettevÔtetes, 6 aastat töötas suurte rauatootjate Sun Microsystems juures, 11 aastat levitas andmekeskuse keskset mÔtteviisi EMC-s. Loomulikult on ta evolutsioneerunud privaatsetesse pilvedesse ja seejÀrel suundunud avalikesse. TÀna, olles Amazon Web Services'i arhitekt, aitab ta tehniliste nÔuannetega ellu jÀÀda ja areneda AWS pilves.

Triloogia e AWS, Vasilii sĂŒvenes fĂŒĂŒsiliste serverite ja andmebaasi skaleerimise toimimisse. Nitro-kaardid, KVM-pĂ”hine kohandatud hĂŒperviisor, Amazon Aurora andmebaas — kĂ”igest sellest artiklis "Kuidas AWS oma elastseid teenuseid "keedab". Serverite ja andmebaaside skaleerimine". Loe, et konteksti sĂŒveneda, vĂ”i vaata videoklipp ettekandeid.

Selles osas rÀÀgitakse vĂ”rgu skaleerimisest — ĂŒhest kĂ”ige keerulisemast sĂŒsteemist AWS-is. Areng lapikust vĂ”rgust Virtuaalsesse ErakliendivĂ”rku, selle struktuur, siseteenused Blackfoot ja HyperPlane, mĂŒra probleemi, ning lĂ”puks — vĂ”rgu ulatus, selgroog ja fĂŒĂŒsilised kaablid. KĂ”igest sellest allpool.

Distsipliin: kĂ”ik, mis allpool on — Vasilii isiklik arvamus ja see ei pruugi kajastada Amazon Web Services'i seisukohti.

VÔrgu skaleerimine

AWS pilv kĂ€ivitati 2006. aastal. Selle vĂ”rk oli piisavalt primitiivne — lapiku struktuuriga. Privaatsete aadresside vahemik oli kĂ”igi pilveĂŒĂŒrnike jaoks ĂŒhine. Uue virtuaalse masina kĂ€ivitamisel said sa juhuslikult saadaval oleva IP-aadressi sellest vahemikust.

Kuidas AWS oma elastseid teenuseid „keedab”. VĂ”rgustiku skaleerimine

See lĂ€henemine oli lihtne teostada, kuid pĂ”himĂ”tteliselt piiras pilve kasutamist. EelkĂ”ige oli ÀÀrmiselt keeruline arendada hĂŒbriidlahendusi, kus liideti maapealsed ja AWS-i eravĂ”rgud. Levinum probleem oli IP-aadresside vahemike kattumine.

Kuidas AWS oma elastseid teenuseid „keedab”. VĂ”rgustiku skaleerimine

Virtuaalne PrivaatsusvÀli

Pilv osutus nĂ”utud. On aeg mĂ”elda skaleeritavusele ja vĂ”imalusele seda kasutada kĂŒmnete miljonite ĂŒĂŒrnike poolt. Lame vĂ”rk oli peamine takistus. SeetĂ”ttu mĂ”tlesime, kuidas isoleerida kasutajaid ĂŒksteisest vĂ”rgu tasandil, et nad saaksid iseseisvalt valida IP-vahemikke.

Kuidas AWS oma elastseid teenuseid „keedab”. VĂ”rgustiku skaleerimine

Mis esimene mĂ”te tuleb pĂ€he, kui mĂ”tlete vĂ”rgu isoleerimisele? Loomulikult VLAN ja VRF — Virtuaalne Suunamine ja Edastamine.

Kahjuks see ei Ă”nnestunud. VLAN ID on vaid 12 bittine, mis annab meile ainult 4096 isoleeritud segmenti. Isegi suurimates lĂŒlitites saab kasutada maksimaalselt 1-2 tuhat VRF-i. VRF-i ja VLAN-i jagamine annab meile vaid mĂ”ned miljonid alamvĂ”rgud. Seda on kindlasti liiga vĂ€he kĂŒmnete miljonite tenantide jaoks, kellel kĂ”igil peab olema vĂ”imalus kasutada mitmeid alamvĂ”rke.

Me ei saa endale lubada osta vajaliku arvu suuri seadmeid, nĂ€iteks Cisco vĂ”i Juniperilt. Sellel on kaks pĂ”hjust: see on ĂŒlimalt kallis ja me ei taha sattuda sĂ”ltuvusse nende arendus- ja patchimisprotsessidest.

KokkuvĂ”te on – kĂŒpsetada omaenda lahendus.

2009. aastal kuulutasime vĂ€lja VPC. — Virtuaalne PrivaatsusvĂ€li. Nimi on juurdunud ja nĂŒĂŒd kasutavad seda ka paljud pilveteenuse pakkujad.

VPC – see on virtuaalne vĂ”rk SDN (Software Defined Network). Otsustasime, et ei hakka leiutama spetsiaalseid protokolle L2 ja L3 tasanditel. VĂ”rk töötab standardse Etherneti ja IP pĂ”hjal. Andmete edastamiseks virtuaalmasinate vahel kapseldatakse liiklus meie enda protokolli mĂ€hisesse. Selles mÀÀratakse ID, mis kuulub VPC tenantile.

Kuidas AWS oma elastseid teenuseid „keedab”. VĂ”rgustiku skaleerimine

Tundub lihtne. Siiski tuleb lahendada mitmeid tĂ”siseid tehnilisi ĂŒlesandeid. NĂ€iteks, kus ja kuidas salvestada andmed virtuaalsete MAC/IP-aadresse, VPC ID-d ja vastavaid fĂŒĂŒsilisi MAC/IP. AWS-i mastaabis on see hiiglaslik tabel, mis peab töötama minimaalse viivitusega pĂ€ringute korral. Selle eest vastutab mappimise teenus, mis on laiali hajutatud ĂŒle kogu vĂ”rgu.

Uute pÔlvkondade masinates toimub kapseldamine Nitro kaartide kaudu riistvaratasemel. Vanemates instantsides on kapseldamine ja de-kapseldamine tarkvaraline. 

Kuidas AWS oma elastseid teenuseid „keedab”. VĂ”rgustiku skaleerimine

Vaatame ĂŒldiselt, kuidas see töötab. Alustame L2 tasemelt. Oletame, et meil on virtuaalmasin IP-iga 10.0.0.2 fĂŒĂŒsilisel serveril 192.168.0.3. See saadab andmeid virtuaalmasinale 10.0.0.3, mis asub aadressil 192.168.1.4. Koostatakse ARP-pĂ€ring, mis jĂ”uab vĂ”rgu Nitro kaardini. Lihtsuse huvides eeldame, et mĂ”lemad virtuaalmasinad elavad samas "sinises" VPC-s.

Kuidas AWS oma elastseid teenuseid „keedab”. VĂ”rgustiku skaleerimine

Kaart asendab lÀhteaadressi oma enda aadressiga ja edastab ARP-raami mappimise teenusele.

Kuidas AWS oma elastseid teenuseid „keedab”. VĂ”rgustiku skaleerimine

Mappimise teenus tagastab teabe, mis on vajalik fĂŒĂŒsilises L2-vĂ”rgus edastamiseks.

Kuidas AWS oma elastseid teenuseid „keedab”. VĂ”rgustiku skaleerimine

Nitro-kaart ARP-vastuses asendab fĂŒĂŒsilises vĂ”rgus MAC-aadressi VPC-aadressiga.

Kuidas AWS oma elastseid teenuseid „keedab”. VĂ”rgustiku skaleerimine

Andmete edastamisel pakime loogilised MAC ja IP VPC-kattes. KĂ”ik see edastatakse fĂŒĂŒsilises vĂ”rgus vastava IP Nitro-kaardi abil, kus allikas ja sihtkoht.

Kuidas AWS oma elastseid teenuseid „keedab”. VĂ”rgustiku skaleerimine

FĂŒĂŒsiline masin, kellele pakett on mĂ”eldud, teeb kontrolli. See on vajalik, et vĂ€ltida aadresside vale esitamist. Masin saadab spetsiaalse pĂ€ringu kaardistamisteenusele ja kĂŒsib: "FĂŒĂŒsiliselt masinalt 192.168.0.3 sain paketi, mis on mĂ”eldud 10.0.0.3 'sinisesse' VPC-sse. Kas see on legaalne?" 

Kuidas AWS oma elastseid teenuseid „keedab”. VĂ”rgustiku skaleerimine

Kaardistamisteenus kontrollib oma ressursipaigutuse tabelit ja lubab vÔi keelab paketi edastamise. KÔikides uutest instantsidest on tÀiendav valideerimine Nitro-kaartidesse sisse ehitatud. Seda ei ole isegi teoreetiliselt vÔimalik mööda hiilida. SeetÔttu ei toimi teiste VPC-de ressursside vale esitamine.

Kuidas AWS oma elastseid teenuseid „keedab”. VĂ”rgustiku skaleerimine

SeejÀrel saadetakse andmed virtuaalsesse masinasse, kellele need on mÔeldud. 

Kuidas AWS oma elastseid teenuseid „keedab”. VĂ”rgustiku skaleerimine

Kaardistamisteenus toimib ka loogilise ruuterina andmete edastamiseks erinevates alamisvĂ”rkudes asuvate virtuaalmasinate vahel. Seal on kĂ”ik kontseptuaalselt lihtne, ei hakka seda ĂŒksikasjalikult selgitama.

Kuidas AWS oma elastseid teenuseid „keedab”. VĂ”rgustiku skaleerimine

Seega, iga paketi edastamisel pöörduvad serverid kaardistamisteenuse poole. Kuidas leevendada vĂ€ltimatuid viivitusi? KĂŒsimusele aitab vastata vahemĂ€llu salvestamine, loomulikult.

Kogu ilu seisneb selles, et ei ole vaja salvestada kogu tohutut tabelit. FĂŒĂŒsilisel serveril elavad virtuaalsed masinad suhteliselt vĂ€ikse arvu VPC-de seest. VahemĂ€llu tuleb salvestada vaid nende VPC-de info. Andmete edastamine teistesse VPC-desse „vaikimisi” konfiguratsioonis ei ole siiski legit. Kui kasutada sellist funktsionaalsust nagu VPC-peering, lisatakse vahemĂ€llu lisainfos vastavad VPC-d. 

Kuidas AWS oma elastseid teenuseid „keedab”. VĂ”rgustiku skaleerimine

Andmete edastamisega VPC-sse saime hakkama.

Blackfoot

Kuidas olla olukordades, kus tuleb edastada liiklust vĂ€ljaspoole, nĂ€iteks Internetti vĂ”i VPN-i kaudu allapoole? Siin pÀÀstab meid Blackfoot — sisemine AWS-teenus. See on loodud meie LĂ”una-Aafrika meeskonna poolt. SeetĂ”ttu on teenuse nimi pĂŒhendatud pingviinile, kes elab LĂ”una-Aafrikas.

Kuidas AWS oma elastseid teenuseid „keedab”. VĂ”rgustiku skaleerimine

Blackfoot dekapsuleerib liiklust ja teeb sellega, mis on vajalik. Andmed saadetakse Internetti sellisena nagu nad on.

Kuidas AWS oma elastseid teenuseid „keedab”. VĂ”rgustiku skaleerimine

Andmed dekapsuleeritakse ja keeratakse taas IPsec-i ĂŒmbrisesse, kui kasutatakse VPN-i.

Kuidas AWS oma elastseid teenuseid „keedab”. VĂ”rgustiku skaleerimine

Direct Connecti kasutamisel mÀrgistatakse ja edastatakse liiklus vastavasse VLAN-i.

Kuidas AWS oma elastseid teenuseid „keedab”. VĂ”rgustiku skaleerimine

HyperPlane

See on sisevoogude jĂ€lgimise teenus. Paljud vĂ”rguteenused nĂ”uavad voogude kontrollimist andmete voogude olek. NĂ€iteks NAT-i kasutamisel peab voogude juhtimine tagama, et igale "IP: sihtport" paarile vastab ainulaadne vĂ€ljuv port. Koos tasakaalustajaga NLB — VĂ”rgutasakaalu tasandaja, peab andmevoog alati suunama samasse sihtvirtuaalmasinasse. Turvagrupp on olekusĂ€ilitav tulemĂŒĂŒr. See jĂ€lgib sissetulevat liiklust ja avab vaikimisi sadamad vĂ€ljuvatele pakettidele.

Kuidas AWS oma elastseid teenuseid „keedab”. VĂ”rgustiku skaleerimine

AWS-s on edastusviivituse nÔudmised ÀÀrmiselt kÔrged. SeetÔttu HyperPlane on see kogu vÔrgu toimimise jaoks kriitiline.

Kuidas AWS oma elastseid teenuseid „keedab”. VĂ”rgustiku skaleerimine

Hyperplane on ĂŒles ehitatud EC2 virtuaalmasinatele. Siin pole mingit imet, vaid vaid petmine. Petmine seisneb selles, et need on virtuaalmasinad suure mĂ€lu mahuga. Tehingud viiakse lĂ€bi eranditult mĂ€lus. See vĂ”imaldab saavutada viivitusi vaid kĂŒmnete mikrosekunditega. Töö ketas oleks tapnud kogu jĂ”udluse. 

Hyperplane on hajutatud sĂŒsteem, mis koosneb suurest hulgast EC2-masinatest. Igal virtuaalmasinal on lĂ€bilaskevĂ”ime 5 GB/s. Kogu piirkondliku vĂ”rgu ulatuses annab see metsiku terabittide lĂ€bilaskevĂ”ime ja vĂ”imaldab töötleda miljoneid ĂŒhendusi sekundis.

HyperPlane töötab ainult voogude pÔhjal. VPC pakettide inkapsuleerimine on selle jaoks tÀiesti lÀbipaistev. Potentsiaalne haavatavus selles siseteenuses ei vÔimalda ikkagi VPC isolatsiooni murda. Turvalisuse tagavad madalamad tasemed.

Noisy neighbor

On veel ĂŒks probleem mĂŒrarikka naabri — noisy neighbor. Ütleme, et meil on 8 sĂ”lme. Need sĂ”lmed töötlevad kĂ”igi pilv kasutajate vooge. Tundub, et kĂ”ik on korras ja koormus peaks olema ĂŒhtlaselt jaotatud kĂ”ikidele sĂ”lmedele. SĂ”lmed on vĂ€ga vĂ”imsad ja neid on keeruline ĂŒle koormata.

Aga me ehitame oma arhitektuuri isegi vÀhem tÔenÀoliste stsenaariumide pÔhjal. 

Madala tÔenÀosuse ei tÀhenda, et see oleks vÔimatu.

Me vĂ”ime ette kujutada olukorda, kus ĂŒks vĂ”i mitu kasutajat genereerivad liiga suurt koormust. Selle koormuse töötlemises on kaasatud kĂ”ik HyperPlane'i sĂ”lmed ja teised kasutajad vĂ”ivad potentsiaalselt tunda mingit jĂ”udluse langust. See rikub pilve kontseptsiooni, kus tenantidel ei ole vĂ”imalik ĂŒksteisele mĂ”ju avaldada.

Kuidas AWS oma elastseid teenuseid „keedab”. VĂ”rgustiku skaleerimine

Kuidas lahendada mĂŒra tegeva naabri probleem? Esimene asi, mis pĂ€he tuleb – shardimine. Meie 8 sĂ”lme jagunevad loogiliselt 4 shardiks, igas 2 sĂ”lmega. NĂŒĂŒd hĂ€irib mĂŒra tegeva naabri tegevus vaid neljandikku kĂ”igist kasutajatest, kuid siiski oluliselt.

Kuidas AWS oma elastseid teenuseid „keedab”. VĂ”rgustiku skaleerimine

Teeme teisiti. IgaĂŒhele jagame vaid 3 sĂ”lme. 

Kuidas AWS oma elastseid teenuseid „keedab”. VĂ”rgustiku skaleerimine

Nipp on mÀÀrata erinevate kasutajate sĂ”lmed juhuslikult. Alloleval pildil ristuvad sinise kasutaja sĂ”lmed ĂŒhe kahel teisel kasutajal – rohelisel ja oranĆŸil.

Kuidas AWS oma elastseid teenuseid „keedab”. VĂ”rgustiku skaleerimine

8 sĂ”lme ja 3 kasutajaga on mĂŒrarikka naaberi sissetungi tĂ”enĂ€osus ĂŒhe kasutaja osas 54%. Just sellise tĂ”enĂ€osusega avaldab sinine kasutaja mĂ”ju teistele ĂŒĂŒrnikele. Samas on see mĂ”ju mĂ€rgatav vaid kolmandikule kĂ”ikidest kasutajatest. See on juba korralik tulemus.

Kasutajate arv, kes ristuvad

TÔenÀosus protsentides

0

18%

1

54%

2

26%

3

2%

LĂ€hendame olukorda reaalsusele — vĂ”tame 100 sĂ”lme ja 5 kasutajat 5 sĂ”lmes. Sellisel juhul ei ristu ĂŒkski sĂ”lm tĂ”enĂ€osusega 77%. 

Kasutajate arv, kes ristuvad

TÔenÀosus protsentides

0

77%

1

21%

2

1,8%

3

0,06%

4

0,0006%

5

0,00000013%

Reaalses olukorras, kui HyperPlane sĂ”lmi ja kasutajaid on suur hulk, on mĂŒrarikka naabri mĂ”ju teistele kasutajatele minimaalne. Seda meetodit nimetatakse segavaks shardinguks — shuffle sharding. See minimeerib sĂ”lmede rikke negatiivset mĂ”ju.

HyperPlane'i pÔhjal on loodud palju teenuseid: Network Load Balancer, NAT Gateway, Amazon EFS, AWS PrivateLink, AWS Transit Gateway.

VÔrgu ulatused

NĂŒĂŒd rÀÀgime vĂ”rgu ulatusest. Oktoobris 2019 pakub AWS oma teenuseid 22 piirkonnas, lisaks on plaanis veel 9.

  • Igas regioonis on mitu kĂ€ttesaadavuse ala – Availability Zone. Kokku on neid maailmas 69.
  • Iga AZ koosneb Andmetöötluskeskustest. Kokku ei ole neid rohkem kui 8.
  • Andmetöötluskeskustes asub tohutult servereid, mĂ”nes kuni 300 000.

NĂŒĂŒd keskmistame, korrutame ja saame muljetavaldava numbri, mis kajastab Amazonase pilve ulatust.

KĂ€ttesaadavuse alade ja Andmetöötluskeskuste vahel on palju optilisi kanaleid. Ühes meie suurimas regioonis on ainult AZ-de vaheline ja teiste piirkondade ĂŒhenduspunktidega (Transit Centers) ĂŒhendamiseks rajatud 388 kanalit. Kokku annab see meeletu 5000 Tbitt.

Kuidas AWS oma elastseid teenuseid „keedab”. VĂ”rgustiku skaleerimine

AWS selgroog on ehitatud spetsiaalselt pilve jaoks ja optimeeritud selle tegevuseks. Me rajame seda kanalites 100 Gbit/s. Me kontrollime neid tÀielikult, vÀlja arvatud Hiina piirkondades. Liiklust ei jagata teiste ettevÔtete koormustega.

Kuidas AWS oma elastseid teenuseid „keedab”. VĂ”rgustiku skaleerimine

Muidugi, me ei ole ainus pilveteenuse pakkuja, kellel on privaatne selgroog. Üha rohkem suuri ettevĂ”tteid jĂ€rgib sama teed. Seda kinnitavad sĂ”ltumatud teadlased, nĂ€iteks Telegeography.

Kuidas AWS oma elastseid teenuseid „keedab”. VĂ”rgustiku skaleerimine

Graafikult on nÀha, et sisuteenuse ja pilveteenuse pakkujate osakaal kasvab. Selle tÔttu vÀhenevad backbone-pakkujate Interneti-trafiku osakaal pidevalt.

Selgitan, miks see nii on. Varem olid enamus veebiteenuseid otseselt juurdepÀÀsetavad ja tarbitavad Internetist. NĂŒĂŒd asub ĂŒha enam servereid pilves ja on kĂ€ttesaadavad lĂ€bi CDN — Content Distribution Network. Kasutaja pÀÀseb ressursile ligi lĂ€bi Interneti vaid lĂ€hima CDN PoP-i — Point of Presence. Enamasti on see kuskil lĂ€hedal. Edasi lahkub ta avalikust Internetist ja liikudes privaatse backbone'i kaudu, nĂ€iteks Atlantika kohal, jĂ”uab ta otse ressursini.

Huvitav, kuidas Internet 10 aasta pÀrast vÀlja nÀeb, kui see suundumus jÀtkub?

FĂŒĂŒsilised kanalid

Teadlased ei ole veel mÔelnud, kuidas valguse kiirus universumis suurendada, kuid nad on palju edusamme teinud selle edastamise meetodite osas lÀbi optiliste kiudude. Praegu kasutame kaableid, millel on 6912 kiudu. See aitab oluliselt optimeerida nende paigaldamise maksumust.

MÔnes piirkonnas peame kasutama spetsiaalseid kaableid. NÀiteks Sydney piirkonnas kasutame termiitide vastu kaitstud kaableid. 

Kuidas AWS oma elastseid teenuseid „keedab”. VĂ”rgustiku skaleerimine

Keegi ei ole kaitstud probleemide eest ja mĂ”nikord on meie kanalid kahjustatud. Paremal pildil on optilised kaablid ĂŒhes Ameerika piirkonnas, mille lĂ”hkasid ehitajad. Õnnetuse tulemusena kadus ainult 13 andmepaketti, mis on ĂŒllatav. Veel kord – ainult 13! SĂŒsteem lĂŒlitus koheselt varukanalitele – mastaap töötab.

Me jooksime lĂ€bi mĂ”ned Amazon Web Services'i teenused ja tehnoloogiad. Loodan, et teil on nĂŒĂŒd vĂ€hemalt mingisugune arusaam ĂŒlesannete mastaabist, millega meie insenerid peavad tegelema. Isiklikult on see mulle vĂ€ga huvitav. 

See on Vasiliy Pantjuơina triloogia viimane osa AWS-i seadistamisest. esimese osades on kirjeldatud serverite optimeerimist ja andmebaasi skaleerimist, aga teine – serverless-funktsioonid ja Firecracker.

VDS-l on vĂ”imalik installida: HighLoad++ Novembris jagab Vasiliy PantjuĆĄin uusi ĂŒksikasju Amazonist. Ta sellest rÀÀgib tĂ”rgete pĂ”hjustest ja jaotatud sĂŒsteemide projekteerimisest Amazonis. 24. oktoobril on veel vĂ”imalik broneerida pilet soodsa hinnaga, tasuda saab hiljem. Ootame teid HighLoad++ ĂŒritusele, tulge – rÀÀgime!

Allikas: habr.com

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