Bubuka ka bagian jaringan infrastruktur awan

Bubuka ka bagian jaringan infrastruktur awan

Komputasi awan nembus langkung jero sareng langkung jero kana kahirupan urang sareng sigana moal aya jalma tunggal anu henteu nganggo jasa awan sahenteuna sakali. Sanajan kitu, naon kahayang awan téh jeung kumaha gawéna, sababaraha urang terang, sanajan dina tingkat hiji gagasan. 5G parantos janten kanyataan sareng infrastruktur telekomunikasi mimiti ngalih tina solusi pilar ka solusi awan, sapertos kitu nalika pindah tina solusi hardware lengkep ka "pilar" virtual.

Dinten ieu kami bakal ngobrol ngeunaan dunya batin infrastruktur awan, khususna urang bakal ningali dasar-dasar bagian jaringan.

Naon ari awan? The virtualization sarua - view profil?

Leuwih ti hiji patarosan logis. Henteu - ieu sanés virtualisasi, sanaos henteu tiasa dilakukeun tanpa éta. Hayu urang tingali dua definisi:

Cloud computing (saterusna disebut Cloud) mangrupa modél pikeun nyadiakeun aksés ramah-pamaké pikeun sumber komputasi disebarkeun nu kudu deployed tur diluncurkeun on demand jeung latency panghandapna mungkin jeung ongkos minimal ka panyadia ladenan.

Virtualisasi - ieu mangrupikeun kamampuan pikeun ngabagi hiji éntitas fisik (contona, server) kana sababaraha virtual, ku kituna ningkatkeun panggunaan sumber daya (contona, anjeun ngagaduhan 3 server dimuat dina 25-30 persen, saatos virtualisasi anjeun nampi 1 server dimuat. dina 80-90 persen). Alami, virtualization eats nepi sababaraha sumberdaya - Anjeun kudu eupan hypervisor, kumaha oge, sakumaha prakték geus ditémbongkeun, kaulinan patut lilin. Conto idéal virtualisasi nyaéta VMWare, anu sampurna nyiapkeun mesin virtual, atanapi contona KVM, anu kuring resep, tapi ieu mangrupikeun masalah rasa.

Kami nganggo virtualisasi tanpa disadari, bahkan router beusi parantos nganggo virtualisasi - contona, dina versi panganyarna tina JunOS, sistem operasi dipasang salaku mesin virtual di luhur distribusi Linux sacara real-time (Wind River 9). Tapi virtualization sanes awan, tapi awan teu tiasa aya tanpa virtualization.

Virtualisasi mangrupikeun salah sahiji blok wangunan dimana awan diwangun.

Nyieun awan ku ngan saukur ngumpulkeun sababaraha hypervisors kana hiji domain L2, nambahkeun sababaraha playbooks yaml pikeun otomatis ngadaptar vlans ngaliwatan sababaraha jenis ansible sarta jamming hiji hal kawas hiji sistem orkestrasi kana eta sadayana pikeun otomatis nyieun mesin virtual moal jalan. Ieu bakal leuwih akurat, tapi hasilna Frankenstein teu awan urang kudu, sanajan bisa jadi impian pamungkas pikeun batur. Leuwih ti éta, lamun nyokot Openstack sarua, éta dasarna masih Frankenstein, tapi oh ogé, hayu urang ngobrol ngeunaan éta pikeun ayeuna.

Tapi kuring ngarti yén tina definisi anu disayogikeun di luhur éta henteu jelas pisan naon anu sabenerna tiasa disebut awan.

Ku alatan éta, dokumén ti NIST (National Institute of Standards and Technology) nyayogikeun 5 ciri utama anu kedah aya dina infrastruktur awan:

Nyadiakeun jasa kana pamundut. Pamaké kudu dibéré aksés bébas kana sumberdaya komputer disadiakeun pikeun anjeunna (kayaning jaringan, disk virtual, memori, cores processor, jsb), sarta sumberdaya ieu kudu disadiakeun otomatis - nyaeta, tanpa campur ti panyadia ladenan.

kasadiaan lega tina jasa. Aksés ka sumber daya kudu disadiakeun ku mékanisme baku pikeun ngidinan pamakéan duanana PCS baku sarta klien ipis jeung alat nu bagerak.

Ngagabungkeun sumberdaya kana pools. Sumberdaya pools kudu bisa nyadiakeun sumberdaya pikeun sababaraha klien dina waktos anu sareng, mastikeun yén klien nu terasing sarta bébas tina silih pangaruh jeung kompetisi pikeun sumber. Jaringan ogé kalebet dina kolam renang, anu nunjukkeun kamungkinan ngagunakeun alamat anu tumpang tindih. Pools kudu bisa skala on demand. Pamakéan pools ngamungkinkeun pikeun nyayogikeun tingkat kasabaran kasalahan sumber daya sareng abstraksi sumber daya fisik sareng virtual - panampi jasa éta ngan saukur disayogikeun ku set sumberdaya anu dipénta (dimana sumber daya ieu ayana sacara fisik, dina sabaraha server sareng saklar - henteu masalah pikeun klien). Najan kitu, urang kedah tumut kana akun kanyataan yén panyadia kudu mastikeun reservasi transparan sumberdaya ieu.

Adaptasi gancang kana kaayaan anu béda. Ladenan kedah fléksibel - panyadiaan sumber daya anu gancang, panyebaran deui, nambihan atanapi ngirangan sumber daya dina pamundut klien, sareng di pihak klien kedah aya perasaan yén sumber awan henteu aya watesna. Pikeun ngagampangkeun pamahaman, contona, anjeun teu ningali peringatan yén bagian tina rohangan disk anjeun dina Apple iCloud parantos ngaleungit kusabab hard drive dina server parantos rusak, sareng drive rusak. Salaku tambahan, dina pihak anjeun, kamungkinan jasa ieu ampir henteu aya watesna - anjeun peryogi 2 TB - henteu aya masalah, anjeun mayar sareng nampi éta. Conto anu sami tiasa dipasihkeun ku Google.Drive atanapi Yandex.Disk.

Kamungkinan ngukur jasa anu disayogikeun. Sistem awan kedah otomatis ngadalikeun sareng ngaoptimalkeun sumber daya anu dikonsumsi, sareng mékanisme ieu kedah transparan pikeun pangguna sareng panyadia jasa. Hartina, anjeun salawasna tiasa pariksa sabaraha sumber daya anjeun sarta klien anjeun consuming.

Eta sia tempo kanyataan yén sarat ieu lolobana sarat pikeun awan umum, jadi pikeun awan swasta (nyaéta, awan dibuka pikeun kaperluan internal parusahaan), syarat ieu bisa rada disaluyukeun. Nanging, aranjeunna tetep kedah dilakukeun, upami henteu, urang moal nampi sagala kauntungan tina komputasi awan.

Naha urang peryogi awan?

Sanajan kitu, sagala téhnologi anyar atawa aya, sagala protokol anyar dijieun pikeun hal (ogé, iwal RIP-ng, tangtosna). Teu aya anu peryogi protokol pikeun protokol (sumur, iwal RIP-ng, tangtosna). Logis yén Awan diciptakeun pikeun nyayogikeun sababaraha jinis jasa ka pangguna / klien. Urang sadayana wawuh sareng sahenteuna sababaraha jasa awan, contona Dropbox atanapi Google.Docs, sareng kuring yakin kalolobaan jalma suksés ngagunakeunana - contona, tulisan ieu ditulis nganggo jasa awan Google.Docs. Tapi jasa awan anu urang terang ngan ukur bagian tina kamampuan awan-langkung tepatna, aranjeunna ngan ukur jasa jinis SaaS. Urang tiasa nyayogikeun jasa awan ku tilu cara: dina bentuk SaaS, PaaS atanapi IaaS. Naon jasa anu anjeun peryogikeun gumantung kana kahayang sareng kamampuan anjeun.

Hayu urang tingali masing-masing dina urutan:

Software saperti Service a (SaaS) mangrupikeun modél pikeun nyayogikeun jasa lengkep ka klien, contona, jasa email sapertos Yandex.Mail atanapi Gmail. Dina modél pangiriman jasa ieu, anjeun, salaku klien, sabenerna ngalakukeun nanaon iwal ngagunakeun jasa - nyaeta, anjeun teu kudu mikir ngeunaan nyetel layanan, kasabaran lepat na atanapi redundancy. Hal utama henteu kompromi kecap akses anjeun; panyadia jasa ieu bakal ngalakukeun sésana pikeun anjeun. Tina sudut pandang panyadia ladénan, anjeunna tanggung jawab sapinuhna pikeun sadaya jasa - tina parangkat keras server sareng sistem operasi host kana databés sareng setélan parangkat lunak.

Platform salaku Layanan (PaaS) — nalika nganggo modél ieu, panyadia ladénan nyayogikeun ka klien hiji workpiece pikeun jasa, contona, hayu urang nyandak server wéb. Panyadia ladénan nyayogikeun klien sareng server virtual (saleresna, sakumpulan sumber daya, sapertos RAM / CPU / Panyimpenan / Nets, jsb.), komo dipasang OS sareng parangkat lunak anu diperyogikeun dina server ieu, kumaha ogé, konfigurasi tina Sadaya hal ieu dilakukeun ku klien nyalira sareng pikeun pagelaran jasa anu dijawab ku klien. Panyadia jasa, sapertos dina kasus sateuacana, tanggung jawab pikeun pagelaran alat fisik, hypervisors, mesin virtual sorangan, kasadiaan jaringanna, sareng sajabana, tapi jasa éta henteu aya dina tanggung jawabna.

Infrastruktur salaku Pelayanan (IaaS) - pendekatan ieu geus leuwih narik, kanyataanna, panyadia ladenan nyadiakeun klien kalawan infrastruktur virtualized lengkep - nyaeta, sababaraha set (pool) sumberdaya, kayaning CPU Cores, RAM, Networks, jsb. klien - naon klien hayang ngalakukeun kalawan sumberdaya ieu dina kolam renang disadiakeun (kuota) - teu utamana penting pikeun supplier nu. Naha klien hayang nyieun vEPC sorangan atawa malah nyieun operator mini jeung nyadiakeun layanan komunikasi - euweuh sual - ngalakukeun eta. Dina skenario sapertos kitu, panyadia ladénan tanggung jawab pikeun nyayogikeun sumber daya, kasabaran sareng kasadiaan kasalahanna, ogé OS anu ngamungkinkeun aranjeunna pikeun ngumpulkeun sumber-sumber ieu sareng nyayogikeunana ka klien kalayan kamampuan ningkatkeun atanapi ngirangan sumber daya iraha waé. dina pamundut ti klien. Klién ngonpigurasikeun sadaya mesin virtual sareng tinsel sanésna nyalira ngalangkungan portal sareng konsol swalayan, kalebet nyetél jaringan (iwal jaringan éksternal).

Naon OpenStack?

Dina sadaya tilu pilihan, panyadia ladénan peryogi OS anu bakal tiasa nyiptakeun infrastruktur awan. Nyatana, kalayan SaaS, langkung ti hiji divisi nanggungjawaban kana sadaya tumpukan téknologi - aya divisi anu tanggung jawab kana infrastruktur - nyaéta, nyayogikeun IaaS ka divisi sanés, divisi ieu nyayogikeun SaaS ka klien. OpenStack mangrupakeun salah sahiji sistem operasi awan nu ngidinan Anjeun pikeun ngumpulkeun kebat saklar, server jeung sistem gudang kana hiji kolam renang sumberdaya tunggal, dibeulah kolam renang umum ieu subpools (nyewa) sarta nyadiakeun sumberdaya ieu ka klien ngaliwatan jaringan.

