Ako Yandex.Cloud funguje s Virtual Private Cloud a ako nám naši používatelia pomáhajú implementovať užitočné funkcie

Dobrý deň, volám sa Kostya Kramlich, som vedúci vývojár divízie Virtual Private Cloud v Yandex.Cloud. Pracujem na virtuálnej sieti a, ako už asi tušíte, v tomto článku budem hovoriť o zariadení Virtual Private Cloud (VPC) všeobecne a konkrétne o virtuálnej sieti. A tiež zistíte, prečo si my, vývojári služieb, ceníme spätnú väzbu od našich používateľov. Ale prvé veci.

Ako Yandex.Cloud funguje s Virtual Private Cloud a ako nám naši používatelia pomáhajú implementovať užitočné funkcie

čo je VPC?

V súčasnosti existujú rôzne možnosti nasadenia služieb. Som si istý, že niekto stále drží server pod stolom správcu, aj keď dúfam, že takéto príbehy sú čoraz menej bežné.

Teraz sa služby snažia presunúť do verejných cloudov a tu sa stretávajú s VPC. VPC je súčasťou verejného cloudu, ktorý spája používateľov, infraštruktúru, platformu a ďalšie kapacity, nech sú kdekoľvek, v našom cloude alebo mimo neho. VPC vám zároveň umožňuje vyhnúť sa zbytočnému vystavovaniu týchto kapacít internetu, zostávajú vo vašej izolovanej sieti.

Ako vyzerá virtuálna sieť zvonku

Ako Yandex.Cloud funguje s Virtual Private Cloud a ako nám naši používatelia pomáhajú implementovať užitočné funkcie

Pod VPC máme na mysli v prvom rade prekryvnú sieť a sieťové služby, ako sú VPNaaS, NATaas, LBaas atď. A to všetko funguje na sieťovej infraštruktúre odolnej voči chybám, o ktorej už bola reč. skvelý článok tu na Habré.

Pozrime sa bližšie na virtuálnu sieť a jej štruktúru.

Ako Yandex.Cloud funguje s Virtual Private Cloud a ako nám naši používatelia pomáhajú implementovať užitočné funkcie

Pozrime sa na dve zóny dostupnosti. Poskytujeme virtuálnu sieť - to, čo sme nazvali VPC. V skutočnosti definuje priestor jedinečnosti vašich „sivých“ adries. V rámci každej virtuálnej siete máte plnú kontrolu nad priestorom adries, ktoré môžete priradiť výpočtovým prostriedkom.

Sieť je globálna. Zároveň sa premieta do každej zóny dostupnosti vo forme entity s názvom Subnet. Pre každú podsieť priradíte CIDR s veľkosťou 16 alebo menšou. Každá zóna dostupnosti môže mať viac ako jednu entitu a medzi nimi je vždy transparentné smerovanie. To znamená, že všetky vaše zdroje v rámci toho istého VPC môžu medzi sebou „hovoriť“, aj keď sú v rôznych zónach dostupnosti. „Komunikujte“ bez prístupu na internet prostredníctvom našich interných kanálov, „mysliac si“, že sú v rámci rovnakej súkromnej siete.

Vyššie uvedený diagram ukazuje typickú situáciu: dva VPC, ktoré sa niekde pretínajú vo svojich adresách. Obe môžu byť vaše. Napríklad jeden na vývoj, druhý na testovanie. Jednoducho môžu existovať rôzni používatelia – v tomto prípade na tom nezáleží. A každé VPC má jeden virtuálny stroj.

Ako Yandex.Cloud funguje s Virtual Private Cloud a ako nám naši používatelia pomáhajú implementovať užitočné funkcie

Poďme zhoršiť schému. Jeden virtuálny počítač môžete pripojiť k niekoľkým podsieťam naraz. A nie len tak, ale v rôznych virtuálnych sieťach.

Ako Yandex.Cloud funguje s Virtual Private Cloud a ako nám naši používatelia pomáhajú implementovať užitočné funkcie

