Amazon Web Servicesi vĂ”rgu ulatus ulatub 69 tsooni kogu maailmas 22 regioonis: Ameerika Ăhendriigid, Euroopa, Aasia, Aafrika ja Austraalia. Igas tsoonis asub kuni 8 andmekeskust. Igas andmekeskuses on tuhandeid vĂ”i sadu tuhandeid servereid. SĂŒsteem on ĂŒles ehitatud nii, et arvesse on vĂ”etud kĂ”ik ebatĂ”enĂ€olised katkestamise stsenaariumid. NĂ€iteks on kĂ”ik regioonid teineteisest isoleeritud ning kĂ€ttesaadavuse tsoonid paiknevad mitme kilomeetri kaugusel ĂŒksteisest. Isegi kui kaabel katkeb, suundub sĂŒsteem varuĂŒhendustele ning andmete kadu on minimaalne. Millistel muudel pĂ”himĂ”tetel vĂ”rku on ehitatud ja kuidas see toimib, rÀÀgib Vasili Pantjuhin.

Vassili Pantiuhin hakkas Unix-administraatorina töötama .ru ettevÔtetes, tegeles 6 aastat suurte Sun Microsystem masinatega, 11 aastat propageeris ta andmekeskuste keskset rolli EMC-s. Loomulikult arenes ta vÀlja erasektorisse, seejÀrel liikus avalikku. Praegu, Amazon Web Servicesi arhitektilt, annab ta tehnilisi nÔuandeid, kuidas AWS-is elada ja areneda.
Triloogia eelmisel osal rÀÀkis Vasili fĂŒĂŒsiliste serverite ĂŒlesehitusest ja andmebaasi skaleerimisest. Nitro-kaardid, kohandatud KVM-pĂ”hine hĂŒperviisor, Amazon Aurora andmebaas â kĂ”igest sellest loe artiklis "". Lugege, et sĂŒveneda konteksti, vĂ”i vaata esitlusi.
Selles osas rÀÀgitakse vĂ”rgu skaleerimisest â ĂŒhest kĂ”ige keerulisemast sĂŒsteemist AWS-is. Evolutsioon tasapinnalisest vĂ”rgust Virtual Private Cloud'i ning selle ĂŒlesehitus, siseteenused Blackfoot ja HyperPlane, mĂŒrarikka naabri probleem ning lĂ”pus â vĂ”rgu ulatused, backbone ja fĂŒĂŒsilised kaablid. KĂ”igest sellest alapealkirja all.
Eemaldatud: kÔik, mis allpool, on Vasili isiklik arvamus ja see ei pruugi kattuda Amazon Web Services'i seisukohaga.
VÔrgu skaleerimine
AWS-i pilv kĂ€ivitati 2006. aastal. Selle vĂ”rk oli suhteliselt primitiivne â tasapinnaline struktuur. Erakliendi aadresside ulatus oli kĂ”igi pilve ĂŒĂŒrnike jaoks ĂŒhine. Uue virtuaalse masina kĂ€ivitamisel said te juhuslikult ĂŒhe selle ulatuse IP-aadressi.

Selline lĂ€henemine oli lihtne teostada, kuid piiras oluliselt pilve kasutamist. Eriti oli keeruline arendada hĂŒbriidlahendusi, kus ĂŒhendatakse maapealsed ja AWS-i eravĂ”rgud. Levinud probleem oli IP-aadressi ulatuste kattumine.

Virtual Private Cloud
Pilv on osutunud nĂ”udlikuks. On aeg mĂ”elda skaleeritavusele ja vĂ”imalusele kasutada seda kĂŒmneid miljoneid ĂŒĂŒrnikke. Lame vĂ”rk on saanud peamiseks takistuseks. SeetĂ”ttu mĂ”tleme, kuidas saaksime kasutajaid ĂŒksteisest vĂ”rgu tasandil isoleerida, et nad saaksid iseseisvalt valida IP-aadresse.