OpenStack nyaéta sistem operasi awan nu ngidinan Anjeun pikeun ngadalikeun pools badag sumberdaya komputasi, neundeun data jeung sumber jaringan, disadiakeun tur junun via API ngagunakeun mékanisme auténtikasi baku.

Kalayan kecap sanésna, ieu mangrupikeun sakumpulan proyék parangkat lunak gratis anu dirarancang pikeun nyiptakeun jasa awan (boh umum sareng swasta) - nyaéta, sakumpulan alat anu ngamungkinkeun anjeun ngagabungkeun server sareng ngagentos peralatan kana sumber daya tunggal, ngatur. sumberdaya ieu, nyadiakeun tingkat perlu toleransi sesar.

Dina waktos nyerat bahan ieu, struktur OpenStack sapertos kieu:
Bubuka ka bagian jaringan infrastruktur awan
Gambar dicokot tina openstack.org

Unggal komponén anu kalebet dina OpenStack ngalaksanakeun fungsi anu khusus. Arsitéktur anu disebarkeun ieu ngamungkinkeun anjeun ngalebetkeun dina solusi set komponén fungsional anu anjeun peryogikeun. Nanging, sababaraha komponén mangrupikeun komponén akar sareng ngaleungitkeunana bakal nyababkeun lengkep atanapi parsial henteu tiasa dianggo solusi sacara gembleng. Komponén ieu biasana digolongkeun kana:

  • dasbor - GUI basis wéb pikeun ngatur jasa OpenStack
  • Keystone mangrupakeun ladenan identitas terpusat nu nyadiakeun auténtikasi jeung fungsionalitas otorisasina pikeun layanan séjén, kitu ogé ngatur kredensial pamaké sarta kalungguhan maranéhna.
  • neutron - layanan jaringan nu nyadiakeun konektipitas antara interfaces rupa-rupa layanan OpenStack (kaasup konektipitas antara VM jeung aksés maranéhanana ka dunya luar)
  • Cinder - nyadiakeun aksés ka blok gudang pikeun mesin virtual
  • Nova - manajemén siklus kahirupan mesin virtual
  • Mawat - gudang gambar mesin virtual jeung snapshots
  • Swift - nyadiakeun aksés ka objék gudang
  • Ceilometer - jasa anu nyayogikeun kamampuan pikeun ngumpulkeun telemétri sareng ngukur sumberdaya anu sayogi sareng dikonsumsi
  • panas - orkestrasi dumasar kana témplat pikeun nyiptakeun otomatis sareng nyayogikeun sumber

Daptar lengkep sadaya proyék sareng tujuanana tiasa ditingali di dieu.

Unggal komponén OpenStack nyaéta layanan anu ngalakukeun fungsi husus sarta nyadiakeun API pikeun ngatur fungsi éta sarta berinteraksi sareng jasa sistem operasi awan séjén pikeun nyieun infrastruktur ngahiji. Contona, Nova nyadiakeun manajemén sumberdaya komputasi sarta API pikeun aksés ka Konfigurasi sumberdaya ieu, Glance nyadiakeun manajemén gambar na hiji API pikeun ngatur aranjeunna, Cinder nyadiakeun gudang blok na hiji API pikeun ngatur eta, jsb. Sadaya fungsi disambungkeun dina cara anu caket pisan.

Nanging, upami anjeun ningali éta, sadaya jasa anu dijalankeun dina OpenStack pamustunganana mangrupikeun jinis mesin virtual (atanapi wadah) anu nyambung ka jaringan. Patarosan timbul - naha urang kudu jadi loba elemen?

Hayu urang ngaliwatan algoritma pikeun nyieun mesin virtual tur nyambungkeun ka jaringan jeung neundeun pengkuh di Openstack.

  1. Nalika anjeun nyiptakeun pamundut pikeun nyiptakeun mesin, janten pamenta ngalangkungan Horizon (Dashboard) atanapi pamundut ngalangkungan CLI, hal kahiji anu kajantenan nyaéta otorisasi pamundut anjeun dina Keystone - anjeun tiasa nyiptakeun mesin, naha éta gaduh hak ngagunakeun jaringan ieu, ngalakukeun draf kuota anjeun, jsb.
  2. Keystone authenticates pamundut anjeun sarta dibangkitkeun hiji token auth dina pesen respon, nu bakal dipaké salajengna. Saatos nampi réspon ti Keystone, pamundut dikirim ka Nova (nova api).
  3. Nova-api pariksa validitas pamundut anjeun ku ngahubungan Keystone ngagunakeun token otentikasi dihasilkeun saméméhna
  4. Keystone ngalaksanakeun auténtikasi sareng nyayogikeun inpormasi ngeunaan idin sareng larangan dumasar kana token otentikasi ieu.
  5. Nova-api nyiptakeun éntri pikeun VM anyar dina nova-database sareng ngalangkungan pamundut pikeun nyiptakeun mesin ka nova-scheduler.
  6. Nova-scheduler milih host (titik komputer) nu VM bakal deployed dumasar kana parameter dieusian, beurat jeung zona. A catetan ieu sareng ID VM ditulis ka nova-database.
  7. Salajengna, nova-scheduler ngahubungi nova-compute sareng pamundut pikeun nyebarkeun hiji conto. Nova-itung kontak nova-konduktor pikeun ménta inpo ngeunaan parameter mesin (nova-konduktor mangrupakeun unsur nova nu meta salaku server proxy antara nova-database jeung nova-itung, ngawatesan jumlah requests ka nova-database pikeun nyegah masalah jeung database. réduksi beban konsistensi).
  8. Nova-konduktor narima informasi dipénta ti nova-database jeung ngalirkeun ka nova-itung.
  9. Salajengna, nova-compute nelepon glance pikeun meunangkeun ID gambar. Glace ngesahkeun pamundut di Keystone sareng ngabalikeun inpormasi anu dipénta.
  10. Nova-itung kontak neutron pikeun ménta inpo ngeunaan parameter jaringan. Sarupa jeung glance, neutron validates pamundut di Keystone, nu satutasna nyieun entri dina database (port identifier, jsb), nyieun pamundut pikeun nyieun port a, sarta mulih informasi dipénta ka nova-itung.
  11. Nova-itung kontak cinder kalawan pamundut a allocate volume ka mesin virtual. Sarupa sareng glance, cider ngesahkeun pamundut dina Keystone, nyiptakeun pamundut nyiptakeun volume, sareng mulangkeun inpormasi anu dipénta.
  12. Nova-itung kontak libvirt kalawan pamundut a nyebarkeun mesin virtual kalawan parameter dieusian.

Nyatana, operasi anu katingalina saderhana pikeun nyiptakeun mesin virtual anu sederhana janten whirlpool sapertos panggero API antara elemen platform awan. Sumawona, sakumaha anu anjeun tingali, bahkan jasa anu ditunjuk sateuacana ogé diwangun ku komponén anu langkung alit antara anu aya interaksi. Nyiptakeun mesin ngan ukur sabagéan leutik tina naon anu anjeun tiasa laksanakeun ku platform awan - aya jasa anu tanggung jawab pikeun nyaimbangkeun lalu lintas, jasa anu tanggung jawab pikeun panyimpen blok, jasa anu tanggung jawab pikeun DNS, jasa anu tanggung jawab pikeun nyayogikeun server logam bulistir, jsb. Awan ngamungkinkeun anjeun pikeun ngubaran mesin virtual anjeun sapertos gerombolan domba (sabalikna tina virtualisasi). Upami aya kajadian ka mesin anjeun dina lingkungan virtual - anjeun malikkeun deui tina cadangan, jsb., tapi aplikasi awan diwangun ku cara anu mesin virtual henteu maénkeun peran anu penting - mesin virtual "maot" - henteu aya masalah. - nu anyar ngan saukur dijieun wahana dumasar kana citakan jeung, sabab nyebutkeun, skuad nu teu aya bewara leungitna bajoang. Alami, ieu nyadiakeun keur ayana mékanisme orchestration - ngagunakeun témplat Panas, anjeun bisa kalayan gampang nyebarkeun hiji fungsi kompléks nu diwangun ku puluhan jaringan jeung mesin virtual.

Perlu diinget yén teu aya infrastruktur awan tanpa jaringan - unggal unsur dina hiji cara atanapi anu sanés berinteraksi sareng elemen sanés ngalangkungan jaringan. Sajaba ti éta, awan ngabogaan jaringan pancen non-statik. Alami, jaringan underlay malah leuwih atawa kirang statik - titik anyar jeung saklar teu ditambahkeun unggal poe, tapi komponén overlay bisa jeung inevitably robah terus - jaringan anyar bakal ditambahkeun atawa dihapus, mesin virtual anyar bakal muncul tur heubeul bakal. maot. Sareng anjeun émut tina definisi awan anu dipasihkeun dina awal tulisan, sumber daya kedah dialokasikeun ka pangguna sacara otomatis sareng sahenteuna (atanapi langkung saé, tanpa) campur ti panyadia jasa. Nyaéta, jinis penyediaan sumberdaya jaringan anu ayeuna aya dina bentuk front-end dina bentuk akun pribadi anjeun tiasa diaksés via http/https sareng insinyur jaringan tugas Vasily salaku backend sanés awan, bahkan. lamun Vasily boga dalapan leungeun.

Neutron, salaku layanan jaringan, nyadiakeun API pikeun ngatur bagian jaringan tina infrastruktur awan. Kakuatan jasa sareng ngatur bagian jaringan Openstack ku nyayogikeun lapisan abstraksi anu disebut Network-as-a-Service (NaaS). Nyaéta, jaringan mangrupikeun unit anu tiasa diukur maya anu sami sareng, contona, inti CPU virtual atanapi jumlah RAM.

Tapi sateuacan ngaléngkah ka arsitéktur bagian jaringan OpenStack, hayu urang pertimbangkeun kumaha jaringan ieu jalan dina OpenStack sareng kunaon jaringan éta mangrupikeun bagian anu penting sareng integral tina méga.

Janten urang gaduh dua VM klien RED sareng dua VM klien GREEN. Hayu urang nganggap yén mesin ieu aya dina dua hypervisors ku cara kieu:

Bubuka ka bagian jaringan infrastruktur awan

Di momen, ieu ngan virtualization tina 4 server jeung sia leuwih, saprak jadi jauh kabeh urang geus dipigawé nyaéta virtualize 4 server, nempatkeun aranjeunna dina dua server fisik. Sareng dugi ka ayeuna aranjeunna henteu nyambung ka jaringan.

Pikeun ngadamel awan, urang kedah nambihan sababaraha komponén. Kahiji, urang virtualize bagian jaringan - urang kudu nyambungkeun 4 mesin ieu dina pasangan, sarta klien hoyong sambungan L2. Anjeun tiasa nganggo saklar sareng ngonpigurasikeun batang dina arahna sareng ngabéréskeun sadayana nganggo sasak linux atanapi, pikeun pangguna anu langkung maju, openvswitch (urang bakal uih deui engké). Tapi tiasa aya seueur jaringan, sareng teras-terasan ngadorong L2 ngalangkungan saklar sanés ide anu pangsaéna - aya departemén anu béda, méja jasa, sababaraha bulan ngantosan aplikasi réngsé, minggu-minggu ngungkulan - di dunya modéren ieu. pendekatan euweuh jalan. Sareng langkung gancang perusahaan ngartos ieu, langkung gampang pikeun maju. Ku alatan éta, antara hypervisors urang bakal milih hiji jaringan L3 ngaliwatan nu mesin virtual urang bakal komunikasi, sarta dina luhureun jaringan L3 ieu urang bakal ngawangun jaringan overlay L2 virtual dimana lalulintas mesin virtual urang bakal ngajalankeun. Anjeun tiasa make GRE, Geneve atanapi VxLAN sakumaha encapsulation. Hayu urang difokuskeun anu terakhir pikeun ayeuna, sanaos éta henteu penting pisan.