Zároveň, ak potrebujete zverejniť stroje na internete, môžete to urobiť prostredníctvom rozhrania API alebo používateľského rozhrania. Aby ste to dosiahli, musíte nakonfigurovať preklad NAT vašej „šedej“ internej adresy na „bielu“ – verejnú adresu. Nemôžete si vybrať „bielu“ adresu, je pridelená náhodne z nášho fondu adries. Akonáhle prestanete používať externú IP, vráti sa do fondu. Platíte len za čas, kedy používate „bielu“ adresu.

Ako Yandex.Cloud funguje s Virtual Private Cloud a ako nám naši používatelia pomáhajú implementovať užitočné funkcie

Je tiež možné poskytnúť stroju prístup na internet pomocou inštancie NAT. Prevádzku môžete smerovať do svojej inštancie prostredníctvom statickej smerovacej tabuľky. Poskytli sme takýto prípad, pretože používatelia ho niekedy potrebujú a vieme o tom. V súlade s tým sa v našom adresári obrázkov nachádza špeciálne nakonfigurovaný obrázok NAT.

Ako Yandex.Cloud funguje s Virtual Private Cloud a ako nám naši používatelia pomáhajú implementovať užitočné funkcie

Ale aj keď existuje hotový obraz NAT, konfigurácia môže byť zložitá. Pochopili sme, že pre niektorých používateľov to nie je najpohodlnejšia možnosť, a tak sme nakoniec umožnili povoliť NAT pre požadovanú podsieť jedným kliknutím. Táto funkcia je stále v uzavretom náhľade, kde sa testuje s pomocou členov komunity.

Ako funguje virtuálna sieť zvnútra

Ako Yandex.Cloud funguje s Virtual Private Cloud a ako nám naši používatelia pomáhajú implementovať užitočné funkcie

Ako používateľ interaguje s virtuálnou sieťou? Sieť vyzerá smerom von pomocou svojho API. Používateľ príde do API a pracuje s cieľovým stavom. Používateľ cez API vidí, ako má byť všetko usporiadané a nakonfigurované, pričom vidí stav, ako sa skutočný stav líši od želaného. Toto je obrázok používateľa. Čo sa deje vo vnútri?

Zaznamenáme požadovaný stav v databáze Yandex a prejdeme na konfiguráciu rôznych častí nášho VPC. Prekryvná sieť v Yandex.Cloud je postavená na základe vybraných komponentov OpenContrail, ktorý sa nedávno nazýval Tungsten Fabric. Sieťové služby sú implementované na jedinej platforme CloudGate. V CloudGate sme tiež použili niekoľko open source komponentov: GoBGP na spracovanie riadiacich informácií, ako aj VPP na implementáciu softvérového smerovača bežiaceho nad DPDK pre dátovú cestu.

Tungsten Fabric komunikuje s CloudGate cez GoBGP. Hovorí, čo sa deje v prekryvnej sieti. CloudGate zas prepája prekryvné siete medzi sebou a s internetom.

Ako Yandex.Cloud funguje s Virtual Private Cloud a ako nám naši používatelia pomáhajú implementovať užitočné funkcie

Teraz sa pozrime na to, ako virtuálna sieť rieši problémy so škálovateľnosťou a dostupnosťou. Zoberme si jednoduchý prípad. Existuje jedna zóna dostupnosti a v nej sú vytvorené dve VPC. Nasadili sme jednu inštanciu Tungsten Fabric a obsahuje niekoľko desiatok tisíc sietí. Siete komunikujú s CloudGate. CloudGate, ako sme už povedali, zabezpečuje ich konektivitu medzi sebou aj s internetom.

Ako Yandex.Cloud funguje s Virtual Private Cloud a ako nám naši používatelia pomáhajú implementovať užitočné funkcie

Povedzme, že je pridaná druhá zóna dostupnosti. Mal by zlyhať úplne nezávisle od prvého. Preto musíme nainštalovať samostatnú inštanciu Tungsten Fabric v druhej zóne dostupnosti. Toto bude samostatný systém, ktorý zvládne prekrytie a vie len málo o prvom systéme. A zdanie, že naša virtuálna sieť je globálna, v skutočnosti vytvára naše VPC API. Toto je jeho úloha.

