Pasiuna sa network nga bahin sa imprastraktura sa panganod

Pasiuna sa network nga bahin sa imprastraktura sa panganod

Ang cloud computing nagkalawom ug nagkalawom sa atong kinabuhi ug lagmit walay bisan usa ka tawo nga wala makagamit sa bisan unsang cloud services bisan kausa lang. Bisan pa, unsa ang usa ka panganod ug kung giunsa kini molihok, sa kadaghanan, pipila ka mga tawo ang nahibal-an bisan sa lebel sa usa ka ideya. Ang 5G nahimong usa ka kamatuoran ug ang imprastraktura sa telecom nagsugod sa paglihok gikan sa mga solusyon sa poste ngadto sa mga solusyon sa panganod, sama sa nahitabo sa dihang kini mibalhin gikan sa tanan nga mga solusyon sa hardware ngadto sa virtualized nga "mga haligi".

Karon maghisgot kami bahin sa sulud nga kalibutan sa imprastraktura sa panganod, labi na, pag-analisar namon ang mga sukaranan sa bahin sa network.

Unsa ang panganod? Ang parehas nga virtualization - usa ka pagtan-aw sa profile?

Labaw pa sa lohikal nga pangutana. Dili - dili kini virtualization, bisan kung dili kini mahimo kung wala kini. Tagda ang duha ka kahulugan:

Cloud Computing (gitawag nga Cloud) usa ka modelo sa paghatag og user-friendly nga access sa gipang-apod-apod nga mga kapanguhaan sa kompyuter nga kinahanglang i-deploy ug ilunsad sa panginahanglan nga adunay pinakaubos nga posibleng latency ug gamay nga gasto sa service provider.

Virtualization - kini ang abilidad sa pagbahin sa usa ka pisikal nga entidad (pananglitan, usa ka server) sa daghang mga virtual, sa ingon nagdugang ang paggamit sa mga kahinguhaan (pananglitan, ikaw adunay 3 nga mga server nga gikarga sa 25-30 porsyento, pagkahuman sa virtualization nakakuha ka usa ka server nga gikarga. sa 1-80 porsyento). Natural, ang virtualization mokaon sa pipila ka mga kapanguhaan - kinahanglan nimo nga pakan-on ang hypervisor, bisan pa, ingon sa gipakita sa praktis, ang dula takus sa kandila. Usa ka sulundon nga pananglitan sa virtualization mao ang VMWare, nga maayo kaayo sa pag-andam sa mga virtual machine, o pananglitan KVM, nga gusto nako, apan kini usa na ka butang sa lami.

Gigamit namo ang virtualization sa among kaugalingon nga wala makaamgo niini, ug bisan ang mga iron router naggamit na sa virtualization - pananglitan, sa pinakabag-o nga bersyon sa JunOS, ang operating system gi-install isip usa ka virtual machine sa ibabaw sa real-time nga linux distribution (Wind River 9). Apan ang virtualization dili ang panganod, apan ang panganod dili maglungtad kung wala ang virtualization.

Ang virtualization usa sa mga bloke sa pagtukod diin gitukod ang panganod.

Dili kini molihok sa paghimo sa usa ka panganod pinaagi lamang sa pagkolekta sa daghang mga hypervisors sa usa ka L2 nga domain, pagdugang usa ka pares nga yaml nga mga playbook alang sa awtomatikong pagrehistro sa mga vlan pinaagi sa usa ka matang sa ansible ug pagpuno sa usa ka butang sama sa usa ka sistema sa orkestrasyon niini aron awtomatiko nga makahimo og mga virtual machine. Sa mas tukma, kini mahitabo, apan ang resulta nga Frankenstein dili ang panganod nga atong gikinahanglan, bisan kung kini sama sa usa ka tawo, tingali alang sa usa ka tawo kini ang katapusang damgo. Dugang pa, kung imong kuhaon ang parehas nga Openstack, sa tinuud Frankenstein pa kini, apan oh, dili na naton hisgutan kana sa karon.

Apan akong nasabtan nga gikan sa kahulugan nga gipresentar sa ibabaw dili kini hingpit nga tin-aw kung unsa ang tinuod nga matawag nga panganod.

Busa, ang dokumento gikan sa NIST (National Institute of Standards and Technology) naglista sa 5 ka nag-unang mga kinaiya nga kinahanglan adunay usa ka cloud infrastructure:

Paghatag serbisyo kung gihangyo. Ang tiggamit kinahanglan nga hatagan ug libre nga pag-access sa mga kahinguhaan sa kompyuter nga gigahin kaniya (sama sa mga network, virtual disk, memorya, mga cores sa processor, ug uban pa), ug kini nga mga kapanguhaan kinahanglan nga awtomatiko nga gihatag - nga mao, nga wala’y interbensyon gikan sa service provider.

Lapad nga pagkaanaa sa serbisyo. Ang pag-access sa mga kahinguhaan kinahanglan nga ihatag sa mga standard nga mekanismo aron tugutan ang paggamit sa parehas nga mga standard nga PC ug manipis nga kliyente ug mga mobile device.

Paghiusa sa mga kapanguhaan ngadto sa mga pool. Ang mga pool sa kahinguhaan kinahanglan maghatag mga kapanguhaan sa daghang mga kliyente sa parehas nga oras, pagsiguro nga ang mga kliyente nahimulag ug dili manghilabot sa usag usa ug makigkompetensya alang sa mga kapanguhaan. Ang mga network gilakip usab sa mga pool, nga nagpakita sa posibilidad sa paggamit sa crossed addressing. Ang mga pool kinahanglan nga mosuporta sa on-demand scaling. Ang paggamit sa mga pool nagtugot kanimo sa paghatag sa gikinahanglan nga lebel sa sayop nga pagtugot sa mga kahinguhaan ug abstraction sa pisikal ug virtual nga mga kahinguhaan - ang nakadawat sa serbisyo gihatag lamang sa hugpong sa mga kahinguhaan nga iyang gihangyo (diin kini nga mga kahinguhaan nahimutang sa pisikal, kung pila ang mga server ug switch - ang kliyente wala magtagad). Bisan pa, kinahanglan nga tagdon sa usa ang kamatuoran nga ang taghatag kinahanglan nga masiguro ang transparent nga pagreserba sa kini nga mga kapanguhaan.

Dali nga pagpahiangay sa lainlaing mga kondisyon. Ang mga serbisyo kinahanglan nga flexible-paghatag og mga kapanguhaan sa madali, pag-relocate kanila, pagdugang o pagpakunhod sa mga kapanguhaan sa hangyo sa kliyente, ug ang kliyente kinahanglan nga adunay pagbati nga ang cloud resources walay katapusan. Alang sa kasayon ​​sa pagsabut, pananglitan, wala ka makakita og pasidaan nga ang bahin sa imong disk space nawala sa Apple iCloud tungod sa kamatuoran nga ang hard drive sa server nabuak, ug ang mga disk nabuak. Dugang pa, sa imong bahin, ang mga posibilidad sa kini nga serbisyo hapit walay kinutuban - kinahanglan nimo ang 2 TB - wala’y problema, nagbayad ka ug nakadawat. Sa susama, mahimo ka maghatag usa ka pananglitan sa Google.Drive o Yandex.Disk.

Ang abilidad sa pagsukod sa serbisyo nga gihatag. Ang mga sistema sa panganod kinahanglan nga awtomatik nga magkontrol ug mag-optimize sa nahurot nga mga kapanguhaan, samtang kini nga mga mekanismo kinahanglan nga transparent sa tiggamit ug sa service provider. Kana mao, mahimo nimong susihon kanunay kung pila ka mga kapanguhaan ang imong gigamit ug ang imong mga kliyente.

Angayan nga tagdon ang kamatuoran nga kini nga mga kinahanglanon alang sa kadaghanan nga mga kinahanglanon alang sa usa ka publiko nga panganod, mao nga alang sa usa ka pribado nga panganod (nga mao, usa ka panganod nga gilansad alang sa mga internal nga panginahanglanon sa kompanya), kini nga mga kinahanglanon mahimo’g gamay nga ipasibo. Bisan pa, kinahanglan gihapon silang matuman, kung dili, dili naton makuha ang tanan nga mga benepisyo sa cloud computing.

Ngano nga kinahanglan naton ang usa ka panganod?

Bisan pa, ang bisan unsang bag-o o kasamtangan nga teknolohiya, bisan unsang bag-ong protocol gihimo alang sa usa ka butang (maayo, gawas sa RIP-ng, siyempre). Ang usa ka protocol alang sa usa ka protocol dili kinahanglan ni bisan kinsa (maayo, gawas sa RIP-ng, siyempre). Makataronganon nga ang Cloud gihimo aron maghatag usa ka matang sa serbisyo sa tiggamit / kliyente. Kitang tanan pamilyar sa labing menos usa ka magtiayon nga mga serbisyo sa panganod, sama sa Dropbox o Google.Docs, ug ako nagtuo nga kadaghanan kanila malampuson nga naggamit niini - pananglitan, kini nga artikulo gisulat gamit ang Google.Docs cloud nga serbisyo. Apan ang mga serbisyo sa panganod nga nahibal-an kanamo bahin lamang sa mga kapabilidad sa panganod - labi ka tukma, kini usa lamang ka serbisyo nga tipo sa SaaS. Makahatag kami ug serbisyo sa panganod sa tulo ka paagi: sa porma sa SaaS, PaaS o IaaS. Unsa nga serbisyo ang imong gikinahanglan nagdepende sa imong mga tinguha ug kapabilidad.

Atong tagdon ang matag usa sa han-ay:

Software ingon usa ka Serbisyo (SaaS) usa ka modelo sa paghatag ug bug-os nga serbisyo sa usa ka kliyente, pananglitan, usa ka serbisyo sa mail sama sa Yandex.Mail o Gmail. Sa kini nga modelo sa paghatud sa serbisyo, ikaw, ingon usa ka kliyente, wala gyud magbuhat bisan unsa gawas sa paggamit sa mga serbisyo - nga mao, dili nimo kinahanglan hunahunaon ang pag-configure sa serbisyo, ang pagtugot sa sayup o pag-usab niini. Ang nag-unang butang mao ang dili pagkompromiso sa imong password, ang tighatag niini nga serbisyo maoy mobuhat sa uban alang kanimo. Gikan sa punto sa panglantaw sa service provider, siya ang bug-os nga responsable sa tibuok serbisyo - gikan sa server hardware ug host operating system ngadto sa database ug software settings.

Platform ingon usa ka Serbisyo (PaaS) - kung gamiton kini nga modelo, ang service provider naghatag sa kliyente og workpiece alang sa serbisyo, pananglitan, magkuha kita og Web server. Ang service provider naghatag sa kliyente og usa ka virtual server (sa pagkatinuod, usa ka hugpong sa mga kahinguhaan, sama sa RAM / CPU / Storage / Nets, ug uban pa), ug gani gi-install ang OS ug ang gikinahanglan nga software niini nga server, bisan pa, ang kliyente iyang kaugalingon ang nag-configure niining tanan nga kaayohan ug alang sa pasundayag sa serbisyo na ang tubag sa kliyente. Ang service provider, sama sa miaging kaso, ang responsable sa paghimo sa pisikal nga kagamitan, hypervisors, ang virtual machine mismo, ang pagkaanaa sa network, ug uban pa, apan ang serbisyo mismo wala na sa lugar nga responsibilidad niini.

Ang imprastraktura ingon usa ka Serbisyo (IaaS) - kini nga pamaagi mas makapaikag, sa pagkatinuod, ang service provider naghatag sa kliyente sa usa ka kompleto nga virtualized nga imprastraktura - nga mao, ang usa ka matang sa set (pool) sa mga kapanguhaan, sama sa CPU Cores, RAM, Networks, ug uban pa. hangtod sa kliyente - kung unsa ang gusto nga buhaton sa kliyente sa kini nga mga kapanguhaan sa sulod sa pool nga gigahin niini (quota) - dili kini labi ka hinungdanon alang sa supplier. Kung gusto sa kliyente nga maghimo sa iyang kaugalingon nga vEPC o bisan maghimo usa ka mini operator ug maghatag serbisyo sa komunikasyon - walay pangutana - buhata kini. Sa ingon nga senaryo, ang service provider ang responsable sa pag-provision sa mga kapanguhaan, ang ilang pagtugot sa sayup ug pagkaanaa, ingon man alang sa OS, nga nagtugot sa pagtipon niini nga mga kapanguhaan ug paghatag niini sa kliyente nga adunay katakus sa pagdugang o pagkunhod sa mga kapanguhaan sa bisan unsang oras sa ang hangyo sa kliyente. Gi-configure sa kliyente ang tanan nga mga virtual machine ug uban pang mga tinsel pinaagi sa self-service portal ug mga console, lakip ang pag-assign sa mga network (gawas sa mga eksternal nga network).

Unsa ang OpenStack?

Sa tanan nga tulo nga mga kapilian, ang service provider nanginahanglan usa ka OS nga makahimo sa paghimo sa usa ka imprastraktura sa panganod. Sa pagkatinuod, uban sa SaaS, labaw pa sa usa ka dibisyon ang responsable sa tibuok nga stack sa mga teknolohiya - adunay usa ka dibisyon nga responsable sa imprastraktura - nga mao, kini naghatag sa IaaS sa laing dibisyon, kini nga dibisyon naghatag og SaaS sa kliyente. Ang OpenStack usa sa mga cloud operating system nga nagtugot kanimo sa pagkolekta sa usa ka hugpong sa mga switch, server ug storage system ngadto sa usa ka resource pool, gibahin kining komon nga pool ngadto sa mga subpool (mga tenant) ug ihatag kini nga mga kapanguhaan sa mga kliyente sa network.

Bukas ang Bukid usa ka cloud operating system nga nagtugot kanimo sa pagkontrolar sa dagkong mga pool sa computing resources, data storage ug network resources, nga gihatag ug gidumala pinaagi sa API gamit ang standard authentication mechanisms.

Sa ato pa, kini usa ka hugpong sa mga libre nga proyekto sa software nga gilaraw aron makahimo mga serbisyo sa panganod (publiko ug pribado) - nga mao, usa ka hugpong sa mga himan nga nagtugot kanimo sa paghiusa sa server ug pagbalhin sa mga kagamitan sa usa ka pundok sa mga kahinguhaan, pagdumala. kini nga mga kapanguhaan, nga naghatag sa gikinahanglan nga lebel sa pagtugot sa sayup.

Sa panahon sa pagsulat niini, ang istruktura sa OpenStack ingon niini:
Pasiuna sa network nga bahin sa imprastraktura sa panganod
Litrato nga gikuha gikan sa openstack.org

Ang matag usa sa mga sangkap nga gilakip sa OpenStack naghimo sa usa ka piho nga function. Kini nga gipang-apod-apod nga arkitektura nagtugot kanimo nga ilakip sa solusyon ang hugpong sa mga functional nga sangkap nga imong kinahanglan. Bisan pa, ang pipila nga mga sangkap mga sangkap sa gamut ug ang pagtangtang niini modala sa kompleto o partial nga pagkadili-maandar sa solusyon sa kinatibuk-an. Kini nga mga sangkap kasagaran giklasipikar sa:

  • dashboard - Web-based GUI para sa pagdumala sa mga serbisyo sa OpenStack
  • Sukaranang Bato - usa ka sentralisadong serbisyo sa identidad nga naghatag ug pag-ila ug pagpaandar sa pagtugot alang sa ubang mga serbisyo, ingon man pagdumala sa mga kredensyal sa tiggamit ug sa ilang mga tahas.
  • Neutron - usa ka serbisyo sa network nga naghatag koneksyon tali sa mga interface sa lainlaing mga serbisyo sa OpenStack (lakip ang koneksyon tali sa mga VM ug ang ilang pag-access sa gawas nga kalibutan)
  • Cinder - naghatag og access sa block storage alang sa virtual machines
  • Nova - pagdumala sa siklo sa kinabuhi sa mga virtual machine
  • Himaya - usa ka tipiganan sa mga imahe sa virtual machine ug mga snapshot
  • Swift - naghatag og access sa butang storage
  • Seilometer — usa ka serbisyo nga naghatag katakus sa pagkolekta sa telemetry ug pagsukod nga magamit ug magamit nga mga kapanguhaan
  • Heat — orkestra base sa mga templates alang sa awtomatik nga paghimo ug paghatag sa mga kahinguhaan

Ang usa ka kompleto nga lista sa tanan nga mga proyekto ug ang ilang katuyoan mahimong makita dinhi.

Ang matag usa sa mga sangkap sa OpenStack usa ka serbisyo nga responsable sa usa ka piho nga function ug naghatag usa ka API alang sa pagdumala niini nga function ug pakig-uban sa ubang mga serbisyo sa cloud operating system aron makahimo usa ka imprastraktura. Pananglitan, ang Nova naghatag og compute resource management ug API para sa pag-access sa resource data configuration, Glance naghatag og image management ug API para sa pagdumala niini, Cinder naghatag og block storage ug API para sa pagdumala niini, ug uban pa. Ang tanan nga mga gimbuhaton nalambigit sa usa ka suod kaayo nga paagi.

Bisan pa, kung imong tan-awon kini, ang tanan nga mga serbisyo nga nagdagan sa OpenStack sa katapusan usa ka matang sa virtual machine (o sudlanan) nga konektado sa network. Ang pangutana mitungha - nganong nagkinahanglan kita og daghang mga elemento?

