Entwodiksyon nan pati rezo a nan enfrastrikti nwaj

Entwodiksyon nan pati rezo a nan enfrastrikti nwaj

Cloud computing ap antre pi fon ak pi fon nan lavi nou epi pwobableman pa gen yon sèl moun ki pa te itilize nenpòt sèvis nwaj omwen yon fwa. Sepandan, ki sa egzakteman yon nwaj se ak ki jan li fonksyone, kèk moun konnen, menm nan nivo a nan yon lide. 5G deja vin yon reyalite epi enfrastrikti telekominikasyon an ap kòmanse deplase soti nan solisyon poto yo nan solisyon nwaj yo, menm jan li te fè lè li te deplase soti nan solisyon totalman pyès ki nan konpitè yo nan "poto yo" virtualize.

Jodi a nou pral pale sou mond enteryè a nan enfrastrikti nwaj, an patikilye nou pral gade debaz yo nan pati rezo a.

Ki sa ki se yon nwaj? Virtualizasyon nan menm - View pwofil?

Plis pase yon kesyon lojik. Non - sa a se pa Virtualization, byenke li pa ta ka fè san li. Ann gade de definisyon:

Cloud computing (ki refere yo kòm Cloud) se yon modèl pou bay aksè fasil pou itilize nan resous enfòmatik distribiye ki dwe deplwaye ak lanse sou demann ak latansi ki pi ba posib ak pri minimòm pou founisè sèvis la.

Virtualization - Sa a se kapasite nan divize yon sèl antite fizik (pa egzanp, yon sèvè) nan plizyè moun vityèl, kidonk ogmante itilizasyon resous (pa egzanp, ou te gen 3 sèvè chaje nan 25-30 pousan, apre Virtualization ou jwenn 1 sèvè chaje. nan 80-90 pousan). Natirèlman, Virtualization manje kèk nan resous yo - ou bezwen manje ipèvizè a, sepandan, jan pratik te montre, jwèt la vo chandèl la. Yon egzanp ideyal nan Virtualization se VMWare, ki parfe prepare machin vityèl, oswa pou egzanp KVM, ki mwen pito, men sa a se yon kesyon de gou.

Nou itilize Virtualization san nou pa rann nou kont li, e menm routeurs fè deja itilize Virtualization - pou egzanp, nan dènye vèsyon an nan JunOS, sistèm operasyon an enstale kòm yon machin vityèl sou tèt yon distribisyon Linux an tan reyèl (Wind River 9). Men, Virtualization se pa nwaj la, men nwaj la pa ka egziste san Virtualization.

Virtualization se youn nan blòk bilding sou ki nwaj la bati.

Fè yon nwaj pa senpleman kolekte plizyè hypervisors nan yon sèl domèn L2, ajoute yon koup de liv playbooks yaml pou otomatikman anrejistre vlans atravè kèk kalite ansible ak bloke yon bagay tankou yon sistèm orchestration sou li tout otomatikman kreye machin vityèl pa pral travay. Li pral pi egzak, men Frankenstein ki kapab lakòz la se pa nwaj nou bezwen an, byenke li ka rèv la ultim pou lòt moun. Anplis, si ou pran menm Openstack la, li esansyèlman toujou Frankenstein, men o byen, se pou nou pa pale sou sa pou kounye a.

Men, mwen konprann ke nan definisyon an prezante pi wo a li pa totalman klè ki sa yo ka aktyèlman rele yon nwaj.

Se poutèt sa, yon dokiman ki soti nan NIST (National Institute of Standards and Technology) bay 5 karakteristik prensipal ke yon enfrastrikti nwaj ta dwe genyen:

Bay sèvis sou demann. Yo dwe bay itilizatè a aksè gratis nan resous òdinatè yo atribye ba li (tankou rezo, disk vityèl, memwa, nwayo processeur, elatriye), epi yo dwe bay resous sa yo otomatikman - sa vle di, san entèvansyon nan men founisè sèvis la.

Lajè disponiblite sèvis. Aksè nan resous yo dwe bay mekanis estanda pou pèmèt yo sèvi ak tou de PC estanda ak kliyan mens ak aparèy mobil.

Konbine resous nan pisin. Pisin resous yo dwe kapab bay resous pou plizyè kliyan an menm tan, asire ke kliyan yo izole epi yo gratis nan enfliyans mityèl ak konpetisyon pou resous yo. Rezo yo enkli tou nan pisin yo, sa ki endike posiblite pou itilize sipèpoze adrese. Pisin yo dwe kapab echèl sou demann. Itilizasyon pisin fè li posib pou bay nivo ki nesesè nan tolerans fay resous ak abstraksyon resous fizik ak vityèl - se moun k ap resevwa sèvis la tou senpleman bay ansanm resous li te mande a (kote resous sa yo ye fizikman, sou konbyen. sèvè ak switch - li pa enpòtan pou kliyan an). Sepandan, nou dwe pran an kont lefèt ke founisè a dwe asire rezèvasyon transparan nan resous sa yo.

Adaptasyon rapid nan diferan kondisyon. Sèvis yo dwe fleksib - pwovizyon rapid nan resous, redistribisyon yo, ajoute oswa diminye resous sou demann kliyan an, ak sou pati kliyan an ta dwe gen yon santiman ke resous yo nwaj yo intèrminabl. Pou konpreyansyon fasil, pou egzanp, ou pa wè yon avètisman ke yon pati nan espas disk ou a nan Apple iCloud te disparèt paske disk la sou sèvè a te kraze, ak kondui yo kraze. Anplis de sa, bò kote ou, posiblite yo nan sèvis sa a prèske illimité - ou bezwen 2 TB - pa gen okenn pwoblèm, ou peye ak resevwa li. Yon egzanp menm jan an ka bay ak Google.Drive oswa Yandex.Disk.

Posiblite pou mezire sèvis yo bay la. Sistèm nwaj yo dwe otomatikman kontwole ak optimize resous konsome, epi mekanis sa yo dwe transparan pou itilizatè a ak founisè sèvis la. Sa vle di, ou ka toujou tcheke konbyen resous ou menm ak kliyan ou ap konsome.

Li vo konsidere lefèt ke kondisyon sa yo se sitou kondisyon pou yon nwaj piblik, kidonk pou yon nwaj prive (ki se, yon nwaj te lanse pou bezwen entèn konpayi an), kondisyon sa yo ka yon ti kras ajiste. Sepandan, yo toujou gen yo dwe fè, otreman nou pa pral jwenn tout benefis ki genyen nan cloud computing.

Poukisa nou bezwen yon nwaj?

Sepandan, nenpòt ki nouvo oswa ki deja egziste teknoloji, nenpòt nouvo pwotokòl kreye pou yon bagay (byen, eksepte pou RIP-ng, nan kou). Pa gen moun ki bezwen yon pwotokòl pou dedomajman pou yon pwotokòl (byen, eksepte pou RIP-ng, nan kou). Li lojik ke nwaj la kreye pou bay yon kalite sèvis itilizatè/kliyan an. Nou tout abitye ak omwen yon koup nan sèvis nwaj, pou egzanp Dropbox oswa Google.Docs, e mwen kwè pifò moun sèvi ak yo avèk siksè - pou egzanp, atik sa a te ekri lè l sèvi avèk sèvis la Google.Docs nwaj. Men, sèvis nwaj nou konnen yo se sèlman yon pati nan kapasite nwaj la—pi presizeman, yo se sèlman yon sèvis SaaS-tip. Nou ka bay yon sèvis nwaj nan twa fason: nan fòm SaaS, PaaS oswa IaaS. Ki sèvis ou bezwen depann de dezi ou ak kapasite ou.

Ann gade chak nan lòd:

Lojisyèl kòm yon Sèvis (SaaS) se yon modèl pou bay kliyan an yon sèvis konplè, pou egzanp, yon sèvis imel tankou Yandex.Mail oswa Gmail. Nan modèl livrezon sèvis sa a, ou menm, kòm yon kliyan, aktyèlman pa fè anyen eksepte sèvi ak sèvis yo - sa vle di, ou pa bezwen reflechi sou mete kanpe sèvis la, tolerans fòt li oswa redondance. Bagay pwensipal lan se pa konpwomi modpas ou; founisè sèvis sa a ap fè rès la pou ou. Soti nan pwen de vi nan founisè sèvis la, li se konplètman responsab pou tout sèvis la - soti nan pyès ki nan konpitè sèvè ak sistèm opere lame nan baz done ak anviwònman lojisyèl.

Platfòm kòm yon sèvis (PaaS) — lè w ap itilize modèl sa a, founisè sèvis la bay kliyan an yon pyès travay pou sèvis la, pou egzanp, ann pran yon sèvè entènèt. Founisè sèvis la bay kliyan an yon sèvè vityèl (an reyalite, yon seri resous, tankou RAM / CPU / Depo / Nets, elatriye), e menm enstale eksplwatasyon an ak lojisyèl nesesè sou sèvè sa a, sepandan, konfigirasyon an nan tout bagay sa yo fè pa kliyan an tèt li e pou pèfòmans sèvis kliyan an reponn. Founisè sèvis la, tankou nan ka anvan an, responsab pou pèfòmans nan ekipman fizik, hypervisors, machin vityèl li menm, disponiblite rezo li yo, elatriye, men sèvis la tèt li pa nan zòn responsablite li yo.

Enfrastrikti kòm yon sèvis (IaaS) - apwòch sa a deja pi enteresan, an reyalite, founisè sèvis la bay kliyan an yon enfrastrikti virtualize konplè - se sa ki, kèk seri (pisin) nan resous, tankou CPU Cores, RAM, rezo, elatriye Tout lòt bagay se jiska kliyan an - sa kliyan an vle fè ak resous sa yo nan rezèvwa a (quota) - li pa patikilyèman enpòtan pou founisè a. Kit kliyan an vle kreye pwòp vEPC li oswa menm kreye yon mini operatè epi bay sèvis kominikasyon - pa gen okenn kesyon - fè li. Nan yon senaryo konsa, founisè sèvis la responsab pou pwovizyon resous yo, tolerans fòt yo ak disponiblite yo, osi byen ke OS ki pèmèt yo mete resous sa yo ansanm ak rann yo disponib pou kliyan an ak kapasite pou ogmante oswa diminye resous yo nenpòt ki lè. sou demann kliyan an. Kliyan an konfigirasyon tout machin vityèl ak lòt tinsel tèt li atravè pòtal la oto-sèvis ak konsole, ki gen ladan mete kanpe rezo (eksepte pou rezo ekstèn).

Ki sa ki OpenStack?

Nan tout twa opsyon, founisè sèvis la bezwen yon OS ki pral pèmèt kreyasyon yon enfrastrikti nwaj. An reyalite, ak SaaS, plis pase yon divizyon responsab pou tout pil teknoloji a - gen yon divizyon ki responsab pou enfrastrikti a - se sa ki, li bay IaaS nan yon lòt divizyon, divizyon sa a bay SaaS nan kliyan an. OpenStack se youn nan sistèm operasyon nwaj yo ki pèmèt ou kolekte yon pakèt switch, sèvè ak sistèm depo nan yon sèl pisin resous, divize pisin komen sa a an subpool (lokatè) epi bay resous sa yo bay kliyan sou rezo a.