VPC1 sa mapuje na zónu dostupnosti B, ak má zóna dostupnosti B zdroje, ktoré sa nalepia na VPC1. Ak v zóne dostupnosti B nie sú žiadne zdroje z VPC2, VPC2 v tejto zóne nezhmotníme. Na druhej strane, keďže zdroje z VPC3 existujú iba v zóne B, VPC3 neexistuje v zóne A. Všetko je jednoduché a logické.

Poďme trochu hlbšie a uvidíme, ako konkrétny hostiteľ v Y.Cloud funguje. Hlavná vec, ktorú by som rád poznamenal, je, že všetci hostitelia sú navrhnutí rovnako. Dbáme na to, aby na hardvéri bežalo len nevyhnutné minimum služieb, všetky ostatné na virtuálnych strojoch. Budujeme služby vyššieho rádu založené na službách základnej infraštruktúry a cloud využívame aj na riešenie niektorých inžinierskych problémov, napríklad v rámci nepretržitej integrácie.

Ako Yandex.Cloud funguje s Virtual Private Cloud a ako nám naši používatelia pomáhajú implementovať užitočné funkcie

Ak sa pozrieme na konkrétneho hostiteľa, môžeme vidieť, že v hostiteľskom OS bežia tri komponenty:

  • Compute je časť zodpovedná za distribúciu výpočtových zdrojov na hostiteľovi.
  • VRouter je súčasťou Tungsten Fabric, ktorá organizuje prekrytie, to znamená, že tuneluje pakety cez podložku.
  • VDisk sú časti virtualizácie úložiska.

Okrem toho virtuálne stroje prevádzkujú služby: služby cloudovej infraštruktúry, služby platforiem a zákaznícku kapacitu. Kapacity zákazníkov a služby platformy vždy prechádzajú do prekrytia cez VRouter.

Infraštruktúrne služby sa môžu zapojiť do prekrytia, ale väčšinou chcú pracovať v prekrytí. Do podložky sa lepia pomocou SR-IOV. V skutočnosti sme kartu rozrezali na virtuálne sieťové karty (virtuálne funkcie) a natlačili ich do infraštruktúrnych virtuálnych strojov, aby sme nestratili výkon. Napríklad rovnaký CloudGate je spustený ako jeden z týchto infraštruktúrnych virtuálnych strojov.

Teraz, keď sme opísali globálne úlohy virtuálnej siete a návrh základných komponentov cloudu, pozrime sa na to, ako presne medzi sebou jednotlivé časti virtuálnej siete interagujú.

V našom systéme rozlišujeme tri vrstvy:

  • Konfiguračná rovina – nastavuje cieľový stav systému. To je to, čo používateľ konfiguruje cez API.
  • Riadiaca rovina – poskytuje užívateľom špecifikovanú sémantiku, to znamená, že privádza stav dátovej roviny do stavu, ktorý opísal užívateľ v konfiguračnej rovine.
  • Data Plane – priamo spracováva užívateľské pakety.

Ako Yandex.Cloud funguje s Virtual Private Cloud a ako nám naši používatelia pomáhajú implementovať užitočné funkcie

Ako som povedal vyššie, všetko to začína tým, že používateľ alebo služba internej platformy príde do API a opíše určitý cieľový stav.

Tento stav sa okamžite zapíše do databázy Yandex, vráti ID asynchrónnej operácie cez rozhranie API a spustí naše interné zariadenie na vytvorenie stavu, ktorý používateľ chcel. Konfiguračné úlohy idú do ovládača SDN a povedia Tungsten Fabric, čo je potrebné urobiť v prekrytí. Napríklad rezervujú porty, virtuálne siete a podobne.

Ako Yandex.Cloud funguje s Virtual Private Cloud a ako nám naši používatelia pomáhajú implementovať užitočné funkcie

Konfiguračná rovina vo Tungsten Fabric odovzdá požadovaný stav do riadiacej roviny. Prostredníctvom neho Config Plane komunikuje s hostiteľmi a hovorí im, čo presne na nich bude v blízkej budúcnosti bežať.

Ako Yandex.Cloud funguje s Virtual Private Cloud a ako nám naši používatelia pomáhajú implementovať užitočné funkcie