Urang kedah milarian VTEP dimana waé (mugi sadayana wawuh sareng terminologi VxLAN). Kusabab urang gaduh jaringan L3 anu langsung ti server, teu aya anu ngahalangan kami pikeun nempatkeun VTEP dina server sorangan, sareng OVS (OpenvSwitch) anu saé dina ngalakukeun ieu. Hasilna, urang ngagaduhan desain ieu:

Bubuka ka bagian jaringan infrastruktur awan

Kusabab lalulintas antara VMs kudu dibagi, palabuhan nuju mesin virtual bakal boga angka vlan béda. Jumlah tag muterkeun hiji peran ngan dina hiji switch virtual, saprak nalika encapsulated di VxLAN kami bisa kalayan gampang nyabut eta, saprak urang bakal boga VNI a.

Bubuka ka bagian jaringan infrastruktur awan

Ayeuna urang tiasa nyiptakeun mesin sareng jaringan virtual pikeun aranjeunna tanpa masalah.

Sanajan kitu, kumaha lamun klien nu boga mesin sejen, tapi dina jaringan béda? Urang peryogi rooting antara jaringan. Urang bakal nempo hiji pilihan basajan lamun routing terpusat dipaké - nyaeta, lalulintas routed ngaliwatan titik jaringan dedicated husus (ogé, sakumaha aturan, aranjeunna digabungkeun jeung titik kontrol, jadi urang bakal boga hal anu sarua).

Sigana mah teu aya anu pajeulit - urang ngadamel antarmuka sasak dina titik kontrol, ngajalankeun lalu lintas ka dinya sareng ti dinya urang jalankeun dimana urang peryogina. Tapi masalahna nyaéta yén klien RED hoyong nganggo jaringan 10.0.0.0/24, sareng klien GREEN hoyong nganggo jaringan 10.0.0.0/24. Hartina, urang ngawitan intersect spasi alamat. Sajaba ti, klien teu hayang klien séjén pikeun bisa jalur kana jaringan internal maranéhanana, nu ngajadikeun rasa. Pikeun misahkeun jaringan sareng lalu lintas data klien, kami bakal nyayogikeun ruang ngaran anu misah pikeun masing-masing. Namespace saleresna mangrupikeun salinan tumpukan jaringan Linux, nyaéta, klien dina namespace RED lengkep diisolasi tina klien tina namespace GREEN (ogé, rute antara jaringan klien ieu diidinan ngalangkungan rohangan ngaran standar atanapi dina alat transportasi hulu).

Hartina, urang meunang diagram di handap ieu:

Bubuka ka bagian jaringan infrastruktur awan

Torowongan L2 konvergen tina sadaya titik komputasi ka titik kontrol. titik dimana panganteur L3 pikeun jaringan ieu lokasina, unggal dina spasi ngaran dedicated kanggo isolasi.

Najan kitu, urang poho hal pangpentingna. Mesin virtual kedah nyayogikeun jasa ka klien, nyaéta, sahenteuna sahenteuna hiji antarmuka éksternal anu tiasa dihontal. Hartina, urang kudu kaluar ka dunya luar. Aya pilihan anu béda di dieu. Hayu urang ngalakukeun pilihan pangbasajanna. Kami bakal nambihan hiji jaringan ka unggal klien, anu bakal sah dina jaringan panyadia sareng moal tumpang tindih sareng jaringan anu sanés. Jaringan ogé tiasa motong sareng ningali VRF anu béda dina sisi jaringan panyadia. Data jaringan ogé bakal hirup dina spasi ngaran unggal klien. Nanging, aranjeunna tetep bakal kaluar ka dunya luar ngalangkungan hiji antarmuka fisik (atanapi beungkeut, anu langkung logis). Pikeun misahkeun lalu lintas klien, lalu lintas ka luar bakal ditandaan ku tag VLAN anu dialokasikeun ka klien.

Hasilna, urang meunang diagram ieu:

Bubuka ka bagian jaringan infrastruktur awan

Patarosan anu lumayan naha henteu ngadamel gateway dina titik komputasi sorangan? Ieu sanés masalah anu ageung; komo deui, upami anjeun ngaktipkeun router anu disebarkeun (DVR), ieu bakal jalan. Dina skenario ieu, urang tempo pilihan pangbasajanna kalawan gateway terpusat, nu dipaké sacara standar di Openstack. Pikeun fungsi-beban tinggi, aranjeunna bakal ngagunakeun duanana router disebarkeun sarta téhnologi akselerasi kayaning SR-IOV na Passthrough, tapi sakumaha maranéhna ngomong, éta carita sagemblengna béda. Kahiji, hayu urang nungkulan bagian dasar, lajeng urang balik kana detil.

Sabenerna, skéma kami parantos tiasa dianggo, tapi aya sababaraha nuansa:

  • Urang kudu kumaha bae ngajaga mesin urang, nyaeta, nempatkeun filter dina panganteur switch arah klien nu.
  • Nyieun mungkin pikeun mesin virtual otomatis ménta alamat IP, ku kituna anjeun teu kudu asup kana eta ngaliwatan konsol unggal waktu jeung ngadaptar alamat.

Hayu urang mimitian ku panyalindungan mesin. Pikeun ieu anjeun tiasa nganggo iptables banal, naha henteu.

Nyaeta, ayeuna topologi urang geus jadi saeutik leuwih pajeulit:

Bubuka ka bagian jaringan infrastruktur awan

Hayu urang ngaléngkah. Urang kedah nambihan server DHCP. Tempat anu paling idéal pikeun maluruh pangladén DHCP pikeun tiap klien nyaéta titik kontrol anu parantos disebatkeun di luhur, dimana rohangan ngaran aya:

Bubuka ka bagian jaringan infrastruktur awan

Sanajan kitu, aya masalah leutik. Kumaha upami sadayana reboot sareng sadaya inpormasi ngeunaan nyéwa alamat dina DHCP ngaleungit. Éta logis yén mesin bakal dibéré alamat anyar, nu teu pisan merenah. Aya dua cara kaluar dieu - boh ngagunakeun ngaran domain jeung nambahkeun server DNS pikeun tiap klien, lajeng alamatna moal jadi utamana penting pikeun urang (sarupa jeung bagian jaringan dina k8s) - tapi aya masalah jeung jaringan éksternal, saprak alamat ogé bisa dikaluarkeun dina eta via DHCP - nu peryogi sinkronisasi jeung server DNS dina platform awan na hiji server DNS éksternal, nu dina pamadegan mah teu pisan fléksibel, tapi rada mungkin. Atawa pilihan kadua ngagunakeun metadata - nyaeta, simpen informasi ngeunaan alamat nu dikaluarkeun ka mesin supados server DHCP weruh alamat nu ngaluarkeun ka mesin lamun mesin geus narima alamat. Pilihan kadua basajan tur leuwih fleksibel, sabab ngidinan Anjeun pikeun nyimpen informasi tambahan ngeunaan mobil. Ayeuna hayu urang tambahkeun metadata agén kana diagram:

Bubuka ka bagian jaringan infrastruktur awan

Masalah anu sanés anu ogé patut dibahas nyaéta kamampuan ngagunakeun hiji jaringan éksternal ku sadaya klien, sabab jaringan éksternal, upami aranjeunna kedah sah sapanjang sadaya jaringan, bakal sesah - anjeun kedah teras-terasan alokasi sareng ngontrol alokasi jaringan ieu. Kamampuhan ngagunakeun jaringan pra-konpigurasi éksternal tunggal pikeun sadaya klien bakal mangpaat pisan nalika nyiptakeun awan umum. Ieu bakal ngagampangkeun nyebarkeun mesin sabab urang henteu kedah konsultasi database alamat sareng milih rohangan alamat anu unik pikeun jaringan éksternal unggal klien. Salaku tambahan, urang tiasa ngadaptarkeun jaringan éksternal sateuacanna sareng dina waktos panyebaran urang ngan ukur kedah ngahubungkeun alamat éksternal sareng mesin klien.

Sareng di dieu NAT ngabantosan kami - kami ngan ukur ngamungkinkeun para klien ngaksés dunya luar ngalangkungan rohangan ngaran standar nganggo tarjamahan NAT. Nya, di dieu aya masalah leutik. Ieu alus lamun server klien meta salaku klien teu salaku server a - nyaeta, eta initiates tinimbang narima sambungan. Tapi pikeun urang éta bakal sabalikna. Dina hal ieu, urang kedah ngalakukeun tujuan NAT supados nalika nampi lalu lintas, titik kontrol ngartos yén lalu lintas ieu dimaksudkeun pikeun mesin virtual A klien A, anu hartosna urang kedah ngalakukeun tarjamahan NAT tina alamat éksternal, contona 100.1.1.1. .10.0.0.1, ka alamat internal 100. Dina hal ieu, sanajan sakabeh klien bakal ngagunakeun jaringan sarua, isolasi internal sagemblengna dilestarikan. Hartina, urang kedah ngalakukeun dNAT sareng sNAT dina titik kontrol. Naha nganggo jaringan tunggal sareng alamat ngambang atanapi jaringan éksternal, atanapi duanana sakaligus, gumantung kana naon anu anjeun hoyong bawa kana méga. Kami moal nambihan alamat ngambang kana diagram, tapi bakal ngantepkeun jaringan éksternal anu parantos ditambihan sateuacana - unggal klien ngagaduhan jaringan éksternal sorangan (dina diagram aranjeunna dituduhkeun salaku vlan 200 sareng XNUMX dina antarmuka éksternal).

Hasilna, kami nampi solusi anu pikaresepeun sareng dina waktos anu sami, anu gaduh kalenturan anu tangtu tapi henteu acan gaduh mékanisme toleransi lepat.

Anu mimiti, urang ngan ukur gaduh hiji titik kontrol - gagalna bakal ngakibatkeun runtuhna sadaya sistem. Pikeun ngalereskeun masalah ieu, anjeun kedah ngadamel kuorum sahenteuna 3 titik. Hayu urang tambahkeun ieu kana diagram:

Bubuka ka bagian jaringan infrastruktur awan

Alami, sadaya titik disingkronkeun sareng nalika hiji titik aktif kaluar, titik sanés bakal nyandak tanggung jawabna.

Masalah salajengna nyaéta disk mesin virtual. Di momen, aranjeunna disimpen dina hypervisors sorangan, sarta dina kasus masalah hypervisor nu, urang leungit kabeh data - sarta ayana razia moal mantuan dieu lamun urang leungit teu disk, tapi sakabéh server. Jang ngalampahkeun ieu, urang kudu nyieun layanan nu bakal meta salaku tungtung hareup pikeun sababaraha jenis gudang. Naon jenis panyimpen éta henteu penting pisan pikeun urang, tapi éta kedah ngajagi data urang tina kagagalan disk sareng node, sareng kamungkinan sadayana kabinet. Aya sababaraha pilihan di dieu - tangtosna, aya jaringan SAN sareng Fiber Channel, tapi hayu urang jujur ​​- FC parantos relic jaman baheula - analog tina E1 dina angkutan - leres, kuring satuju, éta masih dianggo, tapi ngan dimana éta mutlak teu mungkin tanpa eta. Ku alatan éta, kuring moal sacara sukarela nyebarkeun jaringan FC dina 2020, terang yén aya alternatif anu langkung narik. Sanaos masing-masing nyalira, panginten aya anu percanten yén FC kalayan sagala watesanna mangrupikeun anu urang peryogikeun - kuring moal ngabantah, sadayana gaduh pendapat masing-masing. Nanging, solusi anu paling pikaresepeun dina pendapat kuring nyaéta ngagunakeun SDS, sapertos Ceph.

