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

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.

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

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 "Kuidas AWS «keedab» oma elastseid teenuseid. Serverite ja andmebaaside skaleerimine". Lugege, et sĂŒveneda konteksti, vĂ”i vaata videomaterjal 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.

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

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.

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

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.

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

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.

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

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. 

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

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.

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

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

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

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

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

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

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

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.

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

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?" 

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

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.

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

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

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

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.

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

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. 

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

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.

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

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

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

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

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

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

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

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.

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

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

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

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 AWS „keedab” oma elastseid teenuseid. VĂ”rgu skaleerimine

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.

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

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

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

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

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

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.

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

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.

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

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 Telegeography.

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

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. 

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

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. esimene Osas on kirjeldatud serverite optimeerimist ja andmebaasi skaleerimist, aga teises serverless-funktsioone ja Firecrackerit.

Pealehe HighLoad++ Novembris jagab Vasily Pantyukhin uusi detaile Amazon'i seadmete kohta. Ta populaarsetest sihtkohtadest kolimiseks: Uus-Meremaalt kuni KalatĆĄi VĂ”rooblast. rÀÀgib tĂ”rgete pĂ”hjustest ja jaotatud sĂŒsteemide projekteerimisest Amazonis. 24. oktoobril on veel vĂ”imalik osta broneerima pilet hea hinnaga, maksa hiljem. Ootame teid HighLoad++-le, tulge — rÀÀgime!

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