OpenStack se yon sistèm operasyon nwaj ki pèmèt ou kontwole gwo pisin resous enfòmatik, depo done ak resous rezo, pwovizyon ak jere atravè yon API lè l sèvi avèk mekanis otantifikasyon estanda.

Nan lòt mo, sa a se yon seri pwojè lojisyèl gratis ki fèt pou kreye sèvis nwaj (tou de piblik ak prive) - se sa ki, yon seri zouti ki pèmèt ou konbine sèvè ak chanje ekipman nan yon sèl pisin resous, jere. resous sa yo, bay nivo ki nesesè nan tolerans fòt.

Nan moman ekri materyèl sa a, estrikti OpenStack la sanble sa a:
Entwodiksyon nan pati rezo a nan enfrastrikti nwaj
Foto pran nan openstack.org

Chak nan eleman ki enkli nan OpenStack fè yon fonksyon espesifik. Achitekti distribiye sa a pèmèt ou mete nan solisyon an seri eleman fonksyonèl ou bezwen an. Sepandan, kèk eleman yo se eleman rasin ak retire yo ap mennen nan inoperabilite konplè oswa pasyèl nan solisyon an kòm yon antye. Konpozan sa yo anjeneral klase kòm:

  • Dachbord — Entèfas ki baze sou Entènèt pou jere sèvis OpenStack
  • Keystone se yon sèvis idantite santralize ki bay fonksyon otantifikasyon ak otorizasyon pou lòt sèvis, ansanm ak jere kalifikasyon itilizatè yo ak wòl yo.
  • Netwon - yon sèvis rezo ki bay koneksyon ant entèfas divès kalite sèvis OpenStack (ki gen ladan koneksyon ant VM ak aksè yo nan mond lan deyò)
  • Cinder — bay aksè nan depo bloke pou machin vityèl
  • Nova - jesyon sik lavi nan machin vityèl
  • Gade — depo imaj machin vityèl ak snapshots
  • Swift — bay aksè nan objè a depo
  • Ceilometer — yon sèvis ki bay kapasite pou kolekte telemetri ak mezire resous ki disponib ak konsome
  • Chalè — òkestrasyon ki baze sou modèl pou kreyasyon otomatik ak pwovizyon resous yo

Ou ka wè yon lis konplè tout pwojè ak objektif yo isit la.

Chak eleman OpenStack se yon sèvis ki fè yon fonksyon espesifik epi ki bay yon API pou jere fonksyon sa a epi kominike avèk lòt sèvis sistèm operasyon nwaj yo pou kreye yon enfrastrikti inifye. Pou egzanp, Nova bay jesyon resous enfòmatik ak yon API pou aksè nan konfigirasyon resous sa yo, Glance bay jesyon imaj ak yon API pou jere yo, Cinder bay depo blòk ak yon API pou jere li, elatriye. Tout fonksyon yo konekte nan yon fason trè pre.

Sepandan, si ou gade nan li, tout sèvis ki kouri nan OpenStack se finalman kèk kalite machin vityèl (oswa veso) ki konekte nan rezo a. Kesyon an rive - poukisa nou bezwen anpil eleman?

Ann ale nan algorithm pou kreye yon machin vityèl epi konekte li nan rezo a ak depo ki pèsistan nan Openstack.

  1. Lè ou kreye yon demann pou kreye yon machin, kit se yon demann atravè Horizon (Dashboard) oswa yon demann atravè CLI a, premye bagay ki rive se otorizasyon demann ou an sou Keystone - èske ou ka kreye yon machin, èske li gen dwa pou itilize rezo sa a, fè kota bouyon ou, elatriye.
  2. Keystone otantifye demann ou an epi jenere yon siy otorizasyon nan mesaj repons lan, ki pral itilize pi lwen. Lè w resevwa yon repons nan men Keystone, demann lan voye nan direksyon Nova (nova api).
  3. Nova-api tcheke validite demann ou an lè w kontakte Keystone lè l sèvi avèk siy otorizasyon ki te pwodwi anvan an
  4. Keystone fè otantifikasyon epi li bay enfòmasyon sou otorizasyon ak restriksyon ki baze sou siy otorizasyon sa a.
  5. Nova-api kreye yon antre pou nouvo VM nan nova-database epi li pase demann pou kreye machin nan Nova-scheduler.
  6. Nova-scheduler chwazi lame a (nœud òdinatè) kote VM a pral deplwaye baze sou paramèt, pwa ak zòn espesifye yo. Yon dosye sa a ak ID VM yo ekri nan nova-database.
  7. Apre sa, nova-scheduler kontakte nova-compute ak yon demann pou deplwaye yon egzanp. Nova-compute kontakte nova-conductor pou jwenn enfòmasyon sou paramèt machin yo (nova-conductor se yon eleman nova ki aji kòm yon sèvè proxy ant nova-database ak nova-compute, limite kantite demann nan nova-database pou evite pwoblèm ak baz done. rediksyon chaj konsistans).
  8. Nova-conductor resevwa enfòmasyon yo mande a soti nan nova-database epi li pase l bay nova-compute.
  9. Apre sa, nova-compute fè yon kout je pou jwenn idantite imaj la. Glace valide demann lan nan Keystone epi retounen enfòmasyon yo mande yo.
  10. Nova-compute kontakte netwon pou jwenn enfòmasyon sou paramèt rezo a. Menm jan ak ti koutje sou, neutron valide demann lan nan Keystone, apre sa li kreye yon antre nan baz done a (idantifyan pò, elatriye), kreye yon demann pou kreye yon pò, epi retounen enfòmasyon yo mande a nova-compute.
  11. Nova-compute kontakte sann ak yon demann pou asiyen yon volim nan machin vityèl la. Menm jan ak ti koutje sou, sidr valide demann lan nan Keystone, kreye yon demann kreyasyon volim, epi retounen enfòmasyon yo mande yo.
  12. Nova-compute kontakte libvirt ak yon demann pou deplwaye yon machin vityèl ak paramèt yo espesifye.

An reyalite, yon operasyon ki sanble senp nan kreye yon machin vityèl senp vire nan tankou yon toubiyon nan apèl API ant eleman nan platfòm nwaj la. Anplis, jan ou ka wè, menm sèvis yo te deziyen deja konpoze tou de eleman ki pi piti ant ki entèraksyon fèt. Kreye yon machin se sèlman yon ti pati nan sa platfòm nwaj la pèmèt ou fè - gen yon sèvis ki responsab pou balanse trafik, yon sèvis ki responsab pou estokaj blòk, yon sèvis ki responsab pou DNS, yon sèvis ki responsab pou pwovizyon sèvè metal vid, elatriye. Nwaj la pèmèt ou ta dwe trete machin vityèl ou tankou yon bann mouton (kòm opoze a Virtualization). Si yon bagay rive machin ou nan yon anviwònman vityèl - ou retabli li nan sovgad, elatriye, men aplikasyon nwaj yo bati nan yon fason ke machin vityèl la pa jwe yon wòl enpòtan konsa - machin vityèl la "mouri" - pa gen okenn pwoblèm. - se yon nouvo jis kreye veyikil la ki baze sou modèl la, epi, jan yo di, eskwadwon an pa t 'avi pèt la nan avyon de gè a. Natirèlman, sa a bay pou prezans nan mekanis òkestrasyon - lè l sèvi avèk modèl Chalè, ou ka fasilman deplwaye yon fonksyon konplèks ki fòme ak plizyè douzèn rezo ak machin vityèl.

Li toujou vo kenbe nan tèt ou ke pa gen okenn enfrastrikti nwaj san yon rezo - chak eleman nan yon fason oswa yon lòt reyaji ak lòt eleman atravè rezo a. Anplis de sa, nwaj la gen yon rezo absoliman ki pa estatik. Natirèlman, rezo a anba se menm plis oswa mwens estatik - nouvo nœuds ak switch yo pa ajoute chak jou, men eleman nan kouvri ka epi yo pral inevitableman chanje toujou ap - nouvo rezo yo pral ajoute oswa efase, nouvo machin vityèl ap parèt ak ansyen yo pral. mouri. Ak jan ou sonje nan definisyon an nan nwaj la bay nan kòmansman an anpil nan atik la, resous yo ta dwe resevwa lajan nan itilizatè a otomatikman ak ak pi piti a (oswa pi bon ankò, san) entèvansyon nan men founisè sèvis la. Sa vle di, ki kalite dispozisyon resous rezo ki kounye a egziste nan fòm yon front-end nan fòm lan nan kont pèsonèl ou aksesib atravè http/https ak enjenyè rezo Vasily nan sèvis la kòm yon backend se pa yon nwaj, menm si Vasily gen uit men.

Neutron, kòm yon sèvis rezo, bay yon API pou jere pòsyon rezo a nan enfrastrikti nwaj la. Sèvis la bay pouvwa ak jere pòsyon rezo Openstack la lè li bay yon kouch abstrè ki rele Network-as-a-Service (NaaS). Sa vle di, rezo a se menm inite vityèl mezirab kòm, pou egzanp, nwayo CPU vityèl oswa kantite RAM.

Men, anvan ou ale nan achitekti nan pati rezo a nan OpenStack, ann konsidere ki jan rezo sa a ap travay nan OpenStack ak poukisa rezo a se yon pati enpòtan ak entegral nan nwaj la.

Se konsa, nou gen de VM kliyan RED ak de VM kliyan VÈT. Ann sipoze ke machin sa yo sitiye sou de hypervisors nan fason sa a:

Entwodiksyon nan pati rezo a nan enfrastrikti nwaj

Nan moman sa a, sa a se jis Virtualization nan 4 serveurs e pa gen anyen plis, depi jiska prezan tout sa nou te fè se virtualize 4 serveurs, mete yo sou de serveurs fizik. Epi jiskaprezan yo pa menm konekte ak rezo a.

Pou fè yon nwaj, nou bezwen ajoute plizyè konpozan. Premyèman, nou virtualize pati rezo a - nou bezwen konekte 4 machin sa yo an pè, ak kliyan yo vle yon koneksyon L2. Ou ka itilize yon switch ak konfigirasyon yon kòf nan direksyon li epi rezoud tout bagay lè l sèvi avèk yon pon Linux oswa, pou itilizatè ki pi avanse, openvswitch (nou pral retounen nan sa a pita). Men, ka gen anpil rezo, ak toujou ap pouse L2 atravè yon switch se pa pi bon lide - gen diferan depatman, yon biwo sèvis, mwa ap tann pou yon aplikasyon yo dwe ranpli, semèn nan depanaj - nan mond lan modèn sa a. apwòch pa travay ankò. Ak pi bonè yon konpayi konprann sa a, se pi fasil pou li avanse pou pi devan. Se poutèt sa, ant hypervisors yo nou pral chwazi yon rezo L3 atravè ki machin vityèl nou yo pral kominike, ak sou tèt rezo L3 sa a nou pral bati rezo vityèl L2 kouvri kote trafik machin vityèl nou yo pral kouri. Ou ka itilize GRE, Geneve oswa VxLAN kòm enkapsulasyon. Ann konsantre sou lèt la pou kounye a, byenke li pa patikilyèman enpòtan.

