Hodeiko azpiegituren sarearen zatiari buruzko sarrera
Hodeiko informatika gero eta sakonago sartzen ari da gure bizitzan eta seguruenik ez dago hodeiko zerbitzurik gutxienez behin erabili ez duen pertsona bakar bat ere. Hala ere, hodei bat zer den eta nola funtzionatzen duen, jende gutxik daki, baita ideia mailan ere. Dagoeneko 5G errealitate bihurtzen ari da eta telekomunikazio-azpiegitura zutabe-konponbideetatik hodeiko soluzioetara pasatzen hasi da, guztiz hardware-soluzioetatik "zutabe" birtualizatuetara pasa zenean bezalaxe.
Gaur hodeiko azpiegituren barne munduari buruz hitz egingo dugu, bereziki sarearen zatiaren oinarriak aztertuko ditugu.
Zer da hodeia? Birtualizazio bera - profilaren ikuspegia?
Galdera logiko bat baino gehiago. Ez, hau ez da birtualizazioa, hura gabe egin ezin den arren. Ikus ditzagun bi definizio:
Hodeiko informatika (aurrerantzean Hodeia) Zerbitzu-hornitzailearentzat ahalik eta latentzia txikienarekin eta kostu minimoarekin eskaeraren arabera zabaldu eta abiarazi beharreko baliabide informatiko banatuetara erabilerraza den sarbidea eskaintzeko eredu bat da.
Birtualizazioa - entitate fisiko bat (adibidez, zerbitzari bat) hainbat birtualetan banatzeko gaitasuna da, eta horrela baliabideen erabilera areagotzen da (adibidez, 3 zerbitzariak ehuneko 25-30ean kargatuta dituzu, birtualizazioaren ondoren zerbitzari 1 kargatzen duzu ehuneko 80-90ean). Jakina, birtualizazioak baliabide batzuk jaten ditu - hipervisorea elikatu behar duzu, hala ere, praktikak erakutsi bezala, jokoak merezi du kandela. Birtualizazioaren adibide aproposa VMWare da, ezin hobeto prestatzen dituen makina birtualak, edo adibidez KVM, nik nahiago dudana, baina hau gustu kontua da.
Birtualizazioa konturatu gabe erabiltzen dugu, eta burdinazko bideratzaileek ere birtualizazioa erabiltzen dute dagoeneko; adibidez, JunOS-en azken bertsioan, sistema eragilea makina birtual gisa instalatzen da denbora errealeko Linux banaketa baten gainean (Wind River 9). Baina birtualizazioa ez da hodeia, baina hodeia ezin da existitu birtualizaziorik gabe.
Birtualizazioa hodeia eraikitzen den elementuetako bat da.
Hodei bat egitea L2 domeinu bakarrean hainbat hipervisor bilduz, yaml playbook pare bat gehitzea vlan-ak automatikoki erregistratzeko ansible moduko baten bidez eta orkestrazio-sistema bat bezalako zerbait sartzeak makina birtualak automatikoki sortzeko ez du funtzionatuko. Zehatzagoa izango da, baina ondorioz Frankenstein ez da behar dugun hodeia, nahiz eta beste batzuen ametsa izan daitekeen. Gainera, Openstack bera hartzen baduzu, funtsean oraindik Frankenstein da, baina tira, ez dezagun horretaz hitz egin oraingoz.
Baina ulertzen dut goian aurkeztutako definiziotik ez dagoela guztiz argi zer dei daitekeen hodei.
Horregatik, NIST-en (National Institute of Standards and Technology) dokumentu batek hodeiko azpiegitura batek izan behar dituen 5 ezaugarri nagusi eskaintzen ditu:
Eskaeraren arabera zerbitzua eskaintzea. Erabiltzaileari esleitzen zaizkion baliabide informatikoetara doan sarbidea eman behar zaio (esaterako, sareak, disko birtualak, memoria, prozesadore-nukleoak, etab.), eta baliabide horiek automatikoki eman behar zaizkio, hau da, zerbitzu-hornitzailearen esku-hartzerik gabe.
Zerbitzuaren erabilgarritasun zabala. Baliabideetarako sarbidea mekanismo estandarren bidez eman behar da, bai PC estandarrak bai bezero finak eta gailu mugikorrak erabiltzeko.
Baliabideak igerilekuetan konbinatzea. Baliabide-taldeek aldi berean hainbat bezerori baliabideak eskaintzeko gai izan behar dute, bezeroak isolatuak eta elkarrekiko eraginik eta baliabideen lehiarik gabe daudela ziurtatuz. Igerilekuetan sareak ere sartzen dira, eta horrek helbideratze gainjarritako erabiltzeko aukera adierazten du. Igerilekuek eskariaren arabera eskalatzeko gai izan behar dute. Igerilekuak erabiltzeari esker, baliabide fisikoen eta birtualen abstrakzio eta baliabideen akatsen tolerantzia eta abstrakzio maila eskaintzea ahalbidetzen da; zerbitzuaren hartzaileak eskatutako baliabide multzoa besterik ez zaio ematen (baliabide horiek fisikoki non dauden, zenbat eta zenbat). zerbitzariak eta etengailuak - ez dio axola bezeroari). Hala ere, kontuan hartu behar dugu hornitzaileak baliabide horien erreserba gardena bermatu behar duela.
Egokitzapen azkarra baldintza ezberdinetara. Zerbitzuak malguak izan behar dira: baliabideak azkar hornitzea, haiek birbanatzea, baliabideak gehitu edo murriztea bezeroak eskatuta, eta bezeroaren aldetik hodeiko baliabideak amaigabeak direlako sentsazioa izan behar du. Ulertzeko, adibidez, ez duzu ikusten abisurik Apple iCloud-en zure diskoko espazioaren zati bat desagertu dela zerbitzariko disko gogorra matxuratu delako eta unitateak matxuratu direlako. Gainera, zure aldetik, zerbitzu honen aukerak ia mugagabeak dira - 2 TB behar dituzu - ez dago arazorik, ordaindu eta jaso duzu. Google.Drive edo Yandex.Disk-ekin antzeko adibide bat eman daiteke.
Emandako zerbitzua neurtzeko aukera. Hodeiko sistemek automatikoki kontrolatu eta optimizatu behar dituzte kontsumitutako baliabideak, eta mekanismo horiek gardenak izan behar dute erabiltzailearentzat zein zerbitzu hornitzailearentzat. Hau da, zuk eta zure bezeroek zenbat baliabide kontsumitzen dituzun egiaztatu dezakezu beti.
Kontuan izan behar da eskakizun hauek gehienbat hodei publiko baterako eskakizunak direla, beraz, hodei pribatu baterako (hau da, enpresaren barne beharretarako abiarazitako hodei bat), eskakizun horiek apur bat egokitu daitezke. Hala ere, oraindik egin behar dira, bestela ez ditugu hodeiko informatikaren onura guztiak lortuko.
Zergatik behar dugu hodeia?
Hala ere, edozein teknologia berri edo lehendik dagoen, edozein protokolo berri zerbaitetarako sortzen da (beno, RIP-ng izan ezik, noski). Inork ez du protokolorik behar protokolo baten mesedetan (beno, RIP-ng izan ezik, noski). Logikoa da Hodeia erabiltzaileari/bezeroari nolabaiteko zerbitzu bat emateko sortzea. Denok ezagutzen ditugu gutxienez hodeiko zerbitzu pare bat, Dropbox edo Google.Docs adibidez, eta uste dut jende gehienak arrakastaz erabiltzen dituela; adibidez, artikulu hau Google.Docs hodeiko zerbitzua erabiliz idatzi da. Baina ezagutzen ditugun hodeiko zerbitzuak hodeiaren gaitasunen zati bat baino ez dira; zehatzago esanda, SaaS motako zerbitzu bat baino ez dira. Hodeiko zerbitzua hiru modutara eman dezakegu: SaaS, PaaS edo IaaS moduan. Zer zerbitzu behar duzun zure nahien eta gaitasunen araberakoa da.
Ikus ditzagun bakoitza ordenan:
Zerbitzu gisa softwarea (SaaS) bezeroari zerbitzu osoa emateko eredu bat da, adibidez, Yandex.Mail edo Gmail bezalako posta elektronikoko zerbitzu bat. Zerbitzua emateko eredu honetan, zuk, bezero gisa, ez duzu ezer egiten zerbitzuak erabiltzeaz gain, hau da, ez duzu pentsatu behar zerbitzua konfiguratzen, akatsen tolerantzian edo erredundantzian. Gauza nagusia zure pasahitza ez arriskuan jartzea da; zerbitzu honen hornitzaileak egingo du gainerakoa. Zerbitzu-hornitzailearen ikuspuntutik, bera da zerbitzu osoaren ardura osoa - zerbitzariaren hardwaretik eta ostalari-sistema eragileetatik datu-base eta software ezarpenetaraino.
Plataforma Zerbitzu gisa (PaaS) β Eredu hau erabiltzean, zerbitzu hornitzaileak bezeroari zerbitzurako pieza bat eskaintzen dio, adibidez, har dezagun web zerbitzari bat. Zerbitzu-hornitzaileak zerbitzari birtual bat eman zion bezeroari (hain zuzen ere, baliabide multzo bat, hala nola RAM/CPU/Biltegiratze/Sareak, etab.), eta zerbitzari honetan OS eta beharrezko softwarea ere instalatu zuen, hala ere, konfigurazioa. gauza hauek guztiak bezeroak berak egiten ditu eta bezeroak erantzuten du zerbitzua betetzeko. Zerbitzu-hornitzaileak, aurreko kasuan bezala, ekipamendu fisikoen, hipervisoreen, makina birtualaren beraren, sarearen erabilgarritasunaren, etab.en erantzule da, baina zerbitzua bera ez dago jada bere ardura-eremuan.
Azpiegitura zerbitzu gisa (IaaS) - Ikuspegi hori dagoeneko interesgarriagoa da, izan ere, zerbitzu-hornitzaileak bezeroari azpiegitura birtualizatu osoa eskaintzen dio, hau da, baliabide multzo batzuk (pilota), hala nola CPU Nukleoak, RAM, Sareak, etab. Gainontzeko guztia dago. bezeroak - bezeroak zer egin nahi duen baliabide horiekin esleitutako biltegiaren barruan (kuota) - ez da bereziki garrantzitsua hornitzailearentzat. Bezeroak bere vEPC propioa sortu nahi duen edo baita operadore txiki bat sortu eta komunikazio zerbitzuak eskaini nahi dituen ala ez, egin ezazu. Egoera horretan, zerbitzu-hornitzaileak baliabideak hornitzeaz arduratzen da, haien akatsen tolerantziaz eta erabilgarritasunaz, baita baliabide horiek bateratu eta bezeroaren eskura jartzen dituen sistema eragileaz ere, edozein unetan baliabideak handitu edo gutxitzeko gaitasunaz. bezeroak eskatuta. Bezeroak makina birtual guztiak eta beste tinsel batzuk berak konfiguratzen ditu autozerbitzuaren atariaren eta kontsolaren bidez, sareak konfiguratzea barne (kanpoko sareak izan ezik).
Zer da OpenStack?
Hiru aukeretan, zerbitzu hornitzaileak hodeiko azpiegitura bat sortzea ahalbidetuko duen OS bat behar du. Izan ere, SaaS-ekin, dibisio bat baino gehiago arduratzen da teknologien pila osoaren ardura -bada azpiegituraz arduratzen den dibisio bat-, hau da, beste dibisio bati IaaS ematen dio, dibisio honek SaaS eskaintzen dio bezeroari. OpenStack hodeiko sistema eragileetako bat da, etengailu, zerbitzari eta biltegiratze-sistema mordoa baliabide bakarrean biltzeko aukera ematen duena, multzo komun hau azpipooletan (errentari) zatitzea eta baliabide horiek bezeroei sarearen bidez eskaintzea.
OpenStack hodeiko sistema eragile bat da, eta API baten bidez hornitutako eta kudeatutako baliabide informatiko, datuen biltegiratze eta sareko baliabide multzo handiak kontrolatzeko aukera ematen du, autentifikazio-mekanismo estandarrak erabiliz.
Beste era batera esanda, hodeiko zerbitzuak (publikoak zein pribatuak) sortzeko diseinatutako software libreko proiektuen multzoa da hau, hau da, zerbitzaria eta ekipoak baliabide multzo bakarrean konbinatzea eta kudeatzea ahalbidetzen duten tresna multzoa. baliabide horiek, akatsen tolerantzia maila emanez.
Material hau idazteko momentuan, OpenStack egiturak honela dauka:
OpenStack-en sartutako osagai bakoitzak funtzio zehatz bat betetzen du. Banatutako arkitektura honek irtenbidean behar dituzun osagai funtzionalen multzoa sartzea ahalbidetzen du. Hala ere, osagai batzuk erro osagaiak dira eta horiek kentzeak soluzio osoaren funtzionagarritasun osoa edo partziala ekarriko du. Osagai hauek normalean honela sailkatu ohi dira:
arbela β Webean oinarritutako GUI OpenStack zerbitzuak kudeatzeko
Keystone identitate-zerbitzu zentralizatu bat da, beste zerbitzu batzuetarako autentifikazio- eta baimen-funtzionalitatea eskaintzen duena, baita erabiltzailearen kredentzialak eta haien rolak kudeatzen dituena ere.
neutroi - OpenStack zerbitzu ezberdinen interfazeen arteko konektagarritasuna eskaintzen duen sare-zerbitzua (VMen arteko konexioa eta kanpoko mundurako sarbidea barne)
errauts β makina birtualen bloke-biltegiratzerako sarbidea eskaintzen du
New β makina birtualen bizi-zikloaren kudeaketa
Glance β makina birtualen irudien eta argazkien biltegia
Swift β biltegiratze-objekturako sarbidea ematen du
Ceilometroa β telemetria biltzeko eta erabilgarri dauden eta kontsumitutako baliabideak neurtzeko gaitasuna ematen duen zerbitzua
Bero β baliabideak automatikoki sortzeko eta hornitzeko txantiloietan oinarritutako orkestrazioa
Proiektu guztien eta haien helburuaren zerrenda osoa ikus daiteke Hemen.
OpenStack osagai bakoitza funtzio zehatz bat betetzen duen zerbitzu bat da eta funtzio hori kudeatzeko eta hodeiko sistema eragileko beste zerbitzu batzuekin elkarreragiteko API bat eskaintzen du azpiegitura bateratu bat sortzeko. Adibidez, Novak baliabide informatikoen kudeaketa eta baliabide horiek konfiguratzeko API bat eskaintzen du, Glance-k irudien kudeaketa eta horiek kudeatzeko API bat eskaintzen du, Cinder-ek blokeen biltegiratzea eta kudeatzeko API bat, etab. Funtzio guztiak elkarri lotuta daude oso modu estuan.
Hala ere, begiratuz gero, OpenStack-en exekutatzen diren zerbitzu guztiak sarera konektatuta dauden makina birtual (edo edukiontzi) moduko bat dira. Galdera sortzen da: zergatik behar ditugu hainbeste elementu?
Goazen makina birtual bat sortzeko eta Openstack-en sarera eta biltegiratze iraunkorra konektatzeko algoritmoa.
Makina bat sortzeko eskaera bat sortzen duzunean, izan Horizon (Dashboard) edo CLI bidezko eskaera bat, gertatzen den lehenengo gauza Keystone-n zure eskaeraren baimena da - sor dezakezu makina bat, badu sare hau erabiltzeko eskubidea, zure zirriborroa egiten du, etab.
Keystone-k zure eskaera autentifikatzen du eta autentifikazio-token bat sortzen du erantzun-mezuan, gehiago erabiliko dena. Keystoneren erantzuna jaso ondoren, eskaera Novara bidaltzen da (nova api).
Nova-api-k zure eskaeraren baliozkotasuna egiaztatzen du Keystonerekin harremanetan jarriz aurrez sortutako autentifikazio-tokena erabiliz
Keystone-k autentifikazioa egiten du eta baimen eta murrizketei buruzko informazioa ematen du autentifikazio-token honetan oinarrituta.
Nova-api-k VM berrirako sarrera bat sortzen du nova-databasean eta makina sortzeko eskaera nova-scheduler-i pasatzen dio.
Nova-scheduler-ek VM-a zabalduko den ostalaria (ordenagailu-nodoa) hautatzen du zehaztutako parametro, pisu eta zonen arabera. Honen erregistroa eta VM IDa nova-databasean idazten dira.
Ondoren, nova-scheduler-ek nova-compute-rekin harremanetan jartzen du instantzia bat zabaltzeko eskaera batekin. Nova-compute-k nova-conductor-ekin harremanetan jartzen ditu makinen parametroei buruzko informazioa lortzeko (nova-conductor nova-database eta nova-compute-ren artean proxy zerbitzari gisa jarduten duen elementu nova da, nova-databaserako eskaera kopurua mugatuz datu-basearekin arazoak saihesteko. koherentzia-karga murriztea).
Nova-conductor-ek eskatutako informazioa nova-databasetik jasotzen du eta nova-compute-ra pasatzen du.
Ondoren, nova-compute-k begirada bat deitzen du irudiaren IDa lortzeko. Glace-k eskaera balioztatu du Keystonen eta eskatutako informazioa itzultzen du.
Nova-konputazioa neutroiarekin harremanetan jartzen da sareko parametroei buruzko informazioa lortzeko. Begiradaren antzera, neutronek eskaera balioztatzen du Keystonen, eta ondoren datu-basean sarrera bat sortzen du (portuaren identifikatzailea, etab.), ataka bat sortzeko eskaera sortzen du eta eskatutako informazioa itzultzen du nova-compute-ra.
Nova-compute-k erraustu egiten du makina birtualera bolumen bat esleitzeko eskaerarekin. Begiradaren antzera, sagardoak eskaera balioztatzen du Keystonen, bolumena sortzeko eskaera bat sortzen du eta eskatutako informazioa itzultzen du.
Nova-compute-k libvirt-ekin harremanetan jartzen du zehaztutako parametroekin makina birtual bat zabaltzeko eskaerarekin.
Izan ere, makina birtual soil bat sortzeko eragiketa itxuraz sinplea hodeiko plataformako elementuen arteko API deien zurrunbiloa bihurtzen da. Gainera, ikus dezakezun bezala, aurretik izendatutako zerbitzuak ere osagai txikiagoz osatuta daude eta horien artean elkarrekintza gertatzen da. Makina bat sortzea hodeiko plataformak egiteko aukera ematen duenaren zati txiki bat baino ez da - trafikoa orekatzeaz arduratzen den zerbitzu bat dago, blokeen biltegiratzeaz arduratzen den zerbitzu bat, DNSz arduratzen den zerbitzu bat, metalezko zerbitzariak hornitzeaz arduratzen den zerbitzu bat, etab. Hodeiari esker, zure makina birtualak ardi artalde bat bezala tratatu behar dituzu (birtualizazioaren aurka). Ingurune birtualean zure makinari zerbait gertatzen bazaio - babeskopietatik eta abarretatik leheneratzen baduzu, baina hodeiko aplikazioak makina birtualak hain garrantzirik ez duen moduan eraikitzen dira - makina birtuala "hil egin da" - ez dago arazorik. - berri bat sortu besterik ez da ibilgailua txantiloian oinarritzen da eta, esaten den bezala, taldeek ez zuten borrokalariaren galera nabaritu. Jakina, horrek orkestrazio mekanismoen presentzia eskaintzen du - Heat txantiloiak erabiliz, dozenaka sare eta makina birtualek osatutako funtzio konplexu bat erraz zabaldu dezakezu.
Kontuan izan behar da beti ez dagoela hodeiko azpiegiturarik sarerik gabe: elementu bakoitzak era batera edo bestera elkarreragiten du sarearen bidez beste elementu batzuekin. Gainera, hodeiak sare guztiz ez-estatikoa du. Jakina, azpiko sarea are gehiago edo gutxiago estatikoa da - nodo eta etengailu berriak ez dira egunero gehitzen, baina gainjarritako osagaia etengabe aldatu daiteke eta ezinbestean aldatuko da - sare berriak gehitu edo ezabatuko dira, makina birtual berriak agertuko dira eta zaharrak. hil. Eta artikuluaren hasieran emandako hodeiaren definiziotik gogoratzen duzunez, baliabideak erabiltzaileari automatikoki esleitu behar zaizkio eta zerbitzu-hornitzailearen esku-hartze gutxien (edo hobeto esanda, gabe). Hau da, sare-baliabideen hornikuntza-mota gaur egun frontend moduan dagoen zure kontu pertsonala http/https-ren bidez eta Vasily laneko sare-ingeniaria backend moduan eskuragarri dagoen moduan ez da hodei bat, nahiz eta Vasilyk zortzi esku baditu.
Neutronek, sareko zerbitzu gisa, hodeiko azpiegituraren sare-zatia kudeatzeko API bat eskaintzen du. Zerbitzuak Openstack-en sareko zatia ahalmentzen eta kudeatzen du Network-as-a-Service (NaaS) izeneko abstrakzio-geruza bat eskainiz. Hau da, sarea, adibidez, CPU birtualen nukleoen edo RAM kantitatearen unitate neurgarri birtual bera da.
Baina OpenStack-en sare-zatiaren arkitekturara pasatu aurretik, azter dezagun nola funtzionatzen duen sare honek OpenStack-en eta zergatik den sarea hodeiaren zati garrantzitsu eta integrala.
Beraz, bi RED bezero VM eta bi GREEN bezero VM ditugu. Demagun makina hauek bi hiperbissoretan kokatuta daudela modu honetan:
Momentuz, 4 zerbitzarien birtualizazioa besterik ez da eta ezer gehiago, orain arte egin dugun guztia 4 zerbitzari birtualizatzea da, bi zerbitzari fisikotan jarriz. Eta orain arte ez daude sarera konektatuta ere.
Hodei bat egiteko, hainbat osagai gehitu behar ditugu. Lehenik eta behin, sarearen zatia birtualizatzen dugu: 4 makina hauek binaka konektatu behar ditugu eta bezeroek L2 konexioa nahi dute. Switch bat erabil dezakezu eta enbor bat bere norabidean konfiguratu eta dena konpon dezakezu linux zubi baten bidez edo, erabiltzaile aurreratuagoentzat, openvswitch (aurrerago itzuliko gara hona). Baina sare asko egon daitezke, eta etengabe L2 etengailu baten bidez bultzatzea ez da ideiarik onena - sail desberdinak daude, zerbitzu-mahai bat, hilabeteak aplikazio bat amaitu arte itxaron, arazoak konpontzeko asteak - mundu modernoan hau hurbilketak ez du funtzionatzen jada. Eta zenbat eta lehenago ulertu enpresa batek, orduan eta errazagoa izango da aurrera egitea. Hori dela eta, hipervisoreen artean gure makina birtualak komunikatuko diren L3 sare bat hautatuko dugu, eta L3 sare horren gainean L2 gainjarri sare birtualak eraikiko ditugu, non gure makina birtualen trafikoa exekutatu den. GRE, Geneve edo VxLAN erabil ditzakezu kapsulatze gisa. Azken honetan zentratu gaitezen oraingoz, bereziki garrantzitsua ez den arren.
VTEP nonbait kokatu behar dugu (espero dut denek ezagutzen dutela VxLAN terminologia). Zerbitzarietatik zuzenean L3 sare bat dugunez, ezerk ez digu VTEP zerbitzarietan jartzea eragozten, eta OVS (OpenvSwitch) bikaina da hori egiteko. Ondorioz, diseinu hau lortu dugu:
VM-en arteko trafikoa banatu behar denez, makina birtualetarako portuek vlan zenbaki desberdinak izango dituzte. Etiketa-zenbakiak etiketa birtual baten barruan bakarrik jokatzen du, izan ere, VxLAN-en kapsulatzen denean erraz kendu dezakegu, VNI bat izango baitugu.
Orain gure makinak eta sare birtualak sor ditzakegu inolako arazorik gabe.
Hala ere, zer gertatzen da bezeroak beste makina bat badu, baina beste sare batean badago? Sareen artean errotzea behar dugu. Aukera sinple bat aztertuko dugu bideratze zentralizatua erabiltzen denean - hau da, trafikoa sareko nodo dedikatu berezien bidez bideratzen da (beno, oro har, kontrol-nodoekin konbinatzen dira, beraz, gauza bera izango dugu).
Badirudi ezer konplikatua ez dela: zubi-interfaze bat egiten dugu kontrol-nodoan, bertara trafikoa gidatzen dugu eta hortik behar dugun tokira bideratzen dugu. Baina arazoa da RED bezeroak 10.0.0.0/24 sarea erabili nahi duela eta GREEN bezeroak 10.0.0.0/24 sarea erabili nahi duela. Hau da, helbide-espazioak gurutzatzen hasten gara. Gainera, bezeroek ez dute nahi beste bezeroek beren barne sareetara bideratu ahal izatea, eta horrek zentzuzkoa du. Sareak eta bezeroen datuen trafikoa bereizteko, izen-espazio bereizi bat esleituko diogu horietako bakoitzari. Namespace Linux sare-pilaren kopia bat da hain zuzen ere, hau da, RED izen-espazioko bezeroak guztiz isolatuta daude GREEN izen-espaziotik bezeroengandik (beno, bezero-sare horien arteko bideratzea onartzen da izen-espazio lehenetsiaren bidez edo gorako garraio-ekipoetan).
Hau da, diagrama hau lortuko dugu:
L2 tunelak konputazio-nodo guztietatik kontrol-nodora bat egiten dute. sare hauetarako L3 interfazea dagoen nodoa, bakoitza isolatzeko izen-espazio dedikatu batean.
Hala ere, garrantzitsuena ahaztu dugu. Makina birtualak zerbitzu bat eman behar dio bezeroari, hau da, gutxienez kanpoko interfaze bat izan behar du, bertatik bertara irits dadin. Hau da, kanpoaldera atera behar dugu. Hemen aukera desberdinak daude. Egin dezagun aukerarik errazena. Bezero bakoitzari sare bat gehituko diogu, hornitzailearen sarean baliozkoa izango dena eta ez du gainjarriko beste sare batzuekin. Sareak ere gurutza daitezke eta hornitzaile sarearen alboko VRF desberdinak begiratu. Sareko datuak bezero bakoitzaren izen-espazioan ere biziko dira. Hala ere, oraindik kanpo mundura aterako dira interfaze fisiko baten bidez (edo lotura, logikoagoa dena). Bezeroen trafikoa bereizteko, kanpora doan trafikoa bezeroari esleitutako VLAN etiketa batekin etiketatu beharko da.
Ondorioz, diagrama hau lortu dugu:
Arrazoizko galdera da zergatik ez egin atebideak konputazio-nodoetan bertan? Hau ez da arazo handia; gainera, bideratzaile banatua (DVR) pizten baduzu, honek funtzionatuko du. Eszenatoki honetan, aukerarik errazena aztertzen ari gara atebide zentralizatu batekin, lehenespenez Openstack-en erabiltzen dena. Karga handiko funtzioetarako, bideratzaile banatua eta SR-IOV eta Passthrough bezalako azelerazio teknologiak erabiliko dituzte, baina esan bezala, guztiz bestelakoa da hori. Lehenik eta behin, jorratu dezagun oinarrizko zatia, eta gero xehetasunetan sartuko gara.
Egia esan, gure eskema dagoeneko egingarria da, baina Γ±abardura pare bat daude:
Gure makinak nolabait babestu behar ditugu, hau da, iragazki bat jarri switch interfazean bezeroari.
Eman posible makina birtual batek IP helbide bat automatikoki lor dezan, kontsolaren bidez saioa hasi eta helbidea erregistratu beharrik izan ez dezazun bakoitzean.
Has gaitezen makinen babesarekin. Horretarako iptables hutsalak erabil ditzakezu, zergatik ez.
Hau da, orain gure topologia pixka bat konplikatu egin da:
Goazen aurrera. DHCP zerbitzari bat gehitu behar dugu. Bezero bakoitzarentzat DHCP zerbitzariak kokatzeko lekurik aproposena lehen aipatutako kontrol-nodoa izango litzateke, non izen-espazioak dauden:
Hala ere, arazo txiki bat dago. Zer gertatzen da dena berrabiarazi eta DHCP-n helbideen alokairuari buruzko informazio guztia desagertzen bada. Logikoa da makinei helbide berriak ematea, eta hori ez da oso erosoa. Hemen bi bide daude: domeinu-izenak erabili eta bezero bakoitzarentzat DNS zerbitzari bat gehitu, gero helbidea ez da guretzat bereziki garrantzitsua izango (k8s-en sareko zatiaren antzekoa) - baina kanpoko sareekin arazo bat dago, izan ere. helbideak DHCP bidez ere igor daitezke haietan - hodeiko plataformako DNS zerbitzariekin sinkronizatu behar duzu eta kanpoko DNS zerbitzari batekin, nire ustez oso malgua ez dena, baina nahiko posiblea da. Edo bigarren aukera metadatuak erabiltzea da, hau da, makinari emandako helbideari buruzko informazioa gordetzea, DHCP zerbitzariak jakin dezan zein helbide igorri behar dion makinari, makinak dagoeneko helbide bat jaso badu. Bigarren aukera sinpleagoa eta malguagoa da, autoari buruzko informazio gehigarria gordetzeko aukera ematen baitu. Orain gehi ditzagun agente metadatuak diagramari:
Eztabaidatu beharreko beste gai bat bezero guztiek kanpoko sare bat erabiltzeko gaitasuna da, kanpoko sareak, sare osoan baliozkoak izan behar badira, zailak izango baitira - etengabe esleitu eta kontrolatu behar duzu sare horien esleipena. Bezero guztientzat kanpoko aurrez konfiguratutako sare bakarra erabiltzeko gaitasuna oso erabilgarria izango da hodei publiko bat sortzeko orduan. Honek makinak hedatzea erraztuko du, ez baitugu helbide-datu-base bat kontsultatu eta bezero bakoitzaren kanpoko sarerako helbide-espazio bakarra hautatu beharrik. Gainera, aldez aurretik kanpoko sare bat erregistratu dezakegu eta zabaltzeko unean kanpoko helbideak bezero-makinekin lotu beharko ditugu soilik.
Eta hemen NAT gure laguntzara dator - bezeroei kanpoko mundura sartzeko aukera emango diegu izen-espazio lehenetsiaren bidez NAT itzulpena erabiliz. Beno, hona hemen arazo txiki bat. Hau ona da bezero-zerbitzariak bezero gisa jarduten badu eta ez zerbitzari gisa, hau da, konexioak abiarazten ditu onartu beharrean. Baina guretzat alderantziz izango da. Kasu honetan, helmugako NAT egin behar dugu, trafikoa jasotzean, kontrol-nodoak uler dezan trafiko hori A bezeroaren A makina birtualerako pentsatuta dagoela, hau da, NAT itzulpen bat egin behar dugu kanpoko helbide batetik, adibidez 100.1.1.1. .10.0.0.1, barne helbide batera 100. Kasu honetan, bezero guztiek sare bera erabiliko duten arren, barne isolamendua guztiz gordetzen da. Hau da, dNAT eta sNAT egin behar ditugu kontrol-nodoan. Helbide flotagarriekin edo kanpoko sareekin sare bakar bat erabiltzea, edo biak aldi berean, hodeira ekarri nahi duzunaren araberakoa da. Diagramari ez dizkiogu helbide flotagarriak gehituko, baina lehenago gehitutako kanpoko sareak utziko ditugu - bezero bakoitzak bere kanpoko sarea du (diagraman vlan 200 eta XNUMX gisa adierazten dira kanpoko interfazean).
Ondorioz, irtenbide interesgarri eta aldi berean ondo pentsatua jaso genuen, nolabaiteko malgutasuna duena baina oraindik akatsak jasateko mekanismorik ez duena.
Lehenik eta behin, kontrol-nodo bakarra dugu - bere hutsegiteak sistema guztien kolapsoa ekarriko du. Arazo hau konpontzeko, gutxienez 3 nodoko quoruma egin behar duzu. Gehi diezaiogun hau diagramari:
Jakina, nodo guztiak sinkronizatuta daude eta nodo aktibo bat irteten denean, beste nodo batek hartuko ditu bere ardurak.
Hurrengo arazoa makina birtualeko diskoak dira. Momentuz, hipervisoreetan gordetzen dira, eta hipervisorearekin arazoak izanez gero, datu guztiak galtzen ditugu, eta raid baten presentzia ez du lagunduko hemen diskoa ez galtzen badugu, zerbitzari osoa baizik. Horretarako, nolabaiteko biltegiratzeko frontend gisa funtzionatuko duen zerbitzu bat egin behar dugu. Nolako biltegiratzea izango den ez da bereziki garrantzitsua guretzat, baina gure datuak babestu beharko lituzke bai diskoaren, bai nodoaren eta, agian, armairu osoaren porrotetatik. Hainbat aukera daude hemen - Fibre Channel duten SAN sareak daude, noski, baina zintzoak izan gaitezen - FC iraganeko erlikia da dagoeneko - E1-en analogoa garraioan - bai, ados nago, oraindik erabiltzen da, baina hura gabe erabat ezinezkoa den lekuan bakarrik. Hori dela eta, ez nuke borondatez FC sare bat zabalduko 2020an, beste alternatiba interesgarriago batzuk daudela jakinda. Bakoitzak berea izan arren, egon daiteke FC bere muga guztiekin behar dugun guztia dela uste dutenak - ez dut argudiatuko, bakoitzak bere iritzia du. Hala ere, nire ustez irtenbiderik interesgarriena SDS bat erabiltzea da, Ceph adibidez.
Ceph-ek datu-biltegiratze-soluzio oso erabilgarri bat eraikitzeko aukera ematen du babeskopia-aukera posible ugarirekin, parekotasun egiaztapena duten kodeetatik hasita (raid 5 edo 6aren antzekoa) eta datuen erreplika osoa disko ezberdinetan amaituz, diskoen kokapena kontuan hartuta. zerbitzariak, eta zerbitzariak armairuetan, etab.
Ceph eraikitzeko 3 nodo gehiago behar dituzu. Biltegiarekiko interakzioa sarearen bidez ere egingo da bloke, objektu eta fitxategiak biltegiratzeko zerbitzuak erabiliz. Gehi diezaiogun biltegiratzea eskemari:
Oharra: konputazio-nodo hiperkonbergetuak ere egin ditzakezu -hau da hainbat funtzio konbinatzeko kontzeptua nodo batean -adibidez, biltegiratzea+konputazioa-, nodo berezirik eskaini gabe ceph biltegiratzerako. Akatsekiko tolerantzia-eskema bera lortuko dugu; izan ere, SDS-k datuak erreserbatuko ditu guk zehaztutako erreserba-mailarekin. Hala ere, nodo hiperkonbergetuak beti dira konpromisoa - biltegiratze-nodoak lehen begiratuan dirudienez airea berotzen ez duenez (makina birtualrik ez dagoenez) - CPU baliabideak gastatzen ditu SDS zerbitzuan (izan ere, guztia egiten du). nodoen, diskoen eta abarren hutsegiteen ondoren erreplikatzea eta berreskuratzea). Hau da, konputazio-nodo baten ahalmenaren zati bat galduko duzu biltegiratzearekin konbinatzen baduzu.
Gauza hauek guztiak nolabait kudeatu behar dira - makina bat, sare bat, bideratzaile birtual bat, etab sor ditzakegun zerbait behar dugu. Horretarako, aginte-panel gisa funtzionatuko duen kontrol-nodoan zerbitzu bat gehituko dugu - bezeroak http/ https bidez atari honetara konektatu eta behar duen guztia egin ahal izango du (beno, ia).
Ondorioz, akatsen aurrean sistema bat dugu orain. Azpiegitura honen elementu guztiak nolabait kudeatu behar dira. Aurretik deskribatu zen Openstack proiektu multzo bat dela, eta horietako bakoitzak funtzio zehatz bat eskaintzen du. Ikusten dugunez, konfiguratu eta kontrolatu beharreko elementuak baino gehiago daude. Gaur sarearen zatiari buruz hitz egingo dugu.
Neutroien arkitektura
OpenStack-en, Neutron da makina birtualeko atakak L2 sare komun batera konektatzeaz arduratzen dena, L2 sare ezberdinetan kokatutako VM-en arteko trafiko-bideraketa bermatuz, baita kanporako bideratzeaz, NAT, Floating IP, DHCP eta abar bezalako zerbitzuak eskainiz.
Maila altuan, sareko zerbitzuaren funtzionamendua (oinarrizko zatia) honela deskriba daiteke.
VM abiaraztean, sareko zerbitzua:
VM (edo ataka) jakin baterako ataka bat sortzen du eta DHCP zerbitzuari horren berri ematen dio;
Sare birtual gailu berri bat sortzen da (libvirt bidez);
VM 1. urratsean sortutako ataka(k) konektatzen da;
Bitxia bada ere, Neutronen lana Linux-en murgildu diren guztientzat ezagunak diren mekanismo estandarretan oinarritzen da - namespaces, iptables, linux bridges, openvswitch, conntrack, etab.
Berehala argitu behar da Neutron ez dela SDN kontroladore bat.
Neutroiak elkarri lotuta dauden hainbat osagaiz osatuta dago:
Openstack-neutroi-zerbitzaria APIaren bidez erabiltzaileen eskaerekin lan egiten duen deabru bat da. Deabru honek ez du sareko konexiorik erregistratzen parte hartzen, baina horretarako beharrezkoa den informazioa ematen die bere pluginei, gero nahi den sareko elementua konfiguratzen dutenak. OpenStack-eko nodoetako neutroi agenteak Neutron zerbitzarian erregistratzen dira.
Neutron-server python-en idatzitako aplikazio bat da, bi zatiz osatua:
REST zerbitzua
Neutron Plugin (nukleoa/zerbitzua)
REST zerbitzua beste osagai batzuen API deiak jasotzeko diseinatuta dago (adibidez, informazio batzuk emateko eskaera bat, etab.)
Plugin-ak API-eskaeretan deitzen diren software osagai/moduluak dira, hau da, zerbitzu baten atribuzioa haien bidez gertatzen da. Pluginak bi motatan banatzen dira: zerbitzua eta root. Oro har, zaldi-pluginak VM-en arteko helbide-espazioa eta L2 konexioak kudeatzeaz arduratzen da nagusiki, eta zerbitzu-pluginek dagoeneko funtzionalitate gehigarriak eskaintzen dituzte, hala nola VPN edo FW.
Gaur egun eskuragarri dauden pluginen zerrenda ikus daiteke adibidez Hemen
Hainbat zerbitzu-plugin egon daitezke, baina zaldi-plugin bakarra egon daiteke.
openstack-neutron-ml2 Openstack root plugin estandarra da. Plugin honek arkitektura modularra du (aurrekoak ez bezala) eta sare-zerbitzua hari konektatutako kontrolatzaileen bidez konfiguratzen du. Plugin bera geroago ikusiko dugu, izan ere, OpenStack-ek sareko zatian duen malgutasuna ematen baitu. Erroko plugina ordezkatu daiteke (adibidez, Contrail Networking-ek ordezkapen hori egiten du).
RPC zerbitzua (rabbitmq-server) β ilarak kudeatzea eta beste OpenStack zerbitzu batzuekin elkarrekintza eskaintzen duen zerbitzua, baita sareko zerbitzu-agenteen arteko elkarrekintza ere.
Sareko eragileak β nodo bakoitzean kokatzen diren agenteak, zeinen bidez sareko zerbitzuak konfiguratzen diren.
Hainbat eragile mota daude.
Agente nagusia da L2 agentea. Agente hauek hipervisore bakoitzean exekutatzen dira, kontrol-nodoak barne (zehatzago esanda, maizterentzako edozein zerbitzu eskaintzen duten nodo guztietan) eta haien funtzio nagusia makina birtualak L2 sare komun batera konektatzea da, eta gertaeraren bat gertatzen denean alertak sortzea ere ( adibidez, ataka desgaitu/gaitu).
Hurrengo agentea, ez da hain garrantzitsua L3 agentea. Lehenespenez, agente hau sare-nodo batean bakarrik exekutatzen da (askotan sare-nodoa kontrol-nodo batekin konbinatzen da) eta maizter-sareen arteko bideratzea eskaintzen du (bere sareen eta beste maizterren sareen artean, eta kanpoko munduarentzat eskuragarria da, NAT, baita DHCP zerbitzua ere). Hala ere, DVR (banatutako bideratzailea) erabiltzean, L3 plugin baten beharra ere agertzen da konputazio-nodoetan.
L3 agenteak Linux izen-espazioak erabiltzen ditu maizter bakoitzari bere sare isolatuen multzoa eta trafikoa bideratzen duten eta 2. geruzako sareetarako atebide zerbitzuak eskaintzen dituzten bideratzaile birtualen funtzionaltasuna eskaintzeko.
Datu-basea β sareen, azpisareen, ataken, igerilekuen eta abarren identifikatzaileen datu-basea.
Izan ere, Neutronek sareko edozein entitateren sorreratik API eskaerak onartzen ditu, eskaera autentifikatzen du eta RPC bidez (plugin edo agenteren batean sartzen bada) edo REST APIaren bidez (SDNn komunikatzen bada) agenteei transmititzen die (plugin bidez) eskatutako zerbitzua antolatzeko beharrezkoak diren argibideak.
Orain probako instalaziora jo dezagun (nola zabaltzen den eta bertan zer sartzen den, geroago ikusiko dugu zati praktikoan) eta ikus dezagun non dagoen osagai bakoitza:
(overcloud) [stack@undercloud ~]$ openstack network agent list
+--------------------------------------+--------------------+-------------------------------------+-------------------+-------+-------+---------------------------+
| ID | Agent Type | Host | Availability Zone | Alive | State | Binary |
+--------------------------------------+--------------------+-------------------------------------+-------------------+-------+-------+---------------------------+
| 10495de9-ba4b-41fe-b30a-b90ec3f8728b | Open vSwitch agent | overcloud-novacompute-1.localdomain | None | :-) | UP | neutron-openvswitch-agent |
| 1515ad4a-5972-46c3-af5f-e5446dff7ac7 | L3 agent | overcloud-controller-0.localdomain | nova | :-) | UP | neutron-l3-agent |
| 322e62ca-1e5a-479e-9a96-4f26d09abdd7 | DHCP agent | overcloud-controller-0.localdomain | nova | :-) | UP | neutron-dhcp-agent |
| 9c1de2f9-bac5-400e-998d-4360f04fc533 | Open vSwitch agent | overcloud-novacompute-0.localdomain | None | :-) | UP | neutron-openvswitch-agent |
| d99c5657-851e-4d3c-bef6-f1e3bb1acfb0 | Open vSwitch agent | overcloud-controller-0.localdomain | None | :-) | UP | neutron-openvswitch-agent |
| ff85fae6-5543-45fb-a301-19c57b62d836 | Metadata agent | overcloud-controller-0.localdomain | None | :-) | UP | neutron-metadata-agent |
+--------------------------------------+--------------------+-------------------------------------+-------------------+-------+-------+---------------------------+
(overcloud) [stack@undercloud ~]$
Egia esan, hori da Neutroiaren egitura osoa. Orain merezi du denbora pixka bat ematea ML2 pluginean.
2. geruza modularra
Goian esan bezala, plugina OpenStack root plugin estandarra da eta arkitektura modularra du.
ML2 pluginaren aurrekoak egitura monolitikoa zuen, eta horrek ez zuen baimentzen, adibidez, hainbat teknologiaren nahasketa instalazio batean erabiltzea. Esate baterako, ezin zenituzke biak openvswitch eta linuxbridge erabili aldi berean - ez lehenengoa ez bigarrena. Hori dela eta, ML2 plugina bere arkitekturarekin sortu zen.
ML2-k bi osagai ditu: bi kontrolatzaile mota: Mota kontrolatzaileak eta Mekanismoaren kontrolatzaileak.
Mota kontrolatzaileak zehaztu sareko konexioak antolatzeko erabiliko diren teknologiak, adibidez VxLAN, VLAN, GRE. Aldi berean, gidariak teknologia desberdinak erabiltzeko aukera ematen du. Teknologia estandarra VxLAN kapsulatzea da gainjarri sareetarako eta vlan kanpoko sareetarako.
Mota kontrolatzaileek sare mota hauek barne hartzen dituzte:
Flat - sarea etiketarik gabe VLANak - etiketatutako sarea Tokiko β Sare mota berezi bat bakarreko instalazioetarako (instalazio horiek beharrezkoak dira garatzaileentzat edo prestakuntzarako) GRE β gainjarri sarea GRE tunelak erabiliz VxLAN β gainjarri sarea VxLAN tunelak erabiliz
Mekanismoen gidariak Mota kontrolatzailean zehaztutako teknologien antolaketa ziurtatzen duten tresnak definitu - adibidez, openvswitch, sr-iov, opendaylight, OVN, etab.
Gidari honen ezarpenaren arabera, edo Neutronek kontrolatutako agenteak erabiliko dira, edo kanpoko SDN kontrolagailu baterako konexioak erabiliko dira, L2 sareak antolatzearekin, bideratzearekin, etab.
Adibidea: OVSrekin batera ML2 erabiltzen badugu, OVS kudeatzen duen nodo informatiko bakoitzean L2 agente bat instalatuko da. Hala ere, adibidez, OVN edo OpenDayLight erabiltzen baditugu, orduan OVSren kontrola haien eskumenean dago - Neutronek, root pluginaren bidez, komandoak ematen dizkio kontrolatzaileari, eta dagoeneko esandakoa egiten du.
Ikus dezagun Open vSwitch-en
Momentuz, OpenStack-en osagai nagusietako bat Open vSwitch da.
OpenStack SDN gehigarririk gabe instalatzen denean, hala nola Juniper Contrail edo Nokia Nuage, OVS hodeiko sareko sareko osagai nagusia da eta, iptables, conntrack, namespaces-ekin batera, maizterreko gainjartze sare osoak antolatzeko aukera ematen du. Jakina, osagai hau ordezkatu daiteke, adibidez, hirugarrenen jabedun (saltzaileak) SDN soluzioak erabiltzen dituzunean.
OVS kode irekiko software etengailua da, ingurune birtualizatuetan erabiltzeko diseinatuta dagoen trafiko birbidaltzaile birtual gisa.
Momentuz, OVS-k funtzionalitate oso duinak ditu, QoS, LACP, VLAN, VxLAN, GENEVE, OpenFlow, DPDK, etab.
Oharra: OVS ez zen hasiera batean karga handiko telekomunikazio-funtzioetarako etengailu leun gisa pentsatu eta banda zabalera gutxiago eskatzen duten IT funtzioetarako diseinatu zen, hala nola WEB zerbitzaria edo posta zerbitzaria. Hala ere, OVS gehiago garatzen ari da eta OVSren egungo inplementazioek bere errendimendua eta gaitasunak asko hobetu dituzte, eta horri esker, karga handiko funtzioak dituzten telekomunikazio-operadoreek erabil dezakete, adibidez, DPDK azeleraziorako euskarria duen OVS inplementazio bat dago.
OVSren hiru osagai garrantzitsuak ezagutu behar dituzu:
Kernel modulua β kontrol-elementutik jasotako arauetan oinarritutako trafikoa prozesatzen duen nukleoaren espazioan kokatutako osagaia;
vAldatu daemon (ovs-vswitchd) kernel modulua programatzeaz arduratzen den erabiltzailearen espazioan abiarazitako prozesu bat da, hau da, etengailuaren funtzionamenduaren logika zuzenean adierazten du.
Datu base zerbitzaria - OVS exekutatzen ari den ostalari bakoitzean kokatutako datu-base lokal bat, non konfigurazioa gordetzen den. SDN kontrolagailuak modulu honen bidez komunikatu daitezke OVSDB protokoloa erabiliz.
Hau guztia diagnostiko- eta kudeaketa-erabilgarritasun multzo batekin batera dator, hala nola ovs-vsctl, ovs-appctl, ovs-ofctl, etab.
Gaur egun, Openstack oso erabilia da telekomunikazio-operadoreek sareko funtzioak bertara migratzeko, hala nola EPC, SBC, HLR, etab. Funtzio batzuk OVSrekin arazorik gabe bizi daitezke den bezala, baina, adibidez, EPCk harpidedunen trafikoa prozesatzen du - gero pasatzen da. trafiko-kopuru handia (orain trafiko-bolumena segundoko ehunka gigabitetara iristen da). Jakina, trafiko hori kernel-espaziotik gidatzea (bere bidaltzailea lehenespenez bertan kokatzen baita) ez da ideiarik onena. Hori dela eta, OVS sarritan guztiz zabaltzen da erabiltzaile-espazioan DPDK azelerazio-teknologia erabiliz trafikoa NICtik erabiltzaile-espaziora birbidaltzeko nukleoa saihestuz.
Oharra: telekomunikazio-funtzioetarako zabaldutako hodei baterako, posible da trafikoa ateratzea konputazio-nodo batetik OVS zuzenean saihestuz ekipoa aldatzeko. SR-IOV eta Passthrough mekanismoak erabiltzen dira horretarako.
Nola funtzionatzen du hau benetako diseinu batean?
Tira, orain pasa gaitezen zati praktikora eta ikus dezagun nola funtzionatzen duen praktikan.
Lehenik eta behin, zabaldu dezagun Openstack instalazio sinple bat. Esperimentuetarako zerbitzari multzo bat eskura ez daukadanez, prototipoa zerbitzari fisiko batean muntatuko dugu makina birtualetatik. Bai, jakina, irtenbide hori ez da helburu komertzialetarako egokia, baina sareak Openstack-en funtzionatzen duen adibide bat ikusteko, horrelako instalazio bat nahikoa da begietarako. Gainera, instalazio hori are interesgarriagoa da prestakuntza helburuetarako - trafikoa harrapatzeko, etab.
Oinarrizko zatia bakarrik ikusi behar dugunez, ezin ditugu hainbat sare erabili, baina dena igo bi sare bakarrik erabiliz, eta diseinu honetako bigarren sarea esklusiboki undercloud eta DNS zerbitzarirako sarbidea izateko erabiliko da. Oraingoz ez ditugu kanpoko sareak ukituko - artikulu handi baten gaia da hau.
Beraz, has gaitezen ordenan. Lehenik eta behin, teoria txiki bat. Openstack TripleO erabiliz instalatuko dugu (Openstack Openstack-en). TripleO-ren funtsa da Openstack all-in-one (hau da, nodo batean) instalatzen dugula, undercloud izenekoa, eta gero inplementatutako Openstack-aren gaitasunak erabiltzea funtzionatzeko pentsatutako Openstack instalatzeko, overcloud izenekoa. Undercloud-ek zerbitzari fisikoak (barre metal) kudeatzeko berezko gaitasuna erabiliko du -Ironic proiektua- konputazio, kontrol eta biltegiratze nodoen rolak beteko dituzten hiperbistoreak hornitzeko. Hau da, ez dugu hirugarrenen tresnarik erabiltzen Openstack zabaltzeko; Openstack zabaltzen dugu Openstack erabiliz. Instalazioa aurrera egin ahala askoz argiago geratuko da, beraz, ez gara hor geldituko eta aurrera egingo.
Oharra: Artikulu honetan, sinpletasunaren mesedetan, ez dut sarearen isolamendua erabili Openstack barneko sareetarako, baina dena sare bakarra erabiliz zabaltzen da. Hala ere, sarearen isolamenduaren presentzia edo ez egoteak ez du konponbidearen oinarrizko funtzionalitatean eragiten - dena isolamendua erabiltzean bezala funtzionatuko du, baina trafikoa sare berean joango da. Instalazio komertzial baterako, beharrezkoa da isolamendua erabiltzea vlan eta interfaze desberdinak erabiliz. Esaterako, ceph biltegiratze-kudeaketako trafikoak eta datu-trafikoak berak (makinen diskoetarako sarbidea, etab.) isolatuta daudenean azpisare desberdinak erabiltzen dituzte (Biltegiratze-kudeaketa eta Biltegiratzea) eta honek irtenbidea akatsekiko tolerantzia handiagoa izatea ahalbidetzen du trafiko hori zatituz, adibidez. , portu ezberdinetan edo QoS profil desberdinak erabiliz trafiko desberdinetarako, datu-trafikoak seinaleztapen-trafikoa estutu ez dezan. Gure kasuan, sare berean joango dira eta egia esan horrek ez gaitu inola ere mugatzen.
Oharra: makina birtualak makina birtualetan oinarritutako ingurune birtualean exekutatuko ditugunez, lehenik eta behin birtualizazio habiatua gaitu behar dugu.
Habiaraturiko birtualizazioa gaituta dagoen edo ez egiazta dezakezu honela:
[root@hp-gen9 bormoglotx]# cat /sys/module/kvm_intel/parameters/nested
N
[root@hp-gen9 bormoglotx]#
N hizkia ikusten baduzu, habiaraturiko birtualizaziorako euskarria gaituko dugu sarean aurkitzen duzun gidaren arabera, adibidez. besteak beste, .
Makina birtualetatik honako zirkuitu hau muntatu behar dugu:
Nire kasuan, etorkizuneko instalazioaren parte diren makina birtualak konektatzeko (eta 7 lortu ditut, baina baliabide asko ez badituzu 4rekin atera zaitezke), OpenvSwitch erabili dut. Ovs zubi bat sortu nuen eta makina birtualak konektatu nituen portu-taldeen bidez. Horretarako, honelako xml fitxategi bat sortu dut:
Hiru ataka-talde deklaratzen dira hemen: bi sarbide eta enbor bat (azken hau DNS zerbitzarirako behar zen, baina gabe egin dezakezu edo makinan instalatu - zuretzako erosoena dena). Ondoren, txantiloi hau erabiliz, gurea deklaratzen dugu virsh net-define bidez:
Oharra: agertoki honetan, ovs-br1 atakako helbidea ez da eskuragarri izango vlan etiketarik ez duelako. Hau konpontzeko, sudo ovs-vsctl set port ovs-br1 tag=100 komandoa eman behar duzu. Hala ere, berrabiarazi ondoren, etiketa hau desagertu egingo da (norbaitek bere lekuan nola egin behar duen badaki, asko eskertuko dut). Baina hori ez da hain garrantzitsua, instalazioan zehar helbide hau bakarrik beharko dugulako eta ez baitugu beharko Openstack guztiz zabalduta dagoenean.
Instalazioan zehar, beharrezkoak diren parametro guztiak ezarri dituzu, hala nola, makinaren izena, pasahitzak, erabiltzaileak, ntp zerbitzariak, etab., berehala portuak konfigura ditzakezu, baina niri pertsonalki, instalazioaren ondoren, errazagoa da makinan saioa hastea. kontsola eta zuzendu behar diren fitxategiak. Dagoeneko prest egindako irudi bat baduzu, erabil dezakezu edo egin dudana egin - deskargatu gutxieneko Centos 7 irudia eta erabili VM instalatzeko.
Instalazio arrakastatsuaren ondoren, makina birtual bat izan beharko zenuke, hodei azpian instalatu ahal izateko
[root@hp-gen9 bormoglotx]# virsh list
Id Name State
----------------------------------------------------
6 dns-server running
62 undercloud running
Lehenik eta behin, instalatu instalazio-prozesurako beharrezkoak diren tresnak:
Erabiltzaile pila bat sortzen dugu, pasahitz bat ezartzen dugu, sudoer-era gehitzen dugu eta sudo bidez root komandoak exekutatzeko gaitasuna ematen diogu pasahitz bat sartu beharrik gabe:
Oharra: ceph instalatzeko asmoa ez baduzu, ez duzu zertan ceph-ekin lotutako komandoak sartu behar. Queens bertsioa erabili nuen, baina nahi duzun beste edozein erabil dezakezu.
Ondoren, kopiatu hodei azpiko konfigurazio fitxategia erabiltzailearen etxeko direktorio pilara:
undercloud_hostname β undercloud zerbitzariaren izen osoa, DNS zerbitzariko sarrerarekin bat etorri behar du
local_ip β tokiko hodeiko helbidea sare hornikuntzarako
sare_pasabidea β Overcloud nodoak instalatzean kanpoko mundura sartzeko atebide gisa funtzionatuko duen tokiko helbide bera ere tokiko iparekin bat dator.
undercloud_public_host β kanpoko API helbidea, hornikuntza-sarearen doako edozein helbide esleitzen da
undercloud_admin_host barneko API helbidea, hornikuntza-saretik doan edozein helbide esleitzen da
undercloud_nameservers - DNS zerbitzaria
sortu_zerbitzu_ziurtagiria - lerro hau oso garrantzitsua da uneko adibidean, izan ere, ez baduzu faltsu gisa ezartzen, errore bat jasoko duzu instalazioan, arazoa Red Hat akatsen jarraitzailean deskribatzen da.
tokiko_interfazea sare hornikuntzan interfazea. Interfaze hau birkonfiguratuko da hodei azpiko inplementazioan; beraz, bi interfaze izan behar dituzu hodeian: bata sartzeko, bigarrena hornitzeko.
tokiko_mtu - MTU. Proba laborategi bat daukagunez eta OVS switch-eko portuetan 1500eko MTU dudanez, beharrezkoa da 1450ean ezartzea, VxLAN-en kapsulatutako paketeak igaro daitezen.
sare_cidr β Hornidura-sarea
maskarada β NAT erabiliz kanpoko sare batera sartzeko
ikuskapen_iprange β Introspekziorako beharrezkoak diren helbide multzoa (ez luke goiko multzoarekin gainjarri behar)
scheduler_max_tempts β Overcloud instalatzeko gehieneko saiakera kopurua (nodo kopurua baino handiagoa edo berdina izan behar du)
Fitxategia deskribatu ondoren, azpiko hodeia zabaltzeko komandoa eman dezakezu:
openstack undercloud install
Prozedurak 10 eta 30 minutu behar ditu zure plantxaren arabera. Azken finean, honelako irteera ikusi beharko zenuke:
vi undercloud.conf
2020-08-13 23:13:12,668 INFO:
#############################################################################
Undercloud install complete.
The file containing this installation's passwords is at
/home/stack/undercloud-passwords.conf.
There is also a stackrc file at /home/stack/stackrc.
These files are needed to interact with the OpenStack services, and should be
secured.
#############################################################################
Irteera honek undercloud behar bezala instalatu duzula dio eta orain undercloud-en egoera egiaztatu dezakezula eta overcloud instalatzen jarraitu.
Ifconfig irteerara begiratzen baduzu, zubi-interfaze berri bat agertu dela ikusiko duzu
Momentuz undercloud baino ez dugu, eta ez dugu overcloud muntatuko duten nodo nahikorik. Horregatik, lehenik eta behin, heda ditzagun behar ditugun makina birtualak. Inplementazioan zehar, undercloud-ek berak OS eta beharrezko softwarea instalatuko ditu overcloud makinan - hau da, ez dugu makina guztiz zabaldu behar, baizik eta disko bat (edo diskoak) sortu eta bere parametroak zehaztu behar ditugu - hau da. Izan ere, OS instalatu gabe zerbitzari huts bat lortzen dugu.
Goazen gure makina birtualen diskoak dituen karpetara eta sortu behar den tamainako diskoak:
Root gisa ari garenez, disko hauen jabea aldatu behar dugu eskubideekin arazorik ez izateko:
[root@hp-gen9 images]# ls -lh
total 5.8G
drwxr-xr-x. 2 qemu qemu 4.0K Aug 13 16:15 backups
-rw-r--r--. 1 root root 61G Aug 14 03:07 compute-1.qcow2
-rw-r--r--. 1 root root 61G Aug 14 03:07 compute-2.qcow2
-rw-r--r--. 1 root root 61G Aug 14 03:07 control-1.qcow2
-rw-------. 1 qemu qemu 41G Aug 14 03:03 dns-server.qcow2
-rw-r--r--. 1 root root 161G Aug 14 03:07 storage-1.qcow2
-rw-r--r--. 1 root root 161G Aug 14 03:07 storage-2.qcow2
-rw-------. 1 qemu qemu 41G Aug 14 03:07 undercloud.qcow2
[root@hp-gen9 images]#
[root@hp-gen9 images]#
[root@hp-gen9 images]# chown qemu:qemu /var/lib/libvirt/images/*qcow2
[root@hp-gen9 images]# ls -lh
total 5.8G
drwxr-xr-x. 2 qemu qemu 4.0K Aug 13 16:15 backups
-rw-r--r--. 1 qemu qemu 61G Aug 14 03:07 compute-1.qcow2
-rw-r--r--. 1 qemu qemu 61G Aug 14 03:07 compute-2.qcow2
-rw-r--r--. 1 qemu qemu 61G Aug 14 03:07 control-1.qcow2
-rw-------. 1 qemu qemu 41G Aug 14 03:03 dns-server.qcow2
-rw-r--r--. 1 qemu qemu 161G Aug 14 03:07 storage-1.qcow2
-rw-r--r--. 1 qemu qemu 161G Aug 14 03:07 storage-2.qcow2
-rw-------. 1 qemu qemu 41G Aug 14 03:08 undercloud.qcow2
[root@hp-gen9 images]#
Oharra: ez baduzu ceph instalatu asmorik aztertzeko, komandoek ez dituzte gutxienez 3 nodo sortzen gutxienez bi diskorekin, baina txantiloian adierazi vda, vdb, etab. disko birtualak erabiliko direla.
Bikaina, orain makina hauek guztiak definitu behar ditugu:
Bukaeran -print-xml > /tmp/storage-1.xml komando bat dago, makina bakoitzaren deskribapenarekin /tmp/ karpetan xml fitxategi bat sortzen duena; gehitzen ez baduzu, ez zara egongo makina birtualak identifikatzeko gai.
Orain makina hauek guztiak virsh-en definitu behar ditugu:
virsh define --file /tmp/control-1.xml
virsh define --file /tmp/compute-1.xml
virsh define --file /tmp/compute-2.xml
virsh define --file /tmp/storage-1.xml
virsh define --file /tmp/storage-2.xml
[root@hp-gen9 ~]# virsh list --all
Id Name State
----------------------------------------------------
6 dns-server running
64 undercloud running
- compute-1 shut off
- compute-2 shut off
- control-1 shut off
- storage-1 shut off
- storage-2 shut off
[root@hp-gen9 ~]#
Orain Γ±abardura txiki bat - tripleO-k IPMI erabiltzen du zerbitzariak kudeatzeko instalazioan eta introspekzioan.
Introspekzioa hardwarea ikuskatzeko prozesua da, nodoak gehiago hornitzeko beharrezkoak diren parametroak lortzeko. Introspekzioa ironikoa erabiliz egiten da, bare metal zerbitzariekin lan egiteko diseinatutako zerbitzua.
Baina hona hemen arazoa - hardware IPMI zerbitzariek portu bereizi bat duten arren (edo partekatutako ataka bat, baina hori ez da garrantzitsua), orduan makina birtualek ez dute horrelako atakarik. Hemen vbmc izeneko makulu bat datorkigu laguntza - IPMI ataka bat emulatzeko aukera ematen duen erabilgarritasuna. Γabardura honi arreta jartzea merezi du bereziki laborategi bat ESXI hipervisorean ezarri nahi dutenentzat - egia esan, ez dakit vbmc-ren analogikorik duen, beraz, merezi du arazo honi buruz galdetzea dena zabaldu aurretik. .
Instalatu vbmc:
yum install yum install python2-virtualbmc
Zure sistema eragileak ezin badu paketea aurkitzen, gehitu biltegia:
Uste dut komandoaren sintaxia argia dela azalpenik gabe. Hala ere, oraingoz gure saio guztiak BEHERA egoeran daude. GORA egoerara pasatzeko, gaitu behar dituzu:
[root@hp-gen9 ~]# vbmc start control-1
2020-08-14 03:15:57,826.826 13149 INFO VirtualBMC [-] Started vBMC instance for domain control-1
[root@hp-gen9 ~]# vbmc start storage-1
2020-08-14 03:15:58,316.316 13149 INFO VirtualBMC [-] Started vBMC instance for domain storage-1
[root@hp-gen9 ~]# vbmc start storage-2
2020-08-14 03:15:58,851.851 13149 INFO VirtualBMC [-] Started vBMC instance for domain storage-2
[root@hp-gen9 ~]# vbmc start compute-1
2020-08-14 03:15:59,307.307 13149 INFO VirtualBMC [-] Started vBMC instance for domain compute-1
[root@hp-gen9 ~]# vbmc start compute-2
2020-08-14 03:15:59,712.712 13149 INFO VirtualBMC [-] Started vBMC instance for domain compute-2
[root@hp-gen9 ~]#
[root@hp-gen9 ~]#
[root@hp-gen9 ~]# vbmc list
+-------------+---------+---------+------+
| Domain name | Status | Address | Port |
+-------------+---------+---------+------+
| compute-1 | running | :: | 7004 |
| compute-2 | running | :: | 7005 |
| control-1 | running | :: | 7001 |
| storage-1 | running | :: | 7002 |
| storage-2 | running | :: | 7003 |
+-------------+---------+---------+------+
[root@hp-gen9 ~]#
Eta azken ukitua - suebakiaren arauak zuzendu behar dituzu (edo guztiz desgaitu):
Orain joan gaitezen hodeietara eta egiaztatu dena funtzionatzen ari dela. Ostalari-makinaren helbidea 192.168.255.200 da, undercloud-en beharrezko ipmitool paketea gehitu genuen hedapenerako prestatzerakoan:
[stack@undercloud ~]$ ipmitool -I lanplus -U admin -P admin -H 192.168.255.200 -p 7001 power status
Chassis Power is off
[stack@undercloud ~]$ ipmitool -I lanplus -U admin -P admin -H 192.168.255.200 -p 7001 power on
Chassis Power Control: Up/On
[stack@undercloud ~]$
[root@hp-gen9 ~]# virsh list
Id Name State
----------------------------------------------------
6 dns-server running
64 undercloud running
65 control-1 running
Ikus dezakezunez, kontrol-nodoa arrakastaz abiarazi dugu vbmc bidez. Orain itzali eta aurrera egin dezagun:
[stack@undercloud ~]$ ipmitool -I lanplus -U admin -P admin -H 192.168.255.200 -p 7001 power off
Chassis Power Control: Down/Off
[stack@undercloud ~]$ ipmitool -I lanplus -U admin -P admin -H 192.168.255.200 -p 7001 power status
Chassis Power is off
[stack@undercloud ~]$
[root@hp-gen9 ~]# virsh list --all
Id Name State
----------------------------------------------------
6 dns-server running
64 undercloud running
- compute-1 shut off
- compute-2 shut off
- control-1 shut off
- storage-1 shut off
- storage-2 shut off
[root@hp-gen9 ~]#
Hurrengo urratsa overcloud instalatuko den nodoen introspekzioa da. Horretarako, json fitxategi bat prestatu behar dugu gure nodoen deskribapenarekin. Kontuan izan, zerbitzari hutsetan instalatzea ez bezala, fitxategiak makina bakoitzerako vbmc zein atakatan exekutatzen ari den adierazten duela.
[root@hp-gen9 ~]# virsh domiflist --domain control-1
Interface Type Source Model MAC
-------------------------------------------------------
- network ovs-network-1 virtio 52:54:00:20:a2:2f
- network ovs-network-1 virtio 52:54:00:3f:87:9f
[root@hp-gen9 ~]# virsh domiflist --domain compute-1
Interface Type Source Model MAC
-------------------------------------------------------
- network ovs-network-1 virtio 52:54:00:98:e9:d6
[root@hp-gen9 ~]# virsh domiflist --domain compute-2
Interface Type Source Model MAC
-------------------------------------------------------
- network ovs-network-1 virtio 52:54:00:6a:ea:be
[root@hp-gen9 ~]# virsh domiflist --domain storage-1
Interface Type Source Model MAC
-------------------------------------------------------
- network ovs-network-1 virtio 52:54:00:79:0b:cb
[root@hp-gen9 ~]# virsh domiflist --domain storage-2
Interface Type Source Model MAC
-------------------------------------------------------
- network ovs-network-1 virtio 52:54:00:a7:fe:27
Oharra: kontrol-nodoak bi interfaze ditu, baina kasu honetan ez da garrantzitsua, instalazio honetan bat nahikoa izango zaigu.
Orain json fitxategia prestatzen dugu. Horniketa-zerbitzua egingo den portuaren amatxo-helbidea, nodoen parametroak, izenak eman eta ipmira nola iritsi adierazi behar dugu:
Orain ironikorako irudiak prestatu behar ditugu. Horretarako, deskargatu wget bidez eta instalatu:
(undercloud) [stack@undercloud ~]$ sudo wget https://images.rdoproject.org/queens/delorean/current-tripleo-rdo/overcloud-full.tar --no-check-certificate
(undercloud) [stack@undercloud ~]$ sudo wget https://images.rdoproject.org/queens/delorean/current-tripleo-rdo/ironic-python-agent.tar --no-check-certificate
(undercloud) [stack@undercloud ~]$ ls -lh
total 1.9G
-rw-r--r--. 1 stack stack 447M Aug 14 10:26 ironic-python-agent.tar
-rw-r--r--. 1 stack stack 1.5G Aug 14 10:26 overcloud-full.tar
-rw-------. 1 stack stack 916 Aug 13 23:10 stackrc
-rw-r--r--. 1 stack stack 15K Aug 13 22:50 undercloud.conf
-rw-------. 1 stack stack 2.0K Aug 13 22:50 undercloud-passwords.conf
(undercloud) [stack@undercloud ~]$ mkdir images/
(undercloud) [stack@undercloud ~]$ tar -xpvf ironic-python-agent.tar -C ~/images/
ironic-python-agent.initramfs
ironic-python-agent.kernel
(undercloud) [stack@undercloud ~]$ tar -xpvf overcloud-full.tar -C ~/images/
overcloud-full.qcow2
overcloud-full.initrd
overcloud-full.vmlinuz
(undercloud) [stack@undercloud ~]$
(undercloud) [stack@undercloud ~]$ ls -lh images/
total 1.9G
-rw-rw-r--. 1 stack stack 441M Aug 12 17:24 ironic-python-agent.initramfs
-rwxr-xr-x. 1 stack stack 6.5M Aug 12 17:24 ironic-python-agent.kernel
-rw-r--r--. 1 stack stack 53M Aug 12 17:14 overcloud-full.initrd
-rw-r--r--. 1 stack stack 1.4G Aug 12 17:18 overcloud-full.qcow2
-rwxr-xr-x. 1 stack stack 6.5M Aug 12 17:14 overcloud-full.vmlinuz
(undercloud) [stack@undercloud ~]$
Irudiak hodeian kargatzen:
(undercloud) [stack@undercloud ~]$ openstack overcloud image upload --image-path ~/images/
Image "overcloud-full-vmlinuz" was uploaded.
+--------------------------------------+------------------------+-------------+---------+--------+
| ID | Name | Disk Format | Size | Status |
+--------------------------------------+------------------------+-------------+---------+--------+
| c2553770-3e0f-4750-b46b-138855b5c385 | overcloud-full-vmlinuz | aki | 6761064 | active |
+--------------------------------------+------------------------+-------------+---------+--------+
Image "overcloud-full-initrd" was uploaded.
+--------------------------------------+-----------------------+-------------+----------+--------+
| ID | Name | Disk Format | Size | Status |
+--------------------------------------+-----------------------+-------------+----------+--------+
| 949984e0-4932-4e71-af43-d67a38c3dc89 | overcloud-full-initrd | ari | 55183045 | active |
+--------------------------------------+-----------------------+-------------+----------+--------+
Image "overcloud-full" was uploaded.
+--------------------------------------+----------------+-------------+------------+--------+
| ID | Name | Disk Format | Size | Status |
+--------------------------------------+----------------+-------------+------------+--------+
| a2f2096d-c9d7-429a-b866-c7543c02a380 | overcloud-full | qcow2 | 1487475712 | active |
+--------------------------------------+----------------+-------------+------------+--------+
Image "bm-deploy-kernel" was uploaded.
+--------------------------------------+------------------+-------------+---------+--------+
| ID | Name | Disk Format | Size | Status |
+--------------------------------------+------------------+-------------+---------+--------+
| e413aa78-e38f-404c-bbaf-93e582a8e67f | bm-deploy-kernel | aki | 6761064 | active |
+--------------------------------------+------------------+-------------+---------+--------+
Image "bm-deploy-ramdisk" was uploaded.
+--------------------------------------+-------------------+-------------+-----------+--------+
| ID | Name | Disk Format | Size | Status |
+--------------------------------------+-------------------+-------------+-----------+--------+
| 5cf3aba4-0e50-45d3-929f-27f025dd6ce3 | bm-deploy-ramdisk | ari | 461759376 | active |
+--------------------------------------+-------------------+-------------+-----------+--------+
(undercloud) [stack@undercloud ~]$
Irudi guztiak kargatu direla egiaztatzea
(undercloud) [stack@undercloud ~]$ openstack image list
+--------------------------------------+------------------------+--------+
| ID | Name | Status |
+--------------------------------------+------------------------+--------+
| e413aa78-e38f-404c-bbaf-93e582a8e67f | bm-deploy-kernel | active |
| 5cf3aba4-0e50-45d3-929f-27f025dd6ce3 | bm-deploy-ramdisk | active |
| a2f2096d-c9d7-429a-b866-c7543c02a380 | overcloud-full | active |
| 949984e0-4932-4e71-af43-d67a38c3dc89 | overcloud-full-initrd | active |
| c2553770-3e0f-4750-b46b-138855b5c385 | overcloud-full-vmlinuz | active |
+--------------------------------------+------------------------+--------+
(undercloud) [stack@undercloud ~]$
Beste gauza bat - DNS zerbitzari bat gehitu behar duzu:
(undercloud) [stack@undercloud ~]$ openstack overcloud node import --introspect --provide inspection.json
Started Mistral Workflow tripleo.baremetal.v1.register_or_update. Execution ID: d57456a3-d8ed-479c-9a90-dff7c752d0ec
Waiting for messages on queue 'tripleo' with no timeout.
5 node(s) successfully moved to the "manageable" state.
Successfully registered node UUID b4b2cf4a-b7ca-4095-af13-cc83be21c4f5
Successfully registered node UUID b89a72a3-6bb7-429a-93bc-48393d225838
Successfully registered node UUID 20a16cc0-e0ce-4d88-8f17-eb0ce7b4d69e
Successfully registered node UUID bfc1eb98-a17a-4a70-b0b6-6c0db0eac8e8
Successfully registered node UUID 766ab623-464c-423d-a529-d9afb69d1167
Waiting for introspection to finish...
Started Mistral Workflow tripleo.baremetal.v1.introspect. Execution ID: 6b4d08ae-94c3-4a10-ab63-7634ec198a79
Waiting for messages on queue 'tripleo' with no timeout.
Introspection of node b89a72a3-6bb7-429a-93bc-48393d225838 completed. Status:SUCCESS. Errors:None
Introspection of node 20a16cc0-e0ce-4d88-8f17-eb0ce7b4d69e completed. Status:SUCCESS. Errors:None
Introspection of node bfc1eb98-a17a-4a70-b0b6-6c0db0eac8e8 completed. Status:SUCCESS. Errors:None
Introspection of node 766ab623-464c-423d-a529-d9afb69d1167 completed. Status:SUCCESS. Errors:None
Introspection of node b4b2cf4a-b7ca-4095-af13-cc83be21c4f5 completed. Status:SUCCESS. Errors:None
Successfully introspected 5 node(s).
Started Mistral Workflow tripleo.baremetal.v1.provide. Execution ID: f5594736-edcf-4927-a8a0-2a7bf806a59a
Waiting for messages on queue 'tripleo' with no timeout.
5 node(s) successfully moved to the "available" state.
(undercloud) [stack@undercloud ~]$
Irteeran ikus dezakezun bezala, dena akatsik gabe osatu da. Egiaztatu dezagun nodo guztiak eskuragarri dauden egoeran daudela:
(undercloud) [stack@undercloud ~]$ openstack baremetal node list
+--------------------------------------+-----------+---------------+-------------+--------------------+-------------+
| UUID | Name | Instance UUID | Power State | Provisioning State | Maintenance |
+--------------------------------------+-----------+---------------+-------------+--------------------+-------------+
| b4b2cf4a-b7ca-4095-af13-cc83be21c4f5 | control-1 | None | power off | available | False |
| b89a72a3-6bb7-429a-93bc-48393d225838 | storage-1 | None | power off | available | False |
| 20a16cc0-e0ce-4d88-8f17-eb0ce7b4d69e | storage-2 | None | power off | available | False |
| bfc1eb98-a17a-4a70-b0b6-6c0db0eac8e8 | compute-1 | None | power off | available | False |
| 766ab623-464c-423d-a529-d9afb69d1167 | compute-2 | None | power off | available | False |
+--------------------------------------+-----------+---------------+-------------+--------------------+-------------+
(undercloud) [stack@undercloud ~]$
Nodoak beste egoera batean badaude, normalean kudeagarriak direnean, zerbait gaizki joan da eta erregistroa begiratu eta zergatik gertatu den jakin behar duzu. Kontuan izan agertoki honetan birtualizazioa erabiltzen ari garela eta makina birtualen edo vbmc erabiltzearekin lotutako akatsak egon daitezkeela.
Ondoren, zein nodok zein funtzio beteko duen adierazi behar dugu, hau da, nodoak zein profil erabiliko duen adierazi:
Benetako instalazio batean pertsonalizatutako txantiloiak erabiliko dira naturalki, gure kasuan horrek asko zailduko du prozesua, txantiloiaren edizio bakoitza azaldu beharko baita. Lehen idatzi zen bezala, instalazio soil bat ere nahikoa izango da nola funtzionatzen duen ikusteko.
Oharra: --libvirt-type qemu aldagaia beharrezkoa da kasu honetan, birtualizazio habiatua erabiliko baitugu. Bestela, ezin izango dituzu makina birtualak exekutatu.
Orain ordubete inguru duzu, edo agian gehiago (hardwarearen gaitasunen arabera) eta denbora hori igaro ondoren mezu hau ikusiko duzula espero dezakezu:
Orain openstack-en bertsio ia osoa duzu, eta bertan aztertu, esperimentatu eta abar dezakezu.
Egiaztatu dezagun dena ondo funtzionatzen duela. Erabiltzailearen hasierako direktorio-pilean bi fitxategi daude: bat stackrc (undercloud kudeatzeko) eta bigarrena overcloudrc (overcloud kudeatzeko). Fitxategi hauek iturri gisa zehaztu behar dira, autentifikaziorako beharrezkoa den informazioa baitute.
(undercloud) [stack@undercloud ~]$ openstack server list
+--------------------------------------+-------------------------+--------+-------------------------+----------------+--------------+
| ID | Name | Status | Networks | Image | Flavor |
+--------------------------------------+-------------------------+--------+-------------------------+----------------+--------------+
| fd7d36f4-ce87-4b9a-93b0-add2957792de | overcloud-controller-0 | ACTIVE | ctlplane=192.168.255.15 | overcloud-full | control |
| edc77778-8972-475e-a541-ff40eb944197 | overcloud-novacompute-1 | ACTIVE | ctlplane=192.168.255.26 | overcloud-full | compute |
| 5448ce01-f05f-47ca-950a-ced14892c0d4 | overcloud-cephstorage-1 | ACTIVE | ctlplane=192.168.255.34 | overcloud-full | ceph-storage |
| ce6d862f-4bdf-4ba3-b711-7217915364d7 | overcloud-novacompute-0 | ACTIVE | ctlplane=192.168.255.19 | overcloud-full | compute |
| e4507bd5-6f96-4b12-9cc0-6924709da59e | overcloud-cephstorage-0 | ACTIVE | ctlplane=192.168.255.44 | overcloud-full | ceph-storage |
+--------------------------------------+-------------------------+--------+-------------------------+----------------+--------------+
(undercloud) [stack@undercloud ~]$
(undercloud) [stack@undercloud ~]$ source overcloudrc
(overcloud) [stack@undercloud ~]$
(overcloud) [stack@undercloud ~]$ openstack project list
+----------------------------------+---------+
| ID | Name |
+----------------------------------+---------+
| 4eed7d0f06544625857d51cd77c5bd4c | admin |
| ee1c68758bde41eaa9912c81dc67dad8 | service |
+----------------------------------+---------+
(overcloud) [stack@undercloud ~]$
(overcloud) [stack@undercloud ~]$
(overcloud) [stack@undercloud ~]$ openstack network agent list
+--------------------------------------+--------------------+-------------------------------------+-------------------+-------+-------+---------------------------+
| ID | Agent Type | Host | Availability Zone | Alive | State | Binary |
+--------------------------------------+--------------------+-------------------------------------+-------------------+-------+-------+---------------------------+
| 10495de9-ba4b-41fe-b30a-b90ec3f8728b | Open vSwitch agent | overcloud-novacompute-1.localdomain | None | :-) | UP | neutron-openvswitch-agent |
| 1515ad4a-5972-46c3-af5f-e5446dff7ac7 | L3 agent | overcloud-controller-0.localdomain | nova | :-) | UP | neutron-l3-agent |
| 322e62ca-1e5a-479e-9a96-4f26d09abdd7 | DHCP agent | overcloud-controller-0.localdomain | nova | :-) | UP | neutron-dhcp-agent |
| 9c1de2f9-bac5-400e-998d-4360f04fc533 | Open vSwitch agent | overcloud-novacompute-0.localdomain | None | :-) | UP | neutron-openvswitch-agent |
| d99c5657-851e-4d3c-bef6-f1e3bb1acfb0 | Open vSwitch agent | overcloud-controller-0.localdomain | None | :-) | UP | neutron-openvswitch-agent |
| ff85fae6-5543-45fb-a301-19c57b62d836 | Metadata agent | overcloud-controller-0.localdomain | None | :-) | UP | neutron-metadata-agent |
+--------------------------------------+--------------------+-------------------------------------+-------------------+-------+-------+---------------------------+
(overcloud) [stack@undercloud ~]$
Nire instalazioak ukitu txiki bat behar du oraindik: kontrolagailuan ibilbide bat gehitzea, lan egiten dudan makina beste sare batean baitago. Horretarako, joan heat-admin kontuaren kontrola-1era eta erregistratu ibilbidea
(undercloud) [stack@undercloud ~]$ ssh [email protected]
Last login: Fri Aug 14 09:47:40 2020 from 192.168.255.1
[heat-admin@overcloud-controller-0 ~]$
[heat-admin@overcloud-controller-0 ~]$
[heat-admin@overcloud-controller-0 ~]$ sudo ip route add 10.169.0.0/16 via 192.168.255.254
Beno, orain horizontean sartu zaitezke. Informazio guztia - helbideak, saioa hasteko eta pasahitza - /home/stack/overcloudrc fitxategian dago. Azken diagrama itxura hau du:
Bide batez, gure instalazioan, makinen helbideak DHCP bidez igortzen ziren eta, ikusten duzuenez, "ausaz" ematen dira. Inplementazioan zehar zein helbideri erantsi behar zaion txantiloian zehatz dezakezu, behar izanez gero.
Nola gertatzen da trafikoa makina birtualen artean?
Artikulu honetan trafikoa pasatzeko hiru aukera aztertuko ditugu
Bi makina hipervisor batean L2 sare batean
Bi makina hipervisor desberdinetan L2 sare berean
Bi makina sare ezberdinetan (sareen arteko errotzea)
Kanpoko sare baten bidez kanpoko mundura sarbidea duten kasuak, helbide flotagarriak erabiliz, baita bideratze banatua ere, hurrengoan kontuan hartuko ditugu, oraingoz barne trafikoan zentratuko gara.
Egiaztatzeko, bildu dezagun diagrama hau:
4 makina birtual sortu ditugu - 3 L2 sare batean - net-1, eta beste 1 net-2 sarean
(overcloud) [stack@undercloud ~]$ nova list --tenant 5e18ce8ec9594e00b155485f19895e6c
+--------------------------------------+------+----------------------------------+--------+------------+-------------+-----------------+
| ID | Name | Tenant ID | Status | Task State | Power State | Networks |
+--------------------------------------+------+----------------------------------+--------+------------+-------------+-----------------+
| f53b37b5-2204-46cc-aef0-dba84bf970c0 | vm-1 | 5e18ce8ec9594e00b155485f19895e6c | ACTIVE | - | Running | net-1=10.0.1.85 |
| fc8b6722-0231-49b0-b2fa-041115bef34a | vm-2 | 5e18ce8ec9594e00b155485f19895e6c | ACTIVE | - | Running | net-1=10.0.1.88 |
| 3cd74455-b9b7-467a-abe3-bd6ff765c83c | vm-3 | 5e18ce8ec9594e00b155485f19895e6c | ACTIVE | - | Running | net-1=10.0.1.90 |
| 7e836338-6772-46b0-9950-f7f06dbe91a8 | vm-4 | 5e18ce8ec9594e00b155485f19895e6c | ACTIVE | - | Running | net-2=10.0.2.8 |
+--------------------------------------+------+----------------------------------+--------+------------+-------------+-----------------+
(overcloud) [stack@undercloud ~]$
Ikus dezagun zer hipervisoretan dauden sortutako makinak:
Baina trafikoa nola gertatzen den ikusi baino lehen, ikus dezagun zer daukagun kontrol-nodoan (sare-nodoa ere bada) eta konputazio-nodoan. Has gaitezen konputazio-nodoarekin.
Momentuz, nodoak hiru ovs zubi ditu - br-int, br-tun, br-ex. Bien artean, ikusten dugunez, interfaze multzo bat dago. Ulertzeko erraztasuna lortzeko, irudikatu ditzagun interfaze horiek guztiak diagraman eta ikus dezagun zer gertatzen den.
VxLAN tunelak altxatzen diren helbideei erreparatuz, ikus daiteke tunel bat konputazio-1era igotzen dela (192.168.255.26), bigarren tunelak kontrola-1 (192.168.255.15). Baina interesgarriena da br-ex-ek ez duela interfaze fisikorik, eta zer fluxu konfiguratuta dauden begiratuz gero, zubi honek momentuz trafikoa soilik jaitsi dezakeela ikusiko duzu.
Lehen arauaren arabera, phy-br-ex atakatik zetorren guztia baztertu behar da.
Egia esan, gaur egun ez dago trafikoa zubi honetara sartzeko beste inon interfaze honetatik (br-int-eko interfazea) izan ezik, eta tantak ikusita, BUM trafikoa zubian sartu da dagoeneko.
Hau da, trafikoa VxLAN tuneletik bakarrik irten daiteke nodo honetatik eta kito. Hala ere, DVR-a pizten baduzu, egoera aldatuko da, baina horri beste behin egingo diogu aurre. Sarearen isolamendua erabiltzean, adibidez vlanak erabiliz, ez duzu L3 interfaze bat izango 0 vlanean, hainbat interfaze baizik. Hala ere, VxLAN trafikoak nodotik irtengo da modu berean, baina vlan dedikatu moduko batean kapsulatutakoa ere bai.
Ordenatu dugu konputazio-nodoa, joan gaitezen kontrol-nodora.
Izan ere, dena berdina dela esan dezakegu, baina IP helbidea jada ez dago interfaze fisikoan, zubi birtualean baizik. Hau egiten da portu hori trafikoa kanpotik aterako den portua delako.
Ataka hau br-ex zubiari lotuta dago eta bertan vlan etiketarik ez dagoenez, ataka hau vlan guztiak onartzen dituen enbor ataka da, orain trafikoa etiketarik gabe ateratzen da, vlan-id 0-k adierazten duen moduan. goiko irteera.
Une honetan beste guztia konputazio-nodoaren antzekoa da: zubi berdinak, tunel berdinak bi konputazio-nodotara doaz.
Artikulu honetan ez ditugu biltegiratze-nodoak kontuan hartuko, baina ulertzeko beharrezkoa da esan behar da nodo horien sarearen zatia hutsala dela lotsagarriraino. Gure kasuan, ataka fisiko bakarra (eth0) dago esleitutako IP helbide batekin eta kitto. Ez dago VxLAN tunelik, tunel zubirik, etab. - ez dago batere ovs, ez baitago punturik. Sarearen isolamendua erabiltzean, nodo honek bi interfaze izango ditu (portu fisikoak, bodny edo bi vlan besterik ez - ez du axola - nahi duzunaren araberakoa da) - bat kudeaketarako, bigarrena trafikorako (VM diskoan idaztea). , diskotik irakurtzea, etab.)
Zerbitzurik ezean nodoetan duguna asmatu dugu. Orain abiarazi ditzagun 4 makina birtual eta ikus ditzagun goian deskribatutako eskema nola aldatzen den - portuak, bideratzaile birtualak eta abar izan beharko genituzke.
Orain arte gure sarea honelakoa da:
Ordenagailu nodo bakoitzean bi makina birtual ditugu. Compute-0 adibide gisa erabiliz, ikus dezagun dena nola sartzen den.
[heat-admin@overcloud-novacompute-0 ~]$ sudo virsh list
Id Name State
----------------------------------------------------
1 instance-00000001 running
3 instance-00000003 running
[heat-admin@overcloud-novacompute-0 ~]$
Makinak interfaze birtual bakarra du - tap95d96a75-a0:
[heat-admin@overcloud-novacompute-0 ~]$ sudo virsh domiflist instance-00000001
Interface Type Source Model MAC
-------------------------------------------------------
tap95d96a75-a0 bridge qbr95d96a75-a0 virtio fa:16:3e:44:98:20
[heat-admin@overcloud-novacompute-0 ~]$
Interfaze honek linux zubian ikusten du:
[heat-admin@overcloud-novacompute-0 ~]$ sudo brctl show
bridge name bridge id STP enabled interfaces
docker0 8000.0242904c92a8 no
qbr5bd37136-47 8000.5e4e05841423 no qvb5bd37136-47
tap5bd37136-47
qbr95d96a75-a0 8000.de076cb850f6 no qvb95d96a75-a0
tap95d96a75-a0
[heat-admin@overcloud-novacompute-0 ~]$
Irteeran ikus dezakezun bezala, zubian bi interfaze baino ez daude: tap95d96a75-a0 eta qvb95d96a75-a0.
Hona hemen OpenStack-eko sare birtualeko gailu motetan pixka bat sakontzea:
vtap - instantzia bati (VM) erantsitako interfaze birtuala
qbr - Linux zubia
qvb eta qvo - vEth bikotea Linux zubiarekin eta Open vSwitch zubiarekin konektatuta
br-int, br-tun, br-vlan β Ireki vSwitch zubiak
patch-, int-br-, phy-br- - Ireki vSwitch adabaki-interfazeak zubiak konektatzeko
qg, qr, ha, fg, sg - Ireki gailu birtualek OVSra konektatzeko erabiltzen dituzten vSwitch portuak
Ulertzen duzunez, zubian qvb95d96a75-a0 ataka badugu, hau da, vEth bikotea, nonbait dago bere parekoa, logikoki qvo95d96a75-a0 deitu beharko litzatekeena. Ikus dezagun zer ataka dauden OVSn.
Ikus dezakegunez, portua br-int dago. Br-int-ek makina birtualeko atakak amaitzen dituen etengailu gisa jokatzen du. qvo95d96a75-a0-z gain, qvo5bd37136-47 ataka ikusgai dago irteeran. Hau bigarren makina birtualaren ataka da. Ondorioz, gure diagrama honen itxura du orain:
Irakurle arretatsua berehala interesatu beharko lukeen galdera bat - zein da makina birtualaren atakaren eta OVS atakaren arteko linux-zubia? Kontua da makina babesteko segurtasun taldeak erabiltzen direla, iptables baino ez direnak. OVS ez da iptables-ekin funtzionatzen, beraz, "makulu" hau asmatu zen. Hala ere, zaharkituta geratzen ari da - bertsio berrietan conntrack-ek ordezkatzen ari da.
Hau da, azken finean, eskemak honela dauka:
Bi makina hipervisor batean L2 sare batean
Bi VM hauek L2 sare berean eta hipervisor berean daudenez, haien arteko trafikoa logikoki br-int bidez joango da, bi makinak VLAN berean egongo baitira:
[heat-admin@overcloud-novacompute-0 ~]$ sudo virsh domiflist instance-00000001
Interface Type Source Model MAC
-------------------------------------------------------
tap95d96a75-a0 bridge qbr95d96a75-a0 virtio fa:16:3e:44:98:20
[heat-admin@overcloud-novacompute-0 ~]$
[heat-admin@overcloud-novacompute-0 ~]$
[heat-admin@overcloud-novacompute-0 ~]$ sudo virsh domiflist instance-00000003
Interface Type Source Model MAC
-------------------------------------------------------
tap5bd37136-47 bridge qbr5bd37136-47 virtio fa:16:3e:83:ad:a4
[heat-admin@overcloud-novacompute-0 ~]$
[heat-admin@overcloud-novacompute-0 ~]$ sudo ovs-appctl fdb/show br-int
port VLAN MAC Age
6 1 fa:16:3e:83:ad:a4 0
3 1 fa:16:3e:44:98:20 0
[heat-admin@overcloud-novacompute-0 ~]$
Bi makina hipervisor desberdinetan L2 sare berean
Ikus dezagun orain nola joango den trafikoa L2 sare bereko bi makinen artean, baina hipervisor desberdinetan kokatuta. Egia esateko, ez da ezer asko aldatuko, hipervisoren arteko trafikoa vxlan tuneletik igaroko da. Ikus dezagun adibide bat.
Trafikoa ikusiko dugun makina birtualen helbideak:
[heat-admin@overcloud-novacompute-0 ~]$ sudo virsh domiflist instance-00000001
Interface Type Source Model MAC
-------------------------------------------------------
tap95d96a75-a0 bridge qbr95d96a75-a0 virtio fa:16:3e:44:98:20
[heat-admin@overcloud-novacompute-0 ~]$
[heat-admin@overcloud-novacompute-1 ~]$ sudo virsh domiflist instance-00000002
Interface Type Source Model MAC
-------------------------------------------------------
tape7e23f1b-07 bridge qbre7e23f1b-07 virtio fa:16:3e:72:ad:53
[heat-admin@overcloud-novacompute-1 ~]$
br-int-en birbidaltze-taula begiratuko dugu compute-0-n:
Hau da, jasotako paketea 3. atakara joango da, eta horren atzean dagoeneko makina birtualaren instantzia-00000003 dago.
Azpiegitura birtualean ikasteko Openstack hedatzearen edertasuna hiperbissoreen arteko trafikoa erraz har dezakegula da eta horrekin zer gertatzen den ikusi. Hau da orain egingo duguna, exekutatu tcpdump vnet atakan compute-0 aldera:
[root@hp-gen9 bormoglotx]# tcpdump -vvv -i vnet3
tcpdump: listening on vnet3, link-type EN10MB (Ethernet), capture size 262144 bytes
*****************omitted*******************
04:39:04.583459 IP (tos 0x0, ttl 64, id 16868, offset 0, flags [DF], proto UDP (17), length 134)
192.168.255.19.39096 > 192.168.255.26.4789: [no cksum] VXLAN, flags [I] (0x08), vni 22
IP (tos 0x0, ttl 64, id 8012, offset 0, flags [DF], proto ICMP (1), length 84)
10.0.1.85 > 10.0.1.88: ICMP echo request, id 5634, seq 16, length 64
04:39:04.584449 IP (tos 0x0, ttl 64, id 35181, offset 0, flags [DF], proto UDP (17), length 134)
192.168.255.26.speedtrace-disc > 192.168.255.19.4789: [no cksum] VXLAN, flags [I] (0x08), vni 22
IP (tos 0x0, ttl 64, id 59124, offset 0, flags [none], proto ICMP (1), length 84)
10.0.1.88 > 10.0.1.85: ICMP echo reply, id 5634, seq 16, length 64
*****************omitted*******************
Lehen lerroak erakusten du 10.0.1.85 helbidetik Patek 10.0.1.88 helbidera doala (ICMP trafikoa), eta vni 22 duen VxLAN pakete batean bilduta dagoela eta paketea 192.168.255.19 (konputatu-0) ostalaritik 192.168.255.26ra doa. .1 (konputatu-XNUMX). VNIa ovs-en zehaztutakoarekin bat datorrela egiaztatu dezakegu.
Itzul gaitezen lerro honetara actions=load:0->NXM_OF_VLAN_TCI[],load:0x16->NXM_NX_TUN_ID[],output:2. 0x16 vni da zenbaki sistema hamaseimalean. Bihur dezagun zenbaki hau 16. sistemara:
16 = 6*16^0+1*16^1 = 6+16 = 22
Hau da, vni errealitateari dagokio.
Bigarren lerroan itzulerako trafikoa agertzen da, ba, ez du balio azaltzeak, hor dena argi dago.
Bi makina sare ezberdinetan (sareen arteko bideratzea)
Gaurko azken kasua proiektu baten barruan sareen arteko bideratzea da bideratzaile birtual bat erabiliz. DVRrik gabeko kasu bat aztertzen ari gara (beste artikulu batean aztertuko dugu), beraz bideratzea sareko nodoan gertatzen da. Gure kasuan, sare-nodoa ez dago aparteko entitate batean jartzen eta kontrol-nodoan kokatzen da.
Lehenik eta behin, ikus dezagun bideratzeak funtzionatzen duela:
$ ping 10.0.2.8
PING 10.0.2.8 (10.0.2.8): 56 data bytes
64 bytes from 10.0.2.8: seq=0 ttl=63 time=7.727 ms
64 bytes from 10.0.2.8: seq=1 ttl=63 time=3.832 ms
^C
--- 10.0.2.8 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 3.832/5.779/7.727 ms
Kasu honetan paketea atebidera joan behar denez eta bertara bideratu behar denez, atebidearen mitxoleta helbidea aurkitu behar dugu, eta horretarako ARP taula begiratuko dugu instantzian:
$ arp
host-10-0-1-254.openstacklocal (10.0.1.254) at fa:16:3e:c4:64:70 [ether] on eth0
host-10-0-1-1.openstacklocal (10.0.1.1) at fa:16:3e:e6:2c:5c [ether] on eth0
host-10-0-1-90.openstacklocal (10.0.1.90) at fa:16:3e:83:ad:a4 [ether] on eth0
host-10-0-1-88.openstacklocal (10.0.1.88) at fa:16:3e:72:ad:53 [ether] on eth0
Orain ikus dezagun nora bidali behar den helmuga duen trafikoa (10.0.1.254) fa:16:3e:c4:64:70:
Trafikoa kontrol-nodoraino iritsi da, beraz bertara joan eta bideratzea nola gertatuko den ikusi behar dugu.
Gogoratzen duzunez, barruko kontrol-nodoak konputazio-nodoaren itxura berdina zuen: hiru zubi berdinak, br-ex-ek bakarrik zuen ataka fisiko bat nodoak kanpora bidali ahal izateko. Instantziak sortzeak konputazio-nodoen konfigurazioa aldatu zuen - linux zubia, iptables eta interfazeak gehitu ziren nodoetara. Sareak eta bideratzaile birtual bat sortzeak ere arrastoa utzi zuen kontrol-nodoaren konfigurazioan.
Beraz, bistakoa da atebideko MAC helbideak kontrol-nodoko br-int birbidaltze-taulan egon behar duela. Egiazta dezagun hor dagoela eta non bilatzen ari den:
Mac qr-0c52b15f-8f atakatik ikusten da. Openstack-eko ataka birtualen zerrendara itzultzen bagara, ataka mota hau hainbat gailu birtual OVSra konektatzeko erabiltzen da. Zehatzago esateko, qr bideratzaile birtualerako ataka da, izen-espazio gisa irudikatzen dena.
Ikus dezagun zer izen-espazio dauden zerbitzarian:
Hiru ale bezainbeste. Baina izenak ikusita, horietako bakoitzaren helburua asma dezakezu. 0 eta 1 ID duten instantzietara itzuliko gara geroago, orain qrouter-0a4d2420-4b9c-46bd-aec1-86a1ef299abe izen-espazioa interesatzen zaigu:
[heat-admin@overcloud-controller-0 ~]$ sudo ip netns exec qrouter-0a4d2420-4b9c-46bd-aec1-86a1ef299abe ip route
10.0.1.0/24 dev qr-0c52b15f-8f proto kernel scope link src 10.0.1.254
10.0.2.0/24 dev qr-92fa49b5-54 proto kernel scope link src 10.0.2.254
[heat-admin@overcloud-controller-0 ~]$
Izen-espazio honek lehenago sortu ditugun bi barne ditu. Bi ataka birtualak gehitu dira br-int-era. Egiaztatu dezagun qr-0c52b15f-8f atakaren mac helbidea, trafikoa, helmugako mac helbidea ikusita, interfaze honetara joan zen.
Hau da, kasu honetan, dena bideratze estandarraren legeen arabera funtzionatzen du. Trafikoa 10.0.2.8 ostalarira zuzenduta dagoenez, bigarren interfazetik irten behar du qr-92fa49b5-54 eta vxlan tuneletik konputazio-nodoraino joan behar du:
[heat-admin@overcloud-controller-0 ~]$ sudo ip netns exec qrouter-0a4d2420-4b9c-46bd-aec1-86a1ef299abe arp
Address HWtype HWaddress Flags Mask Iface
10.0.1.88 ether fa:16:3e:72:ad:53 C qr-0c52b15f-8f
10.0.1.90 ether fa:16:3e:83:ad:a4 C qr-0c52b15f-8f
10.0.2.8 ether fa:16:3e:6c:ad:9c C qr-92fa49b5-54
10.0.2.42 ether fa:16:3e:f5:0b:29 C qr-92fa49b5-54
10.0.1.85 ether fa:16:3e:44:98:20 C qr-0c52b15f-8f
[heat-admin@overcloud-controller-0 ~]$
Dena logikoa da, ezustekorik gabe. Ikus dezagun 10.0.2.8 ostalariaren mitxoleta helbidea non dagoen ikusgai br-int-en:
[heat-admin@overcloud-novacompute-1 ~]$ brctl show
bridge name bridge id STP enabled interfaces
docker0 8000.02429c001e1c no
qbr3210e8ec-c0 8000.ea27f45358be no qvb3210e8ec-c0
tap3210e8ec-c0
qbre7e23f1b-07 8000.b26ac0eded8a no qvbe7e23f1b-07
tape7e23f1b-07
[heat-admin@overcloud-novacompute-1 ~]$
[heat-admin@overcloud-novacompute-1 ~]$ sudo virsh domiflist instance-00000004
Interface Type Source Model MAC
-------------------------------------------------------
tap3210e8ec-c0 bridge qbr3210e8ec-c0 virtio fa:16:3e:6c:ad:9c
[heat-admin@overcloud-novacompute-1 ~]$
Egia esan, pakete osoan zehar joan ginen. Uste dut konturatu zinela trafikoa vxlan tunel ezberdinetatik igaro eta VNI ezberdinekin irten zela. Ikus dezagun zer nolako VNI diren horiek, ondoren nodoaren kontrol-atarian iraulketa bat bilduko dugu eta trafikoa goian deskribatutako moduan zuzentzen dela ziurtatuko dugu.
Beraz, 0 kalkulatzeko tunelak ekintza hauek ditu=load:0->NXM_OF_VLAN_TCI[],load:0x16->NXM_NX_TUN_ID[],output:3. Bihur ditzagun 0x16 zenbaki-sistema hamartarra:
[root@hp-gen9 bormoglotx]# tcpdump -vvv -i vnet4
tcpdump: listening on vnet4, link-type EN10MB (Ethernet), capture size 262144 bytes
*****************omitted*******************
04:35:18.709949 IP (tos 0x0, ttl 64, id 48650, offset 0, flags [DF], proto UDP (17), length 134)
192.168.255.19.41591 > 192.168.255.15.4789: [no cksum] VXLAN, flags [I] (0x08), vni 22
IP (tos 0x0, ttl 64, id 49042, offset 0, flags [DF], proto ICMP (1), length 84)
10.0.1.85 > 10.0.2.8: ICMP echo request, id 5378, seq 9, length 64
04:35:18.710159 IP (tos 0x0, ttl 64, id 23360, offset 0, flags [DF], proto UDP (17), length 134)
192.168.255.15.38983 > 192.168.255.26.4789: [no cksum] VXLAN, flags [I] (0x08), vni 99
IP (tos 0x0, ttl 63, id 49042, offset 0, flags [DF], proto ICMP (1), length 84)
10.0.1.85 > 10.0.2.8: ICMP echo request, id 5378, seq 9, length 64
04:35:18.711292 IP (tos 0x0, ttl 64, id 43596, offset 0, flags [DF], proto UDP (17), length 134)
192.168.255.26.42588 > 192.168.255.15.4789: [no cksum] VXLAN, flags [I] (0x08), vni 99
IP (tos 0x0, ttl 64, id 55103, offset 0, flags [none], proto ICMP (1), length 84)
10.0.2.8 > 10.0.1.85: ICMP echo reply, id 5378, seq 9, length 64
04:35:18.711531 IP (tos 0x0, ttl 64, id 8555, offset 0, flags [DF], proto UDP (17), length 134)
192.168.255.15.38983 > 192.168.255.19.4789: [no cksum] VXLAN, flags [I] (0x08), vni 22
IP (tos 0x0, ttl 63, id 55103, offset 0, flags [none], proto ICMP (1), length 84)
10.0.2.8 > 10.0.1.85: ICMP echo reply, id 5378, seq 9, length 64
*****************omitted*******************
Lehenengo paketea vxlan pakete bat da 192.168.255.19 ostalaritik (konputatu-0) ostalarira 192.168.255.15 (kontrol-1) vni 22rekin, zeinaren barruan ICMP pakete bat 10.0.1.85 ostalaritik 10.0.2.8 ostalarira paketatuta dagoen. Goian kalkulatu dugun bezala, vni irteeran ikusi dugunarekin bat dator.
Bigarren paketea vxlan pakete bat da 192.168.255.15 ostalaritik (kontrol-1) ostalarira 192.168.255.26 (konputatu-1) vni 99rekin, zeinaren barruan ICMP pakete bat 10.0.1.85 ostalaritik 10.0.2.8 ostalarira paketatuta dagoen. Goian kalkulatu dugun bezala, vni irteeran ikusi dugunarekin bat dator.
Hurrengo bi paketeak 10.0.2.8tik ez 10.0.1.85etik itzultzeko trafikoa dira.
Hau da, azkenean kontrol-nodoen eskema hau lortu dugu:
Hodeiko plataformaren arkitekturari buruz hitz egin dugunez, ona litzateke makinek DHCP zerbitzari batetik helbideak automatikoki jasotzea. Hauek bi DHCP zerbitzari dira gure bi sareetarako 10.0.1.0/24 eta 10.0.2.0/24.
Egiaztatu dezagun hori egia dela. Izen-espazio honetan helbide bakarra dago - 10.0.1.1 - DHCP zerbitzariaren helbidea bera, eta br-int-en ere sartzen da:
Ondorioz, kontrol-nodoan honako zerbitzu multzo hauek lortuko ditugu:
Beno, kontuan izan - hau 4 makina besterik ez da, 2 barne sare eta bideratzaile birtual bat... Hemen ez dugu kanpoko sarerik orain, proiektu ezberdin mordoa, bakoitza bere sareekin (gainjarririk), eta badugu banatutako bideratzaile bat itzali zen, eta azken finean, proba-bankuan kontrol-nodo bakarra zegoen (hutsen tolerantziarako hiru nodoko quoruma egon behar da). Logikoa da merkataritzan dena "pixka bat" konplikatuagoa izatea, baina adibide sinple honetan ulertzen dugu nola funtzionatu behar duen - 3 edo 300 izen-espazio edukitzea garrantzitsua da noski, baina osoaren funtzionamenduaren ikuspuntutik. egitura, ezer ez da asko aldatuko... nahiz eta saltzaileen SDNren bat konektatuko ez duzun arte. Baina hori guztiz bestelako istorio bat da.
Espero dut interesgarria izan zela. Iruzkinak/gehikuntzak badituzu, edo nonbait gezurra esan nion (gizakia naiz eta nire iritzia beti subjektiboa izango da) - idatzi zuzendu/gehitu beharrekoa - dena zuzendu/gehituko dugu.
Amaitzeko, hitz batzuk esan nahiko nituzke Openstack (bai bainila eta saltzailea) VMWare-ren hodeiko soluzioarekin alderatzeari buruz - maizegi egin didate galdera hau azken bi urteetan eta, egia esanda, nago dagoeneko nekatuta, baina hala ere. Nire ustez, oso zaila da bi irtenbide hauek alderatzea, baina zalantzarik gabe esan dezakegu bi soluzioetan desabantailak daudela eta irtenbide bat aukeratzerakoan alde onak eta txarrak neurtu behar dituzula.
OpenStack komunitateak bultzatutako irtenbidea bada, orduan VMWare-k nahi duena bakarrik egiteko eskubidea du (irakurtzea - ββzer den errentagarria beretzat) eta hori logikoa da - bere bezeroekin dirua irabazteko ohituta dagoen merkataritza-enpresa bat delako. Baina handi eta lodi bat dago BAINA - OpenStack-etik irten zaitezke, adibidez, Nokia-tik, eta gastu gutxirekin, adibidez, Juniper-en (Contrail Cloud) irtenbide batera alda dezakezu, baina nekez aterako zara VMWaretik. . Niretzat, bi irtenbide hauek honelakoak dira - Openstack (saltzailea) kaiola soil bat da, bertan jartzen zaituzten, baina giltza daukazu eta edozein unetan utzi dezakezu. VMWare urrezko kaiola da, jabeak kaiolaren giltza du eta asko kostatuko zaizu.
Ez naiz lehen produktua edo bigarrena sustatzen ari; zuk aukeratzen duzu behar duzuna. Baina aukera hori izango banu, bi irtenbideak aukeratuko nituzke - VMWare IT hodeirako (karga baxuak, kudeaketa erraza), OpenStack saltzaile batzuena (Nokia eta Juniper-ek giltza eskuan oso irtenbide onak eskaintzen dituzte) - Telecom hodeirako. Ez nuke Openstack erabiliko IT hutserako - txolarreak kanoi batekin tiro egitea bezalakoa da, baina ez dut ikusten erredundantziaz gain erabiltzeko kontraindikaziorik. Hala ere, VMWare telekomunikazioetan erabiltzea Ford Raptor batean harri birrindua garraiatzea bezalakoa da; ederra da kanpotik, baina gidariak bat egin beharrean 10 bidaia egin behar ditu.
Nire ustez, VMWare-ren desabantailarik handiena erabateko itxitasuna da - konpainiak ez dizu nola funtzionatzen duenari buruzko informaziorik emango, adibidez, vSAN edo hipervisorearen nukleoan dagoenari buruz - ez da errentagarria, hau da, izango duzu. ez zaitez inoiz VMWare-n aditua izan - saltzaileen laguntzarik gabe, kondenatuta zaude (askotan galdera hutsalek nahastuta dauden VMWare-ko adituak ezagutzen ditut). Niretzat, VMWare auto bat erosten ari da kanpaia blokeatuta daukala - bai, baliteke kodifikazio-uhala alda dezaketen espezialistak izatea, baina soluzio hau saldu dizunak bakarrik ireki dezake kapaia. Pertsonalki, ez ditut gustuko sartu ezin ditudan irtenbideak. Esango duzu agian ez duzula kanpai azpian sartu behar. Bai, hau posible da, baina begiratuko zaitut hodeian funtzio handi bat muntatu behar duzunean 20-30 makina birtualetatik, 40-50 sareetatik, erdiak kanpora atera nahi dituena eta bigarren erdiak eskatzen duena. SR-IOV azelerazioa, bestela dozena pare bat auto gehiago beharko dituzu; bestela, errendimendua ez da nahikoa izango.
Badira beste ikuspuntu batzuk, beraz, zuk bakarrik erabaki dezakezu zer aukeratu eta, batez ere, orduan izango zara zure aukeraren ardura. Hau nire iritzia besterik ez da - gutxienez 4 produktu ikusi eta ukitu dituen pertsona bat - Nokia, Juniper, Red Hat eta VMWare. Hau da, badut zerbait konparatzeko.