Mis tuleb esimesena meelde, kui mĂ”tlete vĂ”rgu isoleerimisele? Loomulikult VLAN ja VRF â virtuaalne marsruutimine ja edastamine.
Kahjuks see ei töötanud. VLAN ID on vaid 12 bitti, mis annab meile kĂ”igest 4096 isoleeritud segmenti. Isegi suurimatel lĂŒlititel 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 ĂŒĂŒrnike jaoks, kellel kĂ”igil peab olema vĂ”imalus kasutada mitmeid alamvĂ”rke.
Lisaks ei saa me endale lubada osta vajalike suurte kastide hulka, nÀiteks Cisco vÔi Juniperi juures. Sellel on kaks pÔhjust: see on uskumatult kallis ja me ei soovi saada sÔltuvaks nende arendus- ja vÀrskenduspoliitikast.
KokkuvĂ”tteks â tuleb keeta oma lahendus.
Aastal 2009 kuulutasime me vĂ€lja VPC â Virtual Private Cloud. Nimi on juurdunud ja nĂŒĂŒd kasutavad seda ka paljud pilveteenuse pakkujad.
VPC â see on virtuaalne vĂ”rk SDN (Tarkvara mÀÀratud vĂ”rk). Otsustasime mitte vĂ€lja mĂ”elda spetsiaalseid protokolle L2 ja L3 tasanditel. VĂ”rk töötab standardse Etherneti ja IP-ga. Masinate liiklus pakitakse meie patenteeritud protokolli ĂŒmbrikku. Sellega mÀÀratakse ID, mis kuulub VPC ĂŒĂŒrnikule.

See kĂ”lab lihtsalt. Kuid probleemide lahendamiseks tuleb lahendada mitmeid tĂ”siseid tehnilisi vĂ€ljakutseid. NĂ€iteks, kus ja kuidas hoida andmeid virtuaalsete MAC/IP-aadresse, VPC ID ja vastavaid fĂŒĂŒsilisi MAC/IP. AWS ulatuses on see tohutu tabel, mis peab töötama minimaalsete viivitustega pĂ€ringute korral. Selle eest vastutab mappauditeenuseid, mis on laiali jaotatud Ă”hukese kihina kogu vĂ”rgus.
Uue pĂ”lvkonna masinates toimub pakettimine Nitro kaartide kaudu riistvaral tasandil. Vanemates instantsides toimub pakettimine ja dekapituleerimine tarkvaraliselt.Â

Vaatame, kuidas see töötab ĂŒldiselt. Alustame L2 tasemelt. Oletame, et meil on virtuaalmasin, mille IP on 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-kaardile. Lihtsuse huvides oletame, et mĂ”lemad virtuaalmasinad asuvad samas "sinises" VPCs.

Kaart asendab allika aadressi oma enda omaga ja edastab ARP-raami maapealse teenuse mapeerimisele.

Mapeerimisteenus tagastab teabe, mida vajatakse fĂŒĂŒsilisel L2 vĂ”rgul andmete edastamiseks.

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

Andmete edastamisel pakime loogilised MAC ja IP VPC-katetesse. Edastame selle kĂ”ik fĂŒĂŒsilisel vĂ”rgul vastava IP Nitro-kaardi allika ja sihtkoha kaudu.

FĂŒĂŒsiline masin, kellele paket on mĂ”eldud, teostab kontrolli. See on vajalik aadresside valeleidmise vĂ€listamiseks. Masin saadab spetsiaalse pĂ€ringu mapeerimisteenusele ja kĂŒsib: "FĂŒĂŒsiliselt masinast 192.168.0.3 sain paketi, mis on mĂ”eldud 10.0.0.3 sinises VPCs. Kas see on legitiimne?"Â

Mapeerimisteenus kontrollib oma ressursside asukoha tabelit ja kas lubab vÔi keelab paketi edasiviimise. KÔikides uutes instantsides on Nitro-kaartidesse sisse ehitatud tÀiendav valideerimine. Selle tÔkestamine ei ole isegi teoreetiliselt vÔimalik. Seega spoofing teistesse VPC-desse ei toimi.

SeejĂ€rel saadetakse andmed virtuaalmasinale, kellele need on mĂ”eldud.Â