Atong daganan ang algorithm sa paghimo og virtual machine ug pagkonektar niini sa network ug padayon nga pagtipig sa Openstack.

  1. Kung maghimo ka usa ka hangyo nga maghimo usa ka awto, bisan kung kini usa ka hangyo pinaagi sa Horizon (Dashboard) o usa ka hangyo pinaagi sa CLI, ang una nga butang nga mahitabo mao ang pagtugot sa imong hangyo sa Keystone - mahimo ka ba nga maghimo usa ka awto, adunay o husto sa paggamit niini nga network, ang imong quota nga proyekto, etc.
  2. Gipamatud-an sa Keystone ang imong hangyo ug nagmugna og usa ka timaan sa pag-ila sa tubag nga mensahe, nga gamiton sa ulahi. Human makadawat og tubag gikan sa Keystone, ang hangyo ipadala ngadto sa Nova (nova api).
  3. Gisusi sa Nova-api ang kabalido sa imong hangyo pinaagi sa pagkontak sa Keystone gamit ang nahimo na nga auth token kaniadto
  4. Ang Keystone nagpahigayon og authentication ug naghatag og impormasyon sa mga permiso ug mga pagdili base niining authentication token.
  5. Ang Nova-api nagmugna og bag-ong entry sa VM sa nova-database ug nagpadala og hangyo sa paghimo og makina sa nova-scheduler.
  6. Gipili sa Nova-scheduler ang host (computer node) diin ang VM ipakaylap base sa gipiho nga mga parameter, gibug-aton ug mga zone. Ang usa ka rekord niini ug ang VM ID gisulat sa nova-database.
  7. Sunod, ang nova-scheduler nagtawag sa nova-compute nga adunay hangyo nga i-deploy ang pananglitan. Ang Nova-compute nagtawag sa nova-conductor aron makakuha og impormasyon bahin sa mga parameter sa makina (nova-conductor usa ka elemento sa nova nga naglihok isip proxy server tali sa nova-database ug nova-compute, nga naglimite sa gidaghanon sa mga hangyo sa nova-database aron malikayan ang mga problema. uban sa database consistency load reduction).
  8. Gikuha sa Nova-conductor ang gihangyo nga impormasyon gikan sa nova-database ug gipasa kini sa nova-compute.
  9. Sunod, tan-aw sa nova-compute nga mga tawag aron makuha ang ID sa imahe. Gi-validate ni Glace ang hangyo sa Keystone ug gibalik ang gihangyo nga impormasyon.
  10. Ang Nova-compute nagtawag sa neutron alang sa kasayuran bahin sa mga parameter sa network. Sama sa pagtan-aw, ang neutron nag-validate sa hangyo sa Keystone, dayon nagmugna og entry sa database (port id, etc.), nagmugna og hangyo sa paghimo og port, ug nagbalik sa gipangayo nga impormasyon sa nova-compute.
  11. Ang Nova-compute nagtawag og cinder nga adunay hangyo nga igahin ang gidaghanon sa virtual machine. Sama sa pagtan-aw, ang cider nag-validate sa hangyo sa Keystone, nagmugna og hangyo sa paghimo og volume, ug nagbalik sa gipangayo nga impormasyon.
  12. Ang Nova-compute nagtawag sa libvirt nga adunay usa ka hangyo nga i-deploy ang usa ka virtual nga makina nga adunay gihatag nga mga parameter.

Sa tinuud, ang usa ka daw yano nga operasyon sa paghimo sa usa ka yano nga virtual machine nahimo nga ingon usa ka whirlpool sa mga tawag sa API taliwala sa mga elemento sa platform sa panganod. Dugang pa, ingon sa imong nakita, bisan ang mga nauna nga gitudlo nga mga serbisyo naglangkob usab sa gagmay nga mga sangkap sa taliwala sa kung diin mahitabo ang interaksyon. Ang paghimo sa usa ka makina gamay ra nga bahin sa kung unsa ang gitugotan sa cloud platform nga mahimo nimo - adunay usa ka serbisyo nga responsable sa pagbalanse sa trapiko, usa ka serbisyo nga responsable sa pagtipig sa block, usa ka serbisyo nga responsable sa DNS, usa ka serbisyo nga responsable sa paghatag sa mga bare metal server, ug uban pa. Gitugotan ka sa panganod nga imong tagdon ang imong mga virtual machine sama sa usa ka panon sa mga karnero (sukwahi sa virtualization). Kung adunay mahitabo sa imong makina sa usa ka virtual nga palibot - ibalik nimo kini gikan sa mga pag-backup, ug uban pa, apan ang mga aplikasyon sa panganod gitukod sa paagi nga ang virtual machine wala’y hinungdan nga hinungdanon nga papel - ang virtual nga makina "namatay" - wala’y problema - usa ka bag-o nga yano nga gihimo ang awto gibase sa template ug, ingon sa giingon nila, ang iskwad wala makamatikod sa pagkawala sa manlalaban. Natural, naghatag kini alang sa presensya sa mga mekanismo sa orkestra - gamit ang mga template sa Heat, dali nimo nga ma-deploy ang usa ka komplikado nga function nga gilangkuban sa daghang mga network ug virtual machine.

Kanunay nga angay hinumdoman nga wala’y imprastraktura sa panganod nga wala’y network - ang matag elemento nakig-uban sa ubang mga elemento pinaagi sa network sa usa o lain nga paagi. Dugang pa, ang panganod adunay hingpit nga non-static nga network. Natural, ang underlay network mas daghan pa o dili kaayo static - ang mga bag-ong node ug switch dili idugang kada adlaw, apan ang overlay component mahimo ug dili kalikayan nga mag-usab-usab kanunay - bag-ong mga network ang idugang o tangtangon, ang mga bag-ong virtual machine makita ug ang mga daan na. mamatay. Ug ingon nga imong nahinumduman gikan sa kahulugan sa panganod nga gihatag sa sinugdanan sa artikulo, ang mga kahinguhaan kinahanglan nga igahin sa tiggamit awtomatiko ug uban ang labing gamay (o mas maayo nga wala) interbensyon gikan sa service provider. Kana mao, ang matang sa probisyon sa mga kahinguhaan sa network nga karon anaa sa porma sa usa ka frontend sa porma sa imong personal nga account nga anaa pinaagi sa http / https ug si Vasily ang network engineer nga nag-duty isip backend dili usa ka panganod, bisan kung si Vasily adunay walo ka kamot.

Ang Neutron, nga usa ka serbisyo sa network, naghatag usa ka API alang sa pagdumala sa bahin sa network sa imprastraktura sa panganod. Ang serbisyo naghatag sa kahimsog ug pagdumala sa bahin sa network sa Openstack pinaagi sa paghatag usa ka layer sa abstraction nga gitawag Network-as-a-Service (NaaS). Kana mao, ang network mao ang parehas nga virtual nga masukod nga yunit, sama sa virtual nga mga cores sa CPU o ang kantidad sa RAM.

Apan sa dili pa mopadayon sa arkitektura sa network nga bahin sa OpenStack, atong tagdon kon sa unsang paagi kini nga network naglihok sa OpenStack ug nganong ang network usa ka importante ug importante nga bahin sa panganod.

Busa kami adunay duha ka RED client VM ug duha ka GREEN client VM. Ibutang nato nga kini nga mga makina nahimutang sa duha ka hypervisor niining paagiha:

Pasiuna sa network nga bahin sa imprastraktura sa panganod

Sa pagkakaron, kini usa lamang ka virtualization sa 4 nga mga server ug wala na, tungod kay sa pagkakaron ang tanan nga among nahimo mao ang virtualized nga 4 nga mga server, nga gibutang kini sa duha ka pisikal nga mga server. Ug bisan pa dili sila konektado sa network.

Aron makakuha usa ka panganod, kinahanglan namon nga magdugang daghang mga sangkap. Una, atong gi-virtualize ang bahin sa network - kinahanglan natong ikonektar kining 4 nga mga makina nga magtinagurha, ug gusto sa mga kliyente ang eksaktong koneksyon sa L2. Mahimo nimong gamiton ang switch siyempre ug i-set up ang usa ka trunk sa direksyon niini ug sulbaron ang tanan gamit ang linux bridge, o alang sa mas abante nga mga tiggamit sa openvswitch (mobalik kami niini sa ulahi). Apan adunay daghang mga network, ug ang kanunay nga pagduso sa L2 pinaagi sa usa ka switch dili ang labing kaayo nga ideya - busa lainlain nga mga departamento, usa ka service desk, mga bulan nga paghulat nga makompleto ang usa ka aplikasyon, mga semana sa pag-troubleshoot - sa modernong kalibutan, kini dili na mugana ang approach. Ug kung mas dali nga nasabtan kini sa kompanya, labi kadali nga magpadayon. Busa, tali sa mga hypervisors, mopili kita og L3 network diin ang atong mga virtual machine makigkomunikar, ug sa ibabaw niini nga L3 network magtukod kita og virtual nga overlay L2 (overlay) nga mga network diin ang trapiko sa atong mga virtual machine modagan. Ang encapsulation mahimong GRE, Geneve, o VxLAN. Sa pagkakaron, atong ipunting ang naulahi, bisan kung dili kini hinungdanon.

Kinahanglan namon pangitaon ang VTEP sa usa ka lugar (hinaut nga ang tanan pamilyar sa terminolohiya sa VxLAN). Tungod kay kami adunay usa ka L3 nga network nga diretso gikan sa mga server, wala’y makapugong kanamo sa pagbutang sa VTEP sa mga server mismo, ug ang OVS (OpenvSwitch) maayo kaayo sa pagbuhat niini. Ingon usa ka sangputanan, nakuha namon ang mosunud nga istruktura:

Pasiuna sa network nga bahin sa imprastraktura sa panganod

Tungod kay ang trapiko tali sa mga VM kinahanglan nga magbulag, ang mga pantalan padulong sa virtual nga mga makina adunay lainlaing mga numero sa vlan. Ang numero sa tag adunay papel lamang sa sulod sa usa ka virtual switch, tungod kay kung mag-encapsulate sa VxLAN dali ra naton kini makuha, tungod kay kita adunay VNI.

Pasiuna sa network nga bahin sa imprastraktura sa panganod

Karon mahimo na namon nga ipanganak ang among mga makina ug virtual network alang kanila nga wala’y mga problema.

Apan, unsa man kon ang kliyente adunay laing makina apan anaa sa laing network? Kinahanglan namon ang pag-rooting tali sa mga network. Atong analisahon ang usa ka yano nga kapilian kung gigamit ang sentralisadong pag-rooting - nga mao, ang trapiko gipaagi sa mga espesyal nga gipahinungod nga mga node sa network (maayo, ingon usa ka lagda, gihiusa sila sa mga control node, mao nga kita adunay parehas nga butang).

Morag wala'y komplikado - naghimo kami usa ka interface sa tulay sa control node, nagmaneho sa trapiko niini ug gikan didto among ruta kini sa kung diin namon kini kinahanglan. Apan ang problema mao nga ang RED nga kliyente gusto nga mogamit sa 10.0.0.0/24 network ug ang GREEN nga kliyente gusto nga mogamit sa 10.0.0.0/24 network. Sa ato pa, magsugod kami sa intersection sa mga address space. Dugang pa, dili gusto sa mga kliyente nga ang ubang mga kliyente makahimo sa ruta sa ilang mga internal nga network, nga makatarunganon. Aron mabulag ang mga network ug trapiko sa kini nga mga kliyente, maggahin kami usa ka lahi nga namespace alang sa matag usa kanila. Ang Namespace sa pagkatinuod usa ka kopya sa Linux network stack, nga mao, ang mga kliyente sa namespace nga RED hingpit nga nahimulag gikan sa mga kliyente gikan sa namespace nga GREEN (maayo, bisan ang pag-ruta tali niining mga network sa kliyente gitugotan pinaagi sa default nga namespace o anaa na sa mas taas nga kagamitan sa transportasyon).

Kana mao, atong makuha ang mosunod nga laraw:

Pasiuna sa network nga bahin sa imprastraktura sa panganod

Ang L2 tunnels nag-ipon gikan sa tanang computing node ngadto sa control node. node diin ang L3 interface alang niini nga mga network nahimutang, ang matag usa sa usa ka gipahinungod nga namespace alang sa pag-inusara.

Bisan pa, nakalimtan namon ang labing hinungdanon nga butang. Ang virtual nga makina kinahanglan nga maghatag serbisyo sa kliyente, nga mao, kinahanglan adunay labing menos usa ka eksternal nga interface diin mahimo kini maabot. Sa ato pa, kinahanglan kitang moadto sa gawas nga kalibutan. Adunay lainlaing mga kapilian dinhi. Buhaton nato ang pinakasimple nga opsyon. Magdugang kami og usa ka network sa matag kliyente, nga mahimong balido sa network sa provider ug dili magsapaw sa ubang mga network. Ang mga network mahimo usab nga mag-intersect ug motan-aw sa lainlaing mga VRF sa kilid sa network sa provider. Ang data sa network magpuyo usab sa namespace sa matag usa sa mga kliyente. Bisan pa, mogawas gihapon sila sa gawas nga kalibutan pinaagi sa usa ka pisikal (o bugkos, nga labi ka lohikal) nga interface. Aron mabulag ang trapiko sa kliyente, ang trapiko nga moadto sa gawas pagatag-an sa usa ka VLAN tag nga gigahin sa kliyente.

Ingon usa ka sangputanan, nakuha namon ang mosunud nga laraw:

Pasiuna sa network nga bahin sa imprastraktura sa panganod

Ang usa ka makatarunganon nga pangutana mao nga ngano nga dili maghimo mga ganghaan sa mga compute node mismo? Dili kini usa ka dako nga problema; dugang pa, kung imong i-on ang giapod-apod nga router (DVR), kini molihok. Niini nga senaryo, among gikonsiderar ang pinakasimple nga kapilian nga adunay sentralisadong ganghaan, nga gigamit sa default sa Openstack. Para sa high-load nga mga function, gamiton nila ang pareho nga gipang-apod-apod nga router ug mga teknolohiya sa pagpadali sama sa SR-IOV ug Passthrough, apan ingon sa ilang giingon, lahi kana nga istorya. Una, atong atubangon ang sukaranan nga bahin, ug unya moadto kita sa mga detalye.

Sa tinuud, ang among laraw naglihok na, apan adunay pipila ka mga nuances:

  • Kinahanglan natong panalipdan ang atong mga makina, nga mao, magbitay og filter sa switch interface ngadto sa kliyente.
  • Himoa nga posible nga awtomatiko nga makakuha og ip address pinaagi sa usa ka virtual machine aron dili nimo kinahanglan nga mosulod niini pinaagi sa console matag higayon ug magreseta sa adres.

Magsugod ta sa proteksyon sa sakyanan. Alang niini mahimo nimong gamiton ang mga banal nga iptables, ngano nga dili.

Sa ato pa, karon ang among topology nahimong mas komplikado:

Pasiuna sa network nga bahin sa imprastraktura sa panganod

Magpadayon ta. Kinahanglan namon nga magdugang usa ka DHCP server. Ang labing maayo nga lugar aron makit-an ang mga server sa DHCP alang sa matag usa sa mga kliyente mao ang control node nga nahisgutan na sa ibabaw, diin ang mga namespaces nahimutang:

Pasiuna sa network nga bahin sa imprastraktura sa panganod

Apan, adunay gamay nga problema. Unsa kaha kung ang tanan mag-reboot ug ang tanan nga kasayuran sa pag-arkila sa DHCP mawala. Makataronganon nga ang mga makina hatagan ug bag-ong mga adres, nga dili kaayo kombenyente. Adunay duha ka paagi sa paggawas - bisan ang paggamit sa mga ngalan sa domain ug pagdugang usa ka DNS server alang sa matag kliyente, nan ang adres dili kaayo hinungdanon alang kanamo (sama sa bahin sa network sa k8s) - apan adunay problema sa mga eksternal nga network, tungod kay ang mga adres mahimo usab nga i-isyu sa kanila pinaagi sa DHCP - kinahanglan nimo ang pag-synchronize sa mga DNS server sa cloud platform ug usa ka eksternal nga DNS server, nga, sa akong opinyon, dili kaayo flexible, apan kini posible. O ang ikaduha nga kapilian mao ang paggamit sa metadata - nga mao, ang pagtipig sa kasayuran bahin sa adres nga gihatag sa makina aron mahibal-an sa DHCP server kung unsang adres ang i-isyu sa makina kung nadawat na sa makina ang adres. Ang ikaduha nga kapilian mao ang mas simple ug mas flexible, tungod kay kini nagtugot kaninyo sa pagluwas sa dugang nga impormasyon mahitungod sa sakyanan. Karon atong idugang ang metadata sa ahente sa schema:

Pasiuna sa network nga bahin sa imprastraktura sa panganod

Ang laing isyu nga angay usab nga ipahinungod mao ang abilidad sa paggamit sa usa ka eksternal nga network sa tanan nga mga kliyente, tungod kay ang mga eksternal nga network, kung kini kinahanglan nga balido sa tibuok network, kini mahimong lisud - kinahanglan nimo nga kanunay nga pilion ug kontrolon ang alokasyon niini nga mga network. Ang abilidad sa paggamit sa usa ka eksternal nga pre-configure nga network alang sa tanan nga mga kliyente mahimong mapuslanon kaayo kung maghimo usa ka publiko nga panganod. Kini makapasayon ​​sa deployment sa mga makina, tungod kay dili na kita kinahanglan nga mokonsulta sa address database ug pagpili sa usa ka talagsaon nga address space alang sa matag kliyente sa gawas network. Dugang pa, mahimo kaming magreseta sa usa ka eksternal nga network nga abante ug sa panahon sa pag-deploy, kinahanglan ra namon nga i-associate ang mga eksternal nga adres sa mga makina sa kliyente.