Teraz sa pozrime, ako systém vyzerá na hostiteľoch. Virtuálny stroj má určitý sieťový adaptér zapojený do VRoutera. VRouter je modul jadra Tungsten Fabric, ktorý sa pozerá na pakety. Ak už existuje tok pre nejaký paket, modul ho spracuje. Ak nie je žiadny tok, modul vykoná takzvaný punting, to znamená, že pošle paket do procesu usermod. Proces analyzuje paket a buď naň sám odpovie, napríklad DHCP a DNS, alebo povie VRouteru, čo s ním má robiť. VRouter potom môže spracovať paket.

Ďalej, prevádzka medzi virtuálnymi strojmi v rámci tej istej virtuálnej siete prebieha transparentne, neposiela sa do CloudGate. Hostitelia, na ktorých sú virtuálne stroje nasadené, spolu komunikujú priamo. Tunelujú dopravu a preposielajú si ju medzi sebou cez podložku.

Ako Yandex.Cloud funguje s Virtual Private Cloud a ako nám naši používatelia pomáhajú implementovať užitočné funkcie

Riadiace lietadlá medzi sebou komunikujú v zónach dostupnosti cez BGP, rovnako ako s iným smerovačom. Tie vám povedia, ktoré stroje sú kde nainštalované, takže virtuálne stroje v jednej zóne môžu priamo komunikovať s inými virtuálnymi strojmi.

Ako Yandex.Cloud funguje s Virtual Private Cloud a ako nám naši používatelia pomáhajú implementovať užitočné funkcie

Control Plane komunikuje aj s CloudGate. Podobne hlási, kde a ktoré virtuálne stroje sú nainštalované, aké sú ich adresy. To vám umožňuje nasmerovať externú prevádzku a prevádzku z balancerov na ne.

Prevádzka, ktorá opúšťa VPC, prichádza do CloudGate v dátovej ceste, kde sa rýchlo prežúva VPP s našimi pluginmi. Potom sa prevádzka prenáša buď do iných VPC, alebo smerom von, do okrajových smerovačov, ktoré sú nakonfigurované prostredníctvom riadiacej roviny samotnej CloudGate.

Plány na najbližšie obdobie

Ak zhrnieme všetko uvedené vyššie do niekoľkých viet, môžeme povedať, že VPC v Yandex.Cloud rieši dva dôležité problémy:

  • Poskytuje izoláciu medzi rôznymi klientmi.
  • Zjednocuje zdroje, infraštruktúru, služby platformy, iné cloudy a lokálne do jednej siete.

A aby ste tieto problémy dobre vyriešili, musíte zabezpečiť škálovateľnosť a odolnosť voči chybám na úrovni internej architektúry, čo robí VPC.

Postupne VPC získava funkcie, implementujeme nové funkcie a snažíme sa niečo vylepšiť z hľadiska pohodlia pre používateľov. Niektoré nápady sú vyjadrené a zahrnuté do zoznamu priorít vďaka členom našej komunity.

Teraz máme približne nasledujúci zoznam plánov na najbližšie obdobie:

  • VPN ako služba.
  • Súkromné ​​inštancie DNS – obrázky na rýchle nastavenie virtuálnych počítačov s predkonfigurovaným serverom DNS.
  • DNS ako služba.
  • Vnútorný vyrovnávač zaťaženia.
  • Pridanie „bielej“ adresy IP bez opätovného vytvorenia virtuálneho počítača.

Na žiadosť používateľov bol do tohto zoznamu zaradený balancer a možnosť prepínania IP adresy pre už vytvorený virtuálny stroj. Úprimne povedané, bez explicitnej spätnej väzby by sme tieto funkcie prevzali o niečo neskôr. A tak už pracujeme na probléme s adresami.

Spočiatku bolo možné „bielu“ IP adresu pridať iba pri vytváraní počítača. Ak to používateľ zabudol urobiť, virtuálny počítač sa musel vytvoriť znova. To isté platí pre odstránenie externej IP v prípade potreby. Čoskoro bude možné zapnúť a vypnúť verejnú IP bez toho, aby ste museli znova vytvoriť počítač.

Pokojne vyjadrite svoje nápady a podporné návrhy ostatných používateľov. Pomôžete nám zlepšiť cloud a rýchlejšie získať dôležité a užitočné funkcie!

Zdroj: hab.com

Pridať komentár