Mapeerimisteenus töötab ka loogilise marsruuterina andmete edastamiseks erinevates alvÔrkudes paiknevate virtuaalmasinate vahel. Seal on kontseptsiooniliselt kÔik lihtne, ma ei hakka seda detailselt kÀsitlema.

Tuleb vÀlja, et igal paketi edastamisel pöördub server maapeerse teenuse mapeerimise poole. Kuidas tulla toime vÀltimatute viivitustega? VahemÀlu loomisega, loomulikult.
KĂ”ige parem on see, et ei ole vaja vahemĂ€llu salvestada tervet tohutut tabelit. FĂŒĂŒsilisel serveril asuvad virtuaalmasinad suhteliselt vĂ€heste VPC-de seas. VahemĂ€llu tuleb salvestada teave ainult nende VPC-de kohta. Andmete edastamine teistesse VPC-desse "vaikimisi" konfiguratsioonis ei ole ikkagi legitiimne. Kui kasutatakse sellist funktsionaalsust nagu VPC-leading, siis laaditakse vahemĂ€llu tĂ€iendavalt vastava VPC teave.Â

Andmete edastamises VPC-s saime selgeks.
Blackfoot
Kuidas toimida olukordades, kui liiklust tuleb edastada vĂ€ljapoole, nĂ€iteks Internetti vĂ”i VPN kaudu maapinnale? Siin aitab meid Blackfoot â sisemine AWS teenus. See on vĂ€lja töötatud meie LĂ”una-Aafrika meeskonna poolt. SeetĂ”ttu on teenus nimetatud LĂ”una-Aafrikas elava pingviini jĂ€rgi.

Blackfoot dekapsuleerib liiklust ja teeb sellega, mida on vaja. Andmed saadetakse Internetti sellisena, nagu nad on.

Andmed dekapsuleeritakse ja pakendatakse uuesti IPsec-katte alla, kui kasutatakse VPN-i.

Direct Connecti kasutamisel liigitatakse liiklus ja edastatakse vastavasse VLAN-i.

HyperPlane
See on sisemine voo juhendamise teenus. Paljud vĂ”rguteenused nĂ”uavad voo juhtimist andmevoo seisundi. NĂ€iteks NAT-i kasutamisel peab voo juhtimine tagama, et iga «IP: sihtport» paar vastab unikaalsele vĂ€ljaminevale pordile. Koormuse tasakaalu puhul NLB â VĂ”rgu Koormuse Tasakaalustaja, peab andmevoog alati olema suunatud ĂŒhte ja samasse sihtvirtualmasinasse. TurvarĂŒhmad on olekuga tulemĂŒĂŒr. See jĂ€lgib sissetulevat liiklust ja avab automaatselt pordid vĂ€ljamineva andmevoo jaoks.

AWS pilves on edastuslatentsusohtlikud nÔuded ÀÀrmiselt kÔrged. SeetÔttu HyperPlane on kriitiline kogu vÔrgu töökindluse jaoks.