Ug dinhi ang NAT moabut aron sa pagluwas - himoon lang namo nga posible para sa mga kliyente nga maka-access sa gawas nga kalibutan pinaagi sa default namespace gamit ang NAT translation. Aw, aniay gamay nga problema. Maayo kini kung ang server sa kliyente molihok ingon usa ka kliyente ug dili ingon usa ka server - kana mao, kini magsugod kaysa modawat mga koneksyon. Apan alang kanamo kini mahimong sukwahi. Sa kini nga kaso, kinahanglan naton nga buhaton ang destinasyon NAT aron kung makadawat sa trapiko, ang control node nakasabut nga kini nga trapiko gituyo alang sa virtual machine A sa kliyente A, nga nagpasabut nga kinahanglan naton buhaton ang usa ka paghubad sa NAT gikan sa usa ka eksternal nga adres, pananglitan 100.1.1.1 .10.0.0.1, ngadto sa internal nga adres 100. Sa kini nga kaso, bisan kung ang tanan nga mga kliyente mogamit sa parehas nga network, ang internal nga pagkahimulag hingpit nga napreserbar. Sa ato pa, kinahanglan natong buhaton ang dNAT ug sNAT sa control node. Kung mogamit sa usa ka network nga adunay naglutaw nga mga adres o eksternal nga mga network, o pareho sa usa ka higayon, nagdepende kung unsa ang gusto nimong dad-on sa panganod. Dili namon idugang ang naglutaw nga mga adres sa diagram, apan biyaan ang mga eksternal nga network nga nadugang sa sayo pa - ang matag kliyente adunay kaugalingon nga eksternal nga network (sa diagram gipakita kini nga vlan 200 ug XNUMX sa eksternal nga interface).

Ingon usa ka sangputanan, nakakuha kami usa ka makapaikag ug sa samang higayon maayo nga gihunahuna nga solusyon nga adunay usa ka piho nga pagka-flexible, apan hangtod karon wala’y mga mekanismo sa pagtugot sa sayup.

Una, kita adunay usa lamang ka control node - ang kapakyasan niini mosangpot sa pagkahugno sa tanang sistema. Aron masulbad kini nga problema, kinahanglan nimo nga maghimo labing menos usa ka korum nga 3 ka mga node. Atong idugang kini sa diagram:

Pasiuna sa network nga bahin sa imprastraktura sa panganod

Natural, ang tanan nga mga node gi-synchronize ug kung ang aktibo nga node mogawas, laing node ang mopuli sa mga katungdanan niini.

Ang sunod nga isyu mao ang virtual machine disks. Sa pagkakaron, gitipigan sila sa mga hypervisor mismo, ug kung adunay mga problema sa hypervisor, nawala ang tanan nga datos - ug ang presensya sa usa ka raid dili makatabang dinhi kung mawala ang disk, apan ang tibuuk nga server. Aron mahimo kini, kinahanglan namon nga maghimo usa ka serbisyo nga molihok ingon usa ka unahan sa bisan unsang pagtipig. Unsang matanga sa pagtipig kini dili labi ka hinungdanon alang kanamo, apan kinahanglan nga panalipdan niini ang among datos gikan sa pagkapakyas sa disk ug sa node, ug posible ang tibuuk nga kabinete. Adunay daghang mga kapilian dinhi - siyempre, adunay mga network sa SAN nga adunay Fiber Channel, apan matinud-anon ta - ang FC usa na ka relic sa nangagi - usa ka analogue sa E1 sa transportasyon - oo, uyon ako, gigamit gihapon kini, apan ra. diin imposible kung wala kini. Busa, dili ko boluntaryo nga ipakaylap ang network sa FC sa 2020, nahibal-an nga adunay uban pang mas makapaikag nga mga alternatibo. Bisan kung sa matag usa sa iyang kaugalingon ug tingali adunay mga nagtuo nga ang FC sa tanan nga mga limitasyon niini mao ra ang kinahanglan namon - dili ako makiglalis, ang matag usa adunay kaugalingon nga opinyon. Bisan pa, ang labing makapaikag nga solusyon sa akong opinyon mao ang paggamit sa SDS, sama sa Ceph.

Gitugotan ka sa Ceph nga magtukod usa ka labi ka magamit nga solusyon sa pagtipig nga adunay daghang mga posible nga kapilian nga redundancy, gikan sa mga parity code (sama sa raid 5 o 6) hangtod sa bug-os nga pagkopya sa datos sa lainlaing mga disk, nga gikonsiderar ang lokasyon sa mga disk sa mga server, ug mga server. sa mga kabinet, etc.

Kinahanglan nimo ang 3 pa nga mga node aron matukod ang Ceph. Ang interaksyon sa storage himuon usab pinaagi sa network gamit ang block, object ug file storage services. Atong idugang ang storage sa schema:

Pasiuna sa network nga bahin sa imprastraktura sa panganod

Mubo nga sulat: mahimo ka usab maghimo hyperconverged compute nodes - kini ang konsepto sa paghiusa sa daghang mga function sa usa ka node - pananglitan, storage + computer - ayaw paggahin ug espesyal nga mga node alang sa pagtipig sa ceph. Makuha namo ang parehas nga fault-tolerant scheme - tungod kay ang SDS magreserba sa datos nga adunay lebel sa redundancy nga among gipiho. Bisan pa, ang mga hyperconverged node kanunay nga usa ka kompromiso - tungod kay ang usa ka storage node dili lang magpainit sa hangin ingon nga kini sa una nga pagtan-aw (tungod kay wala’y virtual nga mga makina niini) - kini naggasto sa mga kapanguhaan sa CPU sa pagserbisyo sa SDS (sa tinuud, kini ang tanan. mga replikasyon sa background, ibalik pagkahuman sa mga kapakyasan sa mga node, disk, ug uban pa). Kana mao, mawad-an ka sa pipila ka gahum sa pag-compute sa node kung imong isagol kini sa pagtipig.

Ang tanan niini nga mga butang kinahanglan nga madumala sa usa ka paagi - nagkinahanglan kita og usa ka butang diin kita makahimo og usa ka makina, usa ka network, usa ka virtual nga router, ug uban pa. makahimo sa pagkonektar niini nga portal pinaagi sa http/ https ug buhaton ang bisan unsa nga gikinahanglan niini (maayo, hapit).

Tungod niini, aduna na kitay fault-tolerant nga sistema. Ang tanan nga mga elemento niini nga imprastraktura kinahanglan nga madumala sa bisan unsang paagi. Gihulagway kaniadto nga ang Openstack usa ka hugpong sa mga proyekto, nga ang matag usa naghatag ug piho nga gimbuhaton. Sama sa atong makita, adunay labaw pa sa igo nga mga elemento nga kinahanglan nga i-configure ug kontrolon. Karon atong hisgutan ang bahin sa network.

Neutron nga arkitektura

Sa OpenStack, ang Neutron maoy responsable sa pagkonektar sa mga virtual machine port ngadto sa usa ka komon nga L2 network, nga naghatag ug traffic routing tali sa mga VM nga nahimutang sa lain-laing L2 networks, ingon man usab sa outward routing, nga naghatag og mga serbisyo sama sa NAT, Floating IP, DHCP, ug uban pa.

Ang taas nga lebel nga operasyon sa serbisyo sa network (basic nga bahin) mahimong gihulagway ingon sa mosunod.

Sa pagsugod sa VM, ang serbisyo sa network:

  1. Naghimo usa ka pantalan alang niini nga VM (o mga pantalan) ug nagpahibalo sa serbisyo sa DHCP bahin niini;
  2. Usa ka bag-ong virtual network device ang gihimo (pinaagi sa libvirt);
  3. Ang VM nagkonektar sa (mga) pantalan nga gihimo sa lakang 1;

Katingad-an, ang trabaho ni Neutron gibase sa mga standard nga mekanismo nga pamilyar sa tanan nga naka-dive sa Linux - mga namespace, iptables, linux bridges, openvswitch, conntrack, etc.

Kinahanglang ipatin-aw dayon nga ang Neutron dili usa ka controller sa SDN.

Ang Neutron naglangkob sa daghang mga interconnected nga sangkap:

Pasiuna sa network nga bahin sa imprastraktura sa panganod

openstack-neutron-server usa ka daemon nga nagtrabaho sa mga hangyo sa gumagamit pinaagi sa API. Kini nga daemon wala magsulat sa bisan unsa nga koneksyon sa network, apan naghatag sa impormasyon nga gikinahanglan alang niini sa iyang mga plugins, nga unya i-configure ang gusto nga elemento sa network. Ang mga ahente sa Neutron sa OpenStack nodes narehistro sa Neutron server.

Ang Neutron-server sa tinuud usa ka aplikasyon nga gisulat sa python, nga adunay duha ka bahin:

  • PAG-ALAGAD nga serbisyo
  • Neutron Plugin (kinauyokan/serbisyo)

Ang serbisyo sa REST gilaraw aron makadawat mga tawag sa API gikan sa ubang mga sangkap (pananglitan, usa ka hangyo nga maghatag pipila nga kasayuran, ug uban pa)

Ang mga plugin kay mga plug-in software component/modules nga gitawag panahon sa API requests - nga mao, ang pag-attribute sa usa ka serbisyo mahitabo pinaagi kanila. Ang mga plugin gibahin sa duha ka klase - serbisyo ug gamut. Ingon sa usa ka lagda, ang plugin sa kabayo mao ang nag-una nga responsable sa pagdumala sa address space ug L2 nga mga koneksyon tali sa mga VM, ug ang mga service plugins naghatag na og dugang nga gamit sama sa VPN o FW.

Ang lista sa kasamtangan nga magamit nga mga plugins mahimong tan-awon pananglitan dinhi

Mahimong adunay daghang mga plugin sa serbisyo, apan mahimo ra adunay usa ka plugin sa kabayo.

openstack-neutron-ml2 mao ang standard nga Openstack root plugin. Kini nga plug-in adunay modular nga arkitektura (dili sama sa gisundan niini) ug gi-configure ang serbisyo sa network pinaagi sa mga drayber nga konektado niini. Atong hisgotan ang plugin mismo sa ulahi, tungod kay sa pagkatinuod kini naghatag sa pagka-flexible nga anaa sa OpenStack sa bahin sa network. Ang gamut nga plugin mahimong mapulihan (eg Contrail Networking naghimo sa ingon nga kapuli).

Serbisyo sa RPC (rabbitmq-server) - usa ka serbisyo nga naghatag sa pagdumala sa pila ug pakig-uban sa ubang mga serbisyo sa OpenStack, ingon man usab sa interaksyon tali sa mga ahente sa serbisyo sa network.

mga ahente sa network - mga ahente nga nahimutang sa matag node, diin ang mga serbisyo sa network gi-configure.

Ang mga ahente adunay daghang mga lahi.

Ang nag-unang ahente mao ang L2 nga ahente. Kini nga mga ahente nagdagan sa matag usa sa mga hypervisors, lakip ang mga control node (mas tukma, sa tanan nga mga node nga naghatag bisan unsang serbisyo alang sa mga saop) ug ang ilang panguna nga gimbuhaton mao ang pagkonektar sa mga virtual nga makina sa usa ka sagad nga network sa L2, ingon usab pagmugna og mga alerto kung adunay mga panghitabo nga mahitabo. (pananglitan disable/enable ang port).

Ang sunod, dili kaayo hinungdanon nga ahente L3 nga ahente. Sa kasagaran, kini nga ahente nagdagan lamang sa usa ka network node (kasagaran ang network node gikombinar sa usa ka control node) ug naghatag og routing tali sa mga tenant network (sa duha tali sa iyang mga network ug sa mga network sa ubang mga tenant, ug kini ma-access sa gawas sa kalibutan, nga naghatag og NAT, ingon man serbisyo sa DHCP). Bisan pa, kung mogamit usa ka DVR (giapod-apod nga router), ang panginahanglan alang sa usa ka L3 plugin makita usab sa mga node sa pagkalkula.

Ang ahente sa L3 naggamit sa mga namespace sa Linux aron mahatagan ang matag tenant sa usa ka set sa kaugalingon nga nahilain nga mga network ug ang pagpaandar sa mga virtual nga router nga nag-ruta sa trapiko ug naghatag mga serbisyo sa gateway alang sa mga network sa Layer 2.

database - usa ka database sa mga identifier sa mga network, subnet, pantalan, pool, ug uban pa.

Sa tinuud, gidawat sa Neutron ang mga hangyo sa API gikan sa paghimo sa bisan unsang mga entidad sa network, gipamatud-an ang hangyo, ug pinaagi sa RPC (kung maka-access kini sa pipila ka plugin o ahente) o REST API (kung nakigsulti kini sa SDN) nagpadala sa mga ahente (pinaagi sa mga plugins) ang mga instruksyon nga gikinahanglan aron maorganisar ang gipangayo nga serbisyo.

Karon atong balikon ang pag-instalar sa pagsulay (kung giunsa kini pag-deploy ug kung unsa ang sulod niini, atong makita sa ulahi sa praktikal nga bahin) ug tan-awon kung asa nga bahin nahimutang:

(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 ~]$ 

Pasiuna sa network nga bahin sa imprastraktura sa panganod

Sa tinuud, kana ang tibuuk nga istruktura sa Neutron. Karon angayan nga mogahin og pipila ka oras sa ML2 plugin.

Modular nga Layer 2

Sama sa gihisgutan sa ibabaw, ang plugin usa ka standard nga OpenStack root plugin ug adunay modular nga arkitektura.

Ang gisundan sa ML2 plugin adunay usa ka monolithic nga istruktura, nga wala magtugot, pananglitan, gamit ang usa ka pagsagol sa daghang mga teknolohiya sa usa ka pag-install. Pananglitan, dili nimo magamit ang openvswitch ug linuxbridge sa samang higayon - ang una o ang ikaduha. Tungod niini nga hinungdan, usa ka ML2 nga plugin nga adunay arkitektura niini gihimo.

Ang ML2 adunay duha ka sangkap - duha ka klase sa mga driver: Type drivers ug Mechanism drivers.

Type nga mga driver ipasabut ang mga teknolohiya nga gamiton sa pag-organisar sa koneksyon sa network, sama sa VxLAN, VLAN, GRE. Sa kini nga kaso, ang drayber nagtugot kanimo sa paggamit sa lainlaing mga teknolohiya. Ang standard nga teknolohiya mao ang VxLAN encapsulation para sa overlay networks ug vlan external networks.

Ang mga matang sa drayber mao ang mosunod nga mga matang sa mga network:

Patag - network nga walay pag-tag
Mga VLAN - tag nga network
Lokal nga - usa ka espesyal nga matang sa network alang sa tanan-sa-usa nga mga pag-install (ang ingon nga mga pag-install kinahanglan alang sa mga developer o alang sa pagbansay)
GRE - overlay network gamit ang GRE tunnels
VxLAN - overlay network gamit ang VxLAN tunnels

Mga drayber sa mekanismo ipasabut ang mga paagi nga naghatag sa organisasyon sa mga teknolohiya nga gipiho sa tipo nga drayber - pananglitan, openvswitch, sr-iov, opendaylight, OVN, ug uban pa.

Depende sa pagpatuman niini nga drayber, bisan ang mga ahente nga kontrolado sa Neutron ang gamiton, o ang mga koneksyon sa usa ka eksternal nga SDN controller ang gamiton, nga nag-atiman sa tanang mga isyu sa pag-organisar sa L2 nga mga network, routing, ug uban pa.

Pananglitan: kung gamiton nato ang ML2 kauban ang OVS, unya usa ka ahente sa L2 ang gi-install sa matag computing node nga nagdumala sa OVS. Bisan pa, kung gamiton naton, pananglitan, ang OVN o OpenDayLight, nan ang kontrol sa OVS naa sa ilawom sa ilang hurisdiksyon - Ang Neutron, pinaagi sa gamut nga plugin, naghatag mga mando sa controller, ug gibuhat na niini ang gisulti.

Atong susihon ang Open vSwitch

Sa pagkakaron, usa sa mga importanteng bahin sa OpenStack mao ang Open vSwitch.
Kung nag-install sa OpenStack nga wala’y bisan unsang dugang nga vendor nga SDN sama sa Juniper Contrail o Nokia Nuage, ang OVS mao ang panguna nga sangkap sa network sa cloud network ug, kauban ang mga iptables, conntrack, namespaces, nagtugot kanimo sa pag-organisar sa usa ka hingpit nga multi-tenancy overlay network. Natural, kini nga sangkap mahimong mapulihan, pananglitan, kung gigamit ang mga solusyon sa third-party proprietary (vendor) SDN.

Ang OVS usa ka open source software switch nga gidisenyo para gamiton sa virtualized environment isip virtual traffic forwarder.

Sa pagkakaron, ang OVS adunay maayo kaayo nga pag-andar, nga naglakip sa mga teknolohiya sama sa QoS, LACP, VLAN, VxLAN, GENEVE, OpenFlow, DPDK, ug uban pa.

Mubo nga sulat: Sa sinugdan, ang OVS wala gipanamkon isip usa ka softswitch alang sa high-load telecom functions ug mas gidisenyo alang sa dili kaayo bandwidth-demanding IT functions sama sa WEB server o mail server. Bisan pa, gitapos na ang OVS ug ang mga karon nga pagpatuman sa OVS labi nga nagpauswag sa pasundayag ug kapabilidad niini, nga gitugotan kini nga magamit sa mga operator sa telecom nga adunay daghang mga gimbuhaton, pananglitan, adunay usa ka pagpatuman sa OVS nga adunay suporta sa pagpadali sa DPDK.

Adunay tulo ka hinungdanon nga sangkap sa OVS nga kinahanglan mahibal-an:

  • Kernel module - usa ka component nga nahimutang sa kernel space nga nagproseso sa trapiko base sa mga lagda nga nadawat gikan sa control element;
  • vSwitch Ang daemon (ovs-vswitchd) usa ka proseso nga nagdagan sa wanang sa gumagamit, nga responsable sa pagprograma sa module sa kernel - nga mao, kini direkta nga nagrepresentar sa lohika sa switch
  • database server mao ang usa ka lokal nga database nga nahimutang sa matag host nga nagpadagan sa OVS nga nagtipig sa configuration. Pinaagi niini nga module, ang mga controller sa SDN mahimong makigkomunikar gamit ang OVSDB protocol.