Ceph ngamungkinkeun anjeun ngawangun solusi panyimpen data anu sayogi kalayan seueur pilihan cadangan anu mungkin, dimimitian ku kodeu sareng pamariksaan parity (analog sareng razia 5 atanapi 6) ditungtungan ku réplikasi data lengkep ka disk anu béda, kalayan ngitung lokasi disk di server, sarta server di cabinets, jsb.

Pikeun ngawangun Ceph anjeun peryogi 3 titik deui. Interaksi sareng panyimpen ogé bakal dilaksanakeun ngalangkungan jaringan nganggo blok, obyék sareng jasa panyimpen file. Hayu urang tambahkeun gudang kana skéma:

Bubuka ka bagian jaringan infrastruktur awan

Catetan: anjeun ogé tiasa ngadamel titik komputasi hyperconverged - ieu mangrupikeun konsép ngagabungkeun sababaraha fungsi dina hiji titik - contona, neundeun + itung - tanpa ngahaturanan titik khusus pikeun neundeun ceph. Kami bakal nampi skéma toleran-lepat anu sami - sabab SDS bakal nyéépkeun data sareng tingkat reservasi anu kami tangtukeun. Sanajan kitu, titik hyperconverged sok kompromi - saprak titik gudang teu ngan panas hawa sakumaha sigana di glance kahiji (saprak teu aya mesin virtual dina eta) - eta spends sumberdaya CPU dina ngalayanan SDS (dina kanyataanana, eta ngalakukeun sagalana). réplikasi sareng pamulihan saatos gagal titik, disk, jsb). Hartina, anjeun bakal leungit sababaraha kakuatan titik komputasi upami anjeun ngagabungkeun sareng neundeun.

Sadaya hal ieu kedah diurus kumaha waé - urang peryogi hal anu urang tiasa nyiptakeun mesin, jaringan, router virtual, jsb. klien bakal tiasa nyambung ka portal ieu via http / HTTPS tur ngalakukeun sagalana manehna perlu (ogé, ampir).

Hasilna, urang ayeuna gaduh sistem toleran lepat. Sadaya unsur infrastruktur ieu kedah diurus kumaha waé. Samemehna ieu dijelaskeun yén Openstack mangrupakeun susunan proyék, nu masing-masing nyadiakeun fungsi husus. Sakumaha urang tingali, aya langkung ti cukup elemen anu kedah dikonpigurasikeun sareng dikontrol. Dinten ieu kami bakal ngobrol ngeunaan bagian jaringan.

Arsitéktur neutron

Dina OpenStack, éta Neutron anu tanggung jawab pikeun nyambungkeun palabuhan mesin virtual ka jaringan L2 umum, mastikeun routing lalulintas antara VM lokasina dina jaringan L2 béda, kitu ogé routing kaluar, nyadiakeun layanan kayaning NAT, Floating IP, DHCP, jsb.

Dina tingkat luhur, operasi sahiji layanan jaringan (bagian dasar) bisa digambarkeun saperti kieu.

Nalika ngamimitian VM, jasa jaringan:

  1. Nyiptakeun port pikeun VM anu dipasihkeun (atanapi palabuhan) sareng ngabéjaan jasa DHCP ngeunaan éta;
  2. Hiji alat jaringan virtual anyar dijieun (via libvirt);
  3. VM nyambung ka port (s) dijieun dina hambalan 1;

Anehna, karya Neutron didasarkeun kana mékanisme standar anu biasa ku saha waé anu kantos nyilem kana Linux - namespaces, iptables, linux bridges, openvswitch, conntrack, jsb.

Ieu kudu geuwat netelakeun yen Neutron sanes hiji SDN controller.

Neutron diwangun ku sababaraha komponén anu saling nyambungkeun:

Bubuka ka bagian jaringan infrastruktur awan

Openstack-neutron-server mangrupakeun daemon anu hade jeung requests pamaké ngaliwatan API. Sétan ieu henteu aub dina ngadaptarkeun sambungan jaringan, tapi nyayogikeun inpormasi anu dipikabutuh pikeun plugins na, anu teras ngonpigurasikeun unsur jaringan anu dipikahoyong. Agen neutron dina titik OpenStack ngadaptar sareng server Neutron.

Neutron-server saleresna mangrupikeun aplikasi anu ditulis dina python, diwangun ku dua bagian:

  • jasa REST
  • Plugin Neutron (inti/layanan)

Ladenan REST dirancang pikeun nampa telepon API tina komponén séjén (contona, pamundut pikeun masihan sababaraha inpormasi, jsb.)

Plugins mangrupakeun komponén software plug-in / modul nu disebut salila requests API - nyaeta, atribusi tina jasa lumangsung ngaliwatan aranjeunna. Plugins dibagi jadi dua jenis - service jeung root. Sakumaha aturan, plugin kuda utamana jawab ngatur spasi alamat na L2 sambungan antara VMs, sarta plugins jasa geus nyadiakeun fungsionalitas tambahan kayaning VPN atanapi FW.

Daptar plugins anu sayogi ayeuna tiasa ditingali contona di dieu

Aya tiasa sababaraha plugins jasa, tapi ngan aya hiji plugin kuda.

openstack-neutron-ml2 nyaéta plugin root Openstack baku. Plugin ieu ngagaduhan arsitéktur modular (teu sapertos anu miheulaanna) sareng ngonpigurasikeun jasa jaringan ngalangkungan supir anu nyambung ka éta. Urang bakal kasampak di plugin sorangan saeutik engké, sabab dina kanyataanana méré kalenturan nu OpenStack boga di bagian jaringan. Plugin akar tiasa digentos (contona, Contrail Networking ngalakukeun ngagantian sapertos kitu).

Ladenan RPC (rabbitmq-server) - layanan nu nyadiakeun manajemén antrian jeung interaksi jeung jasa OpenStack séjén, kitu ogé interaksi antara agén layanan jaringan.

agén jaringan - agén anu aya dina unggal titik, dimana jasa jaringan dikonpigurasi.

Aya sababaraha jinis agén.

Agén utama nyaéta agén L2. Agén-agén ieu dijalankeun dina unggal hypervisors, kalebet titik kontrol (langkung tepatna, dina sadaya titik anu nyayogikeun jasa naon waé pikeun panyewa) sareng fungsi utami nyaéta nyambungkeun mesin virtual ka jaringan L2 umum, sareng ogé ngahasilkeun panggeuing nalika aya kajadian ( contona nganonaktipkeun / ngaktipkeun port).

Nu saterusna, agén teu kurang pentingna téh agén L3. Sacara standar, agén ieu ngajalankeun sacara éksklusif dina titik jaringan (sering titik jaringan digabungkeun sareng titik kontrol) sareng nyayogikeun rute antara jaringan panyewa (duanana antara jaringan sareng jaringan panyewa sanés, sareng tiasa diaksés ku dunya luar, nyayogikeun NAT, ogé layanan DHCP). Nanging, nalika nganggo DVR (router anu disebarkeun), peryogi pikeun plugin L3 ogé muncul dina titik komputasi.

Agén L3 ngagunakeun namespaces Linux Ubuntu pikeun nyadiakeun unggal tenant jeung susunan jaringan terasing sorangan jeung pungsionalitas routers virtual nu ruteu lalulintas sarta nyadiakeun ladenan gateway pikeun jaringan Lapisan 2.

database - database identifiers jaringan, subnets, palabuhan, pools, jsb.

Nyatana, Neutron nampi pamundut API tina nyiptakeun éntitas jaringan, ngabuktoskeun kaaslianana, sareng ngalangkungan RPC (upami ngaksés sababaraha plugin atanapi agén) atanapi REST API (upami komunikasi di SDN) ngirimkeun ka agén (via plugins) parentah nu diperlukeun pikeun ngatur layanan nu dipénta.

Ayeuna urang balikkeun kana pamasangan tés (kumaha éta disebarkeun sareng naon anu kalebet dina éta, urang tingali engké dina bagian praktis) sareng tingali dimana masing-masing komponénna aya:

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

Bubuka ka bagian jaringan infrastruktur awan

Sabenerna, éta sakabéh struktur Neutron. Ayeuna sia nyéépkeun waktos dina plugin ML2.

Lapisan Modular 2

Sakumaha didadarkeun di luhur, plugin nu mangrupakeun standar OpenStack root plugin sarta ngabogaan arsitektur modular.

Miheulaan plugin ML2 ngagaduhan struktur monolitik, anu henteu ngamungkinkeun, contona, ngagunakeun campuran sababaraha téknologi dina hiji pamasangan. Salaku conto, anjeun teu tiasa nganggo openvswitch sareng linuxbridge dina waktos anu sami - anu kahiji atanapi anu kadua. Kusabab ieu, plugin ML2 sareng arsitékturna diciptakeun.

ML2 gaduh dua komponén - dua jinis panggerak: Panggerak Tipe sareng Panggerak Mékanisme.

Tipe supir nangtukeun téknologi anu bakal dipaké pikeun ngatur sambungan jaringan, contona VxLAN, VLAN, GRE. Dina waktos anu sami, supir ngamungkinkeun ngagunakeun téknologi anu béda. Téknologi standar nyaéta enkapsulasi VxLAN pikeun jaringan overlay sareng jaringan éksternal vlan.

Panggerak jinis kalebet jinis jaringan ieu:

datar - jaringan tanpa tagging
VLAN - jaringan tagged
lokal - jinis jaringan khusus pikeun pamasangan sadaya-dina-hiji (pamasangan sapertos kitu diperyogikeun pikeun pamekar atanapi pikeun latihan)
GRE - jaringan overlay ngagunakeun torowongan GRE
VxLAN - jaringan overlay nganggo torowongan VxLAN

supir mékanisme ngartikeun alat anu mastikeun organisasi téknologi anu ditetepkeun dina jinis supir - contona, openvswitch, sr-iov, opendaylight, OVN, jsb.

Gumantung kana palaksanaan supir ieu, boh agén dikawasa ku Neutron bakal dipaké, atawa sambungan ka SD controller éksternal bakal dipaké, nu ngurus sagala masalah nu patali jeung ngatur jaringan L2, routing, jsb.

Conto: upami urang nganggo ML2 sareng OVS, maka agén L2 dipasang dina unggal titik komputasi anu ngatur OVS. Nanging, upami urang nganggo, contona, OVN atanapi OpenDayLight, maka kontrol OVS aya dina yurisdiksina - Neutron, ngalangkungan plugin root, masihan paréntah ka controller, sareng éta parantos ngalaksanakeun naon anu dicaritakeun.

Hayu urang sikat up on Open vSwitch

Ayeuna, salah sahiji komponén konci OpenStack nyaéta Open vSwitch.
Nalika masang OpenStack tanpa ngajual SDN tambahan sapertos Juniper Contrail atanapi Nokia Nuage, OVS mangrupikeun komponén jaringan utama jaringan awan sareng, sareng iptables, conntrack, namespaces, ngamungkinkeun anjeun pikeun ngatur jaringan overlay multi-tenancy anu lengkep. Alami, komponén ieu tiasa diganti, contona, nalika nganggo solusi SDN proprietary (vendor) pihak katilu.

OVS mangrupikeun switch parangkat lunak open source anu dirarancang pikeun dianggo dina lingkungan virtualisasi salaku panyalur lalu lintas virtual.

Ayeuna, OVS ngagaduhan pungsionalitas anu saé, anu kalebet téknologi sapertos QoS, LACP, VLAN, VxLAN, GENEVE, OpenFlow, DPDK, jsb.

Catetan: OVS teu mimitina katimu salaku switch lemes keur fungsi telekomunikasi kacida dimuat na ieu leuwih dirancang pikeun kirang bandwidth-nuntut fungsi IT kayaning server WEB atawa server mail. Sanajan kitu, OVS keur dimekarkeun salajengna jeung palaksanaan ayeuna OVS geus greatly ningkat kinerja sarta kamampuhan, anu ngamungkinkeun pikeun dipaké ku operator telekomunikasi kalawan fungsi kacida saratna, contona, aya hiji palaksanaan OVS kalayan rojongan pikeun akselerasi DPDK.