Hyperplane on ĂŒles ehitatud EC2 virtuaalmasinatele. Siin pole mingit maagiat, vaid ainult trikk. Trikk seisneb selles, et need on virtuaalmasinad suure RAM-i mahuga. Tehingud on ja need toimuvad eranditult mĂ€lus. See vĂ”imaldab saavutada viivitusi vaid kĂŒmnendik mikrosekundeid. Töö kettaga hĂ€vitaks kogu jĂ”udluse.Â
Hyperplane on jagatud sĂŒsteem, mis koosneb tohutust arvust sellistest EC2 masinatest. Igal virtuaalmasinal on lĂ€bilaskevĂ”ime 5 GB/s. Terve piirkonna vĂ”rgu perspektiivis annab see massiivse terabitti lĂ€bilaskevĂ”ime ja vĂ”imaldab töödelda miljoneid ĂŒhendusi sekundis.
HyperPlane töötab ainult andmevoogudega. VPC pakettide kapseldamine on selle jaoks tÀiesti lÀbipaistev. Selle sisemise teenuse potentsiaalne haavatavus ei vÔimalda siiski VPC-isolatsiooni lÀbida. Turvalisuse eest vastutavad madalamad tasemed.
HĂ€iritud naaber
On veel probleem hĂ€iriva naabri â hĂ€iriv naaber. Oletame, et meil on 8 nodi. Need noded töötlevad kĂ”ikide pilvekasutajate vooge. Tundub, et kĂ”ik on hĂ€sti ja koormus peaks olema ĂŒhtlaselt jaotatud kĂ”igi nodide vahel. Nodid on vĂ€ga vĂ”imsad ja neid on raske ĂŒletĂ€ita.
Kuid me ehitame oma arhidektuuri isegi vĂ€hetĂ”enĂ€olistest stsenaariumidest lĂ€htuvalt.Â
Madala tÔenÀosus ei tÀhenda vÔimatust.
Saame ette kujutada olukorda, kus ĂŒks vĂ”i mitu kasutajat genereerivad liiga suurt koormust. KĂ”ik HyperPlane nodid on seotud selle koormuse töötlemisse ja teised kasutajad vĂ”ivad kogeda mingisugust jĂ”udluse langust. See rikub pilve kontseptsiooni, kus ĂŒĂŒrnikud ei saa teineteisele mĂ”ju avaldada.

Kuidas lahendada lĂ€rmakate naabrite probleem? Esimene asi, mis pĂ€he tuleb - shardimine. Meie 8 nodi jagunevad loogiliselt 4 shardiks, igas 2 nodi. NĂŒĂŒd segab lĂ€rmakas naaber vaid neljandikku kĂ”ikidest kasutajatest, kuid selle mĂ”ju on siiski tugev.

Teeme teistmoodi. IgaĂŒhele kasutajale eraldame vaid 3 nodi.Â

Nipin on mÀÀrata nodid erinevatele kasutajatele juhuslikult. Alloleval pildil on sinine kasutaja ĂŒhenduses ĂŒhe teise kasutajaga - rohelise ja oranĆŸiga.

8 nodi ja 3 kasutaja korral on lĂ€rmakate naabrite tĂ”enĂ€osus teiste kasutajatega seonduda 54%. Just selle tĂ”enĂ€osusega mĂ”jutab sinine kasutaja teisi ĂŒĂŒrnikke. Samuti ainult osa oma koormusest. Meie nĂ€ites on see mĂ”ju mĂ€rgatav vaid kolmandikule kĂ”ikidest kasutajatest. See on juba hea tulemus.
Kasutajate arv, kes ristuvad
TÔenÀosus protsentides
0
18%
1
54%
2
26%
3
2%
LĂ€heneme olukorrale reaalsetele tingimustele - vĂ”tame 100 nodi ja 5 kasutajat 5 nodit. Sellisel juhul ei ĂŒhildu ĂŒkski nod 77% tĂ”enĂ€osusega.Â
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, kus on tohutult palju HyperPlane nodi ja kasutajaid, on lĂ€rmakate naabrite potentsiaalne mĂ”ju teistele kasutajatele minimaalne. Seda meetodit nimetatakse shuffle sharding â . See minimeerib negatiivseid mĂ”jusid nodide rikete korral.HyperPlane'i baasil on ehitatud palju teenuseid: Network Load Balancer, NAT Gateway, Amazon EFS, AWS PrivateLink, AWS Transit Gateway.
VÔrgumahud
VÔrgu ulatus
NĂŒĂŒd rÀÀgime vĂ”rgu ulatusest. Oktoobris 2019 pakub AWS oma teenuseid 22 piirkonnas, ning plaanis on veel 9.
- Iga piirkond sisaldab mitmeid kĂ€tte saadavuse tsoone â Availability Zone. Kokku on neid maailmas 69.
- Iga AZ koosneb Andmekeskustest. Kokku on neid kuni 8.
- Andmekeskustes asub suur hulk servereid, mÔnedes kuni 300 000.
NĂŒĂŒd koondame need keskmised numbrid, korrutame ja saame muljetavaldava arvu, mis nĂ€itab Amazonase pilve ulatust.
KĂ€tte saadavuse tsoonide ja Andmekeskuste vahel on paigaldatud palju optilisi kanaleid. Ăhes meie suurimas piirkonnas on AZ-devaheliseks ja teiste piirkondade seotud keskuste (Transit Centers) ĂŒhendamiseks paigaldatud 388 kanalit. Kokku annab see uskumatud 5000 Tbit.