Nou bezwen lokalize VTEP yon kote (mwen espere tout moun abitye ak tèminoloji VxLAN). Depi nou gen yon rezo L3 ki soti dirèkteman nan serveurs yo, pa gen anyen ki anpeche nou mete VTEP sou sèvè yo tèt yo, epi OVS (OpenvSwitch) ekselan nan fè sa. Kòm yon rezilta, nou te jwenn konsepsyon sa a:

Entwodiksyon nan pati rezo a nan enfrastrikti nwaj

Depi trafik ant VM yo dwe divize, pò yo nan direksyon pou machin vityèl yo pral gen nimewo vlan diferan. Nimewo tag la jwe yon wòl sèlman nan yon sèl switch vityèl, depi lè enkapsile nan VxLAN nou ka fasilman retire li, paske nou pral gen yon VNI.

Entwodiksyon nan pati rezo a nan enfrastrikti nwaj

Koulye a, nou ka kreye machin nou yo ak rezo vityèl pou yo san okenn pwoblèm.

Sepandan, e si kliyan an gen yon lòt machin, men li sou yon rezo diferan? Nou bezwen eradikasyon ant rezo yo. Nou pral gade nan yon opsyon ki senp lè yo itilize routage santralize - se sa ki, trafik yo dirije atravè nœud rezo espesyal dedye (byen, kòm yon règ, yo konbine avèk nœuds kontwòl, kidonk nou pral gen menm bagay la).

Li sanble pa gen anyen konplike - nou fè yon koòdone pon sou ne kontwòl la, kondwi trafik nan li epi soti nan la nou wout li kote nou bezwen li. Men, pwoblèm nan se ke kliyan an RED vle sèvi ak rezo a 10.0.0.0/24, ak kliyan an VÈT vle sèvi ak rezo a 10.0.0.0/24. Sa vle di, nou kòmanse kwaze espas adrès yo. Anplis de sa, kliyan pa vle lòt kliyan yo kapab wout nan rezo entèn yo, ki fè sans. Pou separe rezo yo ak trafik done kliyan, nou pral asiyen yon espas non separe pou chak nan yo. Espas non se an reyalite yon kopi pile rezo Linux la, se sa ki, kliyan ki nan espas non RED yo konplètman izole nan kliyan ki soti nan espas non GREEN (byen, swa routage ant rezo kliyan sa yo pèmèt atravè espas non an default oswa sou ekipman transpò en).

Sa vle di, nou jwenn dyagram sa a:

Entwodiksyon nan pati rezo a nan enfrastrikti nwaj

Tinèl L2 konvèje soti nan tout nœuds enfòmatik nan nœuds kontwòl la. nœud kote koòdone L3 pou rezo sa yo sitiye, yo chak nan yon espas non dedye pou izolasyon.

Sepandan, nou bliye bagay ki pi enpòtan an. Machin vityèl la dwe bay kliyan an yon sèvis, se sa ki, li dwe gen omwen yon koòdone ekstèn nan kote li ka rive jwenn. Sa vle di, nou bezwen ale nan mond lan deyò. Gen diferan opsyon isit la. Ann fè opsyon ki pi senp la. Nou pral ajoute yon rezo nan chak kliyan, ki pral valab nan rezo founisè a epi yo pa pral sipèpoze ak lòt rezo. Rezo yo ka kwaze epi gade diferan VRF sou bò rezo founisè a. Done rezo yo ap viv tou nan espas non chak kliyan. Sepandan, yo pral toujou ale nan mond lan deyò atravè yon sèl koòdone fizik (oswa kosyon, ki se pi lojik). Pou separe trafik kliyan an, trafik ki ale deyò yo pral make ak yon tag VLAN atribye ba kliyan an.

Kòm rezilta, nou jwenn dyagram sa a:

Entwodiksyon nan pati rezo a nan enfrastrikti nwaj

Yon kesyon rezonab se poukisa yo pa fè pòtay sou nœuds yo kalkile tèt yo? Sa a se pa yon gwo pwoblèm; Anplis, si ou limen routeur distribiye (DVR), sa a pral travay. Nan senaryo sa a, nou ap konsidere opsyon ki pi senp la ak yon pòtay santralize, ki itilize pa default nan Openstack. Pou fonksyon gwo chaj, yo pral sèvi ak tou de yon routeur distribiye ak teknoloji akselerasyon tankou SR-IOV ak Passthrough, men jan yo di, sa a se yon istwa konplètman diferan. Premyèman, kite a fè fas ak pati debaz la, epi Lè sa a, nou pral antre nan detay yo.

Aktyèlman, konplo nou an deja posib, men gen yon koup nan nuans:

  • Nou bezwen yon jan kanmenm pwoteje machin nou yo, se sa ki, mete yon filtè sou koòdone nan switch nan direksyon pou kliyan an.
  • Fè li posib pou yon machin vityèl otomatikman jwenn yon adrès IP, pou ou pa bezwen konekte li nan konsole a chak fwa epi anrejistre adrès la.

Ann kòmanse ak pwoteksyon machin. Pou sa ou ka itilize iptables ordinèr, poukisa pa.

Sa vle di, kounye a topoloji nou an vin yon ti kras pi konplike:

Entwodiksyon nan pati rezo a nan enfrastrikti nwaj

Ann avanse. Nou bezwen ajoute yon sèvè DHCP. Kote ki pi ideyal pou lokalize sèvè DHCP pou chak kliyan ta dwe ne kontwòl ki deja mansyone pi wo a, kote espas non yo ye:

Entwodiksyon nan pati rezo a nan enfrastrikti nwaj

Sepandan, gen yon ti pwoblèm. E si tout bagay rdemare ak tout enfòmasyon sou lwe adrès sou DHCP disparèt. Li lojik ke machin yo pral bay nouvo adrès, ki pa trè pratik. Gen de fason soti isit la - swa sèvi ak non domèn epi ajoute yon sèvè DNS pou chak kliyan, Lè sa a, adrès la pa pral patikilyèman enpòtan pou nou (menm jan ak pati nan rezo nan k8s) - men gen yon pwoblèm ak rezo ekstèn, depi adrès yo kapab tou bay nan yo atravè DHCP - ou bezwen senkronizasyon ak sèvè dns nan platfòm nwaj la ak yon sèvè dns ekstèn, ki nan opinyon mwen se pa trè fleksib, men se byen posib. Oswa dezyèm opsyon a se sèvi ak metadata - sa vle di, sove enfòmasyon sou adrès yo bay machin nan pou sèvè DHCP a konnen ki adrès pou bay machin nan si machin nan te deja resevwa yon adrès. Dezyèm opsyon an pi senp ak pi fleksib, paske li pèmèt ou sove plis enfòmasyon sou machin nan. Koulye a, ann ajoute metadata ajan nan dyagram nan:

Entwodiksyon nan pati rezo a nan enfrastrikti nwaj

Yon lòt pwoblèm ki vo diskite tou se kapasite nan sèvi ak yon rezo ekstèn pa tout kliyan, depi rezo ekstèn, si yo dwe valab nan tout rezo a, yo pral difisil - ou bezwen toujou ap asiyen ak kontwole alokasyon an nan rezo sa yo. Kapasite pou sèvi ak yon sèl rezo ekstèn pre-konfigirasyon pou tout kliyan yo pral trè itil lè w ap kreye yon nwaj piblik. Sa ap rann li pi fasil pou deplwaye machin paske nou pa bezwen konsilte yon baz done adrès epi chwazi yon espas adrès inik pou rezo ekstèn chak kliyan. Anplis de sa, nou ka anrejistre yon rezo ekstèn davans epi nan moman deplwaman nou pral sèlman bezwen asosye adrès ekstèn ak machin kliyan.

Ak isit la NAT vini nan èd nou - nou pral jis fè li posib pou kliyan jwenn aksè nan mond lan deyò atravè espas non an default lè l sèvi avèk tradiksyon NAT. Oke, isit la nan yon ti pwoblèm. Sa a bon si sèvè kliyan an aji kòm yon kliyan epi yo pa kòm yon sèvè - se sa ki, li inisye olye ke aksepte koneksyon. Men, pou nou li pral nan lòt fason alantou. Nan ka sa a, nou bezwen fè destinasyon NAT pou lè w ap resevwa trafik, ne kontwòl la konprann ke trafik sa a gen entansyon pou machin vityèl A nan kliyan A, ki vle di nou bezwen fè yon tradiksyon NAT soti nan yon adrès ekstèn, pou egzanp 100.1.1.1. .10.0.0.1, nan yon adrès entèn 100. Nan ka sa a, byenke tout kliyan yo pral sèvi ak menm rezo a, izolasyon entèn yo konplètman konsève. Sa vle di, nou bezwen fè dNAT ak sNAT sou ne kontwòl la. Kit pou itilize yon sèl rezo ak adrès k ap flote oswa rezo ekstèn, oswa toude an menm tan, depann de sa ou vle pote nan nwaj la. Nou pa pral ajoute adrès k ap flote nan dyagram nan, men nou pral kite rezo ekstèn yo te deja ajoute pi bonè - chak kliyan gen pwòp rezo ekstèn li (nan dyagram nan yo endike kòm vlan 200 ak XNUMX sou koòdone ekstèn lan).

Kòm rezilta, nou te resevwa yon solisyon enteresan e an menm tan byen panse, ki gen yon sèten fleksibilite men ki poko gen mekanis tolerans fay.

Premyèman, nou gen yon sèl ne kontwòl - echèk li pral mennen nan efondreman nan tout sistèm yo. Pou rezoud pwoblèm sa a, ou bezwen fè omwen yon kowòm nan 3 nœuds. Ann ajoute sa a nan dyagram nan:

Entwodiksyon nan pati rezo a nan enfrastrikti nwaj

Natirèlman, tout nœuds yo senkronize epi lè yon ne aktif kite, yon lòt ne pral pran responsablite li yo.

Pwoblèm nan pwochen se disk machin vityèl. Nan moman sa a, yo estoke sou hypervisor yo tèt yo, ak nan ka ta gen pwoblèm ak hypervisor la, nou pèdi tout done yo - ak prezans nan yon atak pa pral ede isit la si nou pèdi pa disk la, men sèvè a tout antye. Pou fè sa, nou bezwen fè yon sèvis ki pral aji kòm fen devan pou kèk kalite depo. Ki kalite depo li pral pa patikilyèman enpòtan pou nou, men li ta dwe pwoteje done nou yo kont echèk nan tou de disk la ak ne, epi pètèt kabinè a tout antye. Gen plizyè opsyon isit la - gen, nan kou, rezo SAN ak Fibre Channel, men se pou nou onèt - FC se deja yon rlik nan tan lontan an - yon analogue nan E1 nan transpò - wi, mwen dakò, li toujou itilize, men sèlman kote li se absoliman enposib san li. Se poutèt sa, mwen pa ta volontèman deplwaye yon rezo FC nan 2020, konnen ke gen lòt altènativ ki pi enteresan. Malgre ke chak moun pwòp, ka gen moun ki kwè ke FC ak tout limit li yo se tout sa nou bezwen - mwen pa pral diskite, tout moun gen pwòp opinyon yo. Sepandan, solisyon ki pi enteresan nan opinyon mwen se sèvi ak yon SDS, tankou Ceph.

