Labdien, mani sauc Kostja KramliÄs, es esmu Yandex.Cloud Virtual Private Cloud nodaļas vadoÅ”ais izstrÄdÄtÄjs. Es strÄdÄju pie virtuÄlÄ tÄ«kla, un, kÄ jÅ«s varÄtu nojaust, Å”ajÄ rakstÄ es runÄÅ”u par virtuÄlÄ privÄtÄ mÄkoÅa (VPC) ierÄ«ci kopumÄ un jo Ä«paÅ”i par virtuÄlo tÄ«klu. Un jÅ«s arÄ« uzzinÄsit, kÄpÄc mÄs, pakalpojumu izstrÄdÄtÄji, augstu vÄrtÄjam lietotÄju atsauksmes. Bet vispirms vispirms.
Kas ir VPC?
MÅ«sdienÄs ir dažÄdas pakalpojumu izvietoÅ”anas iespÄjas. Esmu pÄrliecinÄts, ka kÄds joprojÄm glabÄ serveri zem administratora galda, lai gan ceru, ka Å”Ädi stÄsti paliek arvien retÄk.
Tagad pakalpojumi mÄÄ£ina pÄriet uz publiskajiem mÄkoÅiem, un tieÅ”i Å”eit viÅi saskaras ar VPC. VPC ir daļa no publiskÄ mÄkoÅa, kas savieno lietotÄju, infrastruktÅ«ru, platformu un citas iespÄjas neatkarÄ«gi no tÄ, kur tÄs atrodas, mÅ«su mÄkonÄ« vai Ärpus tÄs. TajÄ paÅ”Ä laikÄ VPC ļauj izvairÄ«ties no Å”o jaudu nevajadzÄ«gas pakļauÅ”anas internetam, tÄs paliek jÅ«su izolÄtajÄ tÄ«klÄ.
KÄ virtuÄlais tÄ«kls izskatÄs no Ärpuses
Ar VPC mÄs domÄjam, pirmkÄrt, pÄrklÄjuma tÄ«klu un tÄ«kla pakalpojumus, piemÄram, VPNaaS, NATaas, LBaas utt. Un tas viss darbojas uz kļūmÄm izturÄ«gas tÄ«kla infrastruktÅ«ras, kas jau tika apspriesta.
ApskatÄ«sim tuvÄk virtuÄlo tÄ«klu un tÄ struktÅ«ru.
ApskatÄ«sim divas pieejamÄ«bas zonas. MÄs nodroÅ”inÄm virtuÄlo tÄ«klu - to, ko mÄs saucÄm par VPC. Faktiski tas nosaka jÅ«su āpelÄkoā adreÅ”u unikalitÄtes telpu. KatrÄ virtuÄlajÄ tÄ«klÄ jums ir pilnÄ«ga kontrole pÄr adreÅ”u vietu, ko varat pieŔķirt skaitļoÅ”anas resursiem.
TÄ«kls ir globÄls. TajÄ paÅ”Ä laikÄ tas tiek projicÄts katrÄ pieejamÄ«bas zonÄ entÄ«tijas veidÄ, ko sauc par apakÅ”tÄ«klu. Katram apakÅ”tÄ«klam jÅ«s pieŔķirat CIDR, kura izmÄrs ir 16 vai mazÄks. Katrai pieejamÄ«bas zonai var bÅ«t vairÄk nekÄ viena Å”Äda entÄ«tija, un starp tÄm vienmÄr ir pÄrredzama marÅ”rutÄÅ”ana. Tas nozÄ«mÄ, ka visi jÅ«su resursi vienÄ VPC var āsarunÄtiesā savÄ starpÄ, pat ja tie atrodas dažÄdÄs pieejamÄ«bas zonÄs. āSazinietiesā bez piekļuves internetam, izmantojot mÅ«su iekÅ”Äjos kanÄlus, ādomÄjotā, ka viÅi atrodas tajÄ paÅ”Ä privÄtajÄ tÄ«klÄ.
AugÅ”ÄjÄ diagramma parÄda tipisku situÄciju: divi VPC, kas krustojas kaut kur savÄs adresÄs. Abi var bÅ«t jÅ«su. PiemÄram, viens izstrÄdei, otrs testÄÅ”anai. VienkÄrÅ”i var bÅ«t dažÄdi lietotÄji ā Å”ajÄ gadÄ«jumÄ tam nav nozÄ«mes. Un katram VPC ir viena virtuÄlÄ maŔīna.
PadarÄ«sim shÄmu sliktÄku. Vienai virtuÄlajai maŔīnai varat izveidot savienojumu ar vairÄkiem apakÅ”tÄ«kliem vienlaikus. Un ne tikai tÄ, bet dažÄdos virtuÄlajos tÄ«klos.
TajÄ paÅ”Ä laikÄ, ja jums ir jÄatklÄj maŔīnas internetÄ, to var izdarÄ«t, izmantojot API vai lietotÄja saskarni. Lai to izdarÄ«tu, jums ir jÄkonfigurÄ savas āpelÄkÄsā iekÅ”ÄjÄs adreses NAT tulkojums ābaltÄā ā publiskÄ adrese. JÅ«s nevarat izvÄlÄties ābaltoā adresi, tÄ tiek pieŔķirta nejauÅ”i no mÅ«su adreÅ”u kopas. TiklÄ«dz jÅ«s pÄrtraucat izmantot ÄrÄjo IP, tas atgriežas pÅ«lÄ. JÅ«s maksÄjat tikai par laiku, kad izmantojat ābaltoā adresi.
Ir iespÄjams arÄ« nodroÅ”inÄt maŔīnai piekļuvi internetam, izmantojot NAT gadÄ«jumu. Varat marÅ”rutÄt trafiku uz savu gadÄ«jumu, izmantojot statisku marÅ”rutÄÅ”anas tabulu. MÄs esam nodroÅ”inÄjuÅ”i Å”Ädu gadÄ«jumu, jo lietotÄjiem tas dažreiz ir vajadzÄ«gs, un mÄs par to zinÄm. AttiecÄ«gi mÅ«su attÄlu direktorijÄ ir Ä«paÅ”i konfigurÄts NAT attÄls.
Bet pat tad, ja ir gatavs NAT attÄls, konfigurÄcija var bÅ«t sarežģīta. MÄs sapratÄm, ka dažiem lietotÄjiem tas nav ÄrtÄkais variants, tÄpÄc galu galÄ mÄs ļÄvÄm ar vienu klikŔķi iespÄjot NAT vÄlamajam apakÅ”tÄ«klam. Å ai funkcijai joprojÄm ir slÄgta priekÅ”skatÄ«juma piekļuve, un tÄ tiek pÄrbaudÄ«ta ar kopienas dalÄ«bnieku palÄ«dzÄ«bu.
KÄ virtuÄlais tÄ«kls darbojas no iekÅ”puses
KÄ lietotÄjs mijiedarbojas ar virtuÄlo tÄ«klu? TÄ«kls izskatÄs uz Äru ar savu API. LietotÄjs nonÄk API un strÄdÄ ar mÄrÄ·a stÄvokli. Caur API lietotÄjs redz, kÄ viss ir jÄsakÄrto un jÄkonfigurÄ, savukÄrt viÅÅ” redz statusu, kÄ faktiskais stÄvoklis atŔķiras no vÄlamÄ. Å is ir lietotÄja attÄls. Kas notiek iekÅ”Ä?
MÄs ierakstÄm vÄlamo stÄvokli Yandex datu bÄzÄ un ejam, lai konfigurÄtu dažÄdas mÅ«su VPC daļas. PÄrklÄjuma tÄ«kls pakalpojumÄ Yandex.Cloud ir izveidots, pamatojoties uz atlasÄ«tajiem OpenContrail komponentiem, kas nesen tika saukts par Volframa audumu. TÄ«kla pakalpojumi tiek Ä«stenoti vienÄ CloudGate platformÄ. VietnÄ CloudGate mÄs izmantojÄm arÄ« vairÄkus atvÄrtÄ pirmkoda komponentus: GoBGP, lai apstrÄdÄtu vadÄ«bas informÄciju, kÄ arÄ« VPP, lai ieviestu programmatÅ«ras marÅ”rutÄtÄju, kas datu ceÄ¼Ä darbojas, izmantojot DPDK.
Tungsten Fabric sazinÄs ar CloudGate, izmantojot GoBGP. StÄsta, kas notiek pÄrklÄjuma tÄ«klÄ. CloudGate savukÄrt savieno pÄrklÄjuma tÄ«klus savÄ starpÄ un ar internetu.
Tagad apskatÄ«sim, kÄ virtuÄlais tÄ«kls atrisina mÄrogojamÄ«bas un pieejamÄ«bas problÄmas. ApskatÄ«sim vienkÄrÅ”u gadÄ«jumu. Ir viena pieejamÄ«bas zona un tajÄ izveidoti divi VPC. MÄs izvietojÄm vienu Tungsten Fabric gadÄ«jumu, un tajÄ ir vairÄki desmiti tÅ«kstoÅ”u tÄ«klu. TÄ«kli sazinÄs ar CloudGate. CloudGate, kÄ jau teicÄm, nodroÅ”ina to savienojamÄ«bu savÄ starpÄ un ar internetu.
PieÅemsim, ka ir pievienota otrÄ pieejamÄ«bas zona. Tam vajadzÄtu neizdoties pilnÄ«gi neatkarÄ«gi no pirmÄs. TÄpÄc otrajÄ pieejamÄ«bas zonÄ mums ir jÄinstalÄ atseviŔķs Volframa auduma gadÄ«jums. Å Ä« bÅ«s atseviŔķa sistÄma, kas apstrÄdÄ pÄrklÄjumu un maz zina par pirmo sistÄmu. Un Ŕķiet, ka mÅ«su virtuÄlais tÄ«kls ir globÄls, faktiski rada mÅ«su VPC API. Tas ir viÅa uzdevums.
VPC1 tiek kartÄts uz pieejamÄ«bas zonu B, ja pieejamÄ«bas zonai B ir resursi, kas iekļaujas VPC1. Ja pieejamÄ«bas zonÄ B nav resursu no VPC2, mÄs VPC2 Å”ajÄ zonÄ nerealizÄjam. SavukÄrt, tÄ kÄ resursi no VPC3 eksistÄ tikai B zonÄ, VPC3 neeksistÄ zonÄ A. Viss ir vienkÄrÅ”i un loÄ£iski.
PadziļinÄsimies un redzÄsim, kÄ darbojas konkrÄts Y.Cloud resursdators. Galvenais, ko es gribÄtu atzÄ«mÄt, ir tas, ka visi saimnieki ir izstrÄdÄti vienÄdi. MÄs pÄrliecinÄmies, ka tikai nepiecieÅ”amais pakalpojumu minimums darbojas aparatÅ«rÄ; visi pÄrÄjie darbojas virtuÄlajÄs maŔīnÄs. MÄs veidojam augstÄka lÄ«meÅa pakalpojumus, pamatojoties uz pamata infrastruktÅ«ras pakalpojumiem, kÄ arÄ« izmantojam mÄkoni, lai atrisinÄtu dažas inženiertehniskÄs problÄmas, piemÄram, kÄ daļu no nepÄrtrauktÄs integrÄcijas.
Ja skatÄmies uz konkrÄtu resursdatoru, mÄs varam redzÄt, ka resursdatora OS darbojas trÄ«s komponenti:
- AprÄÄ·inÄÅ”ana ir daļa, kas ir atbildÄ«ga par skaitļoÅ”anas resursu sadali resursdatorÄ.
- VRouter ir daļa no Tungsten Fabric, kas organizÄ pÄrklÄjumu, tas ir, caur apakÅ”klÄju pÄrvieto paketes.
- VDiski ir krÄtuves virtualizÄcijas daļas.
TurklÄt virtuÄlÄs maŔīnas nodroÅ”ina pakalpojumus: mÄkoÅa infrastruktÅ«ras pakalpojumi, platformas pakalpojumi un klientu jauda. Klientu iespÄjas un platformas pakalpojumi vienmÄr nonÄk pÄrklÄjumÄ, izmantojot VRouter.
InfrastruktÅ«ras pakalpojumus var pievienot pÄrklÄjumam, bet galvenokÄrt tie vÄlas strÄdÄt apakÅ”klÄjÄ. Tie tiek ielÄ«mÄti apakÅ”klÄjÄ, izmantojot SR-IOV. Faktiski mÄs sagriežam karti virtuÄlÄs tÄ«kla kartÄs (virtuÄlajÄs funkcijÄs) un ievietojam tÄs infrastruktÅ«ras virtuÄlajÄs maŔīnÄs, lai nezaudÄtu veiktspÄju. PiemÄram, tas pats CloudGate tiek palaists kÄ viena no Ŕīm infrastruktÅ«ras virtuÄlajÄm maŔīnÄm.
Tagad, kad esam aprakstÄ«juÅ”i virtuÄlÄ tÄ«kla globÄlos uzdevumus un mÄkoÅa pamatkomponentu dizainu, apskatÄ«sim, kÄ tieÅ”i dažÄdÄs virtuÄlÄ tÄ«kla daļas mijiedarbojas viena ar otru.
MÄs savÄ sistÄmÄ izŔķiram trÄ«s slÄÅus:
- KonfigurÄcijas plakne ā iestata sistÄmas mÄrÄ·a stÄvokli. Tas ir tas, ko lietotÄjs konfigurÄ, izmantojot API.
- VadÄ«bas plakne ā nodroÅ”ina lietotÄja norÄdÄ«tu semantiku, tas ir, tas nodroÅ”ina datu plaknes stÄvokli lÄ«dz tam, ko lietotÄjs aprakstÄ«ja konfigurÄcijas plaknÄ.
- Datu plakne ā tieÅ”i apstrÄdÄ lietotÄja paketes.
KÄ jau teicu iepriekÅ”, viss sÄkas ar to, ka lietotÄjs vai iekÅ”ÄjÄs platformas pakalpojums nonÄk API un apraksta noteiktu mÄrÄ·a stÄvokli.
Å is stÄvoklis tiek nekavÄjoties ierakstÄ«ts Yandex datu bÄzÄ, atgriež asinhronÄs operÄcijas ID, izmantojot API, un palaiž mÅ«su iekÅ”Äjo iekÄrtu, lai izveidotu lietotÄja vÄlamo stÄvokli. KonfigurÄcijas uzdevumi pÄriet uz SDN kontrolleri un paziÅojiet Tungsten Fabric, kas ir jÄdara pÄrklÄjumÄ. PiemÄram, viÅi rezervÄ portus, virtuÄlos tÄ«klus un tamlÄ«dzÄ«gi.
Tungsten Fabric konfigurÄcijas plakne augÅ”upielÄdÄ nepiecieÅ”amo stÄvokli vadÄ«bas plaknÄ. Izmantojot to, Config Plane sazinÄs ar saimniekiem, precÄ«zi pastÄstot, kas tuvÄkajÄ nÄkotnÄ viÅiem darbosies.
Tagad paskatÄ«simies, kÄ sistÄma izskatÄs uz saimniekiem. VirtuÄlajai maŔīnai VRouter ir pievienots noteikts tÄ«kla adapteris. VRouter ir volframa auduma pamata modulis, kas aplÅ«ko paketes. Ja kÄdai paketei jau ir plÅ«sma, modulis to apstrÄdÄ. Ja plÅ«smas nav, modulis veic tÄ saukto punting, tas ir, nosÅ«ta paketi usermod procesam. Process parsÄ paketi un pats uz to reaÄ£Ä, piemÄram, DHCP un DNS, vai arÄ« norÄda VRouter, ko ar to darÄ«t. PÄc tam VRouter var apstrÄdÄt paketi.
TurklÄt satiksme starp virtuÄlajÄm maŔīnÄm tajÄ paÅ”Ä virtuÄlajÄ tÄ«klÄ plÅ«st caurspÄ«dÄ«gi, tÄ netiek nosÅ«tÄ«ta uz CloudGate. Saimnieki, kuros ir izvietotas virtuÄlÄs maŔīnas, tieÅ”i sazinÄs savÄ starpÄ. ViÅi tuneli satiksmi un nosÅ«ta to viens otram caur apakÅ”klÄju.
VadÄ«bas plaknes sazinÄs viena ar otru pieejamÄ«bas zonÄs, izmantojot BGP, tÄpat kÄ ar citu marÅ”rutÄtÄju. Tie norÄda, kuras maŔīnas kur ir instalÄtas, lai vienÄ zonÄ esoÅ”Äs virtuÄlÄs maŔīnas varÄtu tieÅ”i sazinÄties ar citÄm virtuÄlajÄm maŔīnÄm.
Control Plane sazinÄs arÄ« ar CloudGate. TÄpat tas ziÅo, kur un kuras virtuÄlÄs maŔīnas ir instalÄtas, kÄdas ir to adreses. Tas ļauj novirzÄ«t ÄrÄjo trafiku un trafiku no balansieriem uz tiem.
DatplÅ«sma, kas atstÄj VPC, nonÄk CloudGate datu ceļÄ, kur VPP ar mÅ«su spraudÅiem tiek Ätri sakoŔļÄts. PÄc tam satiksme tiek virzÄ«ta vai nu uz citiem VPC, vai uz Äru, uz malu marÅ”rutÄtÄjiem, kas tiek konfigurÄti, izmantojot paÅ”u CloudGate vadÄ«bas plakni.
TuvÄkÄs nÄkotnes plÄni
Ja mÄs apkopojam visu iepriekÅ” minÄto dažos teikumos, mÄs varam teikt, ka VPC pakalpojumÄ Yandex.Cloud atrisina divas svarÄ«gas problÄmas:
- NodroÅ”ina izolÄciju starp dažÄdiem klientiem.
- Apvieno resursus, infrastruktÅ«ru, platformas pakalpojumus, citus mÄkoÅus un lokÄlos resursus vienÄ tÄ«klÄ.
Un, lai Ŕīs problÄmas atrisinÄtu labi, iekÅ”ÄjÄs arhitektÅ«ras lÄ«menÄ« ir jÄnodroÅ”ina mÄrogojamÄ«ba un kļūdu tolerance, ko arÄ« dara VPC.
PamazÄm VPC apgÅ«st funkcijas, ievieÅ”am jaunas iespÄjas un cenÅ”amies kaut ko uzlabot lietotÄju ÄrtÄ«bu ziÅÄ. Dažas idejas tiek izteiktas un iekļautas prioritÄÅ”u sarakstÄ, pateicoties mÅ«su kopienas locekļiem.
Tagad mums ir aptuveni Å”Äds tuvÄkÄs nÄkotnes plÄnu saraksts:
- VPN kÄ pakalpojums.
- PrivÄtie DNS gadÄ«jumi ā attÄli, kas paredzÄti, lai Ätri iestatÄ«tu virtuÄlÄs maŔīnas ar iepriekÅ” konfigurÄtu DNS serveri.
- DNS kÄ pakalpojums.
- IekÅ”Äjais slodzes balansÄtÄjs.
- āBaltÄsā IP adreses pievienoÅ”ana, neizveidojot virtuÄlo maŔīnu.
BalansÄtÄjs un iespÄja pÄrslÄgt IP adresi jau izveidotai virtuÄlajai maŔīnai Å”ajÄ sarakstÄ tika iekļauti pÄc lietotÄju pieprasÄ«juma. GodÄ«gi sakot, bez skaidras atsauksmes mÄs Ŕīs funkcijas bÅ«tu pÄrÅÄmuÅ”as nedaudz vÄlÄk. Un tÄpÄc mÄs jau strÄdÄjam pie problÄmas par adresÄm.
SÄkotnÄji ābaltoā IP adresi varÄja pievienot tikai, veidojot maŔīnu. Ja lietotÄjs aizmirsa to izdarÄ«t, virtuÄlÄ maŔīna bija jÄizveido no jauna. Tas pats attiecas uz ÄrÄjÄ IP noÅemÅ”anu, ja nepiecieÅ”ams. DrÄ«zumÄ bÅ«s iespÄjams ieslÄgt un izslÄgt publisko IP, neizveidojot iekÄrtu no jauna.
Jūtieties brīvi izteikt savu
Avots: www.habr.com