AWS selgroog on ehitatud spetsiaalselt pilve jaoks ja optimeeritud selle töötamiseks. Me ehitame seda kanaleid pidi 100 Gbps. Me kontrollime neid tÀielikult, vÀlja arvatud Hiina piirkondades. Traffik ei jagune teiste ettevÔtete koormustega.

Muidugi, me ei ole ainus pilveteenuse pakkuja, kellel on privaatne selgroo vĂ”rgu. Ăha rohkem suuri ettevĂ”tteid jĂ€rgib seda rada. Seda kinnitavad sĂ”ltumatud uurijad, nĂ€iteks ettevĂ”ttest .

Graafikult on nÀha, et sisuteenuse ja pilveteenuse pakkujate osakaal kasvab. SeetÔttu pidevalt vÀhendab selgroo teenuse pakkujate osakaal Interneti-traffikus.
Selgitan, miks see nii on. Varem olid enamik veebiteenuseid kergesti kĂ€tte saadavad ja neid tarbiti otse Internetist. NĂŒĂŒd asub ĂŒha rohkem servereid pilves ja need on kergesti ligipÀÀsetavad lĂ€bi CDN â Content Distribution Network. Ressursile pÀÀsemiseks jĂ”uab kasutaja Internetisse ainult lĂ€hima CDN PoP -ni â Point of Presence. Enamasti asub see kuskil lĂ€hedal. Edasi vĂ€ljub see avalikust Internetist ja reisib privaatse selgroo kaudu nĂ€iteks lĂ€bi Atlandi, jĂ”udes otse ressursile.
Huvitav, kuidas muutub Internet 10 aasta pÀrast, kui see trend jÀtkub?
FĂŒĂŒsilised kanalid
Teadlased ei ole veel leidnud, kuidas valguse kiirus Universumis suurendada, kuid nad on teinud suuri edusamme selle edastamise meetodites kiudoptilistes kaablites. Praegu kasutame kaableid, millel on 6912 kiudu. See aitab oluliselt optimeerida nende paigaldamise kulu.
MĂ”nes piirkonnas peame kasutama spetsiaalseid kaableid. NĂ€iteks Sydney piirkonnas kasutame kaableid, millel on spetsiaalne kate_termite vastu.Â

Kehast ei ole keegi kaitstud ja mĂ”nikord meie kanalid purunevad. Paremal pildil on optilised kaablid ĂŒhes Ameerika piirkonnas, mida ehitajad lĂ”hkusid. Ănnetuse tulemusena kadus kokku vaid 13 paketti andmeid, mis on ĂŒllatav. Kordame â kokku vaid 13! SĂŒsteem lĂŒlitus sĂ”na otsese mĂ”ttes koheselt varukanalitele â skaala töötab.
Me jalutasime kiiresti lĂ€bi mĂ”nede Amazon Cloud'i teenuste ja tehnoloogiate. Loodan, et teil on tekkinud vĂ€hemalt mingisugune ettekujutus ĂŒlesannetest, millega meie insenerid peavad tegelema. Isiklikult on see mind vĂ€ga paelunud.Â
See on Vasily Pantyukhini teose AWS trilogia viimane osa. Osas on kirjeldatud serverite optimeerimist ja andmebaasi skaleerimist, aga serverless-funktsioone ja Firecrackerit.
Pealehe Novembris jagab Vasily Pantyukhin uusi detaile Amazon'i seadmete kohta. Ta rÀÀgib tĂ”rgete pĂ”hjustest ja jaotatud sĂŒsteemide projekteerimisest Amazonis. 24. oktoobril on veel vĂ”imalik osta pilet hea hinnaga, maksa hiljem. Ootame teid HighLoad++-le, tulge â rÀÀgime!
Allikas: habr.com