Ceph pèmèt ou bati yon solisyon depo done ki disponib anpil ak yon pakèt opsyon backup posib, kòmanse ak kòd ak tcheke parite (analòg ak atak 5 oswa 6) fini ak replikasyon done konplè sou diferan disk, pran an kont kote yo nan disk nan. sèvè, ak sèvè nan kabinèt, elatriye.

Pou konstwi Ceph ou bezwen 3 lòt nœuds. Entèaksyon ak depo a pral fèt tou atravè rezo a lè l sèvi avèk blòk, objè ak sèvis depo dosye. Ann ajoute depo nan chema a:

Entwodiksyon nan pati rezo a nan enfrastrikti nwaj

Remak: ou ka fè tou ipèrkonvèje nœuds kalkile - sa a se konsèp nan konbine plizyè fonksyon sou yon sèl ne - pou egzanp, depo + kalkile - san yo pa dedye nœuds espesyal pou depo ceph. Nou pral jwenn menm konplo toleran-fot la - depi SDS pral rezève done ak nivo rezèvasyon nou presize. Sepandan, nœuds ipèrkonvèje yo toujou yon konpwomi - depi ne depo a pa jis chofe lè a jan li sanble nan premye gade (depi pa gen okenn machin vityèl sou li) - li depanse resous CPU sou sèvis SDS (an reyalite, li fè tout bagay). replikasyon an ak rekiperasyon apre echèk nan nœuds, disk, elatriye). Sa vle di, ou pral pèdi kèk nan pouvwa a nan ne a kalkile si ou konbine li ak depo.

Tout bagay sa yo bezwen jere yon jan kanmenm - nou bezwen yon bagay atravè ki nou ka kreye yon machin, yon rezo, yon routeur vityèl, elatriye. Pou fè sa, nou pral ajoute yon sèvis nan ne kontwòl la ki pral aji kòm yon tablodbò - la. kliyan yo pral kapab konekte nan pòtal sa a atravè http/ https epi fè tout sa li bezwen (byen, prèske).

Kòm yon rezilta, kounye a nou gen yon sistèm ki toleran fay. Tout eleman nan enfrastrikti sa a dwe jere yon jan kanmenm. Li te deja dekri ke Openstack se yon seri pwojè, chak nan yo ki bay yon fonksyon espesifik. Kòm nou wè, gen plis pase ase eleman ki bezwen yo dwe configuré ak kontwole. Jodi a nou pral pale sou pati rezo a.

Achitekti neutron

Nan OpenStack, se Neutron ki responsab pou konekte pò machin vityèl yo nan yon rezo L2 komen, asire wout trafik ant VM ki sitiye sou diferan rezo L2, osi byen ke routage deyò, bay sèvis tankou NAT, Floating IP, DHCP, elatriye.

Nan yon wo nivo, operasyon an nan sèvis rezo a (pati debaz la) ka dekri jan sa a.

Lè w kòmanse VM a, sèvis rezo a:

  1. Kreye yon pò pou yon VM bay (oswa pò) epi li notifye sèvis DHCP sou li;
  2. Yon nouvo aparèy rezo vityèl kreye (via libvirt);
  3. VM a konekte ak pò (yo) ki te kreye nan etap 1;

Etranj ase, travay Neutron a baze sou mekanis estanda abitye pou tout moun ki te janm plonje nan Linux - namespaces, iptables, linux bridges, openvswitch, conntrack, elatriye.

Li ta dwe imedyatman klarifye ke Neutron se pa yon kontwolè SDN.

Neutron konsiste de plizyè eleman ki konekte:

Entwodiksyon nan pati rezo a nan enfrastrikti nwaj

Openstack-neutron-sèvè se yon demon ki travay ak demann itilizatè atravè API a. Move lespri sa a pa patisipe nan anrejistre nenpòt koneksyon rezo, men li bay enfòmasyon ki nesesè pou sa a grefon li yo, ki Lè sa a, configured eleman rezo a vle. Ajan netwon yo sou nœuds OpenStack yo anrejistre ak sèvè Neutron la.

Neutron-sèvè se aktyèlman yon aplikasyon ki ekri an python, ki gen de pati:

  • Sèvis REST
  • Plugin netwon (nwayo/sèvis)

Sèvis REST la fèt pou resevwa apèl API soti nan lòt konpozan (pa egzanp, yon demann pou bay kèk enfòmasyon, elatriye)

Plugins yo se konpozan lojisyèl plug-in/modil ke yo rele pandan demann API - sa vle di, atribisyon yon sèvis fèt atravè yo. Plugins yo divize an de kalite - sèvis ak rasin. Kòm yon règ, Plugin chwal la se sitou responsab pou jere espas adrès la ak koneksyon L2 ant VM, ak grefon sèvis deja bay plis fonksyonalite tankou VPN oswa FW.

Ou ka wè lis grefon ki disponib jodi a pa egzanp isit la

Ka gen plizyè grefon sèvis, men gen sèlman yon sèl Plugin chwal.

openstack-neutron-ml2 se Plugin estanda rasin Openstack la. Plugin sa a gen yon achitekti modilè (kontrèman ak predesesè li) ak konfigirasyon sèvis rezo a atravè chofè ki konekte ak li. Nou pral gade nan Plugin nan tèt li yon ti kras pita, paske an reyalite li bay fleksibilite ke OpenStack genyen nan pati rezo a. Plugin rasin lan ka ranplase (pa egzanp, Contrail Networking fè yon ranplasman konsa).

Sèvis RPC (rabbitmq-sèvè) — yon sèvis ki bay jesyon keu ak entèraksyon ak lòt sèvis OpenStack, ansanm ak entèraksyon ant ajan sèvis rezo yo.

Ajan rezo yo — ajan ki sitiye nan chak ne, atravè ki sèvis rezo yo configuré.

Gen plizyè kalite ajan yo.

Ajan prensipal la se L2 ajan. Ajan sa yo kouri sou chak nan hypervisors yo, ki gen ladan nœuds kontwòl (pi presizeman, sou tout nœuds ki bay nenpòt sèvis pou lokatè) ak fonksyon prensipal yo se konekte machin vityèl nan yon rezo L2 komen, epi tou jenere alèt lè nenpòt evènman rive ( pou egzanp enfim/pèmèt pò a).

Pwochen, ajan pa mwens enpòtan se L3 ajan. Pa default, ajan sa a kouri sèlman sou yon ne rezo (souvan se ne rezo a konbine avèk yon ne kontwòl) epi li bay routage ant rezo lokatè (tou de ant rezo li yo ak rezo lòt lokatè yo, epi li aksesib a mond lan deyò, bay NAT, osi byen ke sèvis DHCP). Sepandan, lè w ap itilize yon DVR (routeur distribye), bezwen pou yon plugin L3 parèt tou sou nœuds yo kalkile.

Ajan L3 a sèvi ak espas non Linux pou bay chak lokatè yon seri pwòp rezo izole li yo ak fonksyonalite routeurs vityèl ki dirije trafik epi bay sèvis pòtay pou rezo Kouch 2 yo.

Baz done — yon baz done idantifyan rezo, subnet, pò, pisin, elatriye.

An reyalite, Neutron aksepte demann API soti nan kreyasyon nenpòt antite rezo, otantifye demann lan, epi atravè RPC (si li gen aksè a kèk plugin oswa ajan) oswa REST API (si li kominike nan SDN) transmèt bay ajan yo (atravè grefon) la. enstriksyon ki nesesè pou òganize sèvis yo mande a.

Koulye a, ann ale nan enstalasyon tès la (ki jan li deplwaye ak sa ki enkli nan li, nou pral wè pita nan pati pratik la) epi wè ki kote chak eleman ye:

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

Entwodiksyon nan pati rezo a nan enfrastrikti nwaj

Aktyèlman, sa se tout estrikti Neutron. Koulye a, li vo pase kèk tan sou Plugin ML2 la.

Kouch modilè 2

Kòm mansyone pi wo a, Plugin a se yon Plugin rasin OpenStack estanda e li gen yon achitekti modilè.

Predesesè Plugin ML2 a te gen yon estrikti monolitik, ki pa pèmèt, pou egzanp, lè l sèvi avèk yon melanj de plizyè teknoloji nan yon sèl enstalasyon. Pou egzanp, ou pa t 'kapab itilize tou de openvswitch ak linuxbridge an menm tan an - swa premye a oswa dezyèm lan. Pou rezon sa a, yo te kreye plugin ML2 ak achitekti li yo.

ML2 gen de eleman - de kalite chofè: Tip chofè ak Mekanis chofè.

Kalite chofè yo detèmine teknoloji yo pral itilize pou òganize koneksyon rezo, pou egzanp VxLAN, VLAN, GRE. An menm tan an, chofè a pèmèt itilizasyon diferan teknoloji. Teknoloji estanda a se VxLAN enkapsulasyon pou rezo superposer ak rezo ekstèn vlan.

Kalite chofè yo enkli kalite rezo sa yo:

Flat - rezo san etikèt
VLAN - tagged rezo
Lokal — yon kalite rezo espesyal pou enstalasyon tout-an-yon (enstalasyon sa yo nesesè swa pou devlopè oswa pou fòmasyon)
GRE — kouvri rezo lè l sèvi avèk tinèl GRE
VxLAN - kouvri rezo lè l sèvi avèk tinèl VxLAN

Chofè mekanis yo defini zouti ki asire òganizasyon an nan teknoloji yo espesifye nan chofè a tip - pou egzanp, openvswitch, sr-iov, opendaylight, OVN, elatriye.

Tou depan de aplikasyon chofè sa a, swa ajan yo kontwole pa Neutron yo pral itilize, oswa koneksyon ak yon kontwolè SDN ekstèn yo pral itilize, ki pran swen tout pwoblèm ki gen rapò ak òganize rezo L2, routage, elatriye.

Egzanp: si nou itilize ML2 ansanm ak OVS, Lè sa a, yon ajan L2 enstale sou chak ne informatique ki jere OVS. Sepandan, si nou itilize, pou egzanp, OVN oswa OpenDayLight, Lè sa a, kontwòl la nan OVS vini anba jiridiksyon yo - Neutron, atravè Plugin nan rasin, bay kòmandman kontwolè a, epi li deja fè sa li te di.

Ann brose sou Open vSwitch