Kining tanan giubanan sa usa ka set sa diagnostic ug management utilities, sama sa ovs-vsctl, ovs-appctl, ovs-ofctl, etc.

Sa pagkakaron, ang Openstack kaylap nga gigamit sa mga operator sa telecom aron ibalhin ang mga function sa network ngadto niini, sama sa EPC, SBC, HLR, ug uban pa. Ang ubang mga function mahimong mabuhi nga walay mga problema sa OVS sa porma diin kini, apan pananglitan, ang mga proseso sa EPC trapiko sa subscriber - unya kini moagi sa usa ka dako nga gidaghanon sa trapiko (karon ang gidaghanon sa trapiko moabot sa pipila ka gatus ka gigabits kada segundo). Natural, ang pagpadagan sa ingon nga trapiko pinaagi sa kernel space (tungod kay ang forwarder nahimutang didto pinaagi sa default) dili ang pinakamaayo nga ideya. Busa, ang OVS kanunay nga gi-deploy sa tibuuk nga wanang sa gumagamit gamit ang teknolohiya sa pagpadali sa DPDK aron ipasa ang trapiko gikan sa NIC hangtod sa wanang sa gumagamit nga nag-bypass sa kernel.

Matikdi: alang sa usa ka panganod nga gipakatap para sa mga gimbuhaton sa telecom, posible nga ma-output ang trapiko gikan sa pag-compute sa mga node nga nag-bypass sa OVS direkta ngadto sa switching equipment. Alang niini nga katuyoan, gigamit ang mga mekanismo sa SR-IOV ug Passthrough.

Giunsa kini pagtrabaho sa usa ka tinuud nga layout?

Buweno, karon magpadayon kita sa praktikal nga bahin ug tan-awon kung giunsa kini tanan molihok sa praktis.

Una, mag-deploy kita og yano nga pag-instalar sa Openstack. Tungod kay wala ako usa ka set sa mga server nga magamit alang sa mga eksperimento, among tipunon ang layout sa usa ka pisikal nga server gikan sa mga virtual machine. Oo, siyempre, ang ingon nga solusyon dili angay alang sa komersyal nga katuyoan, apan aron makita kung giunsa ang pagtrabaho sa network sa Openstack, ang ingon nga pag-install igo na alang sa mga mata. Dugang pa, ang ingon nga pag-install alang sa mga katuyoan sa pagbansay labi ka makapaikag - tungod kay mahimo nimong makuha ang trapiko, ug uban pa.

Tungod kay kinahanglan ra namon nga makita ang base nga bahin, dili kami makagamit sa daghang mga network, apan ipataas ang tanan gamit ang duha ra nga network, ug ang ikaduha nga network sa kini nga layout gamiton lamang aron ma-access ang undercloud ug dns server. Dili kami magtandog sa mga eksternal nga network sa pagkakaron - kini usa ka hilisgutan alang sa usa ka lahi nga dako nga artikulo.

Busa, magsugod kita sa han-ay. Una, usa ka gamay nga teorya. Atong i-install ang Openstack gamit ang TripleO (Openstack sa Openstack). Ang esensya sa TripleO mao nga among i-install ang Openstack all-in-one (nga mao, sa usa ka node), gitawag nga undercloud, ug dayon gamiton ang mga kapabilidad sa gipakatap nga Openstack aron i-install ang Openstack, nga gidisenyo alang sa pagpahimulos, gitawag nga overcloud. Gagamiton sa Undercloud ang abilidad niini sa pagdumala sa mga pisikal nga server (bare metal) - ang Ironic nga proyekto - aron mahatagan ang mga hypervisors nga molihok isip compute, control, storage nodes. Sa ato pa, wala kami mogamit ug bisan unsang mga himan sa ikatulo nga partido sa pag-deploy sa Openstack - among gi-deploy ang Openstack gamit ang Openstack. Dugang pa sa pag-instalar kini mahimong mas klaro, mao nga dili kami mohunong didto ug magpadayon.

Mubo nga sulat: Niini nga artikulo, alang sa kayano, wala ko gigamit ang pag-inusara sa network alang sa mga internal nga network sa Openstack, apan ang tanan gi-deploy gamit ang usa lamang ka network. Bisan pa, ang presensya o pagkawala sa pag-inusara sa network wala makaapekto sa sukaranan nga pag-andar sa solusyon - ang tanan molihok nga parehas kung gigamit ang pag-inusara, apan ang trapiko moadto sa parehas nga network. Alang sa usa ka komersyal nga pag-install, natural nga kinahanglan nga gamiton ang pag-inusara gamit ang lainlaing mga vlan ug interface. Pananglitan, ang trapiko sa pagdumala sa pagtipig sa ceph ug direkta nga trapiko sa datos (mga pag-access sa makina sa mga disk, ug uban pa) naggamit lainlaing mga subnet (Pagdumala sa pagtipig ug Pagtipig) sa panahon sa pag-inusara, ug gitugotan ka niini nga himuon ang solusyon nga labi ka matugoton sa sayup pinaagi sa pagbahin niini nga trapiko, alang sa Pananglitan, ngadto sa lain-laing mga pantalan, o paggamit sa lain-laing mga profile sa QoS alang sa lain-laing mga trapiko aron nga ang data nga trapiko dili mopilit sa signal sa trapiko. Sa among kaso, moadto sila sa parehas nga network ug sa tinuud wala kini naglimite kanamo sa bisan unsang paagi.

Mubo nga sulat: Tungod kay magpadagan kita og mga virtual machine sa usa ka virtual machine-based environment, kinahanglan una nato nga i-enable ang nested virtualization.

Mahimo nimong susihon kung ang nested virtualization gipalihok o dili sama niini:


[root@hp-gen9 bormoglotx]# cat /sys/module/kvm_intel/parameters/nested
N
[root@hp-gen9 bormoglotx]# 

Kung makita nimo ang letra nga N, nan mahimo namon ang suporta alang sa nested virtualization sumala sa bisan unsang giya nga imong nakit-an sa network, pananglitan sa maong mga .

Kinahanglan namon nga tipunon ang mosunud nga laraw gikan sa mga virtual nga makina:

Pasiuna sa network nga bahin sa imprastraktura sa panganod

Sa akong kaso, alang sa koneksyon sa mga virtual nga makina nga bahin sa umaabot nga pag-instalar (ug nakuha nako ang 7 niini, apan mahimo nimong makuha ang 4 kung wala ka daghang mga kapanguhaan), gigamit nako ang OpenvSwitch. Naghimo ko og usa ka ovs bridge ug nagkonektar sa mga virtual machine niini pinaagi sa mga port-group. Aron mahimo kini, naghimo ako usa ka xml file sa mosunod nga porma:


[root@hp-gen9 ~]# virsh net-dumpxml ovs-network-1        
<network>
  <name>ovs-network-1</name>
  <uuid>7a2e7de7-fc16-4e00-b1ed-4d190133af67</uuid>
  <forward mode='bridge'/>
  <bridge name='ovs-br1'/>
  <virtualport type='openvswitch'/>
  <portgroup name='trunk-1'>
    <vlan trunk='yes'>
      <tag id='100'/>
      <tag id='101'/>
      <tag id='102'/>
    </vlan>
  </portgroup>
  <portgroup name='access-100'>
    <vlan>
      <tag id='100'/>
    </vlan>
  </portgroup>
  <portgroup name='access-101'>
    <vlan>
      <tag id='101'/>
    </vlan>
  </portgroup>
</network>

Tulo ka mga grupo sa pantalan ang gideklarar dinhi - duha ka pag-access ug usa ka punoan (ang ulahi gikinahanglan alang sa DNS server, apan mahimo nimo nga wala kini, o ipataas kini sa host machine - bisan asa nga mas sayon ​​​​alang kanimo). Sunod, gamit kini nga template, among gipahayag ang amon pinaagi sa virsh net-define:


virsh net-define ovs-network-1.xml 
virsh net-start ovs-network-1 
virsh net-autostart ovs-network-1 

Karon among gi-edit ang configuration sa hypervisor ports:


[root@hp-gen9 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens1f0   
TYPE=Ethernet
NAME=ens1f0
DEVICE=ens1f0
TYPE=OVSPort
DEVICETYPE=ovs
OVS_BRIDGE=ovs-br1
ONBOOT=yes
OVS_OPTIONS="trunk=100,101,102"
[root@hp-gen9 ~]
[root@hp-gen9 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ovs-br1 
DEVICE=ovs-br1
DEVICETYPE=ovs
TYPE=OVSBridge
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.255.200
PREFIX=24
[root@hp-gen9 ~]# 

Hinumdomi: sa kini nga sitwasyon, ang adres sa port ovs-br1 dili ma-access tungod kay wala kini tag vlan. Aron ayuhon kini, kinahanglan nimo nga i-isyu ang mando sudo ovs-vsctl set port ovs-br1 tag=100. Bisan pa, pagkahuman sa pag-reboot, kini nga tag mawala (kung adunay nahibal-an kung giunsa kini magpabilin sa lugar, ako mapasalamaton kaayo). Apan kini dili kaayo importante, tungod kay kinahanglan lamang nato kini nga adres sa panahon sa pag-instalar ug dili na kinahanglan kini kung ang Openstack hingpit nga na-deploy.

Sunod, paghimo og undercloud machine:


virt-install  -n undercloud --description "undercloud"  --os-type=Linux  --os-variant=centos7.0  --ram=8192  --vcpus=8  --disk path=/var/lib/libvirt/images/undercloud.qcow2,bus=virtio,size=40,format=qcow2 --network network:ovs-network-1,model=virtio,portgroup=access-100 --network network:ovs-network-1,model=virtio,portgroup=access-101 --graphics none  --location /var/lib/libvirt/boot/CentOS-7-x86_64-Minimal-2003.iso --extra-args console=ttyS0

Atol sa pag-instalar, imong gibutang ang tanan nga gikinahanglan nga mga parameter, sama sa ngalan sa makina, mga password, tiggamit, ntp server, ug uban pa. Mahimo nimo dayon nga i-configure ang mga pantalan, apan mas sayon ​​​​alang kanako sa personal human sa pag-instalar sa pag-log in sa makina pinaagi sa console ug pagkorihir sa gikinahanglan. mga file. Kung naa na kay andam nga imahe, mahimo nimo kini gamiton, o buhata ang akong gibuhat - i-download ang labing gamay nga imahe sa Centos 7 ug gamita kini aron ma-install ang VM.

Human sa malampuson nga pag-instalar, kinahanglan nga adunay usa ka virtual nga makina diin mahimo nimong i-install ang undercloud


[root@hp-gen9 bormoglotx]# virsh list
 Id    Name                           State
----------------------------------------------------
 6     dns-server                     running
 62    undercloud                     running

Una, among gi-install ang gikinahanglan nga mga himan sa panahon sa proseso sa pag-instalar:

sudo yum update -y
sudo yum install -y net-tools
sudo yum install -y wget
sudo yum install -y ipmitool

Pag-instalar sa undercloud

Naghimo kami usa ka tiggamit sa stack, nagbutang usa ka password, idugang kini sa sudoer ug hatagan siya og katakus nga ipatuman ang mga root command pinaagi sa sudo nga dili kinahanglan nga mosulod sa usa ka password:


useradd stack
passwd stack

echo “stack ALL=(root) NOPASSWD:ALL” > /etc/sudoers.d/stack
chmod 0440 /etc/sudoers.d/stack

Karon among gitino ang tibuok nga ngalan sa undercloud sa mga host file:


vi /etc/hosts

127.0.0.1   undercloud.openstack.rnd localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

Sunod, magdugang kami mga repositoryo ug i-install ang software nga among gikinahanglan:


sudo yum install -y https://trunk.rdoproject.org/centos7/current/python2-tripleo-repos-0.0.1-0.20200409224957.8bac392.el7.noarch.rpm
sudo -E tripleo-repos -b queens current
sudo -E tripleo-repos -b queens current ceph
sudo yum install -y python-tripleoclient
sudo yum install -y ceph-ansible

Hinumdomi: kung wala ka nagplano nga i-install ang ceph, nan dili nimo kinahanglan nga mosulod sa mga mando nga may kalabotan sa ceph. Gigamit nako ang pagpagawas sa Queens, apan mahimo nimong gamiton ang bisan unsang gusto nimo.

Sunod, kopyaha ang undercloud configuration file ngadto sa stack user's home directory:


cp /usr/share/instack-undercloud/undercloud.conf.sample ~/undercloud.conf

Karon kinahanglan namon nga ayohon kini nga file, ipahiangay kini sa among pag-install.

Idugang ang mosunod nga mga linya sa sinugdanan sa file:

vi undercloud.conf
[DEFAULT]
undercloud_hostname = undercloud.openstack.rnd
local_ip = 192.168.255.1/24
network_gateway = 192.168.255.1
undercloud_public_host = 192.168.255.2
undercloud_admin_host = 192.168.255.3
undercloud_nameservers = 192.168.255.253
generate_service_certificate = false
local_interface = eth0
local_mtu = 1450
network_cidr = 192.168.255.0/24
masquerade = true
masquerade_network = 192.168.255.0/24
dhcp_start = 192.168.255.11
dhcp_end = 192.168.255.50
inspection_iprange = 192.168.255.51,192.168.255.100
scheduler_max_attempts = 10

Busa, adtoon nato ang mga setting:

undercloud_hostname — ang tibuok nga ngalan sa undercloud server, kinahanglang mohaum sa entry sa DNS server

local_ip - lokal nga adres undercloud padulong sa paghatag sa network

network_gateway - ang parehas nga lokal nga adres, nga molihok ingon usa ka ganghaan aron ma-access ang kalibutan sa gawas sa panahon sa pag-install sa mga overcloud node, parehas usab sa lokal nga ip

undercloud_public_host — eksternal nga adres sa API, ang bisan unsang libre nga adres gikan sa network sa paghatag gihatag

undercloud_admin_host address sa internal nga API, ang bisan unsang libre nga adres gikan sa provisioning network gi-assign

undercloud_nameservers - DNS server

generate_service_certificate - kini nga linya hinungdanon kaayo sa karon nga pananglitan, tungod kay kung dili nimo kini ibutang sa sayup, makakuha ka usa ka sayup sa pag-install, ang problema gihulagway sa Red Hat bug tracker

local_interface interface sa provisioning network. Kini nga interface ma-reconfigure sa panahon sa pag-deploy sa undercloud, mao nga kinahanglan nimo nga adunay duha ka mga interface sa undercloud - usa alang sa pag-access niini, ang ikaduha alang sa paghatag.

local_mtu — MTU. Tungod kay kami adunay usa ka test lab ug ako adunay MTU 1500 sa mga OVS port sa switch, gikinahanglan nga i-set kini sa 1450 aron ang mga packet nga gi-encapsulated sa VxLAN moagi.

network_cidr - network sa paghatag

pagsupak — gamit ang NAT para maka-access sa external network

masquerade_network - usa ka network nga mahimong NAT-Xia

dhcp_start - ang sinugdanan nga adres sa address pool diin ang mga adres ma-assign sa mga node sa panahon sa overcloud nga pag-deploy

dhcp_end - katapusan nga adres sa address pool diin ang mga adres ma-assign sa mga node atol sa overcloud deployment

inspeksyon_iprange - usa ka hugpong sa mga adres nga gikinahanglan alang sa pagsusi (dili kinahanglan nga magsapaw sa ibabaw nga pool)

scheduler_max_attempts - ang kinatas-an nga gidaghanon sa mga pagsulay sa pag-instalar sa overcloud (kinahanglan nga mas dako o katumbas sa gidaghanon sa mga node)

Human mahulagway ang file, mahimo kang mag-isyu og usa ka sugo aron i-deploy ang undercloud:


openstack undercloud install

Ang pamaagi nagkinahanglan gikan sa 10 ngadto sa 30 minutos depende sa imong puthaw. Sa katapusan, kinahanglan nimo nga makita ang output nga sama niini:

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.

#############################################################################

Kini nga output nag-ingon nga malampuson nimo nga na-install ang undercloud ug karon mahimo nimong susihon ang kahimtang sa undercloud ug magpadayon sa pag-install sa overcloud.

Kung imong tan-awon ang output sa ifconfig, imong makita nga usa ka bag-ong interface sa tulay ang nagpakita

[stack@undercloud ~]$ ifconfig
br-ctlplane: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1450
        inet 192.168.255.1  netmask 255.255.255.0  broadcast 192.168.255.255
        inet6 fe80::5054:ff:fe2c:89e  prefixlen 64  scopeid 0x20<link>
        ether 52:54:00:2c:08:9e  txqueuelen 1000  (Ethernet)
        RX packets 14  bytes 1095 (1.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 20  bytes 1292 (1.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Pinaagi sa kini nga interface, buhaton na karon ang pag-deploy sa overcloud.

Gikan sa output sa ubos, imong makita nga kami adunay tanan nga mga serbisyo sa parehas nga node:

(undercloud) [stack@undercloud ~]$ openstack host list
+--------------------------+-----------+----------+
| Host Name                | Service   | Zone     |
+--------------------------+-----------+----------+
| undercloud.openstack.rnd | conductor | internal |
| undercloud.openstack.rnd | scheduler | internal |
| undercloud.openstack.rnd | compute   | nova     |
+--------------------------+-----------+----------+

Sa ubos mao ang configuration sa undercloud network nga bahin:


(undercloud) [stack@undercloud ~]$ python -m json.tool /etc/os-net-config/config.json 
{
    "network_config": [
        {
            "addresses": [
                {
                    "ip_netmask": "192.168.255.1/24"
                }
            ],
            "members": [
                {
                    "dns_servers": [
                        "192.168.255.253"
                    ],
                    "mtu": 1450,
                    "name": "eth0",
                    "primary": "true",
                    "type": "interface"
                }
            ],
            "mtu": 1450,
            "name": "br-ctlplane",
            "ovs_extra": [
                "br-set-external-id br-ctlplane bridge-id br-ctlplane"
            ],
            "routes": [],
            "type": "ovs_bridge"
        }
    ]
}
(undercloud) [stack@undercloud ~]$

pag-instalar sa overcloud

Sa pagkakaron aduna lang kitay undercloud, ug wala kitay igong mga node diin ang overcloud matigom. Busa, una sa tanan, atong i-deploy ang mga virtual machine nga atong gikinahanglan. Atol sa pag-deploy, ang undercloud mismo ang mag-install sa OS ug ang gikinahanglan nga software sa overcloud machine - nga mao, dili kinahanglan nga hingpit nga i-deploy ang makina, apan maghimo lamang usa ka disk (o mga disk) alang niini ug mahibal-an ang mga parameter niini - kana mao , sa tinuud, nakakuha kami usa ka hubo nga server nga wala’y na-install nga OS niini.

Adto sa folder nga adunay mga disk sa among virtual machine ug paghimo og mga disk sa gikinahanglan nga gidak-on:


cd /var/lib/libvirt/images/
qemu-img create -f qcow2 -o preallocation=metadata control-1.qcow2 60G
qemu-img create -f qcow2 -o preallocation=metadata compute-1.qcow2 60G
qemu-img create -f qcow2 -o preallocation=metadata compute-2.qcow2 60G
qemu-img create -f qcow2 -o preallocation=metadata storage-1.qcow2 160G
qemu-img create -f qcow2 -o preallocation=metadata storage-2.qcow2 160G

Tungod kay kami naglihok ingon nga gamut, kinahanglan namon nga usbon ang tag-iya niini nga mga disk aron dili makakuha og problema sa mga katungod:


[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]# 

Hinumdomi: kung wala ka nagplano nga i-install ang ceph aron matun-an kini, nan ang mga mando dili maghimo labing menos 3 nga mga node nga adunay labing menos duha ka mga disk, apan ipakita sa template nga ang mga virtual disk vda, vdb, ug uban pa gamiton.

Maayo, karon kinahanglan naton nga ipasabut ang tanan niini nga mga makina:


virt-install --name control-1 --ram 32768 --vcpus 8 --os-variant centos7.0 --disk path=/var/lib/libvirt/images/control-1.qcow2,device=disk,bus=virtio,format=qcow2 --noautoconsole --vnc  --network network:ovs-network-1,model=virtio,portgroup=access-100 --network network:ovs-network-1,model=virtio,portgroup=trunk-1 --dry-run --print-xml > /tmp/control-1.xml  

virt-install --name storage-1 --ram 16384 --vcpus 4 --os-variant centos7.0 --disk path=/var/lib/libvirt/images/storage-1.qcow2,device=disk,bus=virtio,format=qcow2 --noautoconsole --vnc  --network network:ovs-network-1,model=virtio,portgroup=access-100 --dry-run --print-xml > /tmp/storage-1.xml  

virt-install --name storage-2 --ram 16384 --vcpus 4 --os-variant centos7.0 --disk path=/var/lib/libvirt/images/storage-2.qcow2,device=disk,bus=virtio,format=qcow2 --noautoconsole --vnc  --network network:ovs-network-1,model=virtio,portgroup=access-100 --dry-run --print-xml > /tmp/storage-2.xml  

virt-install --name compute-1 --ram 32768 --vcpus 12 --os-variant centos7.0 --disk path=/var/lib/libvirt/images/compute-1.qcow2,device=disk,bus=virtio,format=qcow2 --noautoconsole --vnc  --network network:ovs-network-1,model=virtio,portgroup=access-100 --dry-run --print-xml > /tmp/compute-1.xml  

virt-install --name compute-2 --ram 32768 --vcpus 12 --os-variant centos7.0 --disk path=/var/lib/libvirt/images/compute-2.qcow2,device=disk,bus=virtio,format=qcow2 --noautoconsole --vnc  --network network:ovs-network-1,model=virtio,portgroup=access-100 --dry-run --print-xml > /tmp/compute-2.xml 

Sa katapusan adunay mga sugo - print-xml > /tmp/storage-1.xml, nga nagmugna og xml file nga adunay paghulagway sa matag makina sa /tmp/ folder, kung dili nimo kini idugang, dili nimo mahimo aron mahibal-an ang mga virtual machine.

Karon kinahanglan natong ipasabut ang tanan niini nga mga makina sa virsh:


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 ~]#

Karon usa ka gamay nga nuance - gigamit sa tripleO ang IPMI aron madumala ang mga server sa panahon sa pag-install ug pagsusi.

Ang introspection mao ang proseso sa pag-inspeksyon sa hardware aron makuha ang mga parameter niini nga gikinahanglan para sa dugang nga provisioning sa node. Gihimo ang introspection sa tabang sa ironic, usa ka serbisyo nga gidisenyo aron magtrabaho sa mga hubo nga metal server.

Apan ania ang problema - kung ang IPMI iron server adunay usa ka bulag nga pantalan (o usa ka gipaambit nga pantalan, apan dili kini hinungdanon), nan ang mga virtual machine wala’y ingon nga mga pantalan. Dinhi ang usa ka crutch nga gitawag og vbmc mitabang kanamo - usa ka utility nga nagtugot kanimo sa pagsundog sa usa ka IPMI port. Ang kini nga nuance angay nga hatagan pagtagad labi na alang sa mga gusto nga mag-set up sa ingon nga laboratoryo sa usa ka ESXI hypervisor - sa tinuud, wala ko mahibal-an kung kini adunay analogue sa vbmc, mao nga kinahanglan ka maglibog sa kini nga pangutana sa wala pa i-deploy tanan.

I-install ang vbmc:


yum install yum install python2-virtualbmc

Kung dili makit-an sa imong OS ang package, idugang ang repository:

yum install -y https://www.rdoproject.org/repos/rdo-release.rpm

Karon atong i-set up ang utility. Ang tanan dinhi banal sa kaulawan. Karon makatarunganon nga wala’y mga server sa lista sa vbmc


[root@hp-gen9 ~]# vbmc list

[root@hp-gen9 ~]# 

Aron kini makita, sila kinahanglan nga mano-mano nga ipahayag sa ingon niini nga paagi:


[root@hp-gen9 ~]# vbmc add control-1 --port 7001 --username admin --password admin
[root@hp-gen9 ~]# vbmc add storage-1 --port 7002 --username admin --password admin
[root@hp-gen9 ~]# vbmc add storage-2 --port 7003 --username admin --password admin
[root@hp-gen9 ~]# vbmc add compute-1 --port 7004 --username admin --password admin
[root@hp-gen9 ~]# vbmc add compute-2 --port 7005 --username admin --password admin
[root@hp-gen9 ~]#
[root@hp-gen9 ~]# vbmc list
+-------------+--------+---------+------+
| Domain name | Status | Address | Port |
+-------------+--------+---------+------+
| compute-1   | down   | ::      | 7004 |
| compute-2   | down   | ::      | 7005 |
| control-1   | down   | ::      | 7001 |
| storage-1   | down   | ::      | 7002 |
| storage-2   | down   | ::      | 7003 |
+-------------+--------+---------+------+
[root@hp-gen9 ~]#

Sa akong hunahuna ang command syntax klaro nga walay katin-awan. Bisan pa, sa pagkakaron ang tanan namong mga sesyon anaa sa DOWN status. Para makabalhin sila sa status sa UP, kinahanglan nimo nga palihokon sila:


[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 ~]#

Ug ang katapusan nga paghikap - kinahanglan nimo nga ayohon ang mga lagda sa firewall (maayo, o i-off kini sa hingpit):


firewall-cmd --zone=public --add-port=7001/udp --permanent
firewall-cmd --zone=public --add-port=7002/udp --permanent
firewall-cmd --zone=public --add-port=7003/udp --permanent
firewall-cmd --zone=public --add-port=7004/udp --permanent
firewall-cmd --zone=public --add-port=7005/udp --permanent
firewall-cmd --reload

Karon moadto kita sa undercloud ug susihon kung ang tanan molihok. Ang adres sa host machine mao ang 192.168.255.200, gidugang namon ang kinahanglan nga pakete sa ipmitool sa undercloud sa panahon sa pagpangandam alang sa pag-deploy:


[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

Sama sa imong makita, malampuson namong gilusad ang control node pinaagi sa vbmc. Karon atong i-off kini ug magpadayon:


[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 ~]#

Ang sunod nga lakang mao ang pagsusi sa mga node diin ibutang ang overcloud. Aron mahimo kini, kinahanglan namon nga mag-andam usa ka json file nga adunay usa ka paghulagway sa among mga node. Palihug timan-i nga dili sama sa pag-instalar sa mga hubo nga server, ang file nagtino sa pantalan diin ang vbmc nagdagan alang sa matag usa sa mga makina.


[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

Mubo nga sulat: adunay duha ka mga interface sa control node, apan sa kini nga kaso dili kini igsapayan, sa kini nga pag-instalar ang usa igo na alang kanamo.

Karon kami nag-andam sa json file. Kinahanglan natong ipiho ang poppy address sa pantalan diin ipahigayon ang provisioning, ang mga parameter sa mga node, hatagan sila og mga ngalan ug ipakita kung unsaon pag-adto sa ipmi:


{
    "nodes":[
        {
            "mac":[
                "52:54:00:20:a2:2f"
            ],
            "cpu":"8",
            "memory":"32768",
            "disk":"60",
            "arch":"x86_64",
            "name":"control-1",
            "pm_type":"pxe_ipmitool",
            "pm_user":"admin",
            "pm_password":"admin",
            "pm_addr":"192.168.255.200",
            "pm_port":"7001"
        },
        {
            "mac":[
                "52:54:00:79:0b:cb"
            ],
            "cpu":"4",
            "memory":"16384",
            "disk":"160",
            "arch":"x86_64",
            "name":"storage-1",
            "pm_type":"pxe_ipmitool",
            "pm_user":"admin",
            "pm_password":"admin",
            "pm_addr":"192.168.255.200",
            "pm_port":"7002"
        },
        {
            "mac":[
                "52:54:00:a7:fe:27"
            ],
            "cpu":"4",
            "memory":"16384",
            "disk":"160",
            "arch":"x86_64",
            "name":"storage-2",
            "pm_type":"pxe_ipmitool",
            "pm_user":"admin",
            "pm_password":"admin",
            "pm_addr":"192.168.255.200",
            "pm_port":"7003"
        },
        {
            "mac":[
                "52:54:00:98:e9:d6"
            ],
            "cpu":"12",
            "memory":"32768",
            "disk":"60",
            "arch":"x86_64",
            "name":"compute-1",
            "pm_type":"pxe_ipmitool",
            "pm_user":"admin",
            "pm_password":"admin",
            "pm_addr":"192.168.255.200",
            "pm_port":"7004"
        },
        {
            "mac":[
                "52:54:00:6a:ea:be"
            ],
            "cpu":"12",
            "memory":"32768",
            "disk":"60",
            "arch":"x86_64",
            "name":"compute-2",
            "pm_type":"pxe_ipmitool",
            "pm_user":"admin",
            "pm_password":"admin",
            "pm_addr":"192.168.255.200",
            "pm_port":"7005"
        }
    ]
}

Karon kinahanglan natong andamon ang mga hulagway alang sa ironic. Aron mahimo kini, i-download kini pinaagi sa wget ug i-install:

(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 ~]$

Pag-upload og mga hulagway sa undercloud:

(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 ~]$

Tinoa nga ang tanan nga mga imahe na-load


(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 ~]$

Usa pa ka paghikap - kinahanglan nimong idugang ang usa ka dns server:


(undercloud) [stack@undercloud ~]$ openstack subnet list
+--------------------------------------+-----------------+--------------------------------------+------------------+
| ID                                   | Name            | Network                              | Subnet           |
+--------------------------------------+-----------------+--------------------------------------+------------------+
| f45dea46-4066-42aa-a3c4-6f84b8120cab | ctlplane-subnet | 6ca013dc-41c2-42d8-9d69-542afad53392 | 192.168.255.0/24 |
+--------------------------------------+-----------------+--------------------------------------+------------------+
(undercloud) [stack@undercloud ~]$ openstack subnet show f45dea46-4066-42aa-a3c4-6f84b8120cab
+-------------------+-----------------------------------------------------------+
| Field             | Value                                                     |
+-------------------+-----------------------------------------------------------+
| allocation_pools  | 192.168.255.11-192.168.255.50                             |
| cidr              | 192.168.255.0/24                                          |
| created_at        | 2020-08-13T20:10:37Z                                      |
| description       |                                                           |
| dns_nameservers   |                                                           |
| enable_dhcp       | True                                                      |
| gateway_ip        | 192.168.255.1                                             |
| host_routes       | destination='169.254.169.254/32', gateway='192.168.255.1' |
| id                | f45dea46-4066-42aa-a3c4-6f84b8120cab                      |
| ip_version        | 4                                                         |
| ipv6_address_mode | None                                                      |
| ipv6_ra_mode      | None                                                      |
| name              | ctlplane-subnet                                           |
| network_id        | 6ca013dc-41c2-42d8-9d69-542afad53392                      |
| prefix_length     | None                                                      |
| project_id        | a844ccfcdb2745b198dde3e1b28c40a3                          |
| revision_number   | 0                                                         |
| segment_id        | None                                                      |
| service_types     |                                                           |
| subnetpool_id     | None                                                      |
| tags              |                                                           |
| updated_at        | 2020-08-13T20:10:37Z                                      |
+-------------------+-----------------------------------------------------------+
(undercloud) [stack@undercloud ~]$ 
(undercloud) [stack@undercloud ~]$ neutron subnet-update f45dea46-4066-42aa-a3c4-6f84b8120cab --dns-nameserver 192.168.255.253                                    
neutron CLI is deprecated and will be removed in the future. Use openstack CLI instead.
Updated subnet: f45dea46-4066-42aa-a3c4-6f84b8120cab
(undercloud) [stack@undercloud ~]$

Karon mahimo na naton isugo ang introspection:

(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 ~]$

Sama sa imong makita gikan sa output, ang tanan nahuman nga walay mga sayup. Atong susihon nga ang tanan nga mga node naa sa magamit nga estado:


(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 ~]$ 

Kung ang mga node naa sa lahi nga estado, kasagaran madumala, unya adunay usa ka butang nga sayup ug kinahanglan nimo nga tan-awon ang log aron mahibal-an kung ngano kini nahitabo. Hinumdumi nga sa kini nga senaryo gigamit namon ang virtualization ug mahimo’g adunay mga bug nga nalangkit sa paggamit sa mga virtual machine o vbmc.

Sunod, kinahanglan naton ipiho kung unsang node ang magbuhat kung unsang function - nga mao, ipiho ang profile diin i-deploy ang node:


(undercloud) [stack@undercloud ~]$ openstack overcloud profiles list
+--------------------------------------+-----------+-----------------+-----------------+-------------------+
| Node UUID                            | Node Name | Provision State | Current Profile | Possible Profiles |
+--------------------------------------+-----------+-----------------+-----------------+-------------------+
| b4b2cf4a-b7ca-4095-af13-cc83be21c4f5 | control-1 | available       | None            |                   |
| b89a72a3-6bb7-429a-93bc-48393d225838 | storage-1 | available       | None            |                   |
| 20a16cc0-e0ce-4d88-8f17-eb0ce7b4d69e | storage-2 | available       | None            |                   |
| bfc1eb98-a17a-4a70-b0b6-6c0db0eac8e8 | compute-1 | available       | None            |                   |
| 766ab623-464c-423d-a529-d9afb69d1167 | compute-2 | available       | None            |                   |
+--------------------------------------+-----------+-----------------+-----------------+-------------------+
(undercloud) [stack@undercloud ~]$ openstack flavor list
+--------------------------------------+---------------+------+------+-----------+-------+-----------+
| ID                                   | Name          |  RAM | Disk | Ephemeral | VCPUs | Is Public |
+--------------------------------------+---------------+------+------+-----------+-------+-----------+
| 168af640-7f40-42c7-91b2-989abc5c5d8f | swift-storage | 4096 |   40 |         0 |     1 | True      |
| 52148d1b-492e-48b4-b5fc-772849dd1b78 | baremetal     | 4096 |   40 |         0 |     1 | True      |
| 56e66542-ae60-416d-863e-0cb192d01b09 | control       | 4096 |   40 |         0 |     1 | True      |
| af6796e1-d0c4-4bfe-898c-532be194f7ac | block-storage | 4096 |   40 |         0 |     1 | True      |
| e4d50fdd-0034-446b-b72c-9da19b16c2df | compute       | 4096 |   40 |         0 |     1 | True      |
| fc2e3acf-7fca-4901-9eee-4a4d6ef0265d | ceph-storage  | 4096 |   40 |         0 |     1 | True      |
+--------------------------------------+---------------+------+------+-----------+-------+-----------+
(undercloud) [stack@undercloud ~]$

Tinoa ang usa ka profile alang sa matag node:


openstack baremetal node set --property capabilities='profile:control,boot_option:local' b4b2cf4a-b7ca-4095-af13-cc83be21c4f5
openstack baremetal node set --property capabilities='profile:ceph-storage,boot_option:local' b89a72a3-6bb7-429a-93bc-48393d225838
openstack baremetal node set --property capabilities='profile:ceph-storage,boot_option:local' 20a16cc0-e0ce-4d88-8f17-eb0ce7b4d69e
openstack baremetal node set --property capabilities='profile:compute,boot_option:local' bfc1eb98-a17a-4a70-b0b6-6c0db0eac8e8
openstack baremetal node set --property capabilities='profile:compute,boot_option:local' 766ab623-464c-423d-a529-d9afb69d1167

Gisusi namo nga gibuhat namo ang tanan sa husto:


(undercloud) [stack@undercloud ~]$ openstack overcloud profiles list
+--------------------------------------+-----------+-----------------+-----------------+-------------------+
| Node UUID                            | Node Name | Provision State | Current Profile | Possible Profiles |
+--------------------------------------+-----------+-----------------+-----------------+-------------------+
| b4b2cf4a-b7ca-4095-af13-cc83be21c4f5 | control-1 | available       | control         |                   |
| b89a72a3-6bb7-429a-93bc-48393d225838 | storage-1 | available       | ceph-storage    |                   |
| 20a16cc0-e0ce-4d88-8f17-eb0ce7b4d69e | storage-2 | available       | ceph-storage    |                   |
| bfc1eb98-a17a-4a70-b0b6-6c0db0eac8e8 | compute-1 | available       | compute         |                   |
| 766ab623-464c-423d-a529-d9afb69d1167 | compute-2 | available       | compute         |                   |
+--------------------------------------+-----------+-----------------+-----------------+-------------------+
(undercloud) [stack@undercloud ~]$

Kung husto ang tanan, gihatagan namon ang mando nga i-deploy ang overcloud:

openstack overcloud deploy --templates --control-scale 1 --compute-scale 2  --ceph-storage-scale 2 --control-flavor control --compute-flavor compute  --ceph-storage-flavor ceph-storage --libvirt-type qemu

Sa usa ka tinuod nga pag-instalar, natural nga gamiton nila ang mga customized nga templates, sa among kaso kini makapakomplikado pag-ayo sa proseso, tungod kay gikinahanglan nga ipasabut ang matag pag-edit sa template. Sama sa gisulat sa sayo pa, bisan ang usa ka yano nga pag-instalar igo na aron makita namon kung giunsa kini molihok.

Mubo nga sulat: Ang --libvirt-type qemu nga baryable gikinahanglan niini nga kaso tungod kay kita mogamit sa nested virtualization. Kung dili, dili ka makadagan sa mga virtual machine.

Karon adunay ka mga usa ka oras, o tingali labaw pa (depende sa mga kapabilidad sa puthaw) ug mahimo ka lamang maglaum nga pagkahuman niini nga oras makita nimo kini nga inskripsiyon:


2020-08-14 08:39:21Z [overcloud]: CREATE_COMPLETE  Stack CREATE completed successfully

 Stack overcloud CREATE_COMPLETE 

Host 192.168.255.21 not found in /home/stack/.ssh/known_hosts
Started Mistral Workflow tripleo.deployment.v1.get_horizon_url. Execution ID: fcb996cd-6a19-482b-b755-2ca0c08069a9
Overcloud Endpoint: http://192.168.255.21:5000/
Overcloud Horizon Dashboard URL: http://192.168.255.21:80/dashboard
Overcloud rc file: /home/stack/overcloudrc
Overcloud Deployed
(undercloud) [stack@undercloud ~]$

Karon ikaw adunay usa ka hapit bug-os nga bersyon sa openstack, diin mahimo ka magtuon, mag-eksperimento, ug uban pa.

Atong susihon nga ang tanan nagtrabaho sa husto. Sa home directory stack sa user adunay duha ka file - usa ka stackrc (alang sa pagdumala sa undercloud) ug ang ikaduha nga overcloudrc (alang sa pagdumala sa overcloud). Kini nga mga file kinahanglan nga espesipiko isip tinubdan, tungod kay kini adunay impormasyon nga gikinahanglan alang sa pag-authenticate.


(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 ~]$

Ang akong pag-instalar nagkinahanglan gihapon og usa ka gamay nga paghikap - aron makadugang usa ka ruta sa controller, tungod kay ang makina nga akong gitrabahoan anaa sa laing network. Aron mahimo kini, adto sa control-1 sa ilawom sa account sa heat-admin ug isulat ang ruta


(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

Aw, karon makaadto ka sa kapunawpunawan. Tanang impormasyon - mga adres, login ug password - naa sa file /home/stack/overcloudrc. Ang katapusan nga diagram ingon niini:

Pasiuna sa network nga bahin sa imprastraktura sa panganod

Pinaagi sa dalan, sa among pag-instalar, ang mga adres sa makina gi-isyu pinaagi sa DHCP, ug ingon sa imong makita, kini gi-isyu "bisan unsaon". Mahimo nimong hardcode sa template kung unsang adres ang kinahanglan ilakip sa unsang makina sa panahon sa pag-deploy, kung kinahanglan nimo kini.

Giunsa ang pagdagayday sa trapiko tali sa mga virtual machine?

Niini nga artikulo, atong hisgotan ang tulo ka kapilian sa pagpasa sa trapiko

  • Duha ka makina sa usa ka hypervisor sa usa ka L2 network
  • Duha ka makina sa lain-laing mga hypervisors sa samang L2 network
  • Duha ka makina sa lain-laing mga network (cross-network rooting)

Ang mga kaso nga adunay access sa gawas nga kalibutan pinaagi sa usa ka eksternal nga network, gamit ang naglutaw nga mga adres, ingon man ang gipang-apod-apod nga ruta, atong hisgotan sa sunod nga higayon, sa pagkakaron atong ipunting ang internal nga trapiko.

Sa pagsulay, atong ibutang ang mosunod nga laraw:

Pasiuna sa network nga bahin sa imprastraktura sa panganod

Naghimo kami og 4 ka virtual machine - 3 sa samang L2 network - net-1, ug 1 pa sa net-2 network

(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 ~]$ 

Atong tan-awon kung unsa nga hypervisors ang nabuhat nga mga makina nahimutang:

(overcloud) [stack@undercloud ~]$ nova show f53b37b5-2204-46cc-aef0-dba84bf970c0 | egrep "hypervisor_hostname|instance_name|hostname"
| OS-EXT-SRV-ATTR:hostname             | vm-1                                                     |
| OS-EXT-SRV-ATTR:hypervisor_hostname  | overcloud-novacompute-0.localdomain                      |
| OS-EXT-SRV-ATTR:instance_name        | instance-00000001                                        |
(overcloud) [stack@undercloud ~]$ nova show fc8b6722-0231-49b0-b2fa-041115bef34a | egrep "hypervisor_hostname|instance_name|hostname"
| OS-EXT-SRV-ATTR:hostname             | vm-2                                                     |
| OS-EXT-SRV-ATTR:hypervisor_hostname  | overcloud-novacompute-1.localdomain                      |
| OS-EXT-SRV-ATTR:instance_name        | instance-00000002                                        |
(overcloud) [stack@undercloud ~]$ nova show 3cd74455-b9b7-467a-abe3-bd6ff765c83c | egrep "hypervisor_hostname|instance_name|hostname"
| OS-EXT-SRV-ATTR:hostname             | vm-3                                                     |
| OS-EXT-SRV-ATTR:hypervisor_hostname  | overcloud-novacompute-0.localdomain                      |
| OS-EXT-SRV-ATTR:instance_name        | instance-00000003                                        |
(overcloud) [stack@undercloud ~]$ nova show 7e836338-6772-46b0-9950-f7f06dbe91a8 | egrep "hypervisor_hostname|instance_name|hostname"
| OS-EXT-SRV-ATTR:hostname             | vm-4                                                     |
| OS-EXT-SRV-ATTR:hypervisor_hostname  | overcloud-novacompute-1.localdomain                      |
| OS-EXT-SRV-ATTR:instance_name        | instance-00000004                                        |

(overcloud) [stack@undercloud ~]$
Ang mga makina nga vm-1 ug vm-3 nahimutang sa compute-0, ang mga makina nga vm-2 ug vm-4 nahimutang sa node compute-1.

Dugang pa, ang usa ka virtual nga router gihimo aron mahimo ang pag-ruta tali sa mga piho nga network:

(overcloud) [stack@undercloud ~]$ openstack router list  --project 5e18ce8ec9594e00b155485f19895e6c
+--------------------------------------+----------+--------+-------+-------------+-------+----------------------------------+
| ID                                   | Name     | Status | State | Distributed | HA    | Project                          |
+--------------------------------------+----------+--------+-------+-------------+-------+----------------------------------+
| 0a4d2420-4b9c-46bd-aec1-86a1ef299abe | router-1 | ACTIVE | UP    | False       | False | 5e18ce8ec9594e00b155485f19895e6c |
+--------------------------------------+----------+--------+-------+-------------+-------+----------------------------------+
(overcloud) [stack@undercloud ~]$ 

Ang router adunay duha ka virtual port nga naglihok isip mga ganghaan alang sa mga network:

(overcloud) [stack@undercloud ~]$ openstack router show 0a4d2420-4b9c-46bd-aec1-86a1ef299abe | grep interface
| interfaces_info         | [{"subnet_id": "2529ad1a-6b97-49cd-8515-cbdcbe5e3daa", "ip_address": "10.0.1.254", "port_id": "0c52b15f-8fcc-4801-bf52-7dacc72a5201"}, {"subnet_id": "335552dd-b35b-456b-9df0-5aac36a3ca13", "ip_address": "10.0.2.254", "port_id": "92fa49b5-5406-499f-ab8d-ddf28cc1a76c"}] |
(overcloud) [stack@undercloud ~]$ 

Apan sa dili pa tan-awon kung giunsa ang pagdagan sa trapiko, atong tan-awon kung unsa ang naa sa control node (nga usa usab ka network node) ug sa compute node. Magsugod ta sa compute node.


[heat-admin@overcloud-novacompute-0 ~]$ sudo ovs-vsctl show
[heat-admin@overcloud-novacompute-0 ~]$ sudo sudo ovs-appctl dpif/show
system@ovs-system: hit:3 missed:3
  br-ex:
    br-ex 65534/1: (internal)
    phy-br-ex 1/none: (patch: peer=int-br-ex)
  br-int:
    br-int 65534/2: (internal)
    int-br-ex 1/none: (patch: peer=phy-br-ex)
    patch-tun 2/none: (patch: peer=patch-int)
  br-tun:
    br-tun 65534/3: (internal)
    patch-int 1/none: (patch: peer=patch-tun)
    vxlan-c0a8ff0f 3/4: (vxlan: egress_pkt_mark=0, key=flow, local_ip=192.168.255.19, remote_ip=192.168.255.15)
    vxlan-c0a8ff1a 2/4: (vxlan: egress_pkt_mark=0, key=flow, local_ip=192.168.255.19, remote_ip=192.168.255.26)
[heat-admin@overcloud-novacompute-0 ~]$

Sa pagkakaron adunay tulo ka ovs bridges sa node - br-int, br-tun, br-ex. Sa tunga nila, ingon sa atong makita, adunay usa ka hugpong sa mga interface. Para sa kasayon ​​sa pagsabot, atong ibutang kining tanan nga mga interface sa diagram ug tan-awon kung unsay mahitabo.

Pasiuna sa network nga bahin sa imprastraktura sa panganod

Gikan sa mga adres diin ang VxLAN tunnels gipataas, makita nga ang usa ka tunnel gipataas sa compute-1 (192.168.255.26), ang ikaduhang tunnel nagtan-aw sa control-1 (192.168.255.15). Apan ang labing makaiikag nga butang mao nga ang br-ex walay pisikal nga mga interface, ug kung imong tan-awon kung unsang mga agos ang gi-configure, imong makita nga kini nga tulay mahimo ra nga maghulog sa trapiko sa pagkakaron.


[heat-admin@overcloud-novacompute-0 ~]$ ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1450
        inet 192.168.255.19  netmask 255.255.255.0  broadcast 192.168.255.255
        inet6 fe80::5054:ff:fe6a:eabe  prefixlen 64  scopeid 0x20<link>
        ether 52:54:00:6a:ea:be  txqueuelen 1000  (Ethernet)
        RX packets 2909669  bytes 4608201000 (4.2 GiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1821057  bytes 349198520 (333.0 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[heat-admin@overcloud-novacompute-0 ~]$ 

Ingon sa makita gikan sa output, ang adres direkta nga gi-screw sa pisikal nga pantalan, ug dili sa virtual bridge interface.


[heat-admin@overcloud-novacompute-0 ~]$  sudo ovs-appctl fdb/show br-ex
 port  VLAN  MAC                Age
[heat-admin@overcloud-novacompute-0 ~]$  sudo ovs-ofctl dump-flows br-ex
 cookie=0x9169eae8f7fe5bb2, duration=216686.864s, table=0, n_packets=303, n_bytes=26035, priority=2,in_port="phy-br-ex" actions=drop
 cookie=0x9169eae8f7fe5bb2, duration=216686.887s, table=0, n_packets=0, n_bytes=0, priority=0 actions=NORMAL
[heat-admin@overcloud-novacompute-0 ~]$ 

Sumala sa unang lagda, ang tanan nga gikan sa phy-br-ex port kinahanglang ilabay.
Sa tinuud, wala pa’y laing lugar aron ma-traffic ang kini nga tulay, gawas sa kini nga interface (junction sa br-int), ug kung tan-awon sa mga tinulo, ang trapiko sa BUM miabot na sa tulay.

Kana mao, ang trapiko gikan niini nga node mahimo ra nga mobiya pinaagi sa VxLAN tunnel ug wala nay lain. Bisan pa, kung imong i-on ang DVR, ang sitwasyon mausab, apan ato kining atubangon sa laing higayon. Kung gigamit ang pag-inusara sa network, pananglitan, gamit ang mga vlan, wala ka usa ka interface sa L3 sa ika-0 nga vlan, apan daghang mga interface. Bisan pa, ang trapiko sa VxLAN mogawas sa node sa parehas nga paagi, apan gi-encapsulated usab sa pipila nga gipahinungod nga vlan.

Nahibal-an namon ang compute node, adto sa control node.


[heat-admin@overcloud-controller-0 ~]$ sudo ovs-appctl dpif/show
system@ovs-system: hit:930491 missed:825
  br-ex:
    br-ex 65534/1: (internal)
    eth0 1/2: (system)
    phy-br-ex 2/none: (patch: peer=int-br-ex)
  br-int:
    br-int 65534/3: (internal)
    int-br-ex 1/none: (patch: peer=phy-br-ex)
    patch-tun 2/none: (patch: peer=patch-int)
  br-tun:
    br-tun 65534/4: (internal)
    patch-int 1/none: (patch: peer=patch-tun)
    vxlan-c0a8ff13 3/5: (vxlan: egress_pkt_mark=0, key=flow, local_ip=192.168.255.15, remote_ip=192.168.255.19)
    vxlan-c0a8ff1a 2/5: (vxlan: egress_pkt_mark=0, key=flow, local_ip=192.168.255.15, remote_ip=192.168.255.26)
[heat-admin@overcloud-controller-0 ~]$

Sa tinuud, makaingon kita nga parehas ang tanan, bisan pa, ang ip address wala na sa pisikal nga interface, apan sa virtual nga tulay. Gihimo kini tungod kay kini nga pantalan mao ang pantalan diin ang trapiko moadto sa gawas sa kalibutan.


[heat-admin@overcloud-controller-0 ~]$ ifconfig br-ex
br-ex: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1450
        inet 192.168.255.15  netmask 255.255.255.0  broadcast 192.168.255.255
        inet6 fe80::5054:ff:fe20:a22f  prefixlen 64  scopeid 0x20<link>
        ether 52:54:00:20:a2:2f  txqueuelen 1000  (Ethernet)
        RX packets 803859  bytes 1732616116 (1.6 GiB)
        RX errors 0  dropped 63  overruns 0  frame 0
        TX packets 808475  bytes 121652156 (116.0 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[heat-admin@overcloud-controller-0 ~]$ 
[heat-admin@overcloud-controller-0 ~]$ sudo ovs-appctl fdb/show br-ex
 port  VLAN  MAC                Age
    3   100  28:c0:da:00:4d:d3   35
    1     0  28:c0:da:00:4d:d3   35
    1     0  52:54:00:98:e9:d6    0
LOCAL     0  52:54:00:20:a2:2f    0
    1     0  52:54:00:2c:08:9e    0
    3   100  52:54:00:20:a2:2f    0
    1     0  52:54:00:6a:ea:be    0
[heat-admin@overcloud-controller-0 ~]$ 

Kini nga pantalan gihigot sa br-ex bridge ug tungod kay walay vlan tags niini, kini nga port kay usa ka trunk port diin ang tanan nga vlans gitugotan, karon ang trapiko mogawas nga walay tag, ingon sa gipakita sa vlan-id 0 sa output sa ibabaw.

Pasiuna sa network nga bahin sa imprastraktura sa panganod

Ang tanan sa karon parehas sa usa ka compute node - parehas nga mga tulay, parehas nga mga tunnel nga moadto sa duha nga mga node sa pagkalkula.

Dili nato tagdon ang mga storage node niini nga artikulo, apan alang sa pagsabot gikinahanglan nga isulti nga ang network nga bahin niini nga mga node maoy banal sa kaulawan. Sa among kaso, adunay usa ra ka pisikal nga pantalan (eth0) nga adunay usa ka ip address nga gi-assign niini, ug mao ra kana. Walay VxLAN tunnels, tunnel bridges, ug uban pa - walay ovs sa tanan, tungod kay kini walay kahulugan. Kung gigamit ang pag-inusara sa network - kini nga node adunay duha ka mga interface (pisikal nga mga pantalan, bodns, o duha ra ka vlan - dili kini igsapayan - depende kini sa gusto nimo) - usa alang sa pagkontrol, ang ikaduha alang sa trapiko (pagsulat sa VM disk , pagbasa gikan sa disk, ug uban pa)

Nahibal-an namon kung unsa ang naa sa mga node kung wala’y bisan unsang mga serbisyo. Karon magpadagan kita og 4 ka virtual machine ug tan-awon kung giunsa ang mga pagbag-o sa laraw nga gihulagway sa ibabaw - kinahanglan nga adunay mga pantalan, virtual nga mga router, ug uban pa.

Sa pagkakaron ang among network ingon niini:

Pasiuna sa network nga bahin sa imprastraktura sa panganod

Kami adunay duha ka virtual machine sa matag computer node. Gamit ang compute-0 isip usa ka pananglitan, atong tan-awon kung giunsa ang tanan gilakip.


[heat-admin@overcloud-novacompute-0 ~]$ sudo virsh list 
 Id    Name                           State
----------------------------------------------------
 1     instance-00000001              running
 3     instance-00000003              running

[heat-admin@overcloud-novacompute-0 ~]$ 

Ang makina adunay usa lamang ka virtual interface - 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 ~]$ 

Kini nga interface makita sa linux bridge:

[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 ~]$ 

Sama sa imong makita gikan sa output, adunay duha ra nga mga interface sa tulay - tap95d96a75-a0 ug qvb95d96a75-a0.

Dinhi angayan nga magpuyo gamay sa mga tipo sa virtual nga mga aparato sa network sa OpenStack:
Ang vtap usa ka virtual nga interface nga gilakip sa usa ka pananglitan (VM)
qbr - Linux tulay
qvb ug qvo - vEth nga pares nga konektado sa Linux bridge ug Open vSwitch bridge
br-int, br-tun, br-vlan - Ablihi ang vSwitch tulay
patch-, int-br-, phy-br- — Ablihi ang vSwitch patch interface nga nagkonektar sa mga tulay
qg, qr, ha, fg, sg - Ablihi ang vSwitch port nga gigamit sa mga virtual device aron makonektar sa OVS

Sama sa imong nasabtan, kung kita adunay qvb95d96a75-a0 nga pantalan sa tulay, nga usa ka vEth nga pares, unya sa usa ka dapit adunay iyang katugbang, nga kinahanglan nga lohikal nga tawgon nga qvo95d96a75-a0. Gitan-aw namon kung unsang mga pantalan ang naa sa OVS.


[heat-admin@overcloud-novacompute-0 ~]$ sudo sudo ovs-appctl dpif/show
system@ovs-system: hit:526 missed:91
  br-ex:
    br-ex 65534/1: (internal)
    phy-br-ex 1/none: (patch: peer=int-br-ex)
  br-int:
    br-int 65534/2: (internal)
    int-br-ex 1/none: (patch: peer=phy-br-ex)
    patch-tun 2/none: (patch: peer=patch-int)
    qvo5bd37136-47 6/6: (system)
    qvo95d96a75-a0 3/5: (system)
  br-tun:
    br-tun 65534/3: (internal)
    patch-int 1/none: (patch: peer=patch-tun)
    vxlan-c0a8ff0f 3/4: (vxlan: egress_pkt_mark=0, key=flow, local_ip=192.168.255.19, remote_ip=192.168.255.15)
    vxlan-c0a8ff1a 2/4: (vxlan: egress_pkt_mark=0, key=flow, local_ip=192.168.255.19, remote_ip=192.168.255.26)
[heat-admin@overcloud-novacompute-0 ~]$ 

Ingon sa atong makita ang pantalan naa sa br-int. Ang Br-int naglihok ingon usa ka switch nga nagtapos sa mga pantalan sa virtual machine. Dugang sa qvo95d96a75-a0, ang qvo5bd37136-47 port makita sa output. Kini usa ka pantalan sa ikaduhang virtual machine. Ingon usa ka sangputanan, ang among laraw karon ingon niini:

Pasiuna sa network nga bahin sa imprastraktura sa panganod

Ang pangutana nga kinahanglan dayon nga interes sa matinagdanon nga magbabasa mao kung unsa ang tulay sa linux tali sa virtual machine port ug sa OVS port? Ang kamatuoran mao nga ang mga grupo sa seguridad gigamit sa pagpanalipod sa makina, nga walay bisan unsa nga labaw pa kay sa iptables. Ang OVS wala magtrabaho sa mga iptable, mao nga ang ingon nga "saklay" naimbento. Bisan pa, siya nahimong dili na magamit - gipulihan siya sa conntrack sa mga bag-ong pagpagawas.

Kana mao, sa katapusan, ang laraw ingon niini:

Pasiuna sa network nga bahin sa imprastraktura sa panganod

Duha ka makina sa usa ka hypervisor sa usa ka L2 network

Tungod kay kining duha ka VMs anaa sa samang L2 network ug sa samang hypervisor, makatarunganon nga ang trapiko tali kanila moadto sa lokal pinaagi sa br-int, tungod kay ang duha ka makina anaa sa samang VLAN:


[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 ~]$ 

Duha ka makina sa lain-laing mga hypervisors sa samang L2 network

Karon atong tan-awon kung giunsa ang trapiko sa taliwala sa duha ka mga makina sa parehas nga L2 network, apan nahimutang sa lainlaing mga hypervisors. Sa tinuud, wala’y daghang pagbag-o, ang trapiko tali sa mga hypervisors moagi sa tunel sa vxlan. Atong tan-awon ang usa ka pananglitan.

Mga adres sa mga virtual nga makina diin atong tan-awon ang trapiko:

[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 ~]$ 

Atong tan-awon ang forwarding table sa br-int sa compute-0:

[heat-admin@overcloud-novacompute-0 ~]$  sudo ovs-appctl fdb/show br-int | grep fa:16:3e:72:ad:53
    2     1  fa:16:3e:72:ad:53    1
[heat-admin@overcloud-novacompute-0 ~]

Ang trapiko kinahanglan moadto sa pantalan 2 - tan-awa kung unsang pantalan kini:

[heat-admin@overcloud-novacompute-0 ~]$ sudo ovs-ofctl show br-int | grep addr
 1(int-br-ex): addr:7e:7f:28:1f:bd:54
 2(patch-tun): addr:0a:bd:07:69:58:d9
 3(qvo95d96a75-a0): addr:ea:50:9a:3d:69:58
 6(qvo5bd37136-47): addr:9a:d1:03:50:3d:96
 LOCAL(br-int): addr:1a:0f:53:97:b1:49
[heat-admin@overcloud-novacompute-0 ~]$

Kini ang patch-tun - nga mao, ang interface sa br-tun. Atong tan-awon kung unsa ang mahitabo sa package sa br-tun:

[heat-admin@overcloud-novacompute-0 ~]$ sudo ovs-ofctl dump-flows br-tun | grep fa:16:3e:72:ad:53
 cookie=0x8759a56536b67a8e, duration=1387.959s, table=20, n_packets=1460, n_bytes=138880, hard_timeout=300, idle_age=0, hard_age=0, priority=1,vlan_tci=0x0001/0x0fff,dl_dst=fa:16:3e:72:ad:53 actions=load:0->NXM_OF_VLAN_TCI[],load:0x16->NXM_NX_TUN_ID[],output:2
[heat-admin@overcloud-novacompute-0 ~]$ 

Ang pakete giputos sa VxLAN ug gipadala sa port 2. Atong tan-awon kung asa ang port 2 padulong:

[heat-admin@overcloud-novacompute-0 ~]$ sudo ovs-ofctl show br-tun | grep addr   
 1(patch-int): addr:b2:d1:f8:21:96:66
 2(vxlan-c0a8ff1a): addr:be:64:1f:75:78:a7
 3(vxlan-c0a8ff0f): addr:76:6f:b9:3c:3f:1c
 LOCAL(br-tun): addr:a2:5b:6d:4f:94:47
[heat-admin@overcloud-novacompute-0 ~]$

Kini ang vxlan tunnel sa compute-1:

[heat-admin@overcloud-novacompute-0 ~]$ sudo ovs-appctl dpif/show | egrep vxlan-c0a8ff1a
    vxlan-c0a8ff1a 2/4: (vxlan: egress_pkt_mark=0, key=flow, local_ip=192.168.255.19, remote_ip=192.168.255.26)
[heat-admin@overcloud-novacompute-0 ~]$

Moadto kami sa pag-compute-1 ug tan-awon kung unsa ang sunod nga mahitabo sa package:

[heat-admin@overcloud-novacompute-1 ~]$ sudo ovs-appctl fdb/show br-int | egrep fa:16:3e:44:98:20
    2     1  fa:16:3e:44:98:20    1
[heat-admin@overcloud-novacompute-1 ~]$ 

Ang Mac naa sa br-int forwarding table sa compute-1, ug ingon sa makita gikan sa output sa ibabaw, kini makita pinaagi sa port 2, nga mao ang port padulong sa br-tun:

[heat-admin@overcloud-novacompute-1 ~]$ sudo ovs-ofctl show br-int | grep addr   
 1(int-br-ex): addr:8a:d7:f9:ad:8c:1d
 2(patch-tun): addr:46:cc:40:bd:20:da
 3(qvoe7e23f1b-07): addr:12:78:2e:34:6a:c7
 4(qvo3210e8ec-c0): addr:7a:5f:59:75:40:85
 LOCAL(br-int): addr:e2:27:b2:ed:14:46

Aw, unya atong makita nga sa br-int sa compute-1 adunay destinasyon nga poppy:

[heat-admin@overcloud-novacompute-1 ~]$ sudo ovs-appctl fdb/show br-int | egrep fa:16:3e:72:ad:53
    3     1  fa:16:3e:72:ad:53    0
[heat-admin@overcloud-novacompute-1 ~]$ 

Sa ato pa, ang nadawat nga packet molupad sa port 3, kung diin adunay usa ka virtual machine nga pananglitan-00000003.

Ang katahum sa pag-deploy sa Openstack aron magtuon sa usa ka virtual nga imprastraktura mao nga dali naton makuha ang trapiko tali sa mga hypervisors ug makita kung unsa ang mahitabo niini. Mao kini ang atong buhaton karon, pagdagan ang tcpdump sa vnet port padulong sa compute-0:


[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*******************

Ang unang linya nagpakita nga ang packet gikan sa address 10.0.1.85 moadto sa address 10.0.1.88 (ICMP traffic), ug kini giputos sa usa ka VxLAN packet nga adunay vni 22 ug ang packet gikan sa host 192.168.255.19 (compute-0) ngadto sa host. 192.168.255.26 ( compute-1). Atong masusi nga ang VNI motakdo sa usa nga gipiho sa ovs.

Balik ta ani nga linya actions=load:0->NXM_OF_VLAN_TCI[],load:0x16->NXM_NX_TUN_ID[],output:2. Ang 0x16 kay vni sa hexadecimal number system. Atong i-convert kini nga numero ngadto sa ika-16 nga sistema:


16 = 6*16^0+1*16^1 = 6+16 = 22

Sa ato pa, tinuod ang vni.

Ang ikaduha nga linya nagpakita sa balikbalik nga trapiko, maayo, dili makatarunganon nga ipasabut kini didto, ug busa ang tanan klaro.

Duha ka makina sa lain-laing mga network (routing tali sa mga network)

Ang katapusan nga kaso alang sa karon mao ang pag-ruta tali sa mga network sulod sa parehas nga proyekto gamit ang usa ka virtual nga router. Among gikonsiderar ang kaso nga walay DVR (atong ikonsiderar kini sa laing artikulo), mao nga ang routing mahitabo sa network node. Sa among kaso, ang network node dili lahi nga entidad ug nahimutang sa control node.

Una, atong tan-awon nga ang routing nagtrabaho:

$ 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

Tungod kay sa kini nga kaso ang pakete kinahanglan moadto sa ganghaan ug madala didto, kinahanglan naton mahibal-an ang poppy address sa ganghaan, diin atong tan-awon ang lamesa sa ARP sa pananglitan:

$ 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

Karon tan-awon nato kung asa ipadala ang trapiko uban ang destinasyon (10.0.1.254) fa:16:3e:c4:64:70:

[heat-admin@overcloud-novacompute-0 ~]$ sudo ovs-appctl fdb/show br-int | egrep fa:16:3e:c4:64:70
    2     1  fa:16:3e:c4:64:70    0
[heat-admin@overcloud-novacompute-0 ~]$ 

Gitan-aw namon kung diin nanguna ang port 2:

[heat-admin@overcloud-novacompute-0 ~]$ sudo ovs-ofctl show br-int | grep addr
 1(int-br-ex): addr:7e:7f:28:1f:bd:54
 2(patch-tun): addr:0a:bd:07:69:58:d9
 3(qvo95d96a75-a0): addr:ea:50:9a:3d:69:58
 6(qvo5bd37136-47): addr:9a:d1:03:50:3d:96
 LOCAL(br-int): addr:1a:0f:53:97:b1:49
[heat-admin@overcloud-novacompute-0 ~]$ 

Ang tanan lohikal, ang trapiko moadto sa br-tun. Atong tan-awon kon asa nga vxlan tunnel kini maputos:

[heat-admin@overcloud-novacompute-0 ~]$ sudo ovs-ofctl dump-flows br-tun | grep fa:16:3e:c4:64:70
 cookie=0x8759a56536b67a8e, duration=3514.566s, table=20, n_packets=3368, n_bytes=317072, hard_timeout=300, idle_age=0, hard_age=0, priority=1,vlan_tci=0x0001/0x0fff,dl_dst=fa:16:3e:c4:64:70 actions=load:0->NXM_OF_VLAN_TCI[],load:0x16->NXM_NX_TUN_ID[],output:3
[heat-admin@overcloud-novacompute-0 ~]$ 

Ang ikatulo nga pantalan mao ang vxlan tunnel:

[heat-admin@overcloud-controller-0 ~]$ sudo ovs-ofctl show br-tun | grep addr
 1(patch-int): addr:a2:69:00:c5:fa:ba
 2(vxlan-c0a8ff1a): addr:86:f0:ce:d0:e8:ea
 3(vxlan-c0a8ff13): addr:72:aa:73:2c:2e:5b
 LOCAL(br-tun): addr:a6:cb:cd:72:1c:45
[heat-admin@overcloud-controller-0 ~]$ 

Nga nagtan-aw sa control node:

[heat-admin@overcloud-controller-0 ~]$ sudo sudo ovs-appctl dpif/show | grep vxlan-c0a8ff1a
    vxlan-c0a8ff1a 2/5: (vxlan: egress_pkt_mark=0, key=flow, local_ip=192.168.255.15, remote_ip=192.168.255.26)
[heat-admin@overcloud-controller-0 ~]$ 

Ang trapiko milupad ngadto sa control node, mao nga kinahanglan natong adtoon ug tan-awon kung giunsa ang pagruta.

Sama sa imong nahinumduman, ang control node sa sulod susama ra sa compute node - parehas nga tulo ka tulay, ang br-ex ra ang adunay pisikal nga pantalan diin ang node makapadala sa trapiko sa gawas. Ang paghimo og mga instance nagbag-o sa configuration sa compute nodes - linux bridge, iptables ug mga interface gidugang sa mga node. Ang paghimo sa mga network ug usa ka virtual nga router nagbilin usab sa marka niini sa pag-configure sa control node.

Busa, dayag nga ang gateway MAC address kinahanglang anaa sa br-int forwarding table sa control node. Atong susihon kung naa ba kini ug asa kini nagtan-aw:

[heat-admin@overcloud-controller-0 ~]$ sudo ovs-appctl fdb/show br-int | grep fa:16:3e:c4:64:70
    5     1  fa:16:3e:c4:64:70    1
[heat-admin@overcloud-controller-0 ~]$ 
[heat-admin@overcloud-controller-0 ~]$  sudo ovs-ofctl show br-int | grep addr
 1(int-br-ex): addr:2e:58:b6:db:d5:de
 2(patch-tun): addr:06:41:90:f0:9e:56
 3(tapca25a97e-64): addr:fa:16:3e:e6:2c:5c
 4(tap22015e46-0b): addr:fa:16:3e:76:c2:11
 5(qr-0c52b15f-8f): addr:fa:16:3e:c4:64:70
 6(qr-92fa49b5-54): addr:fa:16:3e:80:13:72
 LOCAL(br-int): addr:06:de:5d:ed:44:44
[heat-admin@overcloud-controller-0 ~]$ 

Ang Mac makita gikan sa port qr-0c52b15f-8f. Pagbalik sa lista sa mga virtual nga pantalan sa Openstack, kini nga tipo sa pantalan gigamit aron makonektar ang lainlaing mga virtual nga aparato sa OVS. Aron mahimong mas tukma, ang qr mao ang pantalan padulong sa virtual nga router, nga girepresentahan isip namespace.

Atong tan-awon kung unsang mga namespace ang naa sa server:

[heat-admin@overcloud-controller-0 ~]$ sudo  ip netns
qrouter-0a4d2420-4b9c-46bd-aec1-86a1ef299abe (id: 2)
qdhcp-7d541e74-1c36-4e1d-a7c4-0968c8dbc638 (id: 1)
qdhcp-67a3798c-32c0-4c18-8502-2531247e3cc2 (id: 0)
[heat-admin@overcloud-controller-0 ~]$ 

Adunay tulo ka kopya. Apan sa paghukom sa mga ngalan, makatag-an ka sa katuyoan sa matag usa kanila. Mobalik kami sa mga higayon nga adunay ID 0 ug 1 sa ulahi, karon interesado kami sa namespace qrouter-0a4d2420-4b9c-46bd-aec1-86a1ef299abe:


[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 ~]$ 

Niini nga namespace, adunay duha ka internal nga among gibuhat kaniadto. Ang duha ka virtual port gidugang sa br-int. Atong susihon ang MAC port address qr-0c52b15f-8f, tungod kay ang trapiko, sa paghukom sa destinasyon nga MAC address, miadto niini nga interface.

[heat-admin@overcloud-controller-0 ~]$ sudo  ip netns exec qrouter-0a4d2420-4b9c-46bd-aec1-86a1ef299abe ifconfig qr-0c52b15f-8f
qr-0c52b15f-8f: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1450
        inet 10.0.1.254  netmask 255.255.255.0  broadcast 10.0.1.255
        inet6 fe80::f816:3eff:fec4:6470  prefixlen 64  scopeid 0x20<link>
        ether fa:16:3e:c4:64:70  txqueuelen 1000  (Ethernet)
        RX packets 5356  bytes 427305 (417.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 5195  bytes 490603 (479.1 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[heat-admin@overcloud-controller-0 ~]$ 

Kana mao, sa kini nga kaso, ang tanan molihok sumala sa mga balaod sa standard nga ruta. Tungod kay ang trapiko gitakda alang sa host 10.0.2.8, kini kinahanglan nga mogawas pinaagi sa ikaduhang interface qr-92fa49b5-54 ug moagi sa vxlan tunnel ngadto sa compute node:


[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 ~]$ 

Ang tanan makatarunganon, walay mga surpresa. Atong tan-awon gikan diin ang poppy address sa host 10.0.2.8 makita sa br-int:

[heat-admin@overcloud-controller-0 ~]$ sudo ovs-appctl fdb/show br-int | grep fa:16:3e:6c:ad:9c
    2     2  fa:16:3e:6c:ad:9c    1
[heat-admin@overcloud-controller-0 ~]$ 
[heat-admin@overcloud-controller-0 ~]$ sudo ovs-ofctl show br-int | grep addr
 1(int-br-ex): addr:2e:58:b6:db:d5:de
 2(patch-tun): addr:06:41:90:f0:9e:56
 3(tapca25a97e-64): addr:fa:16:3e:e6:2c:5c
 4(tap22015e46-0b): addr:fa:16:3e:76:c2:11
 5(qr-0c52b15f-8f): addr:fa:16:3e:c4:64:70
 6(qr-92fa49b5-54): addr:fa:16:3e:80:13:72
 LOCAL(br-int): addr:06:de:5d:ed:44:44
[heat-admin@overcloud-controller-0 ~]$ 

Sama sa gipaabot, ang trapiko moadto sa br-tun, atong tan-awon kung asa nga tunel ang sunod nga agianan sa trapiko:

[heat-admin@overcloud-controller-0 ~]$ sudo ovs-ofctl dump-flows br-tun | grep fa:16:3e:6c:ad:9c
 cookie=0x2ab04bf27114410e, duration=5346.829s, table=20, n_packets=5248, n_bytes=498512, hard_timeout=300, idle_age=0, hard_age=0, priority=1,vlan_tci=0x0002/0x0fff,dl_dst=fa:16:3e:6c:ad:9c actions=load:0->NXM_OF_VLAN_TCI[],load:0x63->NXM_NX_TUN_ID[],output:2
[heat-admin@overcloud-controller-0 ~]$
[heat-admin@overcloud-controller-0 ~]$ sudo ovs-ofctl show br-tun | grep addr
 1(patch-int): addr:a2:69:00:c5:fa:ba
 2(vxlan-c0a8ff1a): addr:86:f0:ce:d0:e8:ea
 3(vxlan-c0a8ff13): addr:72:aa:73:2c:2e:5b
 LOCAL(br-tun): addr:a6:cb:cd:72:1c:45
[heat-admin@overcloud-controller-0 ~]$ 
[heat-admin@overcloud-controller-0 ~]$ sudo sudo ovs-appctl dpif/show | grep vxlan-c0a8ff1a
    vxlan-c0a8ff1a 2/5: (vxlan: egress_pkt_mark=0, key=flow, local_ip=192.168.255.15, remote_ip=192.168.255.26)
[heat-admin@overcloud-controller-0 ~]$ 

Ang trapiko moadto sa tunnel aron mag-compute-1. Aw, sa compute-1, ang tanan yano ra - gikan sa br-tun ang package makuha sa br-int ug gikan didto ngadto sa interface sa virtual machine:

[heat-admin@overcloud-controller-0 ~]$ sudo sudo ovs-appctl dpif/show | grep vxlan-c0a8ff1a
    vxlan-c0a8ff1a 2/5: (vxlan: egress_pkt_mark=0, key=flow, local_ip=192.168.255.15, remote_ip=192.168.255.26)
[heat-admin@overcloud-controller-0 ~]$ 
[heat-admin@overcloud-novacompute-1 ~]$ sudo ovs-appctl fdb/show br-int | grep fa:16:3e:6c:ad:9c
    4     2  fa:16:3e:6c:ad:9c    1
[heat-admin@overcloud-novacompute-1 ~]$ sudo ovs-ofctl show br-int | grep addr                  
 1(int-br-ex): addr:8a:d7:f9:ad:8c:1d
 2(patch-tun): addr:46:cc:40:bd:20:da
 3(qvoe7e23f1b-07): addr:12:78:2e:34:6a:c7
 4(qvo3210e8ec-c0): addr:7a:5f:59:75:40:85
 LOCAL(br-int): addr:e2:27:b2:ed:14:46
[heat-admin@overcloud-novacompute-1 ~]$ 

Atong susihon nga kini mao gayud ang husto nga interface:

[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 ~]$

Sa tinuud, nahuman na namon ang tibuuk nga paagi sa pakete. Sa akong hunahuna namatikdan nimo nga ang trapiko miagi sa lainlaing mga tunnel sa vxlan ug migawas nga adunay lainlaing mga VNI. Atong tan-awon kung unsa ang mga VNI, pagkahuman magkolekta kami usa ka dump sa control port sa node ug siguruha nga ang trapiko moadto sama sa gihulagway sa ibabaw.
Busa ang tunel sa pag-compute-0 adunay mosunod nga mga aksyon=load:0->NXM_OF_VLAN_TCI[],load:0x16->NXM_NX_TUN_ID[],output:3. Atong hubaron ang 0x16 ngadto sa decimal nga sistema sa numero:


0x16 = 6*16^0+1*16^1 = 6+16 = 22

Ang tunnel sa pag-compute-1 adunay mosunod nga VNI:actions=load:0->NXM_OF_VLAN_TCI[],load:0x63->NXM_NX_TUN_ID[],output:2. Atong hubaron ang 0x63 ngadto sa sistema sa decimal nga numero:


0x63 = 3*16^0+6*16^1 = 3+96 = 99

Aw, karon atong tan-awon ang dump:

[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*******************

Ang unang packet usa ka vxlan packet gikan sa host 192.168.255.19 (compute-0) ngadto sa host 192.168.255.15 (control-1) uban sa vni 22, sa sulod diin ang ICMP packet giputos gikan sa host 10.0.1.85 ngadto sa host 10.0.2.8. Sama sa among gikalkula sa ibabaw, ang vni motakdo sa among nakita sa output.

Ang ikaduhang packet kay vxlan packet gikan sa host 192.168.255.15 (control-1) ngadto sa host 192.168.255.26 (compute-1) uban sa vni 99, sa sulod diin ang ICMP packet giputos gikan sa host 10.0.1.85 ngadto sa host 10.0.2.8. Sama sa among gikalkula sa ibabaw, ang vni motakdo sa among nakita sa output.

Ang sunod nga duha ka pakete mao ang pagbalik sa trapiko gikan sa 10.0.2.8 dili 10.0.1.85.

Kana mao, sa katapusan, nakuha namo ang mosunod nga control node scheme:

Pasiuna sa network nga bahin sa imprastraktura sa panganod

Murag mao na? Nakalimot mi bahin sa duha ka namespaces:

[heat-admin@overcloud-controller-0 ~]$ sudo  ip netns
qrouter-0a4d2420-4b9c-46bd-aec1-86a1ef299abe (id: 2)
qdhcp-7d541e74-1c36-4e1d-a7c4-0968c8dbc638 (id: 1)
qdhcp-67a3798c-32c0-4c18-8502-2531247e3cc2 (id: 0)
[heat-admin@overcloud-controller-0 ~]$ 

Samtang naghisgot kami bahin sa arkitektura sa cloud platform, maayo kung ang mga makina makadawat og mga adres awtomatik gikan sa DHCP server. Kini ang duha ka DHCP server para sa among duha ka network 10.0.1.0/24 ug 10.0.2.0/24.

Susihon nato nga mao kini. Adunay usa lamang ka adres niini nga namespace - 10.0.1.1 - ang adres sa DHCP server mismo, ug kini gilakip usab sa br-int:

[heat-admin@overcloud-controller-0 ~]$ sudo ip netns exec qdhcp-67a3798c-32c0-4c18-8502-2531247e3cc2 ifconfig
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 1  bytes 28 (28.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1  bytes 28 (28.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

tapca25a97e-64: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1450
        inet 10.0.1.1  netmask 255.255.255.0  broadcast 10.0.1.255
        inet6 fe80::f816:3eff:fee6:2c5c  prefixlen 64  scopeid 0x20<link>
        ether fa:16:3e:e6:2c:5c  txqueuelen 1000  (Ethernet)
        RX packets 129  bytes 9372 (9.1 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 49  bytes 6154 (6.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Atong tan-awon kung ang mga proseso adunay qdhcp-67a3798c-32c0-4c18-8502-2531247e3cc2 sa ilang ngalan sa control node:


[heat-admin@overcloud-controller-0 ~]$ ps -aux | egrep qdhcp-7d541e74-1c36-4e1d-a7c4-0968c8dbc638 
root      640420  0.0  0.0   4220   348 ?        Ss   11:31   0:00 dumb-init --single-child -- ip netns exec qdhcp-7d541e74-1c36-4e1d-a7c4-0968c8dbc638 /usr/sbin/dnsmasq -k --no-hosts --no-resolv --pid-file=/var/lib/neutron/dhcp/7d541e74-1c36-4e1d-a7c4-0968c8dbc638/pid --dhcp-hostsfile=/var/lib/neutron/dhcp/7d541e74-1c36-4e1d-a7c4-0968c8dbc638/host --addn-hosts=/var/lib/neutron/dhcp/7d541e74-1c36-4e1d-a7c4-0968c8dbc638/addn_hosts --dhcp-optsfile=/var/lib/neutron/dhcp/7d541e74-1c36-4e1d-a7c4-0968c8dbc638/opts --dhcp-leasefile=/var/lib/neutron/dhcp/7d541e74-1c36-4e1d-a7c4-0968c8dbc638/leases --dhcp-match=set:ipxe,175 --local-service --bind-dynamic --dhcp-range=set:subnet-335552dd-b35b-456b-9df0-5aac36a3ca13,10.0.2.0,static,255.255.255.0,86400s --dhcp-option-force=option:mtu,1450 --dhcp-lease-max=256 --conf-file= --domain=openstacklocal
heat-ad+  951620  0.0  0.0 112944   980 pts/0    S+   18:50   0:00 grep -E --color=auto qdhcp-7d541e74-1c36-4e1d-a7c4-0968c8dbc638
[heat-admin@overcloud-controller-0 ~]$ 

Adunay ingon nga proseso ug, base sa kasayuran nga gipresentar sa output sa ibabaw, mahimo naton, pananglitan, tan-awon kung unsa ang naa sa abangan karon:

[heat-admin@overcloud-controller-0 ~]$ cat /var/lib/neutron/dhcp/7d541e74-1c36-4e1d-a7c4-0968c8dbc638/leases
1597492111 fa:16:3e:6c:ad:9c 10.0.2.8 host-10-0-2-8 01:fa:16:3e:6c:ad:9c
1597491115 fa:16:3e:76:c2:11 10.0.2.1 host-10-0-2-1 *
[heat-admin@overcloud-controller-0 ~]$

Ingon usa ka sangputanan, makuha namon ang mosunod nga hugpong sa mga serbisyo sa control node:

Pasiuna sa network nga bahin sa imprastraktura sa panganod

Bueno, hinumdomi - kini usa ra ka 4 nga makina, 2 internal nga network ug usa ka virtual nga router ... Wala kami mga eksternal nga network dinhi karon, usa ka hugpong sa lainlaing mga proyekto, ang matag usa adunay kaugalingon nga mga network (nagsapaw-sapaw), ug kami adunay ang usa ka gipang-apod-apod nga router gipalong, ug sa katapusan Human sa tanan, adunay usa lamang ka control node sa test bench (alang sa fault tolerance kinahanglan adunay usa ka korum sa tulo ka mga node). Makataronganon nga sa komersiyo ang tanan "gamay" nga labi ka komplikado, apan sa niining yano nga pananglitan nahibal-an namon kung giunsa kini molihok - kung adunay ka 3 o 300 nga mga namespace siyempre hinungdanon, apan gikan sa punto sa pagtan-aw sa operasyon sa tibuuk gambalay, walay bisan unsa nga mausab sa daghan ... bisan hangtud nga kamo dili plug sa pipila vendor SDN. Apan kana usa ka hingpit nga lahi nga istorya.

Nanghinaut ko nga kini makapaikag. Kung adunay mga komento / pagdugang, o kung diin ako prangka nga namakak (Ako usa ka tawo ug ang akong opinyon kanunay nga suhetibo) - isulat kung unsa ang kinahanglan nga tul-iron / idugang - among ayohon / idugang ang tanan.

Sa konklusyon, gusto nakong isulti ang pipila ka mga pulong bahin sa pagtandi sa Openstack (parehong vanilla ug vendor) sa usa ka solusyon sa panganod gikan sa VMWare - Kanunay kong gipangutana kini nga pangutana sa miaging duha ka tuig ug matinud-anon na kong gikapoy niini. , pero sa gihapon. Sa akong opinyon, lisud kaayo ang pagtandi niining duha ka mga solusyon, apan siguradong makaingon kita nga adunay mga disadvantages sa duha ka mga solusyon, ug sa pagpili sa usa ka solusyon, kinahanglan nimo nga timbangon ang mga pros ug cons.

Kung ang OpenStack usa ka solusyon nga gipadagan sa komunidad, nan ang VMWare adunay katungod sa pagbuhat lamang kung unsa ang gusto niini (basaha - kung unsa ang kapuslanan niini) ug kini makatarunganon - tungod kay kini usa ka komersyal nga kompanya nga naanad sa pagpangita og salapi gikan sa mga kliyente niini. Apan adunay usa ka dako ug tambok PERO - mahimo nimong makuha ang OpenStack, pananglitan gikan sa Nokia, ug uban ang gamay nga gasto switch sa usa ka solusyon gikan sa, pananglitan, Juniper (Contrail Cloud), apan dili nimo mahimo nga makuha gikan sa VMWare . Alang kanako, kining duha ka mga solusyon sama niini - Ang Openstack (vendor) usa ka yano nga hawla diin ikaw gibutang, apan ikaw adunay usa ka yawe ug mahimo ka nga mobiya bisan unsang orasa. Ang VMWare usa ka bulawan nga hawla, ang tag-iya adunay yawe sa hawla ug kini magasto nimo og dako.

Wala ako nangampanya alang sa una nga produkto o ikaduha - gipili nimo kung unsa ang imong kinahanglan. Apan kung ako adunay ingon nga kapilian, unya akong pilion ang duha nga mga solusyon - VMWare alang sa IT cloud (light load, sayon ​​​​nga pagdumala), OpenStack gikan sa pipila nga vendor (Nokia ug Juniper naghatag og maayo kaayo nga mga solusyon sa turnkey) - alang sa Telecom cloud. Dili nako gamiton ang Openstack alang sa lunsay nga IT - kini sama sa pagpamusil sa mga goryon gikan sa usa ka kanyon, apan wala ako'y nakita nga bisan unsang mga kontraindiksiyon sa paggamit niini, gawas sa redundancy. Bisan pa, ang paggamit sa VMWare sa telecom - sama sa paghakot sa mga rubble sa usa ka Ford Raptor - nindot sa gawas, apan ang drayber kinahanglan nga mohimo og 10 ka biyahe imbes nga usa.

Sa akong opinyon, ang pinakadako nga disbentaha sa VMWare mao ang kompleto nga pagsira niini - ang kompanya dili maghatag kanimo bisan unsang kasayuran kung giunsa kini molihok, pananglitan, vSAN o kung unsa ang naa sa kernel sa hypervisor - dili kini kapuslanan alang niini - kana, buhaton nimo. dili gyud mahimong eksperto sa VMWare - kung wala’y suporta sa vendor, malaglag ka (kadaghanan nako makit-an ang mga eksperto sa VMWare nga nalibog sa mga wala’y hinungdan nga pangutana). Alang kanako, ang VMWare nagpalit ug awto nga naka-lock ang hood - oo, mahimo ka adunay mga espesyalista nga makabag-o sa timing belt, apan ang nagbaligya kanimo niini nga solusyon ang makaabli sa hood. Sa personal, dili ko ganahan sa mga solusyon nga dili nako mahaum. Moingon ka nga dili ka kinahanglan nga moadto sa ilawom sa hood. Oo, posible kini, apan tan-awon ko ikaw kung kinahanglan nimo nga mag-assemble sa usa ka dako nga function sa panganod gikan sa 20-30 virtual machine, 40-50 nga mga network, katunga niini gusto nga mogawas, ug ang ikaduha nga katunga nangayo Ang pagpadali sa SR-IOV, kung dili kinahanglan nimo ang labi pa nga usa ka dosena sa kini nga mga makina - kung dili ang pasundayag dili igo.

Adunay uban nga mga punto sa panglantaw, mao nga ikaw lamang ang makahukom kung unsa ang pilion ug, labaw sa tanan, ikaw ang responsable sa imong pagpili. Kini lang ang akong opinyon - usa ka tawo nga nakakita ug nakahikap sa labing menos 4 nga mga produkto - Nokia, Juniper, Red Hat ug VMWare. Sa ato pa, naa koy ikakumpara.

Source: www.habr.com

Idugang sa usa ka comment