Aya tilu komponén penting OVS anu anjeun kedah perhatoskeun:

  • modul kernel - komponén anu aya dina rohangan kernel anu ngolah lalu lintas dumasar kana aturan anu ditampi tina unsur kontrol;
  • vSwitch daemon (ovs-vswitchd) mangrupikeun prosés anu diluncurkeun dina rohangan pangguna anu tanggung jawab pikeun program modul kernel - nyaéta, éta langsung ngagambarkeun logika operasi saklar.
  • server database - database lokal lokasina di unggal host ngajalankeun OVS, nu konfigurasi disimpen. Controllers SDN tiasa komunikasi ngaliwatan modul ieu nganggo protokol OVSDB.

Sadaya ieu dibarengan ku sakumpulan utilitas diagnostik sareng manajemén, sapertos ovs-vsctl, ovs-appctl, ovs-ofctl, jsb.

Ayeuna Openstack loba dipaké ku operator telecom pikeun migrasi fungsi jaringan ka dinya, kayaning EPC, SBC, HLR, jsb Sababaraha fungsi bisa hirup tanpa masalah jeung OVS sakumaha anu kasebut, tapi contona, EPC ngolah lalulintas palanggan - lajeng ngaliwatan. jumlah lalulintas badag (ayeuna volume lalulintas ngahontal sababaraha ratus gigabits per detik). Alami, nyetir lalulintas sapertos ngaliwatan spasi kernel (saprak forwarder lokasina di dinya sacara standar) sanes gagasan pangalusna. Ku alatan éta, OVS mindeng deployed sagemblengna dina spasi pamaké ngagunakeun téhnologi akselerasi DPDK pikeun neraskeun lalulintas ti NIC ka spasi pamaké bypassing kernel.

Catetan: pikeun awan anu disebarkeun pikeun fungsi telekomunikasi, tiasa kaluaran lalu lintas tina titik komputasi anu ngalangkungan OVS langsung ka alat anu ngalih. Mékanisme SR-IOV sareng Passthrough dianggo pikeun tujuan ieu.

Kumaha ieu jalan dina perenah nyata?

Nya, ayeuna hayu urang teraskeun kana bagian praktis sareng tingali kumaha éta sadayana tiasa dianggo dina prakna.

Kahiji, hayu urang nyebarkeun hiji instalasi Openstack basajan. Kusabab kuring teu boga susunan server di leungeun pikeun percobaan, urang bakal ngumpul prototipe dina hiji server fisik tina mesin virtual. Leres, sacara alami, solusi sapertos kitu henteu cocog pikeun tujuan komérsial, tapi pikeun ningali conto kumaha jaringan jalan di Openstack, pamasangan sapertos kitu cekap pikeun panon. Sumawona pamasangan sapertos kitu langkung narik pikeun tujuan palatihan - sabab anjeun tiasa nyekel lalu lintas, jsb.

Kusabab urang ngan ukur kedah ningali bagian dasar, urang henteu tiasa nganggo sababaraha jaringan tapi ngangkat sadayana nganggo ukur dua jaringan, sareng jaringan kadua dina perenah ieu bakal dianggo sacara éksklusif pikeun aksés kana server undercloud sareng DNS. Kami moal nyabak jaringan éksternal ayeuna - ieu mangrupikeun topik pikeun tulisan ageung anu misah.

Ku kituna, hayu urang mimitian dina urutan. Kahiji, téori saeutik. Urang bakal install Openstack maké TripleO (Openstack on Openstack). Hakekat TripleO nyaeta urang install Openstack sadaya-dina-hiji (nyaeta, dina hiji titik), disebut undercloud, lajeng nganggo kamampuhan Openstack deployed ka install Openstack dimaksudkeun pikeun operasi, disebut overcloud. Undercloud bakal ngagunakeun kamampuan inheren pikeun ngatur server fisik (logam bulistir) - proyék Ironis - pikeun nyayogikeun hypervisors anu bakal ngalaksanakeun peran komputasi, kontrol, tempat neundeun. Hartina, urang teu make sagala parabot pihak-katilu pikeun nyebarkeun Openstack - urang nyebarkeun Openstack maké Openstack. Éta bakal langkung jelas nalika pamasangan maju, janten urang moal eureun di dinya sareng maju.

Catetan: Dina artikel ieu, demi kesederhanaan, Kuring teu make isolasi jaringan pikeun jaringan Openstack internal, tapi sagalana geus deployed ngagunakeun ngan hiji jaringan. Sanajan kitu, ayana atawa henteuna isolasi jaringan teu mangaruhan pungsionalitas dasar tina solusi - sagalana bakal dianggo persis sarua jeung lamun ngagunakeun isolasi, tapi lalulintas bakal ngalir dina jaringan nu sami. Pikeun pamasangan komérsial, sacara alami kedah nganggo isolasi nganggo vlan sareng antarmuka anu béda. Salaku conto, lalu lintas manajemén panyimpen ceph sareng lalu lintas data sorangan (aksés mesin ka disk, jsb.) Nalika terasing nganggo subnet anu béda (Manajemén Panyimpen sareng Panyimpenan) sareng ieu ngamungkinkeun anjeun ngajantenkeun solusi langkung toleran ku ngabagi lalu lintas ieu, contona. , sakuliah palabuhan béda, atawa ngagunakeun propil QoS béda pikeun lalulintas béda ambéh lalulintas data teu squeeze kaluar lalulintas signalling. Dina hal urang, aranjeunna bakal asup kana jaringan anu sami sareng kanyataanna ieu henteu ngabatesan urang ku cara naon waé.

Catetan: Kusabab urang badé ngajalankeun mesin virtual dina lingkungan virtual dumasar kana mesin virtual, urang kedah ngaktipkeun virtualisasi nested.

Anjeun tiasa pariksa naha virtualisasi nested diaktipkeun atanapi henteu sapertos kieu:


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

Upami anjeun ningali hurup N, maka kami ngaktifkeun dukungan pikeun virtualisasi bersarang dumasar kana pituduh naon waé anu anjeun mendakan dina jaringan, contona. a saperti .

Urang kedah ngumpul sirkuit ieu tina mesin virtual:

Bubuka ka bagian jaringan infrastruktur awan

Bisi kuring, pikeun nyambungkeun mesin virtual anu bagian tina instalasi hareup (na kuring meunang 7 sahijina, tapi anjeun bisa meunang ku 4 lamun teu boga loba sumber), I dipaké OpenvSwitch. Kuring nyieun hiji sasak ovs tur disambungkeun mesin virtual ka eta via port-grup. Pikeun ngalakukeun ieu, kuring nyiptakeun file xml sapertos kieu:


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

Tilu grup port dinyatakeun di dieu - dua aksés sareng hiji batang (anu terakhir diperyogikeun pikeun server DNS, tapi anjeun tiasa ngalakukeun tanpa éta, atanapi pasang dina mesin host - mana waé anu langkung cocog pikeun anjeun). Salajengna, nganggo citakan ieu, kami nyatakeun milik kami via virsh net-define:


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

Ayeuna urang ngédit konfigurasi port hypervisor:


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

Catetan: dina skenario ieu, alamat dina port ovs-br1 moal bisa diasupan sabab teu boga tag vlan. Pikeun ngalereskeun ieu, anjeun kedah ngaluarkeun paréntah sudo ovs-vsctl set port ovs-br1 tag = 100. Nanging, saatos reboot, tag ieu bakal ngaleungit (upami aya anu terang kumaha carana tetep dina tempatna, kuring bakal nganuhunkeun pisan). Tapi ieu teu jadi penting, sabab urang ngan bakal butuh alamat ieu salila instalasi tur moal butuh eta nalika Openstack geus pinuh deployed.

Salajengna, urang nyieun mesin undercloud:


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

Salila pamasangan, anjeun nyetél sadaya parameter anu diperyogikeun, sapertos nami mesin, kecap akses, pangguna, server ntp, sareng sajabana, anjeun tiasa langsung ngonpigurasikeun palabuhan, tapi pikeun kuring pribadi, saatos instalasi, langkung gampang pikeun log in kana mesin liwat. konsol jeung ngabenerkeun payil perlu. Upami Anjeun tos boga gambar siap-dijieun, Anjeun bisa make eta, atawa ngalakukeun naon atuh - undeur minimal Centos 7 gambar tur ngagunakeun eta pikeun masang VM.

Saatos instalasi suksés, anjeun kedah gaduh mesin virtual dimana anjeun tiasa masang undercloud


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

Mimiti, pasang alat anu dipikabutuh pikeun prosés pamasangan:

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

Pamasangan Undercloud

Kami nyiptakeun pangguna tumpukan, nyetél kecap konci, tambahkeun kana sudoer sareng masihan anjeunna kamampuan pikeun ngaéksekusi paréntah akar ngalangkungan sudo tanpa kedah ngalebetkeun kecap konci:


useradd stack
passwd stack

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

Ayeuna urang tangtukeun nami undercloud lengkep dina file host:


vi /etc/hosts

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

Salajengna, urang tambahkeun repositori sareng pasang parangkat lunak anu urang peryogikeun:


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

Catetan: upami anjeun henteu ngarencanakeun masang ceph, maka anjeun henteu kedah ngalebetkeun paréntah anu aya hubunganana sareng ceph. I dipaké release Queens, tapi anjeun bisa make sagala séjén anjeun resep.

Teras, salin file konfigurasi undercloud ka tumpukan diréktori bumi pangguna:


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

Ayeuna urang kedah ngabenerkeun file ieu, nyaluyukeun kana pamasangan urang.

Anjeun kedah nambihan garis ieu kana awal file:

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

Janten, hayu urang ngalangkungan setélan:

undercloud_hostname — ngaran lengkep server undercloud, kudu cocog entri dina server DNS

local_ip - alamat undercloud lokal nuju provisioning jaringan

network_gateway — alamat lokal anu sami, anu bakal janten gateway pikeun aksés ka dunya luar nalika pamasangan titik overcloud, ogé saluyu sareng ip lokal.

undercloud_public_host - alamat API éksternal, sagala alamat bébas tina jaringan provisioning ditugaskeun

undercloud_admin_host alamat API internal, sagala alamat bébas tina jaringan provisioning ditugaskeun

undercloud_nameservers - server DNS

generate_service_certificate - garis ieu pohara penting dina conto ayeuna, sabab lamun teu disetel ka palsu anjeun bakal nampa kasalahan salila instalasi, masalah dijelaskeun dina Red Hat bug Tracker.

local_interface panganteur dina provisioning jaringan. Antarbeungeut ieu bakal dikonfigurasi deui salami panyebaran undercloud, janten anjeun kedah gaduh dua antarmuka dina undercloud - hiji pikeun ngaksés éta, anu kadua pikeun nyayogikeun.

local_mtu - MTU. Kusabab urang gaduh laboratorium uji sareng kuring gaduh MTU 1500 dina palabuhan switch OVS, perlu disetel ka 1450 supados pakét anu dibungkus dina VxLAN tiasa nembus.

network_cidr - jaringan provisioning

masquerade - ngagunakeun NAT pikeun ngakses jaringan éksternal

masquerade_network - jaringan anu bakal NATed

dhcp_start - alamat awal kolam renang alamat dimana alamat bakal ditugaskeun ka titik nalika panyebaran overcloud

dhcp_tungtung - alamat ahir kolam renang alamat dimana alamat bakal ditugaskeun ka titik nalika panyebaran overcloud

inspection_iprange - kumpulan alamat anu dipikabutuh pikeun introspeksi (teu kedah tumpang tindih sareng kolam renang di luhur)