Nan moman sa a, youn nan eleman kle yo nan OpenStack se Open vSwitch.
Lè w ap enstale OpenStack san okenn SDN vandè adisyonèl tankou Juniper Contrail oswa Nokia Nuage, OVS se eleman rezo prensipal rezo nwaj la epi, ansanm ak iptables, conntrack, namespaces, pèmèt ou òganize rezo ki kouvri nèt ak plizyè lokatè. Natirèlman, eleman sa a ka ranplase, pou egzanp, lè w ap itilize solisyon SDN twazyèm pati (machann).

OVS se yon switch lojisyèl sous louvri ki fèt pou itilize nan anviwònman virtualize kòm yon transitaire vityèl trafik.

Nan moman sa a, OVS gen fonksyonalite trè desan, ki gen ladan teknoloji tankou QoS, LACP, VLAN, VxLAN, GENEVE, OpenFlow, DPDK, elatriye.

Remak: OVS pa te okòmansman vin ansent kòm yon switch mou pou fonksyon telecom trè chaje e li te plis fèt pou fonksyon IT mwens Pleasant ki mande tankou sèvè WEB oswa sèvè lapòs. Sepandan, OVS ap devlope plis ak enplemantasyon aktyèl OVS yo te amelyore anpil pèfòmans li yo ak kapasite li yo, ki pèmèt li yo dwe itilize pa operatè telecom ak fonksyon trè chaje, pou egzanp, gen yon aplikasyon OVS ak sipò pou akselerasyon DPDK.

Gen twa eleman enpòtan nan OVS ke ou bezwen konnen:

  • Modil Kernel — yon eleman ki sitiye nan espas nwayo a ki trete trafik ki baze sou règ yo resevwa nan eleman kontwòl la;
  • vSwitch daemon (ovs-vswitchd) se yon pwosesis ki lanse nan espas itilizatè ki responsab pou pwograme modil nwayo a - sa vle di, li dirèkteman reprezante lojik operasyon switch la.
  • Sèvè baz done - yon baz done lokal ki chita sou chak lame kap kouri OVS, kote konfigirasyon an estoke. Kontwolè SDN ka kominike atravè modil sa a lè l sèvi avèk pwotokòl OVSDB.

Tout sa a akonpaye pa yon seri sèvis piblik dyagnostik ak jesyon, tankou ovs-vsctl, ovs-appctl, ovs-ofctl, elatriye.

Kounye a, Openstack se lajman ki itilize pa operatè telecom pou imigre fonksyon rezo yo nan li, tankou EPC, SBC, HLR, elatriye. Gen kèk fonksyon ka viv san pwoblèm ak OVS jan li ye, men pou egzanp, EPC trete trafik abònen - Lè sa a, li pase nan. yon gwo kantite trafik (kounye a volim trafik rive nan plizyè santèn gigabit pou chak segonn). Natirèlman, kondwi trafik sa yo nan espas nwayo (depi transitaire a sitiye la pa default) se pa lide ki pi bon. Se poutèt sa, OVS souvan deplwaye antyèman nan espas itilizatè lè l sèvi avèk teknoloji akselerasyon DPDK pou voye trafik soti nan NIC nan espas itilizatè yo kontoune nwayo a.

Remak: pou yon nwaj deplwaye pou fonksyon telekominikasyon, li posib pou fè trafik soti nan yon ne kalkile kontoune OVS dirèkteman nan ekipman pou chanje. Yo itilize mekanis SR-IOV ak Passthrough pou objektif sa a.

Ki jan sa a travay sou yon layout reyèl?

Oke, kounye a ann ale nan pati nan pratik ak wè ki jan li tout travay nan pratik.

Premyèman, ann deplwaye yon senp enstalasyon Openstack. Depi mwen pa gen yon seri sèvè nan men pou eksperyans, nou pral rasanble pwototip la sou yon sèl sèvè fizik ki soti nan machin vityèl. Wi, natirèlman, tankou yon solisyon pa apwopriye pou rezon komèsyal, men yo wè yon egzanp sou ki jan rezo a ap travay nan Openstack, tankou yon enstalasyon se ase pou je yo. Anplis, enstalasyon sa a se menm plis enteresan pou rezon fòmasyon - depi ou ka trape trafik, elatriye.

Depi nou sèlman bezwen wè pati debaz la, nou pa ka sèvi ak plizyè rezo men ogmante tout bagay lè l sèvi avèk sèlman de rezo, epi dezyèm rezo a nan layout sa a pral itilize sèlman pou aksè nan undercloud la ak sèvè DNS. Nou pa pral manyen rezo ekstèn pou kounye a - sa a se yon sijè pou yon atik separe gwo.

Se konsa, ann kòmanse nan lòd. Premyèman, yon ti teyori. Nou pral enstale Openstack lè l sèvi avèk TripleO (Openstack sou Openstack). Sans nan TripleO se ke nou enstale Openstack tout-an-yon (ki se, sou yon sèl ne), yo rele undercloud, ak Lè sa a, sèvi ak kapasite yo nan Openstack deplwaye a enstale Openstack ki gen entansyon pou operasyon, yo rele overcloud. Undercloud pral sèvi ak kapasite nannan li pou jere sèvè fizik (fè metal) - pwojè Ironic - pou bay hypervisors ki pral fè wòl kalkile, kontwòl, depo nœuds. Sa vle di, nou pa sèvi ak okenn zouti twazyèm pati pou deplwaye Openstack - nou deplwaye Openstack lè l sèvi avèk Openstack. Li pral vin pi klè kòm enstalasyon an ap pwogrese, kidonk nou pa pral sispann la epi avanse pou pi devan.

Remak: Nan atik sa a, pou dedomajman pou senplisite, mwen pa t 'sèvi ak izolasyon rezo pou rezo entèn Openstack, men tout bagay se deplwaye lè l sèvi avèk yon sèl rezo. Sepandan, prezans oswa absans izolasyon rezo a pa afekte fonksyonalite debaz solisyon an - tout bagay pral travay egzakteman menm jan ak lè w ap itilize izolasyon, men trafik ap koule sou menm rezo a. Pou yon enstalasyon komèsyal, li natirèlman nesesè pou itilize izolasyon lè l sèvi avèk diferan vlan ak interfaces. Pou egzanp, trafik jesyon depo ceph ak trafik done tèt li (aksè machin nan disk, elatriye) lè izole itilize sous-rezo diferan (jesyon Depo ak Depo) epi sa pèmèt ou fè solisyon an plis tolerans fay pa divize trafik sa a, pou egzanp. , atravè pò diferan, oswa lè l sèvi avèk diferan pwofil QoS pou trafik diferan pou trafik done pa peze soti trafik siyal. Nan ka nou an, yo pral ale sou menm rezo a e an reyalite sa a pa limite nou nan okenn fason.

Remak: Depi nou pral kouri machin vityèl nan yon anviwònman vityèl ki baze sou machin vityèl, nou bezwen premye pèmèt Virtualization enbrike.

Ou ka tcheke si Virtualization enbrike pèmèt oswa ou pa tankou sa a:


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

Si ou wè lèt N a, Lè sa a, nou pèmèt sipò pou Virtualization enbrike dapre nenpòt gid ke ou jwenn sou rezo a, pou egzanp. sa yo .

Nou bezwen rasanble sikwi sa a soti nan machin vityèl:

Entwodiksyon nan pati rezo a nan enfrastrikti nwaj

Nan ka mwen an, pou konekte machin vityèl ki fè pati enstalasyon nan lavni (epi mwen te resevwa 7 ladan yo, men ou ka jwenn ak 4 si ou pa gen anpil resous), mwen te itilize OpenvSwitch. Mwen te kreye yon sèl ovs pon epi konekte machin vityèl ak li atravè gwoup pò yo. Pou fè sa, mwen te kreye yon dosye xml tankou sa a:


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

Twa gwoup pò yo deklare isit la - de aksè ak yon kòf (lèt la te nesesè pou sèvè dns la, men ou ka fè san li, oswa enstale li sou machin nan lame - kèlkeswa sa ki pi pratik pou ou). Apre sa, lè l sèvi avèk modèl sa a, nou deklare nou atravè virsh net-define:


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

Koulye a, nou edite konfigirasyon pò hypervisor yo:


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

Remak: nan senaryo sa a, adrès la sou pò ovs-br1 pa pral aksesib paske li pa gen yon tag vlan. Pou ranje sa a, ou bezwen bay lòd sudo ovs-vsctl set port ovs-br1 tag = 100. Sepandan, apre yon rdemare, tag sa a pral disparèt (si yon moun konnen ki jan fè li rete an plas, mwen pral trè rekonesan). Men, sa a pa tèlman enpòtan, paske nou pral sèlman bezwen adrès sa a pandan enstalasyon epi yo pa pral bezwen li lè Openstack konplètman deplwaye.

Apre sa, nou kreye yon machin anba nwaj:


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

Pandan enstalasyon an, ou mete tout paramèt ki nesesè yo, tankou non machin lan, modpas, itilizatè, serveurs ntp, elatriye, ou ka imedyatman konfigirasyon pò yo, men pou mwen pèsonèlman, apre enstalasyon, li pi fasil konekte nan machin nan atravè enstalasyon an. konsole a epi korije dosye ki nesesè yo. Si ou deja gen yon imaj ki pare, ou ka sèvi ak li, oswa fè sa mwen te fè - telechaje imaj minim Centos 7 la epi sèvi ak li pou enstale VM la.

Apre enstalasyon siksè, ou ta dwe gen yon machin vityèl sou kote ou ka enstale undercloud


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

Premyèman, enstale zouti ki nesesè pou pwosesis enstalasyon an:

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

Enstalasyon Undercloud

Nou kreye yon itilizatè pile, mete yon modpas, ajoute li nan sudoer epi ba li kapasite pou egzekite kòmandman rasin atravè sudo san yo pa bezwen antre yon modpas:


useradd stack
passwd stack

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

Koulye a, nou presize non an plen undercloud nan dosye a gen tout pouvwa a:


vi /etc/hosts

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

Apre sa, nou ajoute repozitwa epi enstale lojisyèl nou bezwen an:


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

Remak: si ou pa planifye enstale ceph, Lè sa a, ou pa bezwen antre nan kòmandman ki gen rapò ak ceph. Mwen te itilize lage Queens la, men ou ka itilize nenpòt lòt ou renmen.

Apre sa, kopye fichye konfigirasyon undercloud la nan pile anyè lakay itilizatè a:


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

Koulye a, nou bezwen korije dosye sa a, ajiste li nan enstalasyon nou an.

Ou bezwen ajoute liy sa yo nan kòmansman fichye a:

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

Se konsa, ann ale nan anviwònman yo:

undercloud_hostname — Non konplè sèvè undercloud la, dwe matche ak antre sou sèvè dns la

lokal_ip — adrès lokal undercloud nan direksyon rezo pwovizyon

rezo_gateway - menm adrès lokal la, ki pral aji kòm yon pòtay pou aksè nan mond lan deyò pandan enstalasyon an nan nœuds overcloud, tou kowenside ak IP lokal yo.

undercloud_public_host — adrès API ekstèn, nenpòt adrès gratis ki soti nan rezo pwovizyon yo asiyen

undercloud_admin_host adrès entèn API, nenpòt adrès gratis ki soti nan rezo pwovizyon yo asiyen

undercloud_nameservers - DNS sèvè

jenere_sèvis_sèvis - liy sa a trè enpòtan nan egzanp aktyèl la, paske si ou pa mete li nan fo w ap resevwa yon erè pandan enstalasyon, pwoblèm nan dekri sou tracker ensèk Red Hat la.

koòdone_lokal koòdone nan pwovizyon rezo. Koòdone sa a pral rekonfigire pandan deplwaman undercloud, kidonk ou bezwen gen de koòdone sou undercloud - youn pou jwenn aksè nan li, dezyèm lan pou pwovizyon.

lokal_mtu — MTU. Piske nou gen yon laboratwa tès e mwen gen yon MTU 1500 sou pò switch OVS yo, li nesesè pou mete l sou 1450 pou pake ki enkapsile nan VxLAN ka pase.

rezo_cidr - rezo pwovizyon

Masquerade — itilize NAT pou jwenn aksè nan yon rezo ekstèn

masquerade_network - rezo ki pral NATed

dhcp_start — adrès kòmanse nan pisin adrès kote adrès yo pral asiyen nan nœuds pandan deplwaman overcloud

dhcp_end — adrès final la nan pisin adrès kote adrès yo pral asiyen nan nœuds pandan deplwaman overcloud

inspection_iprange - yon pisin adrès ki nesesè pou entwospeksyon (pa ta dwe sipèpoze ak pisin ki anwo a)

scheduler_max_attempts - kantite maksimòm tantativ pou enstale overcloud (dwe pi gran pase oswa egal a kantite nœuds)

Apre yo fin dekri dosye a, ou ka bay lòd pou deplwaye undercloud:


openstack undercloud install

Pwosedi a pran soti nan 10 a 30 minit depann sou fè ou a. Alafen ou ta dwe wè pwodiksyon tankou sa a:

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.

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

Pwodiksyon sa a di ke ou te enstale avèk siksè undercloud epi ou ka kounye a tcheke estati a nan undercloud epi kontinye enstale overcloud.

Si ou gade nan pwodiksyon ifconfig la, ou pral wè ke yon nouvo koòdone pon parèt

[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

Deplwaman Overcloud pral kounye a fèt atravè koòdone sa a.

Soti nan pwodiksyon ki anba a ou ka wè ke nou gen tout sèvis sou yon sèl ne:

(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     |
+--------------------------+-----------+----------+

Anba a se konfigirasyon an nan pati nan rezo undercloud:


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

Enstalasyon overcloud

Nan moman sa a nou gen sèlman undercloud, epi nou pa gen ase nœuds ki soti nan ki overcloud yo pral reyini. Se poutèt sa, anvan tout bagay, se pou yo deplwaye machin vityèl nou bezwen yo. Pandan deplwaman an, undercloud tèt li pral enstale eksplwatasyon an ak lojisyèl ki nesesè sou machin nan overcloud - se sa ki, nou pa bezwen konplètman deplwaye machin nan, men sèlman kreye yon disk (oswa disk) pou li epi detèmine paramèt li yo - se sa ki , an reyalite, nou jwenn yon sèvè vid san yon OS enstale sou li.

Ann ale nan katab la ak disk yo nan machin vityèl nou yo ak kreye disk nan gwosè yo mande yo:


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

Depi nou ap opere kòm rasin, nou bezwen chanje pwopriyetè a nan disk sa yo pou yo pa jwenn yon pwoblèm ak dwa:


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

Remak: si ou pa planifye enstale ceph yo nan lòd yo etidye li, Lè sa a, kòmandman yo pa kreye omwen 3 nœuds ak omwen de disk, men nan modèl la endike ke disk vityèl vda, vdb, elatriye yo pral itilize.

Bon, kounye a nou bezwen defini tout machin sa yo:


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 

Nan fen a, gen yon lòd -print-xml> /tmp/storage-1.xml, ki kreye yon fichye xml ak yon deskripsyon chak machin nan katab /tmp/ la; si ou pa ajoute li, ou pa pral kapab idantifye machin vityèl.

Koulye a, nou bezwen defini tout machin sa yo nan 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 ~]#

Koulye a, yon ti nuans - tripleO itilize IPMI pou jere serveurs pandan enstalasyon ak entwospeksyon.

Entwospeksyon se pwosesis la nan enspekte pyès ki nan konpitè yo nan lòd yo jwenn paramèt li yo ki nesesè pou pwovizyon plis nan nœuds. Entwospeksyon te pote soti lè l sèvi avèk ironik, yon sèvis ki fèt pou travay ak sèvè metal fè.

Men, isit la nan pwoblèm nan - pandan ke sèvè IPMI pyès ki nan konpitè yo gen yon pò separe (oswa yon pò pataje, men sa a pa enpòtan), Lè sa a, machin vityèl pa gen pò sa yo. Isit la yon beki ki rele vbmc vini nan èd nou - yon sèvis piblik ki pèmèt ou imite yon pò IPMI. Nuans sa a vo peye atansyon a espesyalman pou moun ki vle mete kanpe tankou yon laboratwa sou yon hypervisor ESXI - yo dwe onèt, mwen pa konnen si li gen yon analogue nan vbmc, kidonk li la vo mande sou pwoblèm sa a anvan deplwaye tout bagay. .

Enstale vbmc:


yum install yum install python2-virtualbmc

Si OS ou a pa ka jwenn pake a, Lè sa a, ajoute repozitwa a:

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

Koulye a, nou mete kanpe sèvis piblik la. Tout bagay isit la se ordinèr nan pwen nan wont. Koulye a, li lojik ke pa gen okenn serveurs nan lis la vbmc


[root@hp-gen9 ~]# vbmc list

[root@hp-gen9 ~]# 

Pou yo parèt, yo dwe manyèlman deklare tankou sa a:


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

Mwen panse ke sentaks lòd la klè san eksplikasyon. Sepandan, pou kounye a tout sesyon nou yo nan estati DOWN. Pou yo ale nan estati UP, ou bezwen pèmèt yo:


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

Ak manyen final la - ou bezwen korije règ yo firewall (oswa enfim li konplètman):


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

Koulye a, ann ale nan undercloud epi tcheke ke tout bagay ap travay. Adrès machin lame a se 192.168.255.200, sou undercloud nou te ajoute pake ipmitool ki nesesè pandan preparasyon pou deplwaman:


[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

Kòm ou ka wè, nou te lanse avèk siksè ne kontwòl via vbmc. Koulye a, ann fèmen li epi kontinye:


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

Pwochen etap la se entwospeksyon nan nœuds yo sou ki overcloud yo pral enstale. Pou fè sa, nou bezwen prepare yon dosye json ak yon deskripsyon nœuds nou yo. Tanpri sonje ke, kontrèman ak enstalasyon sou sèvè fè, fichye a endike pò a sou ki vbmc ap kouri pou chak machin.


[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

Remak: ne kontwòl la gen de interfaces, men nan ka sa a sa a pa enpòtan, nan enstalasyon sa a yon sèl pral ase pou nou.

Koulye a, nou prepare dosye a json. Nou bezwen endike adrès Poppy pò kote pwovizyon yo pral fèt, paramèt nœuds yo, ba yo non epi endike kijan pou ale nan 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"
        }
    ]
}

Koulye a, nou bezwen prepare imaj pou ironik. Pou fè sa, telechaje yo atravè wget epi enstale:

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

Téléchargement imaj nan 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 ~]$

Tcheke ke tout imaj yo te chaje


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

Yon lòt bagay - ou bezwen ajoute yon sèvè dns:


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

Koulye a, nou ka bay kòmandman an pou entwospeksyon:

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

Kòm ou ka wè nan pwodiksyon an, tout bagay fini san erè. Ann tcheke si tout nœuds yo nan eta ki disponib:


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

Si nœuds yo nan yon eta diferan, anjeneral, jere, Lè sa a, yon bagay ale mal epi ou bezwen gade nan boutèy la ak konnen poukisa sa a te rive. Kenbe nan tèt ou ke nan senaryo sa a nou ap itilize Virtualization epi ka gen pinèz ki asosye ak itilizasyon machin vityèl oswa vbmc.

Apre sa, nou bezwen endike ki ne ki pral fè ki fonksyon - se sa ki, endike pwofil la ak ki ne a pral deplwaye:


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

Espesifye pwofil la pou chak ne:


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

Ann tcheke si nou te fè tout bagay kòrèkteman:


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

Si tout bagay kòrèk, nou bay lòd pou deplwaye 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

Nan yon enstalasyon reyèl, modèl Customized yo pral natirèlman dwe itilize, nan ka nou an sa a pral anpil konplike pwosesis la, depi chak modifye nan modèl la pral gen yo dwe eksplike. Jan sa te ekri pi bonè, menm yon senp enstalasyon ap ase pou nou wè ki jan li fonksyone.

Remak: --libvirt-type qemu varyab la nesesè nan ka sa a, paske nou pral itilize Virtualization enbrike. Sinon, ou pa yo pral kapab kouri machin vityèl.

Koulye a, ou gen apeprè inèdtan, oswa petèt plis (ki depann sou kapasite pyès ki nan konpitè a) epi ou ka sèlman espere ke apre tan sa a ou pral wè mesaj sa a:


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

Koulye a, ou gen yon vèsyon prèske plen véritable nan openstack, sou ki ou ka etidye, fè eksperyans, elatriye.

Ann tcheke si tout bagay ap mache byen. Nan pile anyè lakay itilizatè a gen de fichye - yon sèl stackrc (pou jere undercloud) ak dezyèm overcloudrc (pou jere overcloud). Fichye sa yo dwe espesifye kòm sous, paske yo gen enfòmasyon ki nesesè pou otantifikasyon.


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

Enstalasyon mwen an toujou mande pou yon ti manyen - ajoute yon wout sou kontwolè a, depi machin mwen ap travay la sou yon rezo diferan. Pou fè sa, ale nan kontwòl-1 anba kont admin chalè a epi anrejistre wout la