scheduler_max_attempts - Jumlah maksimum usaha pikeun masang overcloud (kudu langkung ageung atanapi sami sareng jumlah titik)

Saatos file dijelaskeun, anjeun tiasa masihan paréntah pikeun nyebarkeun undercloud:


openstack undercloud install

Prosedur nyokot ti 10 nepi ka 30 menit gumantung kana beusi Anjeun. Pamustunganana anjeun kedah ningali kaluaran sapertos kieu:

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.

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

Kaluaran ieu nyarios yén anjeun parantos suksés masang undercloud sareng anjeun ayeuna tiasa pariksa status undercloud sareng teraskeun masang overcloud.

Lamun nempo kaluaran ifconfig, anjeun bakal nempo yén panganteur sasak anyar geus mucunghul

[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

Panyebaran Overcloud ayeuna bakal dilaksanakeun ngaliwatan antarmuka ieu.

Tina kaluaran di handap ieu anjeun tiasa ningali yén urang gaduh sadayana jasa dina hiji titik:

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

Di handap ieu konfigurasi bagian jaringan 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 ~]$

Pamasangan overcloud

Di momen urang ngan boga undercloud, sarta kami teu boga cukup titik ti mana overcloud bakal dirakit. Ku alatan éta, mimitina, hayu urang nyebarkeun mesin virtual anu urang peryogikeun. Salila panyebaran, undercloud sorangan bakal masang OS sareng parangkat lunak anu dipikabutuh dina mesin overcloud - nyaéta, urang henteu kedah nyebarkeun mesin lengkep, tapi ngan ukur nyiptakeun disk (atanapi disk) pikeun éta sareng nangtukeun parameterna - nyaéta , kanyataanna, urang meunang server bulistir tanpa OS dipasang dina eta.

Hayu urang angkat ka folder sareng disk mesin virtual urang sareng jieun disk ukuran anu diperyogikeun:


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

Kusabab urang beroperasi salaku akar, urang kedah ngarobih pamilik disk ieu supados henteu ngagaduhan masalah sareng hak:


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

Catetan: upami anjeun henteu ngarencanakeun masang ceph pikeun diajar éta, maka paréntahna henteu nyiptakeun sahenteuna 3 titik kalayan sahenteuna dua disk, tapi dina citakan nunjukkeun yén disk virtual vda, vdb, jsb bakal dianggo.

Hébat, ayeuna urang kedah ngartikeun sadaya mesin ieu:


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 

Dina tungtungna aya paréntah -print-xml > /tmp/storage-1.xml, anu nyiptakeun file xml sareng pedaran unggal mesin dina folder /tmp/; upami anjeun henteu nambihanana, anjeun moal bakalan bisa ngaidentipikasi mesin virtual.

Ayeuna urang kedah ngartikeun sadaya mesin ieu dina 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 ~]#

Ayeuna nuansa leutik - tripleO migunakeun IPMI pikeun ngatur server salila instalasi tur introspeksi.

Introspeksi nyaéta prosés inspecting hardware pikeun ménta parameter na diperlukeun pikeun provisioning salajengna titik. Introspeksi dilaksanakeun nganggo ironis, jasa anu dirancang pikeun damel sareng server logam bulistir.

Tapi di dieu aya masalah - bari hardware server IPMI boga port misah (atawa port dibagikeun, tapi ieu teu penting), lajeng mesin virtual teu boga palabuhan misalna. Di dieu hiji crutch disebut vbmc datang ka bantuan urang - utilitas nu ngidinan Anjeun pikeun emulate port IPMI. Nuansa ieu kedah diperhatoskeun khususna pikeun anu hoyong nyetél laboratorium sapertos kitu dina hypervisor ESXI - jujur, kuring henteu terang upami éta ngagaduhan analog vbmc, janten kedah dipikiran ngeunaan masalah ieu sateuacan nyebarkeun sadayana. .

Pasang vbmc:


yum install yum install python2-virtualbmc

Upami OS anjeun henteu mendakan pakét, teras tambahkeun gudang:

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

Ayeuna urang nyetél utiliti. Sagalana di dieu téh banal ka titik aib. Ayeuna logis yén teu aya server dina daptar vbmc


[root@hp-gen9 ~]# vbmc list

[root@hp-gen9 ~]# 

Pikeun némbongan, aranjeunna kedah dinyatakeun sacara manual sapertos kieu:


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

Jigana sintaksis paréntah jelas tanpa katerangan. Nanging, kanggo ayeuna sadaya sesi kami dina status DOWN. Pikeun ngalih ka status UP, anjeun kedah ngaktipkeun:


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

Sareng sentuhan akhir - anjeun kedah ngabenerkeun aturan firewall (atanapi nganonaktipkeun lengkep):


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

Ayeuna hayu urang angkat ka undercloud sareng pariksa yén sadayana berpungsi. Alamat mesin host nyaéta 192.168.255.200, dina undercloud kami nambihan pakét ipmitool anu diperyogikeun nalika nyiapkeun panyebaran:


[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

Sakumaha anjeun tiasa tingali, kami parantos suksés ngaluncurkeun titik kontrol via vbmc. Ayeuna hayu urang pareumkeun sareng teraskeun:


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

Lengkah saterusna nyaéta introspeksi titik-titik dimana overcloud bakal dipasang. Jang ngalampahkeun ieu, urang kudu nyiapkeun file json kalawan pedaran titik urang. Punten dicatet yén, teu sapertos pamasangan dina server bulistir, file nunjukkeun port dimana vbmc dijalankeun pikeun unggal mesin.


[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

Catetan: titik kontrol boga dua interfaces, tapi dina hal ieu teu penting, dina instalasi ieu bakal cukup pikeun urang.

Ayeuna urang nyiapkeun file json. Urang kedah nunjukkeun alamat poppy port anu bakal dilaksanakeun panyaluran, parameter titik, pasihan nami sareng nunjukkeun kumaha carana angkat ka 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"
        }
    ]
}

Ayeuna urang kudu nyiapkeun gambar pikeun ironis. Jang ngalampahkeun ieu, unduh aranjeunna via wget sareng pasang:

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

Unggah gambar ka 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 ~]$

Pariksa yén sadaya gambar parantos dimuat


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

Hiji deui - anjeun kedah nambihan pangladén 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 ~]$

Ayeuna urang tiasa masihan paréntah pikeun introspeksi:

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

Sakumaha anjeun tiasa tingali tina kaluaran, sadayana réngsé tanpa kasalahan. Hayu urang parios yén sadaya titik aya dina kaayaan anu sayogi:


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

Upami titik dina kaayaan anu béda, biasana tiasa diurus, teras aya anu salah sareng anjeun kedah ningali log sareng terang naha ieu kajantenan. Émut yén dina skenario ieu kami nganggo virtualisasi sareng tiasa aya bug anu aya hubunganana sareng panggunaan mesin virtual atanapi vbmc.

Salajengna, urang kedah nunjukkeun titik mana anu bakal ngalaksanakeun fungsina - nyaéta, nunjukkeun profil dimana titik bakal nyebarkeun:


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

Sebutkeun profil pikeun tiap titik:


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

Hayu urang pariksa yen urang ngalakukeun sagalana leres:


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

Upami sadayana leres, kami masihan paréntah pikeun nyebarkeun 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

Dina pamasangan nyata, témplat anu disaluyukeun sacara alami bakal dianggo, dina hal kami ieu bakal ngahesekeun prosésna, sabab unggal éditan dina citakan kedah dijelaskeun. Sakumaha anu diserat sateuacana, bahkan pamasangan saderhana bakal cekap pikeun urang ningali kumaha jalanna.

Catetan: variabel --libvirt-type qemu diperlukeun dina hal ieu, saprak urang bakal ngagunakeun virtualization nested. Upami teu kitu, anjeun moal bisa ngajalankeun mesin virtual.

Ayeuna anjeun gaduh sakitar sajam, atanapi panginten langkung (gumantung kana kamampuan hardware) sareng anjeun ngan ukur tiasa ngarepkeun yén saatos waktos ieu anjeun bakal ningali pesen ieu:


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

Ayeuna anjeun gaduh versi openstack anu ampir lengkep, dimana anjeun tiasa diajar, ékspérimén, jsb.

Hayu urang pariksa yen sagalana jalan leres. Dina tumpukan diréktori imah pamaké aya dua file - hiji stackrc (pikeun ngatur undercloud) jeung overcloudrc kadua (pikeun ngatur overcloud). Berkas ieu kedah disebatkeun salaku sumber, sabab ngandung inpormasi anu dipikabutuh pikeun auténtikasi.


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

Instalasi kuring masih merlukeun hiji touch leutik - nambahkeun ruteu on controller, saprak mesin jeung nu Kuring keur gawe dina jaringan béda. Jang ngalampahkeun ieu, buka control-1 handapeun akun panas-admin tur ngadaptar jalur


(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

Nya, ayeuna anjeun tiasa angkat ka cakrawala. Sadaya inpormasi - alamat, login sareng kecap akses - aya dina file /home/stack/overcloudrc. Diagram ahir sapertos kieu:

Bubuka ka bagian jaringan infrastruktur awan

Ku jalan kitu, dina pamasangan kami, alamat mesin dikaluarkeun via DHCP sareng, sakumaha anu anjeun tingali, aranjeunna dikaluarkeun "sacara acak". Anjeun tiasa sacara saksama nangtukeun dina citakan alamat mana anu kedah dipasang dina mesin nalika panyebaran, upami anjeun peryogina.

Kumaha aliran lalulintas antara mesin virtual?

Dina artikel ieu kami baris nempo tilu pilihan pikeun lalulintas ngalirkeun

  • Dua mesin dina hiji hypervisor dina hiji jaringan L2
  • Dua mesin on hypervisors béda dina jaringan L2 sarua
  • Dua mesin dina jaringan béda (cross-jaringan rooting)

Kasus kalayan aksés ka dunya luar ngaliwatan jaringan éksternal, ngagunakeun alamat ngambang, kitu ogé routing disebarkeun, urang bakal mertimbangkeun waktos salajengna, pikeun ayeuna urang bakal difokuskeun lalulintas internal.

Pikeun mariksa, hayu urang susun diagram di handap ieu:

Bubuka ka bagian jaringan infrastruktur awan

Kami parantos nyiptakeun 4 mesin virtual - 3 dina hiji jaringan L2 - net-1, sareng 1 deui dina jaringan 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 ~]$ 

Hayu urang tingali naon hypervisors mesin dijieun dina:

(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) [tumpukan @ undercloud ~] $
Mesin vm-1 sareng vm-3 aya dina komputasi-0, mesin vm-2 sareng vm-4 aya dina titik komputasi-1.

Sajaba ti éta, router virtual geus dijieun pikeun ngaktipkeun routing antara jaringan dieusian:

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

Router ngagaduhan dua palabuhan virtual, anu janten gerbang pikeun jaringan:

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

Tapi sateuacan urang ningali kumaha lalu lintas ngalir, hayu urang tingali naon anu ayeuna aya dina titik kontrol (anu ogé mangrupikeun titik jaringan) sareng dina titik komputasi. Hayu urang mimitian ku titik komputasi.


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

Di momen, titik boga tilu sasak ovs - br-int, br-tun, br-ex. Antara aranjeunna, sakumaha urang tingali, aya sakumpulan interfaces. Pikeun betah pamahaman, hayu urang plot sadayana interfaces ieu dina diagram tur tingal kumaha kajadian.

Bubuka ka bagian jaringan infrastruktur awan

Ningali alamat dimana torowongan VxLAN diangkat, éta tiasa katingali yén hiji torowongan diangkat pikeun ngitung-1 (192.168.255.26), torowongan kadua katingalina pikeun ngontrol-1 (192.168.255.15). Tapi hal paling narik éta br-ex teu boga interfaces fisik, sarta lamun nempo naon ngalir ngonpigurasi, Anjeun bisa nempo yén sasak ieu ngan bisa lungsur lalulintas di momen.


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