(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

Oke, kounye a ou ka ale nan orizon an. Tout enfòmasyon - adrès, login ak modpas - nan dosye /home/stack/overcloudrc. Dyagram final la sanble sa a:

Entwodiksyon nan pati rezo a nan enfrastrikti nwaj

By wout la, nan enstalasyon nou an, adrès machin yo te bay atravè DHCP epi, jan ou ka wè, yo bay "o aza". Ou ka entèdi defini nan modèl la ki adrès yo ta dwe tache ak ki machin pandan deplwaman, si ou bezwen li.

Ki jan trafik koule ant machin vityèl?

Nan atik sa a nou pral gade twa opsyon pou pase trafik

  • De machin sou yon sèl hypervisor sou yon rezo L2
  • De machin sou diferan hypervisors sou menm rezo L2
  • De machin sou rezo diferan (kro-rezo eradikasyon)

Ka ak aksè nan mond lan deyò atravè yon rezo ekstèn, lè l sèvi avèk adrès k ap flote, osi byen ke distribye routage, nou pral konsidere pwochen fwa, pou kounye a nou pral konsantre sou trafik entèn yo.

Pou tcheke, ann mete ansanm dyagram sa a:

Entwodiksyon nan pati rezo a nan enfrastrikti nwaj

Nou te kreye 4 machin vityèl - 3 sou yon rezo L2 - net-1, ak 1 plis sou rezo net-2.

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

Ann wè ki hypervisors machin yo kreye yo sitiye sou:

(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 ~]$
Machin vm-1 ak vm-3 yo sitiye sou compute-0, machin vm-2 ak vm-4 yo sitiye sou node compute-1.

Anplis de sa, yo te kreye yon routeur vityèl pou pèmèt routage ant rezo espesifye yo:

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

Routeur la gen de pò vityèl, ki aji kòm pòtay pou rezo:

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

Men, anvan nou gade nan ki jan trafik la ap koule, ann gade nan sa nou genyen kounye a sou ne kontwòl la (ki se tou yon ne rezo) ak sou ne nan kalkile. Ann kòmanse ak ne kalkile a.


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

Nan moman sa a, ne a gen twa ovs pon - br-int, br-tun, br-ex. Ant yo, jan nou wè, gen yon seri interfaces. Pou konpreyansyon fasil, ann trase tout koòdone sa yo sou dyagram nan epi gade sa k ap pase.

Entwodiksyon nan pati rezo a nan enfrastrikti nwaj

Gade nan adrès yo nan ki tinèl VxLAN yo leve soti vivan, li ka wè ke se yon tinèl leve soti vivan nan kalkile-1 (192.168.255.26), tinèl la dezyèm gade nan kontwòl-1 (192.168.255.15). Men, bagay ki pi enteresan an se ke br-ex pa gen interfaces fizik, epi si ou gade nan ki koule yo configuré, ou ka wè ke pon sa a ka sèlman lage trafik nan moman sa a.


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

Kòm ou ka wè nan pwodiksyon an, adrès la vise dirèkteman nan pò fizik la, epi yo pa nan koòdone nan pon vityèl.


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

Dapre premye règ la, tout bagay ki soti nan pò a phy-br-ex dwe jete.
Aktyèlman, pa gen okenn lòt kote pou trafik antre nan pon sa a eksepte nan koòdone sa a (koòdone ak br-int), epi jije pa gout yo, trafik BUM te deja vole nan pon an.

Sa vle di, trafik ka kite ne sa a sèlman nan tinèl VxLAN la e pa gen anyen lòt bagay. Sepandan, si ou limen DVR a, sitiyasyon an pral chanje, men nou pral fè fas ak sa yon lòt fwa. Lè w ap itilize izolasyon rezo a, pou egzanp lè w ap itilize vlan, w ap gen pa yon sèl koòdone L3 nan vlan 0, men plizyè koòdone. Sepandan, trafik VxLAN pral kite ne la menm jan an, men tou, encapsulé nan kèk kalite vlan devwe.

Nou te klase nede kalkile a, se pou nou deplase sou ne kontwòl la.


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

An reyalite, nou ka di ke tout bagay se menm bagay la, men adrès IP la se pa sou koòdone fizik la ankò men sou pon an vityèl. Sa a se fè paske pò sa a se pò a nan ki trafik pral sòti nan mond lan deyò.


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

Pò sa a mare nan pon br-ansyen an epi kòm pa gen tag vlan sou li, pò sa a se yon pò kòf kote tout vlan yo gen dwa, kounye a trafik ale deyò san yon tag, jan sa endike nan vlan-id 0 nan la. pwodiksyon pi wo a.

Entwodiksyon nan pati rezo a nan enfrastrikti nwaj

Tout lòt bagay nan moman sa a sanble ak ne kalkile a - menm pon yo, menm tinèl yo ale nan de nœuds kalkile.

Nou pa pral konsidere nœuds depo nan atik sa a, men pou konprann li nesesè yo di ke pati nan rezo nan nœuds sa yo se ordinèr nan pwen nan wont. Nan ka nou an, gen yon sèl pò fizik (eth0) ak yon adrès IP asiyen nan li e se li. Pa gen okenn tinèl VxLAN, pon tinèl, elatriye - pa gen okenn ov ditou, depi pa gen okenn pwen nan li. Lè w ap itilize izolasyon rezo a, ne sa a pral gen de koòdone (pò fizik, bodny, oswa jis de vlan - li pa enpòtan - sa depann de sa ou vle) - youn pou jesyon, dezyèm lan pou trafik (ekri sou disk la VM. , lekti nan disk, elatriye)

Nou kalkile sa nou genyen sou nœuds yo nan absans nenpòt sèvis. Koulye a, ann lanse 4 machin vityèl ak wè ki jan konplo a dekri pi wo a chanje - nou ta dwe gen pò, routeurs vityèl, elatriye.

Jiskaprezan rezo nou an sanble sa a:

Entwodiksyon nan pati rezo a nan enfrastrikti nwaj

Nou gen de machin vityèl sou chak ne òdinatè. Sèvi ak compute-0 kòm yon egzanp, ann wè ki jan tout bagay enkli.


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

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

Machin nan gen yon sèl koòdone vityèl - 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 ~]$ 

Koòdone sa a sanble nan pon linux la:

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

Kòm ou ka wè nan pwodiksyon an, gen sèlman de interfaces nan pon an - tap95d96a75-a0 ak qvb95d96a75-a0.

Isit la li vo rete yon ti kras sou kalite aparèy rezo vityèl nan OpenStack:
vtap - koòdone vityèl tache ak yon egzanp (VM)
qbr - Linux pon
qvb ak qvo - vEth pè konekte ak pon Linux ak Open vSwitch pon
br-int, br-tun, br-vlan — Louvri pon vSwitch
patch-, int-br-, phy-br- - Louvri vSwitch patch interfaces konekte pon
qg, qr, ha, fg, sg - Louvri pò vSwitch yo itilize pa aparèy vityèl pou konekte avèk OVS

Kòm ou konprann, si nou gen yon pò qvb95d96a75-a0 nan pon an, ki se yon pè vEth, Lè sa a, yon kote gen kontrepati li yo, ki ta dwe lojikman rele qvo95d96a75-a0. Ann wè ki pò yo sou 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 ~]$ 

Kòm nou ka wè, pò a se nan br-int. Br-int aji kòm yon switch ki mete fen nan pò machin vityèl yo. Anplis qvo95d96a75-a0, pò qvo5bd37136-47 vizib nan pwodiksyon an. Sa a se pò a nan dezyèm machin vityèl la. Kòm yon rezilta, dyagram nou an sanble kounye a tankou sa a:

Entwodiksyon nan pati rezo a nan enfrastrikti nwaj

Yon kesyon ki ta dwe imedyatman enterese lektè atantif la - ki sa ki pon linux ant pò machin vityèl la ak pò OVS la? Reyalite a se ke pou pwoteje machin nan, gwoup sekirite yo te itilize, ki pa gen anyen plis pase iptables. OVS pa travay ak iptables, kidonk "beki" sa a te envante. Sepandan, li ap vin demode - li ap ranplase pa conntrack nan nouvo degaje.

Sa vle di, finalman konplo a sanble sa a:

Entwodiksyon nan pati rezo a nan enfrastrikti nwaj

De machin sou yon sèl hypervisor sou yon rezo L2

Piske de VM sa yo sitiye sou menm rezo L2 ak sou menm hypervisor, trafik ant yo pral lojikman koule lokalman atravè br-int, paske tou de machin yo pral sou menm 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 ~]$ 

De machin sou diferan hypervisors sou menm rezo L2

Koulye a, kite a wè ki jan trafik la pral ale ant de machin sou menm rezo L2 la, men ki sitiye sou hypervisors diferan. Yo dwe onèt, pa gen anyen pral chanje anpil, jis trafik ant hypervisors pral ale nan tinèl la vxlan. Ann gade yon egzanp.

Adrès nan machin vityèl ant ki nou pral gade trafik:

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

Nou gade tab transfè a nan br-int sou 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 ~]

Trafik ta dwe ale nan pò 2 - ann wè ki kalite pò li ye:

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

Sa a se patch-tun - se sa ki, koòdone nan br-tun. Ann wè sa k ap pase pakè a sou 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 ~]$ 

Pake a pake nan VxLAN epi voye nan pò 2. Ann wè ki kote pò 2 mennen:

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

Sa a se yon tinèl vxlan sou 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 ~]$

Ann ale nan compute-1 epi wè sa k ap pase apre ak pake a:

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

Mac se nan tab transmisyon br-int sou compute-1, epi jan yo ka wè nan pwodiksyon an pi wo a, li vizib nan pò 2, ki se pò a nan direksyon pou 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

Oke, Lè sa a, nou wè ke nan br-int sou compute-1 gen yon destinasyon 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 vle di, pake resevwa a pral vole nan pò 3, dèyè ki gen deja yon machin vityèl egzanp-00000003.

Bote nan deplwaye Openstack pou aprann sou enfrastrikti vityèl se ke nou ka fasilman kaptire trafik ant hypervisors epi wè sa k ap pase ak li. Sa a se sa nou pral fè kounye a, kouri tcpdump sou pò a vnet nan direksyon pou 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*******************

Premye liy lan montre ke Patek soti nan adrès 10.0.1.85 ale nan adrès 10.0.1.88 (trafik ICMP), epi li vlope nan yon pake VxLAN ak vni 22 ak pake a ale nan lame 192.168.255.19 (compute-0) nan lame 192.168.255.26. .1 ( kalkile-XNUMX). Nou ka tcheke si VNI a matche ak sa ki espesifye nan ovs.

Ann retounen nan liy sa a actions=load:0->NXM_OF_VLAN_TCI[],load:0x16->NXM_NX_TUN_ID[],output:2. 0x16 se vni nan sistèm nimewo egzadesimal. Ann konvèti nimewo sa a nan 16yèm sistèm nan:


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

Sa vle di, vni koresponn ak reyalite.

Dezyèm liy lan montre trafik retounen, byen, pa gen okenn pwen pou eksplike li, tout bagay klè la.

De machin sou rezo diferan (routage entè-rezo)

Dènye ka a pou jodi a se routage ant rezo nan yon pwojè lè l sèvi avèk yon routeur vityèl. Nou ap konsidere yon ka san yon DVR (nou pral gade li nan yon lòt atik), kidonk routage rive sou ne rezo a. Nan ka nou an, ne rezo a pa mete nan yon antite separe epi li sitiye sou ne kontwòl la.

Premyèman, ann wè ke routage ap travay:

$ 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

Depi nan ka sa a pake a dwe ale nan pòtay la epi yo dwe dirije la, nou bezwen chèche konnen adrès Poppy nan pòtay la, pou ki nou gade nan tab la ARP nan egzanp lan:

$ 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

Koulye a, ann wè ki kote trafik la ak destinasyon (10.0.1.254) fa:16:3e:c4:64:70 ta dwe voye:

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

Ann gade kote pò 2 mennen:

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