Salaku bisa ningali tina kaluaran, alamatna ngaco langsung ka port fisik, teu ka panganteur sasak virtual.


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

Numutkeun aturan kahiji, sagalana nu asalna ti port phy-br-ex kudu dipiceun.
Sabenerna, ayeuna euweuh tempat sejenna pikeun lalulintas datang ka sasak ieu iwal ti panganteur ieu (antarmuka kalawan br-int), sarta ditilik ku tetes, lalulintas BUM geus flown kana sasak.

Hartina, lalulintas bisa ninggalkeun titik ieu ngan ngaliwatan torowongan VxLAN jeung nanaon sejenna. Nanging, upami anjeun ngaktipkeun DVR, kaayaan bakal robih, tapi urang bakal ngungkulan éta sanés waktos. Lamun ngagunakeun isolasi jaringan, contona ngagunakeun vlans, anjeun bakal boga teu hiji panganteur L3 di vlan 0, tapi sababaraha interfaces. Sanajan kitu, lalulintas VxLAN bakal ninggalkeun titik dina cara nu sarua, tapi ogé encapsulated dina sababaraha jenis vlan dedicated.

Kami parantos nyortir titik komputasi, hayu urang teraskeun kana titik kontrol.


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

Nyatana, urang tiasa nyarios yén sadayana sami, tapi alamat IP henteu deui dina antarmuka fisik tapi dina sasak virtual. Hal ieu dilakukeun kusabab palabuhan ieu mangrupikeun palabuhan dimana lalu lintas bakal kaluar ka dunya luar.


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

Pelabuhan ieu dihijikeun kana sasak br-ex sareng kumargi teu aya tag vlan di dinya, palabuhan ieu mangrupikeun palabuhan batang dimana sadaya vlan diidinan, ayeuna lalu lintas kaluar tanpa tag, sakumaha anu dituduhkeun ku vlan-id 0 dina kaluaran luhur.

Bubuka ka bagian jaringan infrastruktur awan

Sagalana sejenna dina momen sarua jeung titik ngitung - sasak sarua, torowongan sarua bade dua titik ngitung.

Kami moal nganggap titik panyimpen dina tulisan ieu, tapi pikeun ngartos kedah disebatkeun yén bagian jaringan tina titik ieu banal dugi ka aib. Dina kasus urang, ngan aya hiji port fisik (eth0) sareng alamat IP anu ditugaskeun ka dinya sareng éta. Aya henteu VxLAN torowongan, torowongan sasak, jsb - euweuh ovs pisan, saprak euweuh titik di dinya. Nalika nganggo isolasi jaringan, titik ieu bakal gaduh dua antarmuka (palabuhan fisik, bodny, atanapi ngan ukur dua vlan - henteu masalah - gumantung kana naon anu anjeun pikahoyong) - hiji pikeun manajemén, anu kadua pikeun lalu lintas (nulis kana disk VM , maca tina disk, jsb.)

Kami terang naon anu kami gaduh dina titik dina henteuna jasa naon waé. Ayeuna hayu urang ngaluncurkeun 4 mesin virtual sareng tingali kumaha skéma anu dijelaskeun di luhur robih - urang kedah gaduh palabuhan, router virtual, jsb.

Sajauh ieu jaringan kami sapertos kieu:

Bubuka ka bagian jaringan infrastruktur awan

Kami gaduh dua mesin virtual dina unggal titik komputer. Ngagunakeun compute-0 sabagé conto, hayu urang tingali kumaha sagalana geus kaasup.


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

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

Mesin ngan ukur gaduh hiji antarmuka virtual - 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 ~]$ 

Antarbeungeut ieu katingali dina sasak linux:

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

Sakumaha anjeun tiasa tingali tina kaluaran, aya ngan dua interfaces dina sasak - tap95d96a75-a0 na qvb95d96a75-a0.

Ieu patut cicing sakedik ngeunaan jinis alat jaringan virtual dina OpenStack:
vtap - antarbeungeut virtual digantelkeun kana hiji conto (VM)
qbr - sasak Linux
qvb sareng qvo - pasangan vEth disambungkeun ka sasak Linux sareng sasak Open vSwitch
br-int, br-tun, br-vlan - Buka sasak vSwitch
patch-, int-br-, phy-br- - Buka vSwitch patch interfaces nyambungkeun sasak
qg, qr, ha, fg, sg - Buka palabuhan vSwitch dipaké ku alat virtual pikeun nyambung ka OVS

Anjeun ngartos, lamun urang boga port qvb95d96a75-a0 dina sasak, nu mangrupakeun pasangan vEth, lajeng wae aya tara na, nu kudu logis disebut qvo95d96a75-a0. Hayu urang tingali naon palabuhan anu aya dina 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 ~]$ 

Salaku bisa urang tingali, port aya dina br-int. Br-int tindakan minangka switch nu terminates palabuhan mesin virtual. Salian qvo95d96a75-a0, port qvo5bd37136-47 katingali dina kaluaran. Ieu port ka mesin virtual kadua. Hasilna, diagram urang ayeuna kasampak kawas kieu:

Bubuka ka bagian jaringan infrastruktur awan

Patarosan anu kedah langsung dipikaresep ku pamiarsa anu ati-ati - naon sasak linux antara palabuhan mesin virtual sareng palabuhan OVS? Kanyataanna nyaéta pikeun ngajaga mesin, grup kaamanan dianggo, anu henteu langkung ti iptables. OVS henteu tiasa dianggo sareng iptables, janten "kruk" ieu diciptakeun. Nanging, éta janten lungse - diganti ku conntrack dina rilis énggal.

Nyaéta, tungtungna skéma sapertos kieu:

Bubuka ka bagian jaringan infrastruktur awan

Dua mesin dina hiji hypervisor dina hiji jaringan L2

Kusabab dua VM ieu lokasina dina jaringan L2 sarua jeung dina hypervisor sarua, lalulintas antara aranjeunna logis bakal ngalir lokal ngaliwatan br-int, saprak duanana mesin bakal on VLAN sarua:


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

Dua mesin on hypervisors béda dina jaringan L2 sarua

Ayeuna hayu urang tingali kumaha lalulintas bakal balik antara dua mesin dina jaringan L2 sarua, tapi ayana dina hypervisors béda. Mun jujur, euweuh bakal robah teuing, ngan lalulintas antara hypervisors bakal ngaliwatan torowongan vxlan. Hayu urang nempo hiji conto.

Alamat mesin virtual antara anu urang bakal lalajo lalu lintas:

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

Urang nempo tabel diteruskeun dina br-int on 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 ~]

Lalu lintas kedah angkat ka port 2 - hayu urang tingali jinis port éta:

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

Ieu patch-tun - nyaeta, panganteur di br-tun. Hayu urang tingali naon anu lumangsung dina pakét on 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 ~]$ 

pakét ieu rangkep dina VxLAN sarta dikirim ka port 2. Hayu urang tingali dimana port 2 ngarah:

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

Ieu torowongan vxlan dina 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 ~]$

Hayu urang balik ka itung-1 tur tingal kumaha kajadian salajengna kalawan pakét:

[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 aya dina tabel diteruskeun br-int on compute-1, sarta sakumaha bisa ditempo ti kaluaran di luhur, éta katingali ngaliwatan port 2, nu port nuju 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

Nya, teras urang tingali yén dina br-int on compute-1 aya poppy tujuan:

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

Nyaéta, pakét anu ditampi bakal ngapung ka port 3, di tukangeunana parantos aya conto mesin virtual-00000003.

Kaéndahan deploying Openstack pikeun diajar dina infrastruktur maya nyaeta urang bisa kalayan gampang nangkep lalulintas antara hypervisors tur tingal naon anu lumangsung kalawan eta. Ieu anu bakal urang laksanakeun ayeuna, ngajalankeun tcpdump dina port vnet nuju komputasi-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*******************

Baris kahiji nunjukeun yen Patek ti alamat 10.0.1.85 mana ka alamat 10.0.1.88 (lalulintas ICMP), sarta dibungkus dina pakét VxLAN kalawan vni 22 sarta pakét mana ti host 192.168.255.19 (itung-0) pikeun host 192.168.255.26. .1 (itung-XNUMX). Urang tiasa pariksa yen VNI cocog hiji dieusian dina ovs.

Hayu urang balik deui ka aksi garis ieu = beban: 0-> NXM_OF_VLAN_TCI [], beban: 0x16-> NXM_NX_TUN_ID [], kaluaran: 2. 0x16 nyaéta vni dina sistem wilangan héksadesimal. Hayu urang ngarobah angka ieu kana sistem 16:


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

Hartina, vni luyu jeung kanyataan.

Baris kadua nembongkeun lalulintas balik, sumur, euweuh titik di ngajelaskeun eta, sagalana jelas aya.

Dua mesin dina jaringan anu béda (ruteu antarjaringan)

Kasus terakhir pikeun dinten ayeuna nyaéta rute antara jaringan dina hiji proyék nganggo router virtual. Kami nganggap kasus tanpa DVR (urang bakal ningali dina tulisan anu sanés), janten routing lumangsung dina titik jaringan. Dina kasus urang, titik jaringan henteu disimpen dina éntitas anu misah sareng aya dina titik kontrol.

Mimiti, hayu urang tingali yén routing jalan:

$ 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

Kusabab dina hal ieu pakét kedah angkat ka gateway sareng dialihkeun ka dinya, urang kedah milarian alamat poppy gateway, dimana urang tingali tabel ARP dina conto:

$ 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

Ayeuna hayu urang tingali dimana lalulintas kalawan tujuan (10.0.1.254) fa:16:3e:c4:64:70 kudu dikirim:

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

Hayu urang tingali dimana port 2 nuju:

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

Sadayana logis, lalu lintas nuju ka br-tun. Hayu urang tingali torowongan vxlan mana anu bakal dibungkus:

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

Port katilu nyaéta torowongan 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 ~]$ 

Nu katingali dina titik kontrol:

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

Lalu lintas parantos dugi ka titik kontrol, janten urang kedah angkat ka dinya sareng ningali kumaha routing bakal kajantenan.

Sakumaha anjeun émut, titik kontrol di jero katingalina sami sareng titik komputasi - tilu sasak anu sami, ngan ukur br-ex ngagaduhan palabuhan fisik dimana titik éta tiasa ngirim lalu lintas ka luar. Nyiptakeun instansi ngarobih konfigurasi dina titik komputasi - sasak linux, iptables sareng antarmuka parantos ditambah kana titik. Nyiptakeun jaringan sareng router virtual ogé ngantepkeun tanda dina konfigurasi titik kontrol.

Janten, écés yén alamat MAC gateway kedah aya dina tabel diteruskeun br-int dina titik kontrol. Hayu urang parios yén éta aya sareng dimana waé:

[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 katingali tina port qr-0c52b15f-8f. Lamun urang balik deui ka daptar palabuhan maya di Openstack, jenis ieu port dipaké pikeun nyambungkeun rupa-rupa alat virtual pikeun OVS. Pikeun langkung tepatna, qr mangrupikeun port ka router virtual, anu digambarkeun salaku rohangan ngaran.

Hayu urang tingali naon ngaranspasi dina server:

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

Saloba tilu eksemplar. Tapi ditilik ku ngaran, anjeun tiasa nebak tujuan unggal sahijina. Urang bakal balik deui ka instansi kalawan ID 0 jeung 1 engké, ayeuna urang museurkeun ngaranspasi 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 ~]$ 

Ngaranspasi ieu ngandung dua internal nu urang dijieun saméméhna. Duanana palabuhan maya geus ditambahkeun kana br-int. Hayu urang pariksa alamat Mac tina port qr-0c52b15f-8f, saprak lalulintas, ditilik ku alamat Mac tujuan, indit ka panganteur ieu.

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