Tout bagay lojik, trafik ale nan br-tun. Ann wè nan ki tinèl vxlan li pral vlope:

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

Twazyèm pò a se yon tinèl vxlan:

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

Ki gade nan ne kontwòl la:

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

Trafik la te rive nan ne kontwòl la, kidonk nou bezwen ale nan li epi wè ki jan routage pral rive.

Kòm ou sonje, nœud kontwòl anndan an te sanble egzakteman menm jan ak nœud la kalkile - menm twa pon yo, sèlman br-ex te gen yon pò fizik nan ki ne te kapab voye trafik deyò. Kreyasyon ka chanje konfigirasyon an sou nœuds yo kalkile - linux bridge, iptables ak interfaces yo te ajoute nan nœuds yo. Kreyasyon rezo ak yon routeur vityèl tou kite mak li sou konfigirasyon an nan ne kontwòl la.

Se konsa, li evidan ke adrès MAC pòtay la dwe nan tab la transmisyon br-int sou ne kontwòl la. Ann tcheke si li la epi ki kote li gade:

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

Mac a vizib nan pò qr-0c52b15f-8f. Si nou tounen nan lis pò vityèl nan Openstack, yo itilize kalite pò sa a pou konekte plizyè aparèy vityèl nan OVS. Pou yo ka pi egzak, qr se yon pò nan routeur vityèl la, ki reprezante kòm yon espas non.

Ann wè ki espas non yo ye sou sèvè a:

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

Otan ke twa kopi. Men, jije pa non yo, ou ka devine objektif chak nan yo. Nou pral retounen nan ka ki gen ID 0 ak 1 pita, kounye a nou enterese nan 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 ~]$ 

Espas non sa a gen de entèn ke nou te kreye pi bonè. Tou de pò vityèl yo te ajoute nan br-int. Ann tcheke adrès mac pò qr-0c52b15f-8f a, depi trafik la, jije pa adrès mac destinasyon an, te ale nan koòdone sa a.

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

Sa se, nan ka sa a, tout bagay ap travay dapre lwa yo nan routage estanda. Piske trafik la destine pou lame 10.0.2.8, li dwe sòti nan dezyèm koòdone qr-92fa49b5-54 la epi ale nan tinèl vxlan la pou ale nan ne kalkile a:


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

Tout bagay lojik, pa gen sipriz. Ann wè kote adrès Poppy lame 10.0.2.8 vizib nan 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 ~]$ 

Kòm espere, trafik ale nan br-tun, ann wè ki tinèl trafik la ale nan pwochen:

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

Trafik ale nan tinèl la pou kalkile-1. Oke, sou compute-1 tout bagay se senp - soti nan br-tun pake a ale nan br-int epi soti nan koòdone nan machin vityèl:

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

Ann tcheke si sa a se vre koòdone ki kòrèk la:

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

Aktyèlman, nou te ale tout wout la nan pakè a. Mwen panse ke ou remake ke trafik la te pase nan diferan tinèl vxlan ak sòti ak diferan VNIs. Ann wè ki kalite VNI sa yo ye, apre sa nou pral kolekte yon pil fatra sou pò kontwòl la nan ne la epi asire w ke trafik la ap koule egzakteman jan sa dekri pi wo a.
Kidonk, tinèl pou kalkile-0 gen aksyon sa yo=load:0->NXM_OF_VLAN_TCI[],load:0x16->NXM_NX_TUN_ID[],output:3. Ann konvèti 0x16 nan sistèm nimewo desimal la:


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

Tinèl pou kalkile-1 gen VNI sa yo:actions=load:0->NXM_OF_VLAN_TCI[],load:0x63->NXM_NX_TUN_ID[],output:2. Ann konvèti 0x63 nan sistèm nimewo desimal:


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

Oke, kounye a ann gade nan pil fatra a:

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

Premye pake a se yon pake vxlan ki soti nan lame 192.168.255.19 (compute-0) pou lame 192.168.255.15 (kontwòl-1) ak vni 22, andedan ki yon pake ICMP pake soti nan lame 10.0.1.85 pou lame 10.0.2.8. Kòm nou kalkile pi wo a, vni matche ak sa nou te wè nan pwodiksyon an.

Dezyèm pake a se yon pake vxlan ki soti nan hôte 192.168.255.15 (kontwòl-1) pou hôte 192.168.255.26 (compute-1) ak vni 99, anndan ki yon pake ICMP pake de hôte 10.0.1.85 pou hôte 10.0.2.8. Kòm nou kalkile pi wo a, vni matche ak sa nou te wè nan pwodiksyon an.

De pwochen pake yo se retounen trafik soti nan 10.0.2.8 pa 10.0.1.85.

Sa vle di, nan fen a nou te resevwa konplo sa a ne kontwòl:

Entwodiksyon nan pati rezo a nan enfrastrikti nwaj

Gade tankou se li? Nou bliye sou de espas non:

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

Kòm nou te pale sou achitekti platfòm nwaj la, li ta bon si machin yo te resevwa adrès otomatikman nan yon sèvè DHCP. Sa yo se de serveurs DHCP pou de rezo nou yo 10.0.1.0/24 ak 10.0.2.0/24.

Ann tcheke si sa a se vre. Gen yon sèl adrès nan espas non sa a - 10.0.1.1 - adrès sèvè DHCP la li menm, epi li enkli tou nan 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

Ann wè si pwosesis ki genyen qdhcp-67a3798c-32c0-4c18-8502-2531247e3cc2 nan non yo sou ne kontwòl la:


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

Gen yon pwosesis sa a epi ki baze sou enfòmasyon ki prezante nan pwodiksyon an pi wo a, nou ka, pou egzanp, wè sa nou genyen kounye a pou lwe:

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

Kòm yon rezilta, nou jwenn seri sèvis sa yo sou ne kontwòl la:

Entwodiksyon nan pati rezo a nan enfrastrikti nwaj

Oke, kenbe nan tèt ou - sa a se jis 4 machin, 2 rezo entèn ak yon sèl routeur vityèl... Nou pa gen rezo ekstèn isit la kounye a, yon pakèt pwojè diferan, yo chak ak pwòp rezo pa yo (sipèpoze), epi nou gen yon routeur distribiye etenn, ak nan fen a Apre yo tout, te gen yon sèl ne kontwòl nan ban tès la (pou tolerans fòt dwe gen yon kowòm nan twa nœuds). Li lojik ke nan komès tout bagay se "yon ti kras" pi konplike, men nan egzanp sa a senp nou konprann ki jan li ta dwe travay - si ou gen 3 oswa 300 espas non se nan kou enpòtan, men nan pwen de vi nan operasyon an nan la. tout estrikti, pa gen anyen pral chanje anpil ... byenke ou ou pa pral ploge nan kèk vandè SDN. Men, sa se yon istwa konplètman diferan.

Mwen espere ke li te enteresan. Si w gen nenpòt kòmantè/ajout, oswa yon kote mwen kareman bay manti (mwen se moun ak opinyon mwen ap toujou subjectif) - ekri sa ki bezwen yo dwe korije / ajoute - nou pral korije / ajoute tout bagay.

An konklizyon, mwen ta renmen di kèk mo sou konpare Openstack (tou de vaniy ak machann) ak solisyon an nwaj soti nan VMWare - mwen te poze kesyon sa a twò souvan nan de ane ki sot pase yo epi, franchman pale, mwen se deja fatige ak li, men toujou. Dapre mwen, li trè difisil pou konpare de solisyon sa yo, men nou ka definitivman di ke genyen dezavantaj nan tou de solisyon yo ak lè w ap chwazi yon solisyon ou bezwen peze avantaj ak inconvénients.

Si OpenStack se yon solisyon kominote-kondwi, Lè sa a, VMWare gen dwa fè sèlman sa li vle (li - sa ki pwofitab pou li) e sa a se lojik - paske li se yon konpayi komèsyal ki itilize fè lajan nan men kliyan li yo. Men, gen yon sèl gwo ak gra MEN - ou ka desann OpenStack, pou egzanp nan Nokia, ak yon ti kras chanje depans nan yon solisyon ki soti nan, pou egzanp, Juniper (Contrail Cloud), men ou pa gen anpil chans pou yo kapab desann VMWare. . Pou mwen, de solisyon sa yo sanble sa a - Openstack (machann) se yon kaj senp kote yo mete w, men ou gen yon kle epi ou ka kite nenpòt ki lè. VMWare se yon kaj an lò, mèt kay la gen kle nan kalòj la epi li pral koute ou anpil.

Mwen pa fè pwomosyon ni premye pwodwi a oswa dezyèm lan - ou chwazi sa ou bezwen. Men, si mwen te gen yon chwa konsa, mwen ta chwazi tou de solisyon - VMWare pou nwaj la IT (chaj ki ba, jesyon fasil), OpenStack soti nan kèk machann (Nokia ak Juniper bay solisyon trè bon kle) - pou nwaj la Telecom. Mwen pa ta sèvi ak Openstack pou IT pi bon kalite - se tankou tire ti zwazo ak yon kanon, men mwen pa wè okenn kontr pou itilize li lòt pase redondance. Sepandan, lè l sèvi avèk VMWare nan telecom se tankou bwote wòch kraze nan yon Ford Raptor - li bèl soti nan deyò a, men chofè a dwe fè 10 vwayaj olye pou yo yon sèl.

Dapre mwen, dezavantaj nan pi gwo nan VMWare se fèmen konplè li yo - konpayi an pa pral ba ou okenn enfòmasyon sou fason li fonksyone, pou egzanp, vSAN oswa sa ki nan nwayo a hypervisor - li nan tou senpleman pa pwofitab pou li - se sa ki, ou pral pa janm vin yon ekspè nan VMWare - san sipò machann, ou fini (trè souvan mwen rankontre ekspè VMWare ki dekonpoze pa kesyon trivial). Pou mwen, VMWare ap achte yon machin ak kapo a fèmen - wi, ou ka gen espesyalis ki ka chanje senti a distribisyon, men se sèlman moun ki vann ou solisyon sa a ka louvri kapo a. Pèsonèlman, mwen pa renmen solisyon ke mwen pa ka antre nan. Ou pral di ke ou ka pa bezwen ale anba kapo a. Wi, sa a se posib, men mwen pral gade nan ou lè ou bezwen rasanble yon gwo fonksyon nan nwaj la soti nan 20-30 machin vityèl, 40-50 rezo, mwatye nan yo ki vle ale deyò, ak dezyèm mwatye a mande pou Akselerasyon SR-IOV, otreman w ap bezwen plis yon koup la douzèn machin sa yo - otreman pèfòmans lan pa pral ase.

Gen lòt pwen de vi, kidonk sèlman ou ka deside kisa yo chwazi epi, sa ki pi enpòtan, ou pral Lè sa a, responsab pou chwa ou. Sa a se jis opinyon mwen - yon moun ki te wè ak manyen omwen 4 pwodwi - Nokia, Juniper, Red Hat ak VMWare. Sa vle di, mwen gen yon bagay yo konpare ak.

Sous: www.habr.com

Add nouvo kòmantè