Hartina, dina hal ieu, sagalana jalan nurutkeun hukum routing baku. Kusabab lalu lintas ditujukeun pikeun host 10.0.2.8, éta kedah kaluar tina antarmuka kadua qr-92fa49b5-54 sareng ngalangkungan torowongan vxlan ka titik komputasi:


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

Sagalana logis, euweuh kejutan. Hayu urang tingali dimana alamat poppy host 10.0.2.8 katingali dina 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 ~]$ 

Sapertos anu diharapkeun, lalu lintas nuju ka br-tun, hayu urang tingali torowongan mana anu ditujukeun:

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

Lalulintas asup ka torowongan pikeun ngitung-1. Nya, dina ngitung-1 sadayana saderhana - ti br-tun pakét angkat ka br-int sareng ti dinya ka antarmuka mesin virtual:

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

Hayu urang parios yén ieu mangrupikeun antarmuka anu leres:

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

Sabenerna, urang indit kabeh jalan ngaliwatan pakét. Jigana anjeun noticed nu lalulintas indit ngaliwatan torowongan vxlan béda jeung kaluar kalawan VNIs béda. Hayu urang tingali jenis VNI ieu, nu satutasna urang bakal ngumpulkeun dump dina port kontrol titik tur pastikeun yén lalulintas ngalir persis sakumaha ditétélakeun di luhur.
Janten, torowongan pikeun ngitung-0 ngagaduhan tindakan di handap ieu = beban: 0->NXM_OF_VLAN_TCI [], beban: 0x16-> NXM_NX_TUN_ID [], kaluaran:3. Hayu urang ngarobah 0x16 kana sistem angka decimal:


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

Torowongan pikeun ngitung-1 boga VNI handap: actions = beban: 0-> NXM_OF_VLAN_TCI [], beban: 0x63-> NXM_NX_TUN_ID [], output: 2. Hayu urang ngarobah 0x63 kana sistem angka decimal:


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

Nya, ayeuna urang tingali dump:

[root@hp-gen9 bormoglotx]# tcpdump -vvv -i vnet4 
tcpdump: listening on vnet4, link-type EN10MB (Ethernet), capture size 262144 bytes

*****************omitted*******************

04:35:18.709949 IP (tos 0x0, ttl 64, id 48650, offset 0, flags [DF], proto UDP (17), length 134)
    192.168.255.19.41591 > 192.168.255.15.4789: [no cksum] VXLAN, flags [I] (0x08), vni 22
IP (tos 0x0, ttl 64, id 49042, offset 0, flags [DF], proto ICMP (1), length 84)
    10.0.1.85 > 10.0.2.8: ICMP echo request, id 5378, seq 9, length 64
04:35:18.710159 IP (tos 0x0, ttl 64, id 23360, offset 0, flags [DF], proto UDP (17), length 134)
    192.168.255.15.38983 > 192.168.255.26.4789: [no cksum] VXLAN, flags [I] (0x08), vni 99
IP (tos 0x0, ttl 63, id 49042, offset 0, flags [DF], proto ICMP (1), length 84)
    10.0.1.85 > 10.0.2.8: ICMP echo request, id 5378, seq 9, length 64
04:35:18.711292 IP (tos 0x0, ttl 64, id 43596, offset 0, flags [DF], proto UDP (17), length 134)
    192.168.255.26.42588 > 192.168.255.15.4789: [no cksum] VXLAN, flags [I] (0x08), vni 99
IP (tos 0x0, ttl 64, id 55103, offset 0, flags [none], proto ICMP (1), length 84)
    10.0.2.8 > 10.0.1.85: ICMP echo reply, id 5378, seq 9, length 64
04:35:18.711531 IP (tos 0x0, ttl 64, id 8555, offset 0, flags [DF], proto UDP (17), length 134)
    192.168.255.15.38983 > 192.168.255.19.4789: [no cksum] VXLAN, flags [I] (0x08), vni 22
IP (tos 0x0, ttl 63, id 55103, offset 0, flags [none], proto ICMP (1), length 84)
    10.0.2.8 > 10.0.1.85: ICMP echo reply, id 5378, seq 9, length 64
	
*****************omitted*******************

Paket munggaran nyaéta pakét vxlan tina host 192.168.255.19 (itung-0) pikeun host 192.168.255.15 (kontrol-1) sareng vni 22, di jerona pakét ICMP dibungkus tina host 10.0.1.85 ka host 10.0.2.8. Salaku urang diitung luhur, vni cocog naon urang nempo dina kaluaran.

Paket kadua nyaéta pakét vxlan ti host 192.168.255.15 (control-1) pikeun host 192.168.255.26 (compute-1) sareng vni 99, dimana pakét ICMP dirangkep tina host 10.0.1.85 ka host 10.0.2.8. Salaku urang diitung luhur, vni cocog naon urang nempo dina kaluaran.

Dua pakét hareup balik lalulintas ti 10.0.2.8 teu 10.0.1.85.

Nyaéta, dina tungtungna urang ngagaduhan skéma titik kontrol di handap ieu:

Bubuka ka bagian jaringan infrastruktur awan

Sigana kitu? Urang poho ngeunaan dua spasi ngaran:

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

Salaku urang ngobrol ngeunaan arsitéktur platform awan, éta bakal hadé lamun mesin narima alamat otomatis tina server DHCP. Ieu mangrupikeun dua server DHCP pikeun dua jaringan kami 10.0.1.0/24 sareng 10.0.2.0/24.

Hayu urang pariksa yen ieu bener. Aya ngan hiji alamat dina spasi ngaran ieu - 10.0.1.1 - alamat tina server DHCP sorangan, sarta ogé kaasup dina 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

Hayu urang tingali lamun prosés ngandung qdhcp-67a3798c-32c0-4c18-8502-2531247e3cc2 dina ngaran maranéhanana dina titik kontrol:


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

Aya prosés sapertos kitu sareng dumasar kana inpormasi anu dipidangkeun dina kaluaran di luhur, urang tiasa, contona, ningali naon anu ayeuna urang nyéwa:

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

Hasilna, urang nampi set jasa ieu dina titik kontrol:

Bubuka ka bagian jaringan infrastruktur awan

Muhun, tetep dina pikiran - ieu ngan 4 mesin, 2 jaringan internal tur hiji router virtual ... Urang teu boga jaringan éksternal dieu ayeuna, kebat tina proyék béda, unggal kalawan jaringan sorangan (tumpang tindih), sarta kami boga. a router disebarkeun dipareuman, sarta dina tungtungna Barina ogé, aya ngan hiji titik kontrol dina bangku test (pikeun kasabaran lepat kudu aya hiji quorum tilu titik). Logis yén dina perdagangan sadayana "saeutik" langkung pajeulit, tapi dina conto saderhana ieu kami ngartos kumaha éta kedah dianggo - naha anjeun gaduh 3 atanapi 300 ruang nami tangtosna penting, tapi tina sudut pandang operasi sadayana. struktur, euweuh bakal robah teuing ... sanajan dugi ka anjeun moal nyolok dina sababaraha ngajual SDN. Tapi éta carita lengkep béda.

Kuring miharep éta metot. Upami anjeun ngagaduhan koméntar / tambihan, atanapi dimana waé kuring terang-terangan ngabohong (Kuring manusa sareng pendapat kuring bakal subjektif) - tuliskeun naon anu kedah dilereskeun / tambahkeun - kami bakal ngabenerkeun / nambihan sadayana.

Dina kacindekan, abdi hoyong nyarios sababaraha kecap ngeunaan ngabandingkeun Openstack (duanana vanili jeung ngajual) jeung solusi awan ti VMWare - Kuring geus ditanya sual ieu mindeng teuing salila sababaraha taun kaliwat tur, terus terang diomongkeun, Abdi geus capé, tapi tetep. Dina pamanggih kuring, hésé pisan pikeun ngabandingkeun dua solusi ieu, tapi urang pasti bisa disebutkeun yen aya kalemahan dina duanana solusi sarta lamun milih hiji solusi anjeun kudu beuratna pro jeung kontra.

Upami OpenStack mangrupikeun solusi anu didorong ku komunitas, maka VMWare ngagaduhan hak ngan ukur ngalakukeun naon anu dipikahoyong (baca - naon anu nguntungkeun pikeun éta) sareng ieu logis - sabab éta mangrupikeun perusahaan komérsial anu biasa ngadamel artos tina klienna. Tapi aya hiji badag tur gajih TAPI - anjeun bisa turun OpenStack, contona tina Nokia, tur kalawan saeutik expense switch ka solusi ti, Contona, Juniper (Contrail Awan), tapi anjeun saperti teu mirip bisa turun VMWare. . Pikeun kuring, dua solusi ieu kasampak kawas kieu - Openstack (ngajual) mangrupakeun kandang basajan nu anjeun nempatkeun, tapi anjeun boga konci sarta anjeun bisa ninggalkeun iraha wae. VMWare mangrupikeun kandang emas, anu gaduh konci kandang sareng éta bakal ngarugikeun anjeun pisan.

Kuring henteu ngamajukeun produk anu kahiji atanapi anu kadua - anjeun milih naon anu anjeun peryogikeun. Tapi lamun kuring kungsi pilihan misalna hiji, abdi bakal milih duanana solusi - VMWare pikeun awan IT (beban low, manajemén gampang), OpenStack ti sababaraha ngajual (Nokia sarta Juniper nyadiakeun solusi turnkey pohara alus) - pikeun awan Telecom. Abdi teu bakal make Openstack pikeun IT murni - éta kawas shooting sparrows kalawan mariem a, tapi kuring teu ningali contraindications kana pamakéan lian ti redundancy. Nanging, nganggo VMWare dina telekomunikasi sapertos ngangkut batu anu ditumbuk dina Ford Raptor - éta éndah ti luar, tapi supirna kedah ngalakukeun 10 perjalanan tibatan hiji.

Dina pamanggih kuring, kalemahan pangbadagna VMWare nyaéta katutupan lengkep - perusahaan moal masihan anjeun inpormasi ngeunaan cara gawéna, contona, vSAN atanapi naon anu aya dina kernel hypervisor - éta ngan saukur henteu nguntungkeun pikeun éta - nyaéta, anjeun bakal pernah jadi ahli dina VMWare - tanpa rojongan vendor, anjeun doomed (sering pisan kuring papanggih ahli VMWare anu baffled ku patarosan trivial). Pikeun kuring, VMWare ngagaleuh mobil kalayan tiung dikonci - enya, anjeun tiasa gaduh spesialis anu tiasa ngarobih sabuk timing, tapi ngan hiji anu ngajual anjeun solusi ieu tiasa muka tiung. Pribadi, kuring henteu resep solusi anu kuring henteu tiasa pas. Anjeun bakal nyebutkeun yén anjeun bisa jadi teu kudu balik handapeun tiung. Leres, ieu mungkin, tapi kuring bakal ningali anjeun nalika anjeun kedah ngumpul fungsi ageung dina awan tina 20-30 mesin virtual, 40-50 jaringan, satengahna hoyong ka luar, sareng satengah kadua naroskeun. Akselerasi SR-IOV, upami henteu, anjeun peryogi langkung sababaraha belasan mobil ieu - upami henteu prestasina moal cekap.

Aya sudut pandang anu sanés, janten ngan ukur anjeun anu tiasa mutuskeun naon anu anjeun pilih sareng, anu paling penting, anjeun bakal nanggung jawab kana pilihan anjeun. Ieu ngan pendapat abdi - jalma anu geus katempo sarta keuna sahanteuna 4 produk - Nokia, Juniper, Red Hat sarta VMWare. Hartina, kuring boga hal pikeun ngabandingkeun.

sumber: www.habr.com

Tambahkeun komentar