Муқаддима ба қисми шабакавии инфрасохтори абрӣ

Муқаддима ба қисми шабакавии инфрасохтори абрӣ

Роёниши абрӣ ба ҳаёти мо амиқтар ва амиқтар ворид мешавад ва шояд ягон нафаре вуҷуд надошта бошад, ки ҳадди аққал як маротиба аз хидматҳои абрӣ истифода накарда бошад. Аммо, маҳз абр чист ва он чӣ гуна кор мекунад, кам одамон медонанд, ҳатто дар сатҳи идея. 5G аллакай ба воқеият табдил ёфта истодааст ва инфрасохтори телекоммуникатсионӣ аз қарорҳои сутун ба ҳалли абрӣ гузаштанро оғоз мекунад, ҳамон тавре, ки он аз ҳалли пурраи сахтафзор ба "сутунҳои" виртуализатсияшуда гузашт.

Имрӯз мо дар бораи ҷаҳони ботинии инфрасохтори абрӣ сӯҳбат хоҳем кард, аз ҷумла мо асосҳои қисми шабакаро дида мебароем.

Абр чист? Ҳамин виртуализатсия - намуди профил?

Бештар аз як саволи мантиқӣ. Не - ин виртуализатсия нест, гарчанде ки онро бе он иҷро кардан мумкин нест. Биёед ду таърифро дида бароем:

Роёниши абрӣ (минбаъд Абр номида мешавад) модели таъмини дастрасии дӯстона ба захираҳои компютерии тақсимшуда мебошад, ки бояд дар асоси талабот бо таъхири камтарин ва хароҷоти ҳадди ақал барои провайдери хидматрасон истифода ва ба кор андохта шаванд.

Виртуализатсия - ин қобилияти тақсим кардани як воҳиди физикӣ (масалан, сервер) ба якчанд объектҳои виртуалӣ ва ба ин васила зиёд кардани истифодаи захираҳо мебошад (масалан, шумо 3 сервер бо 25-30 фоиз бор кардаед, пас аз виртуализатсия шумо 1 серверро бор мекунед. 80-90 фоиз). Табиист, ки виртуализатсия як қисми захираҳоро мехӯрад - шумо бояд гипервизорро ғизо диҳед, аммо тавре ки амалия нишон дод, бозӣ ба қадри шамъ аст. Намунаи беҳтарини виртуализатсия VMWare мебошад, ки мошинҳои виртуалиро ба таври комил омода мекунад ё масалан KVM, ки ман онро бартарӣ медиҳам, аммо ин масъалаи таъми аст.

Мо виртуализатсияро бидуни дарк кардани он истифода мебарем ва ҳатто роутерҳои оҳанӣ аллакай виртуализатсияро истифода мебаранд - масалан, дар версияи охирини JunOS, системаи амалиётӣ ҳамчун мошини маҷозӣ дар болои тақсимоти воқеии Linux (Wind River 9) насб шудааст. Аммо виртуализатсия абр нест, аммо абр бидуни виртуализатсия вуҷуд дошта наметавонад.

Виртуализатсия яке аз блокҳои сохтмонест, ки абр дар он сохта шудааст.

Сохтани абр тавассути ҷамъ овардани якчанд гипервизорҳо ба як домени L2, илова кардани якчанд китобҳои бозиҳои ямл барои ба таври худкор сабти ном кардани vlanҳо тавассути як намуди Ansible ва гузоштани чизе ба монанди системаи оркестрсозӣ дар болои он барои ба таври худкор сохтани мошинҳои виртуалӣ кор намекунад. Ин дақиқтар хоҳад буд, аммо Франкенштейни натиҷа абре нест, ки ба мо лозим аст, гарчанде ки он метавонад барои дигарон орзуи ниҳоӣ бошад. Гузашта аз ин, агар шумо ҳамон Openstack-ро гиред, он ҳанӯз ҳам Франкенштейн аст, аммо хуб, биёед дар ин бора ҳоло сӯҳбат накунем.

Аммо ман мефаҳмам, ки аз таърифи дар боло овардашуда комилан равшан нест, ки чиро воқеан абр номидан мумкин аст.

Аз ин рӯ, ҳуҷҷати NIST (Институти Миллии Стандартҳо ва Технологияҳо) 5 хусусияти асосиро пешниҳод мекунад, ки инфрасохтори абрӣ бояд дошта бошад:

Хизматрасонӣ тибқи дархост. Ба корбар бояд дастрасии озод ба захираҳои компютерии ба ӯ ҷудошуда (ба монанди шабакаҳо, дискҳои виртуалӣ, хотира, ядроҳои протсессор ва ғ.) дода шавад ва ин захираҳо бояд ба таври худкор, яъне бе дахолати провайдери хидматрасон таъмин карда шаванд.

Дастрасии васеи хидмат. Дастрасӣ ба захираҳо бояд тавассути механизмҳои стандартӣ таъмин карда шавад, то истифодаи ҳам компютерҳои фардӣ ва ҳам мизоҷҳои лоғар ва дастгоҳҳои мобилӣ имкон диҳад.

Якҷоя кардани захираҳо дар ҳавзҳо. Ҳавзҳои захиравӣ бояд дар як вақт ба якчанд муштарӣ захираҳо пешниҳод кунанд, то муштариён дар алоҳидагӣ ва аз таъсири мутақобила ва рақобат барои захираҳо озод бошанд. Шабакаҳо инчунин ба ҳавзҳо дохил карда шудаанд, ки ин имкони истифодаи суроғаи такрориро нишон медиҳад. Ҳавзҳо бояд мувофиқи талабот васеъ карда шаванд. Истифодаи ҳавзҳо ба мо имкон медиҳад, ки сатҳи зарурии таҳаммулпазирии хатогиҳои захираҳо ва абстраксияи захираҳои физикӣ ва виртуалиро таъмин кунем - қабулкунандаи хидмат танҳо бо маҷмӯи захираҳои дархосткардааш таъмин карда мешавад (дар куҷо ин захираҳо ҷисмонӣ ҷойгиранд, дар чанд серверҳо) ва коммутаторҳо - барои муштарӣ аҳамият надорад). Аммо, мо бояд ба назар гирем, ки провайдер бояд захираи шаффофи ин захираҳоро таъмин кунад.

Мутобиқшавии зуд ба шароитҳои гуногун. Хидматҳо бояд чандир бошанд - таъмини босуръати захираҳо, тақсимоти онҳо, илова ё кам кардани захираҳо бо дархости муштарӣ ва аз ҷониби муштарӣ бояд эҳсоси беохир будани захираҳои абрӣ вуҷуд дошта бошад. Барои осонии фаҳмиш, масалан, шумо огоҳие намебинед, ки як қисми фазои диски шумо дар Apple iCloud нопадид шудааст, зеро диски сахт дар сервер вайрон шудааст ва дискҳо вайрон мешаванд. Илова бар ин, аз ҷониби шумо, имкониятҳои ин хидмат тақрибан беканоранд - ба шумо 2 TB лозим аст - ҳеҷ мушкиле нест, шумо онро пардохт кардед ва онро гирифтед. Мисоли шабеҳро бо Google.Drive ё Yandex.Disk овардан мумкин аст.

Имконияти ченкунии хидмати пешниҳодшуда. Системаҳои абрӣ бояд захираҳои истеъмолшударо ба таври худкор назорат ва оптимизатсия кунанд ва ин механизмҳо бояд ҳам барои корбар ва ҳам барои провайдери хидмат шаффоф бошанд. Яъне, шумо ҳамеша метавонед санҷед, ки шумо ва муштариёни шумо чӣ қадар захираҳоро истеъмол мекунанд.

Бояд ба назар гирифт, ки ин талаботҳо асосан талабот ба абри ҷамъиятӣ мебошанд, аз ин рӯ барои абри хусусӣ (яъне абре, ки барои эҳтиёҷоти дохилии ширкат оғоз шудааст), ин талаботро каме ислоҳ кардан мумкин аст. Бо вуҷуди ин, онҳо ҳанӯз бояд иҷро шаванд, вагарна мо ҳама бартариҳои роёниши абриро ба даст намеорем.

Чаро ба мо абр лозим аст?

Бо вуҷуди ин, ҳама гуна технологияи нав ё мавҷуда, ҳама гуна протоколи нав барои чизе сохта мешавад (хуб, ба истиснои RIP-ng, албатта). Барои протокол ба касе протокол лозим нест (албатта, ба истиснои RIP-ng). Мантиқист, ки Абр барои пешниҳоди як намуди хидмат ба корбар/муштарӣ сохта шудааст. Мо ҳама ҳадди аққал бо якчанд хидматҳои абрӣ, масалан Dropbox ё Google.Docs шинос ҳастем ва ман боварӣ дорам, ки аксари одамон аз онҳо бомуваффақият истифода мебаранд - масалан, ин мақола бо истифода аз хидмати абрии Google.Docs навишта шудааст. Аммо хидматҳои абрӣ, ки мо медонем, танҳо як қисми қобилиятҳои абр мебошанд - дақиқтараш, онҳо танҳо як хидмати навъи SaaS мебошанд. Мо метавонем хидмати абриро бо се роҳ пешниҳод кунем: дар шакли SaaS, PaaS ё IaaS. Кадом хидмат ба шумо лозим аст, аз хоҳишҳо ва имкониятҳои шумо вобаста аст.

Биёед ҳар якро бо тартиб дида бароем:

Нармафзор ҳамчун хидмат (SaaS) намунаи пешниҳоди хидмати мукаммал ба мизоҷ аст, масалан, хидмати почтаи электронӣ ба монанди Yandex.Mail ё Gmail. Дар ин модели расонидани хадамот, шумо ҳамчун муштарӣ воқеан ба ҷуз истифода аз хидматҳо ҳеҷ коре намекунед, яъне ба шумо лозим нест, ки дар бораи таъсиси хадамот, таҳаммулпазирӣ ба хатогиҳо ё зиёдатӣ фикр кунед. Чизи асосӣ ин аст, ки пароли худро вайрон накунед; провайдери ин хидмат боқимондаро барои шумо анҷом медиҳад. Аз нуқтаи назари провайдери хидматрасон, ӯ барои тамоми хадамот - аз сахтафзори сервер ва системаҳои оператсионии ҳост то пойгоҳи додаҳо ва танзимоти нармафзор масъул аст.

Платформа ҳамчун хидмат (PaaS) — ҳангоми истифодаи ин модел провайдери хадамот ба муштарӣ қисмҳои корӣ барои хидмат медиҳад, масалан, веб-серверро гирем. Провайдери хидматрасон ба муштарӣ сервери маҷозӣ (воқеъан, маҷмӯи захираҳо, аз қабили RAM/CPU/Storage/Nets ва ғайра) пешниҳод кард ва ҳатто OS ва нармафзори заруриро дар ин сервер насб кард, аммо конфигуратсияи ҳамаи ин корҳоро худи муштарӣ анҷом медиҳад ва барои иҷрои хидмат муштарӣ ҷавоб медиҳад. Провайдери хидматрасон, чун дар ҳолати қаблӣ, барои иҷрои таҷҳизоти ҷисмонӣ, гипервизорҳо, худи мошини виртуалӣ, мавҷудияти шабака ва ғайра масъул аст, аммо худи хидмат дигар дар доираи масъулияташ нест.

Инфрасохтор ҳамчун хидмат (IaaS) - ин равиш аллакай ҷолибтар аст, дар асл провайдери хидматрасон ба муштарӣ инфрасохтори мукаммали маҷозӣ медиҳад - яъне баъзе маҷмӯи (ҳавзи) захираҳо, аз қабили CPU Cores, RAM, Networks ва ғайра. Ҳама чиз боқимонда аст. муштарӣ - чӣ кор кардан мехоҳад, ки муштарӣ бо ин захираҳо дар доираи ҳавзи ҷудошуда (квота) кор кунад - барои таъминкунанда махсусан муҳим нест. Новобаста аз он ки муштарӣ мехоҳад vEPC-и худро эҷод кунад ё ҳатто як оператори хурд эҷод кунад ва хидматҳои коммуникатсионӣ пешниҳод кунад - ин корро кунед. Дар чунин сенария провайдери хадамот барои таъмини захираҳо, таҳаммулпазирӣ ва дастрасии хатогиҳои онҳо, инчунин ОС, ки ба онҳо имкон медиҳад, ки ин захираҳоро муттаҳид созад ва онҳоро ба муштарӣ бо қобилияти зиёд ё кам кардани захираҳо дар вақти дилхоҳ дастрас кунад, масъул аст. бо дархости муштарӣ. Мизоҷ ҳамаи мошинҳои виртуалӣ ва дигар tinselҳоро худаш тавассути портали худхизматрасонӣ ва консол, аз ҷумла танзими шабакаҳо (ба истиснои шабакаҳои беруна) танзим мекунад.

OpenStack чист?

Дар ҳар се вариант, провайдери хидматрасон ба OS ниёз дорад, ки имкон медиҳад инфрасохтори абрӣ эҷод кунад. Дарвоқеъ, бо SaaS, зиёда аз як шӯъба барои тамоми стек технологияҳо масъул аст - шӯъбае ҳаст, ки барои инфрасохтор масъул аст - яъне он IaaS-ро ба шӯъбаи дигар таъмин мекунад, ин бахш ба муштарӣ SaaS-ро медиҳад. OpenStack яке аз системаҳои оператсионии абрӣ мебошад, ки ба шумо имкон медиҳад, ки як қатор коммутаторҳо, серверҳо ва системаҳои нигоҳдорӣ дар як ҳавзи захиравӣ ҷамъоварӣ кунед, ин ҳавзи умумиро ба субпулҳо (иҷоракорон) тақсим кунед ва ин захираҳоро ба мизоҷон тавассути шабака пешниҳод кунед.

OpenStack системаи оператсионии абрӣ мебошад, ки ба шумо имкон медиҳад, ки ҳавзҳои калони захираҳои компютерӣ, нигаҳдории маълумот ва захираҳои шабакавиро идора кунед, ки тавассути API бо истифода аз механизмҳои стандартии аутентификатсия таъмин ва идора карда мешаванд.

Ба ибораи дигар, ин маҷмӯи лоиҳаҳои нармафзори ройгон мебошад, ки барои эҷоди хидматҳои абрӣ (ҳам давлатӣ ва ҳам хусусӣ) тарҳрезӣ шудаанд, яъне маҷмӯи абзорҳое, ки ба шумо имкон медиҳанд, ки сервер ва таҷҳизоти ивазкуниро дар як ҳавзи захираҳо муттаҳид кунед, идора кунед. ин захираҳо, ки сатҳи зарурии таҳаммулпазирии хатогиҳоро таъмин мекунанд.

Ҳангоми навиштани ин мавод сохтори OpenStack чунин менамояд:
Муқаддима ба қисми шабакавии инфрасохтори абрӣ
Акс аз openstack.org

Ҳар яке аз ҷузъҳои ба OpenStack дохилшуда вазифаи мушаххасро иҷро мекунад. Ин меъмории тақсимшуда ба шумо имкон медиҳад, ки ба ҳалли маҷмӯи ҷузъҳои функсионалии, ки ба шумо лозим аст, дохил кунед. Бо вуҷуди ин, баъзе ҷузъҳо ҷузъҳои реша мебошанд ва бартараф кардани онҳо ба пурра ё қисман корношоямии маҳлул дар маҷмӯъ оварда мерасонад. Ин ҷузъҳо одатан ба таври зерин тасниф мешаванд:

  • панели — GUI дар асоси веб барои идоракунии хидматҳои OpenStack
  • инти олдиœанда як хидмати мутамаркази шахсият аст, ки функсияи аутентификатсия ва иҷозат барои хидматҳои дигар, инчунин идоракунии эътимоднокии корбар ва нақшҳои онҳоро таъмин мекунад.
  • Неутрон - хидмати шабакавӣ, ки пайвастшавиро байни интерфейсҳои хидматҳои гуногуни OpenStack таъмин мекунад (аз ҷумла пайвастшавӣ байни VMҳо ва дастрасии онҳо ба ҷаҳони беруна)
  • Cinder — дастрасӣ ба нигаҳдории блокро барои мошинҳои виртуалӣ таъмин мекунад
  • Нова — идоракунии давраи ҳаёти мошинҳои виртуалӣ
  • Нигоҳ — анбори тасвирҳои мошини виртуалӣ ва аксҳо
  • зуд — дастрасиро ба объекти нигоҳдорӣ таъмин мекунад
  • Силометр — хидмате, ки қобилияти ҷамъоварии телеметрия ва чен кардани захираҳои мавҷуда ва истеъмолшударо таъмин мекунад
  • гармӣ — оркестр дар асоси қолибҳо барои эҷоди автоматӣ ва таъмини захираҳо

Рӯйхати пурраи ҳамаи лоиҳаҳо ва ҳадафҳои онҳоро дидан мумкин аст дар ин ҷо.

Ҳар як ҷузъи OpenStack хидматест, ки вазифаи мушаххасро иҷро мекунад ва API-ро барои идоракунии ин функсия ва ҳамкорӣ бо хидматҳои дигари системаи оператсионии абрӣ барои эҷоди инфрасохтори ягона таъмин мекунад. Масалан, Nova идоракунии захираҳои компютерӣ ва API-ро барои дастрасӣ ба танзимоти ин захираҳо таъмин мекунад, Glance идоракунии тасвирҳо ва API-ро барои идоракунии онҳо таъмин мекунад, Cinder нигоҳдории блок ва API-ро барои идоракунии он ва ғайра таъмин мекунад. Ҳама функсияҳо ба таври хеле зич алоқаманданд.

Аммо, агар шумо ба он нигоҳ кунед, ҳама хидматҳое, ки дар OpenStack кор мекунанд, дар ниҳоят як навъи мошини маҷозӣ (ё контейнер) ба шабака пайвастанд. Саволе ба миён меояд, ки чаро ба мо ин кадар элементхо лозиманд?

Биёед алгоритми сохтани мошини виртуалӣ ва пайваст кардани он ба шабака ва нигаҳдории доимиро дар Openstack гузарем.

  1. Вақте ки шумо дархост барои сохтани мошин эҷод мекунед, хоҳ он дархост тавассути Horizon (панели дастгоҳ) ё дархост тавассути CLI, аввалин чизе, ки рух медиҳад, иҷозати дархости шумо дар Keystone аст - оё шумо метавонед мошин эҷод кунед, оё он дорои ҳуқуқи истифодаи ин шабака, оё лоиҳаи квотаи шумо ва ғайра.
  2. Keystone дархости шуморо тасдиқ мекунад ва дар паёми посух аломати аутентиро тавлид мекунад, ки минбаъд истифода мешавад. Пас аз гирифтани посух аз Keystone, дархост ба Нова (nova api) фиристода мешавад.
  3. Nova-api дурустии дархости шуморо тавассути тамос бо Keystone бо истифода аз аломати аутентификатсияи қаблан тавлидшуда тафтиш мекунад
  4. Keystone аутентификатсияро иҷро мекунад ва дар бораи иҷозатҳо ва маҳдудиятҳо дар асоси ин аломати аутентификация маълумот медиҳад.
  5. Nova-api барои VM нав дар пойгоҳи додаҳо сабт эҷод мекунад ва дархостро барои сохтани мошин ба nova-scheduler мефиристад.
  6. Nova-scheduler мизбонро (гиреҳи компютерӣ) интихоб мекунад, ки дар он VM дар асоси параметрҳо, вазнҳо ва минтақаҳои муайян ҷойгир карда мешавад. Сабти ин ва ID VM ба nova-dabase навишта шудааст.
  7. Баъдан, nova-scheduler бо дархости ҷойгиркунии намуна бо nova-comput тамос мегирад. Nova-compute бо nova-conductor барои гирифтани маълумот дар бораи параметрҳои мошин тамос мегирад (nova-conductor як унсури нова мебошад, ки ҳамчун сервери прокси байни nova-database ва nova-compute амал мекунад ва шумораи дархостҳоро ба nova-dabase барои пешгирӣ кардани мушкилот бо пойгоҳи додаҳо маҳдуд мекунад. кам кардани сарбории мувофиқ).
  8. Nova-conductor маълумоти дархостшударо аз базаи маълумотҳои nova қабул мекунад ва ба nova-comput интиқол медиҳад.
  9. Баъдан, nova-compute барои ба даст овардани ID-и тасвир занг мезанад. Glace дархостро дар Keystone тасдиқ мекунад ва маълумоти дархостшударо бармегардонад.
  10. Nova-compute барои ба даст овардани маълумот дар бораи параметрҳои шабака бо нейтрон тамос мегирад. Ба монанди назар, нейтрон дархостро дар Keystone тасдиқ мекунад ва пас аз он дар базаи маълумот (идентификатори порт ва ғ.) сабт эҷод мекунад, дархост барои сохтани порт эҷод мекунад ва иттилооти дархостшударо ба nova-compute бармегардонад.
  11. Тамосҳои Nova-compute бо дархости ҷудо кардани ҳаҷм ба мошини виртуалӣ. Ба монанди назар, сидр дархостро дар Keystone тасдиқ мекунад, дархости эҷоди ҳаҷм эҷод мекунад ва маълумоти дархостшударо бармегардонад.
  12. Nova-compute бо дархости ҷойгиркунии мошини виртуалӣ бо параметрҳои муайяншуда libvirt тамос мегирад.

Дар асл, як амалиёти ба назар соддаи эҷоди як мошини оддии виртуалӣ ба чунин гирдоби зангҳои API дар байни унсурҳои платформаи абр табдил меёбад. Гузашта аз ин, тавре ки мебинед, ҳатто хидматҳои қаблан таъиншуда низ аз ҷузъҳои хурдтаре иборатанд, ки байни онҳо ҳамкорӣ ба амал меояд. Эҷоди мошин танҳо як қисми хурди он чизест, ки платформаи абрӣ ба шумо имкон медиҳад - хидмате барои мувозинати трафик, хидмате барои нигаҳдории блок, хидмате масъул барои DNS, хидмате барои таъмини серверҳои металлии бараҳна ва ғайра мавҷуд аст. Абр ба шумо имкон медиҳад, ки ба мошинҳои виртуалии худ мисли галаи гӯсфанд муносибат кунед (бар хилофи виртуализатсия). Агар бо мошини шумо дар муҳити виртуалӣ чизе рӯй диҳад - шумо онро аз нусхабардорӣ барқарор мекунед ва ғайра, аммо барномаҳои абрӣ тавре сохта шудаанд, ки мошини виртуалӣ на он қадар нақши муҳимро бозӣ намекунад - мошини виртуалӣ "мурдааст" - ҳеҷ мушкиле нест. - танҳо як мошини нав сохта шудааст, ки мошин аз рӯи шаблон сохта шудааст ва чунон ки мегӯянд, отряд талафоти ҷангандаро пай набурдааст. Табиист, ки ин мавҷудияти механизмҳои оркестриро таъмин мекунад - бо истифода аз қолибҳои гармӣ, шумо метавонед ба осонӣ функсияи мураккаберо, ки аз даҳҳо шабакаҳо ва мошинҳои виртуалӣ иборат аст, ҷойгир кунед.

Ҳамеша бояд дар хотир дошт, ки инфрасохтори абрӣ бе шабака вуҷуд надорад - ҳар як унсур бо ин ё он шакл бо дигар унсурҳо тавассути шабака ҳамкорӣ мекунад. Илова бар ин, абр шабакаи комилан ғайри статикӣ дорад. Табиист, ки шабакаи зеризаминӣ боз ҳам бештар ё камтар статикӣ аст - гиреҳҳо ва коммутаторҳои нав ҳар рӯз илова карда намешаванд, аммо ҷузъи қабати болоӣ метавонад ва ногузир доимо тағир ёбад - шабакаҳои нав илова карда мешаванд ё нест карда мешаванд, мошинҳои нави виртуалӣ пайдо мешаванд ва мошинҳои кӯҳна. бимирад. Ва тавре ки шумо аз таърифи абре, ки дар аввали мақола дода шудааст, дар хотир доред, захираҳо бояд ба корбар ба таври худкор ва бо дахолати камтарин (ё беҳтараш, бидуни) аз ҷониби провайдери хидматрасон тақсим карда шаванд. Яъне, намуди пешниҳоди захираҳои шабакавӣ, ки ҳоло дар шакли фронт дар шакли ҳисоби шахсии шумо тавассути http/https ва муҳандиси шабакавии навбатдор Василий ҳамчун пуштибон дастрас аст, абр нест, ҳатто агар Василий хашт даст дошта бошад.

Neutron, ҳамчун хидмати шабакавӣ, API-ро барои идоракунии қисми шабакаи инфрасохтори абрӣ таъмин мекунад. Хизматрасонӣ қисми шабакавии Openstack-ро тавассути пешниҳоди қабати абстраксия бо номи Network-as-a-Service (NaaS) қудрат ва идора мекунад. Яъне, шабака ҳамон воҳиди ченшавандаи маҷозӣ мебошад, ки масалан, ядроҳои виртуалии CPU ё миқдори RAM.

Аммо пеш аз гузаштан ба меъмории қисми шабакаи OpenStack, биёед бубинем, ки ин шабака дар OpenStack чӣ гуна кор мекунад ва чаро шабака қисми муҳим ва ҷудонашавандаи абр аст.

Ҳамин тавр, мо ду VM муштарии RED ва ду VM мизоҷи GREEN дорем. Фарз мекунем, ки ин мошинҳо дар ду гипервизор чунин ҷойгир шудаанд:

Муқаддима ба қисми шабакавии инфрасохтори абрӣ

Дар айни замон, ин танҳо виртуализатсияи 4 сервер аст ва чизи дигаре нест, зеро то ҳол мо ҳама коре кардем, ки 4 серверро виртуализатсия карда, онҳоро дар ду сервери физикӣ ҷойгир кардем. Ва то ҳол онҳо ҳатто ба шабака пайваст нестанд.

Барои сохтани абр, мо бояд якчанд ҷузъҳоро илова кунем. Аввалан, мо қисми шабакаро виртуалӣ мекунем - ба мо лозим аст, ки ин 4 мошинро ҷуфт-ҷуфт пайваст кунем ва муштариён пайвасти L2-ро мехоҳанд. Шумо метавонед коммутаторро истифода баред ва танаи худро ба самти он танзим кунед ва ҳама чизро бо пули Linux ё барои корбарони пешрафтаи openvswitch ҳал кунед (мо баъдтар ба ин бармегардем). Аммо шабакаҳои зиёде вуҷуд доранд ва пайваста тела додани L2 тавассути коммутатор беҳтарин идея нест - шӯъбаҳои гуногун, мизи хидматрасонӣ, моҳҳои интизории пур кардани ариза, ҳафтаҳои бартараф кардани мушкилот - дар ҷаҳони муосир ин равиш дигар кор намекунад. Ва ҳар чӣ зудтар ширкат инро дарк кунад, пешравии он осонтар мешавад. Аз ин рӯ, дар байни гипервизорҳо мо шабакаи L3-ро интихоб мекунем, ки тавассути он мошинҳои маҷозии мо муошират мекунанд ва дар болои ин шабакаи L3 мо шабакаҳои маҷозии L2-ро месозем, ки дар он трафики мошинҳои виртуалии мо кор мекунад. Шумо метавонед GRE, Geneve ё VxLAN-ро ҳамчун инкапсуляция истифода баред. Биёед ҳоло ба охирин тамаркуз кунем, гарчанде ки ин махсусан муҳим нест.

Мо бояд VTEP-ро дар ҷое ҷойгир кунем (ман умедворам, ки ҳама бо истилоҳоти VxLAN шиносанд). Азбаски мо шабакаи L3 дорем, ки мустақиман аз серверҳо меояд, ҳеҷ чиз ба мо барои ҷойгир кардани VTEP дар худи серверҳо халал намерасонад ва OVS (OpenvSwitch) дар ин кор аъло аст. Дар натиҷа мо ин тарҳро ба даст овардем:

Муқаддима ба қисми шабакавии инфрасохтори абрӣ

Азбаски трафик байни VM-ҳо бояд тақсим карда шавад, портҳо ба мошинҳои виртуалӣ рақамҳои гуногуни vlan доранд. Рақами барчасп танҳо дар як коммутатори виртуалӣ нақш мебозад, зеро вақте ки дар VxLAN капсула карда мешавад, мо метавонем онро ба осонӣ хориҷ кунем, зеро мо VNI хоҳем дошт.

Муқаддима ба қисми шабакавии инфрасохтори абрӣ

Акнун мо метавонем мошинҳо ва шабакаҳои виртуалии худро барои онҳо бидуни мушкилот эҷод кунем.

Аммо, чӣ мешавад, агар муштарӣ мошини дигар дошта бошад, аммо дар шабакаи дигар бошад? Мо ба решакан кардани байни шабакаҳо ниёз дорем. Мо варианти оддиро ҳангоми истифодабарии масири мутамарказ дида мебароем - яъне трафик тавассути гиреҳҳои махсуси шабакавӣ равона карда мешавад (хуб, чун қоида, онҳо бо гиреҳҳои идоракунӣ якҷоя карда мешаванд, аз ин рӯ мо ҳамон чизеро дорем).

Чунин ба назар мерасад, ки ҳеҷ чизи мураккаб нест - мо дар гиреҳи идоракунӣ интерфейси пулӣ месозем, трафикро ба он мерасонем ва аз он ҷо онро ба ҷое, ки ба мо лозим аст, равона мекунем. Аммо мушкилот дар он аст, ки муштарии RED мехоҳад шабакаи 10.0.0.0/24-ро истифода барад ва муштарии САБЗ мехоҳад шабакаи 10.0.0.0/24-ро истифода барад. Яъне, мо ба буридани ҷойҳои адресҳо шурӯъ мекунем. Илова бар ин, муштариён намехоҳанд, ки муштариёни дигар ба шабакаҳои дохилии худ ворид шаванд, ки ин маъно дорад. Барои ҷудо кардани шабакаҳо ва трафики маълумоти муштарӣ, мо барои ҳар яки онҳо фазои алоҳида ҷудо мекунем. Фазои номҳо воқеан нусхаи стеки шабакаи Linux аст, яъне муштариён дар фазои номи RED аз муштариён аз фазои номи GREEN комилан ҷудо шудаанд (хуб, ё масир байни ин шабакаҳои муштарӣ тавассути фазои номи пешфарз ё дар таҷҳизоти нақлиётии болоӣ иҷозат дода мешавад).

Яъне, мо диаграммаи зеринро мегирем:

Муқаддима ба қисми шабакавии инфрасохтори абрӣ

Нақбҳои L2 аз ҳама гиреҳҳои ҳисоббарорӣ ба гиреҳи идоракунӣ муттаҳид мешаванд. гиреҳ, ки дар он интерфейси L3 барои ин шабакаҳо ҷойгир аст, ҳар яке дар фазои ном барои ҷудокунӣ.

Бо вучуди ин мо чизи аз хама мухимро фаромуш кардем. Мошини виртуалӣ бояд ба муштарӣ хидмат расонад, яъне он бояд ҳадди аққал як интерфейси беруна дошта бошад, ки тавассути он ба он дастрасӣ пайдо кардан мумкин аст. Яъне мо бояд ба ҷаҳони беруна равем. Дар ин ҷо вариантҳои гуногун мавҷуданд. Биёед варианти соддатаринро иҷро кунем. Мо ба ҳар як муштарӣ як шабака илова мекунем, ки он дар шабакаи провайдер эътибор хоҳад дошт ва бо дигар шабакаҳо мувофиқат намекунад. Шабакаҳо инчунин метавонанд VRF-ҳои гуногунро дар паҳлӯи шабакаи провайдерӣ бурида, бубинанд. Маълумоти шабакавӣ инчунин дар фазои номи ҳар як муштарӣ зиндагӣ хоҳад кард. Бо вуҷуди ин, онҳо ба ҳар ҳол тавассути як интерфейси физикӣ (ё пайванде, ки мантиқтар аст) ба ҷаҳони беруна мебароянд. Барои ҷудо кардани трафики муштарӣ, трафики берунӣ бо теги VLAN, ки ба муштарӣ ҷудо карда шудааст, нишон дода мешавад.

Дар натиҷа мо ин диаграмма гирифтем:

Муқаддима ба қисми шабакавии инфрасохтори абрӣ

Саволи оқилона ин аст, ки чаро худ дар гиреҳҳои ҳисоббарорӣ шлюз намесозед? Ин як мушкили калон нест, илова бар ин, агар шумо роутери тақсимшударо (DVR) фаъол кунед, ин кор хоҳад кард. Дар ин сенария, мо соддатарин вариантро бо шлюзи мутамарказ, ки ба таври нобаёнӣ дар Openstack истифода мешавад, баррасӣ мекунем. Барои вазифаҳои баландбор, онҳо ҳам аз роутери тақсимшуда ва ҳам технологияҳои суръатбахшӣ ба монанди SR-IOV ва Passthrough истифода хоҳанд кард, аммо тавре ки мегӯянд, ин як ҳикояи тамоман дигар аст. Аввалан, биёед бо қисми асосӣ сару кор кунем ва баъд ба тафсилот мегузарем.

Дар асл, нақшаи мо аллакай иҷрошаванда аст, аммо якчанд нозукиҳо мавҷуданд:

  • Мо бояд мошинҳои худро бо ягон роҳ муҳофизат кунем, яъне дар интерфейси коммутатор ба муштарӣ филтр гузорем.
  • Ба мошини маҷозӣ имкон диҳед, ки суроғаи IP-ро ба таври худкор ба даст орад, то шумо набояд ҳар дафъа тавассути консол ворид шавед ва суроғаро сабт кунед.

Биёед аз муҳофизати мошин оғоз кунем. Барои ин шумо метавонед iptables banal истифода баред, чаро не.

Яъне, ҳоло топологияи мо каме мураккабтар шудааст:

Муқаддима ба қисми шабакавии инфрасохтори абрӣ

Биёед пеш равем. Мо бояд сервери DHCP илова кунем. Ҷойгоҳи беҳтарин барои ҷойгир кардани серверҳои DHCP барои ҳар як муштарӣ гиреҳи назоратии дар боло зикршуда хоҳад буд, ки дар он фазои номҳо ҷойгиранд:

Муқаддима ба қисми шабакавии инфрасохтори абрӣ

Бо вуҷуди ин, як мушкилоти хурд вуҷуд дорад. Чӣ мешавад, агар ҳама чиз бозоғоз шавад ва ҳама маълумот дар бораи иҷораи суроғаҳо дар DHCP нопадид шавад. Ба машинахо адресхои нав дода хоханд шуд, ки ин чандон кулай нест. Дар ин ҷо ду роҳи баромадан вуҷуд дорад - ё номҳои домейнҳоро истифода баред ва барои ҳар як муштарӣ сервери DNS илова кунед, он гоҳ суроға барои мо махсусан муҳим нахоҳад буд (монанди қисми шабака дар k8s) - аммо мушкилот бо шабакаҳои беруна вуҷуд дорад, зеро суроғаҳо инчунин метавонанд тавассути DHCP дода шаванд - ба шумо синхронизатсия бо серверҳои DNS дар платформаи абрӣ ва сервери DNS беруна лозим аст, ки ба назари ман чандон чандир нест, аммо комилан имконпазир аст. Ё варианти дуюм ин истифодаи метамаълумот аст - яъне захира кардани маълумот дар бораи суроғаи ба мошин додашуда то сервери DHCP донад, ки агар мошин аллакай суроға гирифта бошад, кадом суроғаро ба мошин медиҳад. Варианти дуюм соддатар ва чандиртар аст, зеро он ба шумо имкон медиҳад, ки маълумоти иловагиро дар бораи мошин захира кунед. Акнун биёед метамаълумоти агентро ба диаграмма илова кунем:

Муқаддима ба қисми шабакавии инфрасохтори абрӣ

Масъалаи дигаре, ки бояд мавриди баррасӣ қарор гирад, ин қобилияти истифодаи як шабакаи беруна аз ҷониби ҳамаи муштариён аст, зеро шабакаҳои беруна, агар онҳо бояд дар тамоми шабака эътибор дошта бошанд, душвор хоҳад буд - шумо бояд пайваста тақсимоти ин шабакаҳоро ҷудо кунед ва назорат кунед. Қобилияти истифодаи як шабакаи берунии қаблан танзимшуда барои ҳама муштариён ҳангоми эҷоди абри ҷамъиятӣ хеле муфид хоҳад буд. Ин ҷойгиркунии мошинҳоро осонтар мекунад, зеро ба мо лозим нест, ки ба пойгоҳи додаҳои суроғаҳо муроҷиат кунем ва фазои ягонаи суроғаро барои шабакаи берунии ҳар як муштарӣ интихоб кунем. Илова бар ин, мо метавонем шабакаи берунаро пешакӣ сабти ном кунем ва дар вақти ҷойгиркунӣ ба мо танҳо лозим меояд, ки суроғаҳои берунаро бо мошинҳои муштарӣ пайваст кунем.

Ва дар ин ҷо NAT ба кӯмаки мо меояд - мо танҳо имкон медиҳем, ки муштариён ба ҷаҳони беруна тавассути фазои номҳои пешфарз бо истифода аз тарҷумаи NAT дастрасӣ пайдо кунанд. Хуб, ин ҷо як мушкили хурде ҳаст. Ин хуб аст, агар сервери муштарӣ ҳамчун муштарӣ амал кунад, на ҳамчун сервер - яъне он оғоз мекунад, на пайвастҳоро қабул кунад. Аммо барои мо баръакс мешавад. Дар ин ҳолат, мо бояд NAT-и таъинотро иҷро кунем, то ҳангоми қабули трафик гиреҳи идоракунӣ дарк кунад, ки ин трафик барои мошини маҷозии А муштарии А пешбинӣ шудааст, яъне мо бояд тарҷумаи NAT-ро аз суроғаи беруна иҷро кунем, масалан 100.1.1.1. .10.0.0.1, ба суроғаи дохилӣ 100. Дар ин ҳолат, гарчанде ки ҳамаи муштариён аз як шабака истифода мебаранд, изолятсияи дохилӣ комилан нигоҳ дошта мешавад. Яъне, мо бояд дар гиреҳи идоракунӣ dNAT ва sNAT -ро иҷро кунем. Истифодаи як шабакаи ягона бо суроғаҳои шинокунанда ё шабакаҳои беруна ё ҳарду якбора аз он чизе, ки шумо мехоҳед ба абр ворид кунед, вобаста аст. Мо ба диаграмма суроғаҳои шинокунандаро илова намекунем, балки шабакаҳои берунии қаблан иловашударо тарк хоҳем кард - ҳар як муштарӣ шабакаи берунии худро дорад (дар диаграмма онҳо ҳамчун vlan 200 ва XNUMX дар интерфейси беруна нишон дода шудаанд).

Дар натиҷа, мо як ҳалли ҷолиб ва дар айни замон хуб андешидашуда ба даст овардем, ки чандирии муайян дорад, аммо ҳанӯз механизмҳои таҳаммулпазирӣ ба хатогиҳо надорад.

Аввалан, мо танҳо як гиреҳи назорат дорем - нокомии он ба харобшавии тамоми системаҳо оварда мерасонад. Барои ислоҳи ин мушкилот, шумо бояд ҳадди аққал як кворуми 3 гиреҳро созед. Биёед инро ба диаграмма илова кунем:

Муқаддима ба қисми шабакавии инфрасохтори абрӣ

Табиист, ки ҳама гиреҳҳо ҳамоҳанг карда мешаванд ва вақте ки гиреҳи фаъол аз он хориҷ мешавад, гиреҳи дигар масъулияти онро ба ӯҳда мегирад.

Мушкилоти навбатӣ дискҳои мошини виртуалӣ мебошанд. Дар айни замон, онҳо дар худи гипервизорҳо нигоҳ дошта мешаванд ва дар сурати мушкилот бо гипервизор мо ҳама маълумотро аз даст медиҳем - ва мавҷудияти рейд дар ин ҷо кӯмак намекунад, агар мо на диск, балки тамоми серверро аз даст диҳем. Барои ин ба мо лозим аст, ки хидмате созем, ки ҳамчун охири пеш барои ягон намуди нигаҳдорӣ амал кунад. Чӣ гуна нигоҳдории он барои мо махсусан муҳим нест, аммо он бояд маълумоти моро аз шикасти диск ва гиреҳ ва эҳтимолан тамоми кабинет муҳофизат кунад. Дар ин ҷо якчанд вариант вуҷуд дорад - албатта, шабакаҳои SAN бо Fiber Channel мавҷуданд, аммо биёед ростқавл гӯем - FC аллакай як осори гузашта аст - аналоги E1 дар нақлиёт - бале, ман розӣ ҳастам, он ҳоло ҳам истифода мешавад, аммо танхо дар он чое, ки бе ин тамоман имконнопазир аст. Аз ин рӯ, ман ихтиёран шабакаи FC-ро дар соли 2020 ҷойгир намекунам, зеро медонам, ки дигар алтернативаҳои ҷолибтар мавҷуданд. Ҳарчанд барои ҳар яки худ, шояд касоне ҳастанд, ки боварӣ доранд, ки ФК бо тамоми маҳдудиятҳояш ба мо лозим аст - ман баҳс намекунам, ҳар кас фикри худро дорад. Аммо, ба назари ман, ҳалли ҷолибтарин ин истифодаи SDS, ба монанди Ceph аст.

Ceph ба шумо имкон медиҳад, ки ҳалли хеле дастраси нигаҳдории маълумотро бо як қатор имконоти эҳтиётии эҳтимолӣ бунёд кунед, ки аз рамзҳо бо санҷиши паритет (аналоги рейд 5 ё 6) то бо такрори пурраи додаҳо ба дискҳои гуногун бо назардошти ҷойгиршавии дискҳо дар серверҳо ва серверҳо дар кабинетҳо ва ғайра.

Барои сохтани Ceph ба шумо 3 гиреҳи дигар лозим аст. Ҳамкорӣ бо нигаҳдорӣ инчунин тавассути шабака бо истифода аз хидматҳои нигоҳдории блок, объект ва файл анҷом дода мешавад. Биёед захираро ба схема илова кунем:

Муқаддима ба қисми шабакавии инфрасохтори абрӣ

Эзоҳ: шумо инчунин метавонед гиреҳҳои ҳисоббарории гиперконвергатсияшуда созед - ин мафҳуми якҷоя кардани якчанд функсияҳо дар як гиреҳ аст - масалан, нигоҳдорӣ+компютер - бидуни ҷудо кардани гиреҳҳои махсус барои нигаҳдории cep. Мо ҳамон схемаи ба хатогиҳо тобоварро мегирем - зеро SDS маълумотро бо сатҳи фармоише, ки мо муайян мекунем, захира мекунад. Аммо, гиреҳҳои гиперконвергенсия ҳамеша як созиш мебошанд - зеро гиреҳи нигоҳдорӣ ҳаворо на танҳо гарм мекунад, чунон ки дар назари аввал ба назар мерасад (зеро дар он мошинҳои виртуалӣ вуҷуд надоранд) - он захираҳои CPU-ро барои хидматрасонии SDS сарф мекунад (воқеан, ҳама чизро иҷро мекунад. такрорӣ ва барқарорсозӣ пас аз нокомии гиреҳҳо, дискҳо ва ғайра). Яъне, агар шумо онро бо нигоҳдорӣ якҷоя кунед, шумо як қисми қудрати гиреҳи ҳисобкуниро аз даст медиҳед.

Ҳамаи ин чизҳо бояд ба тариқи муайян идора карда шаванд - ба мо чизе лозим аст, ки тавассути он мо метавонем мошин, шабака, роутери виртуалӣ ва ғайра созем. муштарӣ метавонад ба ин портал тавассути http/ https пайваст шавад ва ҳама чизеро, ки ба ӯ лозим аст, анҷом диҳад (хуб, қариб).

Натичаи хамин аст, ки мо холо системаи ба камбудихо тобовар дорем. Ҳама унсурҳои ин инфрасохтор бояд бо ягон роҳ идора карда шаванд. Қаблан тавсиф карда шуда буд, ки Openstack маҷмӯи лоиҳаҳост, ки ҳар яки онҳо вазифаи мушаххасро таъмин мекунанд. Тавре ки мо мебинем, ҷузъҳои кофӣ вуҷуд доранд, ки бояд танзим ва назорат карда шаванд. Имрӯз мо дар бораи қисми шабака сӯҳбат хоҳем кард.

Архитектураи нейтронӣ

Дар OpenStack маҳз Нейтрон барои пайваст кардани бандарҳои мошини виртуалӣ ба шабакаи умумии L2, таъмини масири трафик байни VM-ҳои дар шабакаҳои гуногуни L2 ҷойгиршуда, инчунин масири берунӣ, расонидани хидматҳо ба монанди NAT, Floating IP, DHCP ва ғайра масъул аст.

Дар сатҳи баланд, кори хидмати шабакавӣ (қисми асосӣ) метавонад ба таври зерин тавсиф карда шавад.

Ҳангоми оғоз кардани VM, хидмати шабакавӣ:

  1. Барои VM (ё портҳо)-и додашуда порт эҷод мекунад ва хидмати DHCP-ро дар бораи он огоҳ мекунад;
  2. Дастгоҳи нави шабакаи виртуалӣ сохта мешавад (тавассути libvirt);
  3. VM ба порт(ҳо)-и дар қадами 1 сохташуда пайваст мешавад;

Аҷиб он аст, ки кори Нейтрон ба механизмҳои стандартие асос ёфтааст, ки барои ҳар касе, ки боре ба Linux ғарқ шудааст, шинос аст - фазоҳои номҳо, iptables, пулҳои Linux, openvswitch, conntrack ва ғайра.

Бояд фавран фаҳмонд, ки Neutron як контролери SDN нест.

Нейтрон аз якчанд ҷузъҳои ба ҳам алоқаманд иборат аст:

Муқаддима ба қисми шабакавии инфрасохтори абрӣ

Openstack-нейтрон-сервер демонест, ки бо дархостҳои корбар тавассути API кор мекунад. Ин дев дар сабти ягон пайвасти шабакавӣ иштирок намекунад, аммо барои ин ба плагинҳои худ маълумоти заруриро медиҳад, ки баъдан унсури шабакавии дилхоҳро танзим мекунад. Агентҳои нейтронӣ дар гиреҳҳои OpenStack дар сервери Neutron сабти ном мешаванд.

Нейтрон-сервер аслан барномаест, ки бо забони python навишта шудааст, ки аз ду қисм иборат аст:

  • Хадамоти REST
  • Плагини нейтрон (аслӣ/хизматрасонӣ)

Хидмати REST барои қабули зангҳои API аз ҷузъҳои дигар тарҳрезӣ шудааст (масалан, дархост барои пешниҳоди баъзе маълумот ва ғайра).

Плагинҳо ҷузъҳои плагини нармафзор/модулҳо мебошанд, ки ҳангоми дархостҳои API даъват карда мешаванд - яъне аттрибутсияи хидмат тавассути онҳо сурат мегирад. Плагинҳо ба ду намуд тақсим мешаванд - хидматрасонӣ ва реша. Чун қоида, плагини асп асосан барои идоракунии фазои суроғаҳо ва пайвастҳои L2 байни VMҳо масъул аст ва плагинҳои хидматӣ аллакай функсияҳои иловагиро ба монанди VPN ё FW таъмин мекунанд.

Рӯйхати плагинҳои имрӯз дастрасро барои мисол дидан мумкин аст дар ин ҷо

Якчанд плагинҳои хидматрасонӣ метавонанд вуҷуд дошта бошанд, аммо танҳо як плагини асп вуҷуд дорад.

openstack-нейтрон-ml2 плагини решаи стандартии Openstack аст. Ин плагин дорои меъмории модулӣ мебошад (баръакси пешгузаштаи худ) ва хидмати шабакаро тавассути драйверҳои ба он пайвастшуда танзим мекунад. Мо ба худи плагин каме дертар назар хоҳем кард, зеро дар асл он чандирӣ медиҳад, ки OpenStack дар қисми шабакавӣ дорад. Васлкунаки решаро иваз кардан мумкин аст (масалан, Contrail Networking чунин ивазкуниро мекунад).

Хидмати RPC (rabbitmq-сервер) — хидмате, ки идоракунии навбат ва ҳамкорӣ бо дигар хидматҳои OpenStack, инчунин ҳамкорӣ байни агентҳои хидматрасонии шабакавиро таъмин мекунад.

Агентҳои шабакавӣ — агентҳое, ки дар ҳар як гиреҳ ҷойгиранд, ки тавассути онҳо хидматҳои шабакавӣ танзим карда мешаванд.

Якчанд намуди агентҳо мавҷуданд.

Агенти асосӣ аст Агенти L2. Ин агентҳо дар ҳар як гипервизорҳо, аз ҷумла гиреҳҳои назоратӣ (аниқтараш, дар ҳама гиреҳҳое, ки ҳама гуна хидматро барои иҷоракорон пешниҳод мекунанд) кор мекунанд ва вазифаи асосии онҳо пайваст кардани мошинҳои виртуалӣ ба шабакаи умумии L2 ва инчунин ҳангоми рух додани ҳама гуна ҳодисаҳо огоҳӣ эҷод мекунанд ( масалан, портро ғайрифаъол/фаъол кунед).

Агенти оянда, на камтар муҳим аст Агенти L3. Бо нобаёнӣ, ин агент танҳо дар гиреҳи шабака кор мекунад (аксар вақт гиреҳи шабака бо гиреҳи идоракунӣ муттаҳид карда мешавад) ва масир байни шабакаҳои иҷорагирро таъмин мекунад (ҳам байни шабакаҳои он ва ҳам шабакаҳои дигар иҷоракорон ва барои ҷаҳони беруна дастрас аст. NAT, инчунин хидмати DHCP). Аммо, ҳангоми истифодаи DVR (роутери тақсимшуда), зарурати плагини L3 низ дар гиреҳҳои ҳисоббарорӣ пайдо мешавад.

Агенти L3 фазои номҳои Linux-ро истифода мебарад, то ҳар як иҷорагирро бо маҷмӯи шабакаҳои ҷудошудаи худ ва фаъолияти роутерҳои виртуалӣ, ки трафикро масир мекунанд ва хидматҳои шлюзро барои шабакаҳои Layer 2 таъмин мекунанд, таъмин мекунад.

Махзани — базаи идентификаторҳои шабакаҳо, зершабакаҳо, портҳо, ҳавзҳо ва ғайра.

Дар асл, Neutron дархостҳои API-ро аз эҷоди ҳама гуна объектҳои шабака қабул мекунад, дархостро тасдиқ мекунад ва тавассути RPC (агар он ба ягон плагин ё агент дастрасӣ дошта бошад) ё REST API (агар он дар SDN муошират кунад) ба агентҳо (тавассути плагинҳо) интиқол медиҳад. дастурҳои зарурӣ барои ташкили хидмати дархостшуда.

Акнун биёед ба насби озмоишӣ муроҷиат кунем (чӣ гуна он ҷойгир карда шудааст ва чӣ ба он дохил карда шудааст, мо баъдтар дар қисми амалӣ мебинем) ва бубинем, ки ҳар як ҷузъ дар куҷо ҷойгир аст:

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

Муқаддима ба қисми шабакавии инфрасохтори абрӣ

Дар асл, ин тамоми сохтори Нейтрон аст. Ҳоло барои плагини ML2 каме вақт сарф кардан лозим аст.

Қабати модулӣ 2

Тавре ки дар боло зикр гардид, плагин як плагини решаи стандартии OpenStack буда, меъмории модулӣ дорад.

Пешгузаштаи плагини ML2 сохтори монолитӣ дошт, ки масалан, истифодаи омехтаи якчанд технологияро дар як насб имкон намедиҳад. Масалан, шумо наметавонед ҳам openvswitch ва ҳам linuxbridge -ро дар як вақт истифода баред - на якум ва ҳам дуюм. Аз ин сабаб, плагини ML2 бо меъмории он сохта шудааст.

ML2 ду ҷузъ дорад - ду намуди драйверҳо: Драйверҳои навъи ва драйверҳои механизм.

Навъи ронандагон технологияҳоеро, ки барои ташкили пайвастҳои шабакавӣ истифода мешаванд, муайян кунед, масалан VxLAN, VLAN, GRE. Дар баробари ин ронанда имкон медихад, ки техникам гуногун истифода шавад. Технологияи стандартӣ инкапсуляцияи VxLAN барои шабакаҳои overlay ва шабакаҳои берунии vlan мебошад.

Навъи драйверҳо намудҳои зерини шабакаро дар бар мегиранд:

ҳамвор - шабака бе барчасп
ВЛАН - шабакаи барчасп
маҳаллӣ — як намуди махсуси шабака барои насби ҳама дар як (чунин насбҳо ҳам барои таҳиягарон ва ҳам барои омӯзиш лозиманд)
GRE - шабакаи overlay бо истифода аз нақбҳои GRE
VxLAN — қабати болоии шабака бо истифода аз нақбҳои VxLAN

Ронандагони механизмхо воситаҳоеро муайян кунед, ки ташкили технологияҳои дар драйвери тип зикршударо таъмин мекунанд - масалан, openvswitch, sr-iov, opendaylight, OVN ва ғайра.

Вобаста аз татбиқи ин драйвер, ё агентҳои идорашавандаи Neutron истифода мешаванд ё пайвастшавӣ ба контролери берунии SDN истифода мешаванд, ки ҳама масъалаҳои марбут ба ташкили шабакаҳои L2, масир ва ғайраро ҳал мекунанд.

Мисол: агар мо ML2-ро дар якҷоягӣ бо OVS истифода барем, пас дар ҳар як гиреҳи ҳисоббарор, ки OVS-ро идора мекунад, агенти L2 насб карда мешавад. Аммо, агар мо, масалан, OVN ё OpenDayLight -ро истифода барем, пас назорати OVS ба салоҳияти онҳо дохил мешавад - Нейтрон тавассути плагини реша ба контроллер фармон медиҳад ва он аллакай он чизеро, ки гуфта буд, иҷро мекунад.

Биёед дар Open vSwitch тоза кунем

Дар айни замон, яке аз ҷузъҳои асосии OpenStack Open vSwitch мебошад.
Ҳангоми насб кардани OpenStack бе ягон фурӯшандаи иловагии SDN, ба монанди Juniper Contrail ё Nokia Nuage, OVS ҷузъи асосии шабакаи шабакаи абрӣ мебошад ва дар якҷоягӣ бо iptables, conntrack, фазоҳои ном, ба шумо имкон медиҳад, ки шабакаҳои мукаммали бисёрқабатаро ташкил кунед. Табиист, ки ин ҷузъро метавон иваз кард, масалан, ҳангоми истифодаи қарорҳои хусусии (фурӯшанда) SDN.

OVS як гузариши нармафзори кушодаасос мебошад, ки барои истифода дар муҳити виртуалӣ ҳамчун экспедитори трафики виртуалӣ пешбинӣ шудааст.

Дар айни замон, OVS дорои функсияҳои хеле мувофиқ аст, ки технологияҳои монанди QoS, LACP, VLAN, VxLAN, GENEVE, OpenFlow, DPDK ва ғайраро дар бар мегирад.

Эзоҳ: OVS дар аввал ҳамчун гузариши нарм барои вазифаҳои телекоммуникатсионии пурбор тарҳрезӣ нашуда буд ва бештар барои вазифаҳои IT-и камтари фарохмаҷро, ба монанди сервери WEB ё сервери почта тарҳрезӣ шуда буд. Бо вуҷуди ин, OVS минбаъд инкишоф ёфта истодааст ва татбиқи ҷории OVS фаъолият ва қобилиятҳои онро хеле беҳтар кардааст, ки имкон медиҳад аз ҷониби операторони телекоммуникатсионӣ бо функсияҳои пурбор истифода шаванд, масалан, татбиқи OVS бо дастгирии суръатбахшии DPDK мавҷуд аст.

Се ҷузъи муҳими OVS мавҷуданд, ки шумо бояд аз онҳо огоҳ бошед:

  • Модули ядро ​​​​ — ҷузъе, ки дар фазои ядро ​​ҷойгир аст, ки трафикро дар асоси қоидаҳое, ки аз элементи идоракунӣ гирифта шудааст, коркард мекунад;
  • vSwitch демон (ovs-vswitchd) равандест, ки дар фазои корбар оғоз шудааст, ки барои барномарезии модули ядро ​​масъул аст, яъне он бевосита мантиқи кори коммутаторро ифода мекунад.
  • Сервери пойгоҳи додаҳо - пойгоҳи додаҳои маҳаллӣ дар ҳар як ҳост, ки OVS-ро иҷро мекунад, дар он конфигуратсия нигоҳ дошта мешавад. Контроллерҳои SDN метавонанд тавассути ин модул бо истифода аз протоколи OVSDB муошират кунанд.

Ҳамаи ин бо як қатор утилитаҳои ташхисӣ ва идоракунӣ, аз қабили ovs-vsctl, ovs-appctl, ovs-ofctl ва ғайра ҳамроҳ мешавад.

Дар айни замон, Openstack аз ҷониби операторони телекоммуникатсионӣ барои интиқоли функсияҳои шабакавӣ ба он ба таври васеъ истифода мешавад, ба монанди EPC, SBC, HLR ва ғайра. Баъзе функсияҳо метавонанд бо OVS бе мушкилот зиндагӣ кунанд, аммо масалан, EPC трафики муштариро коркард мекунад - пас он тавассути он мегузарад. миқдори зиёди трафик (ҳоло ҳаҷми трафик дар як сония ба чандсад гигабит мерасад). Табиист, ки интиқоли чунин трафик тавассути фазои ядро ​​​​(зеро экспедитор дар он ҷо ҷойгир аст) беҳтарин идея нест. Аз ин рӯ, OVS аксар вақт пурра дар фазои корбар бо истифода аз технологияи суръатбахшии DPDK барои интиқоли трафик аз NIC ба фазои корбар, ки аз ядро ​​​​гузарад, ҷойгир карда мешавад.

Эзоҳ: барои абре, ки барои вазифаҳои телекоммуникатсионӣ ҷойгир карда шудааст, имкон дорад трафикро аз гиреҳи ҳисоббарорӣ тавассути OVS мустақиман ба таҷҳизоти коммутатсионӣ баровардан мумкин аст. Барои ин аз механизмхои СР-ИОВ ва пассажир истифода мешаванд.

Ин чӣ гуна дар тарҳбандии воқеӣ кор мекунад?

Хуб, ҳоло биёед ба қисми амалӣ гузарем ва бубинем, ки ин ҳама дар амал чӣ гуна кор мекунад.

Аввалан, биёед насби оддии Openstack-ро ҷойгир кунем. Азбаски ман барои таҷрибаҳо маҷмӯи серверҳо надорам, мо прототипро дар як сервери физикӣ аз мошинҳои виртуалӣ ҷамъ мекунем. Бале, табиист, ки чунин қарор барои мақсадҳои тиҷоратӣ мувофиқ нест, аммо барои дидани мисоли кор кардани шабака дар Openstack, чунин насб барои чашмҳо кофӣ аст. Гузашта аз ин, чунин насб барои мақсадҳои омӯзишӣ боз ҳам ҷолибтар аст - зеро шумо метавонед трафикро дастгир кунед ва ғайра.

Азбаски мо танҳо қисмати асосиро дидан лозим аст, мо наметавонем якчанд шабакаҳоро истифода барем, аммо ҳама чизро бо истифода аз ду шабака боло барем ва шабакаи дуюм дар ин тарҳ танҳо барои дастрасӣ ба сервери абрӣ ва DNS истифода мешавад. Мо ҳоло ба шабакаҳои беруна дахл намекунем - ин мавзӯъ барои як мақолаи алоҳидаи калон аст.

Пас, биёед бо тартиб оғоз кунем. Якум, як назарияи каме. Мо Openstack-ро бо истифода аз TripleO (Openstack дар Openstack) насб мекунем. Моҳияти TripleO дар он аст, ки мо Openstack ҳама-дар-якро (яъне дар як гиреҳ) насб мекунем, ки зери абр номида мешавад ва сипас имкониятҳои Openstack-и ҷойгиршударо барои насб кардани Openstack, ки барои кор пешбинӣ шудааст, истифода мебарем, ки overcloud ном дорад. Undercloud қобилияти хоси худро барои идоракунии серверҳои физикӣ (метали луч) - лоиҳаи Ironic - барои таъмини гипервизорҳо, ки нақшҳои ҳисобкунак, назорат ва гиреҳҳои нигоҳдорӣ иҷро мекунанд, истифода хоҳад кард. Яъне, мо барои ҷойгиркунии Openstack ягон асбоби тарафи сеюмро истифода намебарем - мо Openstack-ро бо истифода аз Openstack ҷойгир мекунем. Вақте ки насбкунӣ пеш меравад, он хеле равшантар мешавад, аз ин рӯ мо дар он ҷо намемонем ва ба пеш ҳаракат мекунем.

Эзоҳ: Дар ин мақола, ба хотири соддагӣ, ман изолятсияи шабакаро барои шабакаҳои дохилии Openstack истифода накардаам, аммо ҳама чиз танҳо бо як шабака ҷойгир карда мешавад. Бо вуҷуди ин, мавҷудият ё набудани изолятсияи шабака ба вазифаи асосии ҳалли мушкилот таъсир намерасонад - ҳама чиз маҳз ҳамон тавре, ки ҳангоми истифодаи изолятсия кор мекунад, аммо трафик дар ҳамон шабака ҷорӣ мешавад. Барои насби тиҷоратӣ, табиист, ки изолятсияро бо истифода аз вланҳо ва интерфейсҳои гуногун истифода бурдан лозим аст. Масалан, трафики идоракунии нигаҳдории ceph ва худи трафики додаҳо (дастрасии мошин ба дискҳо ва ғ.) ҳангоми ҷудошуда зершабакаҳои гуногунро истифода мебаранд (Идоракунии нигаҳдорӣ ва нигоҳдорӣ) ва ин ба шумо имкон медиҳад, ки тавассути тақсим кардани ин трафик, масалан, ҳалли худро ба хатогиҳо бештар таҳаммул кунед. , дар бандарҳои гуногун ё истифодаи профилҳои гуногуни QoS барои трафики гуногун, то трафики додаҳо трафики сигнализатсияро фишурда накунад. Дар ҳолати мо, онҳо дар як шабака хоҳанд рафт ва дар асл ин моро ба ҳеҷ ваҷҳ маҳдуд намекунад.

Эзоҳ: Азбаски мо мошинҳои виртуалиро дар муҳити виртуалӣ дар асоси мошинҳои виртуалӣ иҷро карданием, мо аввал бояд виртуализатсияи лонаро фаъол созем.

Шумо метавонед тафтиш кунед, ки оё виртуализатсияи лона фаъол аст ё не:


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

Агар шумо ҳарфи N-ро бинед, мо дастгирии виртуализатсияи лонаро мувофиқи ҳама гуна дастуре, ки шумо дар шабака пайдо мекунед, фаъол месозем, масалан чунин .

Мо бояд схемаи зеринро аз мошинҳои виртуалӣ ҷамъ кунем:

Муқаддима ба қисми шабакавии инфрасохтори абрӣ

Дар ҳолати ман, барои пайваст кардани мошинҳои виртуалӣ, ки қисми насби оянда мебошанд (ва ман 7-тои онҳоро гирифтам, аммо шумо метавонед бо 4-тоаш кор кунед, агар шумо захираҳои зиёд надошта бошед), ман OpenvSwitch-ро истифода кардам. Ман як пули ovs сохтам ва мошинҳои виртуалиро ба он тавассути порт-гурӯҳҳо пайваст кардам. Барои ин ман як файли xml-ро чунин сохтам:


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

Дар ин ҷо се гурӯҳи портҳо эълон карда шудаанд - ду дастрасӣ ва як танаи (охирин барои сервери DNS лозим буд, аммо шумо метавонед бе он кор кунед ё онро дар мошини ҳост насб кунед - кадоме барои шумо қулай аст). Баъдан, бо истифода аз ин қолаб, мо аз они худро тавассути virsh net-define эълон мекунем:


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

Ҳоло мо конфигуратсияҳои порти гипервизорро таҳрир мекунем:


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

Эзоҳ: дар ин сенария, суроғаи порти ovs-br1 дастрас нахоҳад буд, зеро он теги vlan надорад. Барои ислоҳ кардани ин, шумо бояд фармони sudo ovs-vsctl set port ovs-br1 tag=100 -ро бароред. Аммо, пас аз бозоғозӣ, ин тег нопадид мешавад (агар касе донад, ки чӣ тавр онро дар ҷои худ нигоҳ дорад, ман хеле миннатдор хоҳам буд). Аммо ин чандон муҳим нест, зеро мо танҳо ин суроға ҳангоми насб лозим мешавад ва вақте ки Openstack пурра ҷойгир карда мешавад, ба он ниёз нахоҳем дошт.

Минбаъд, мо як мошини зериобӣ эҷод мекунем:


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

Ҳангоми насб, шумо ҳама параметрҳои заруриро муқаррар мекунед, ба монанди номи мошин, паролҳо, корбарон, серверҳои ntp ва ғайра, шумо метавонед портҳоро фавран танзим кунед, аммо шахсан барои ман, пас аз насб, ворид шудан ба мошин тавассути тавассути он осонтар аст. консол ва файлҳои заруриро ислоҳ кунед. Агар шумо аллакай тасвири тайёр дошта бошед, шумо метавонед онро истифода баред ё он чизеро, ки ман кардаам, иҷро кунед - тасвири минималии Centos 7-ро зеркашӣ кунед ва онро барои насб кардани VM истифода баред.

Пас аз насби бомуваффақият, шумо бояд мошини маҷозӣ дошта бошед, ки дар он шумо метавонед undercloud насб кунед


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

Аввалан, асбобҳои заруриро барои раванди насб насб кунед:

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

Насби зери абр

Мо корбари стек эҷод мекунем, парол таъин мекунем, онро ба sudoer илова мекунем ва ба ӯ имкон медиҳем, ки фармонҳои решаро тавассути sudo бидуни ворид кардани парол иҷро кунад:


useradd stack
passwd stack

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

Ҳоло мо номи пурраи зери абрро дар файли ҳостҳо муайян мекунем:


vi /etc/hosts

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

Баъдан, мо анборҳо илова мекунем ва нармафзори лозимаро насб мекунем:


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

Эзоҳ: агар шумо нақшаи насб кардани ceph надошта бошед, пас ба шумо лозим нест, ки фармонҳои марбут ба ceph ворид шавед. Ман версияи Квинсро истифода кардам, аммо шумо метавонед ҳар чизи дигареро, ки ба шумо маъқул аст, истифода баред.

Баъдан, файли конфигуратсияи зери абрро ба стек директорияи хонагии корбар нусхабардорӣ кунед:


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

Ҳоло мо бояд ин файлро ислоҳ карда, онро ба насби худ танзим кунем.

Шумо бояд ин сатрҳоро ба аввали файл илова кунед:

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

Пас, биёед аз танзимот гузарам:

undercloud_hostname — номи пурраи сервери зери абр, бояд ба вуруд дар сервери DNS мувофиқат кунад

local_ip — суроғаи зери абрҳои маҳаллӣ барои таъмини шабака

network_gateway — ҳамон суроғаи маҳаллӣ, ки ҳангоми насби гиреҳҳои абрӣ ҳамчун дарвозаи дастрасӣ ба ҷаҳони беруна амал мекунад, инчунин бо IP маҳаллӣ мувофиқат мекунад.

undercloud_public_host — суроғаи берунии API, ҳама гуна суроғаи ройгон аз шабакаи таъминкунанда таъин карда мешавад

undercloud_admin_host суроғаи дохилии API, ҳама гуна суроғаи ройгон аз шабакаи таъмин таъин карда мешавад

undercloud_nameservers - сервери DNS

сертификати_хизматрасонӣ - ин сатр дар мисоли ҷорӣ хеле муҳим аст, зеро агар шумо онро нодуруст таъин накунед, шумо ҳангоми насб хатогӣ хоҳед гирифт, мушкилот дар трекери хатогии Red Hat тасвир шудааст.

интерфейси маҳаллӣ интерфейс дар таъмини шабака. Ин интерфейс ҳангоми ҷойгиркунии зери абрҳо аз нав танзим карда мешавад, аз ин рӯ ба шумо лозим аст, ки дар зери абр ду интерфейс дошта бошед - яке барои дастрасӣ ба он, дуюмаш барои таъминкунӣ

local_mtu — МТУ. Азбаски мо лабораторияи озмоишӣ дорем ва ман дар бандарҳои коммутатори OVS MTU 1500 дорам, онро ба 1450 муқаррар кардан лозим аст, то бастаҳои дар VxLAN инкапсулшуда гузаранд.

network_cidr — шабакаи таъминот

массив — бо истифода аз NAT барои дастрасӣ ба шабакаи беруна

masquerade_network - шабакае, ки NAT карда мешавад

dhcp_start — суроғаи ибтидоии ҳавзи суроғаҳо, ки аз он суроғаҳо ҳангоми густариши абрӣ ба гиреҳҳо таъин карда мешаванд

dhcp_end — суроғаи ниҳоии ҳавзи суроғаҳо, ки аз он суроғаҳо ҳангоми густариши абрӣ ба гиреҳҳо таъин карда мешаванд

inspection_iprange - як ҳавзи суроғаҳои барои интроспекция зарурӣ (бояд бо ҳавзи дар боло зикршуда мувофиқат накунад)

scheduler_max_attempts — шумораи максималии кӯшишҳои насб кардани абрҳои абрӣ (бояд аз шумораи гиреҳҳо зиёд ё баробар бошад)

Пас аз тавсифи файл, шумо метавонед фармонро барои ҷойгиркунии undercloud диҳед:


openstack undercloud install

Тартиб вобаста ба оҳанатон аз 10 то 30 дақиқа мегирад. Дар ниҳоят, шумо бояд баромадро чунин бинед:

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.

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

Ин баромад мегӯяд, ки шумо зери абрро бомуваффақият насб кардаед ва шумо ҳоло метавонед ҳолати зери абрро тафтиш кунед ва ба насби абрҳои абрӣ идома диҳед.

Агар шумо ба баромади ifconfig назар кунед, шумо хоҳед дид, ки интерфейси пули нав пайдо шудааст

[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

Ҷойгиркунии абрӣ акнун тавассути ин интерфейс амалӣ карда мешавад.

Аз баромади зер шумо мебинед, ки мо ҳама хидматҳоро дар як гиреҳ дорем:

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

Дар зер конфигуратсияи қисми шабакаи зериобӣ оварда шудааст:


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

Насбкунии абрӣ

Дар айни замон мо танҳо абрҳои абрӣ дорем ва мо гиреҳҳои кофӣ надорем, ки аз онҳо абрҳои абрӣ ҷамъ карда шаванд. Аз ин рӯ, пеш аз ҳама, биёед мошинҳои виртуалии ба мо лозимаро ҷойгир кунем. Ҳангоми ҷойгиркунӣ, худи undercloud OS ва нармафзори заруриро дар мошини overcloud насб мекунад - яъне ба мо лозим нест, ки мошинро пурра ҷойгир кунем, балки танҳо барои он диск (ё дискҳо) эҷод кунед ва параметрҳои онро муайян кунед - яъне , дар асл, мо сервери луч бе OS насбшуда дар он мегирем.

Биёед ба папка бо дискҳои мошинҳои виртуалии худ равем ва дискҳои андозаи лозимаро созем:


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

Азбаски мо ҳамчун реша кор карда истодаем, мо бояд соҳиби ин дискҳоро иваз кунем, то бо ҳуқуқҳо мушкил нашавем:


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

Эзоҳ: агар шумо нақша надоред, ки ceph-ро барои омӯзиши он насб кунед, пас фармонҳо ҳадди аққал 3 гиреҳро бо ҳадди аққал ду диск эҷод намекунанд, аммо дар қолаб нишон медиҳанд, ки дискҳои виртуалӣ vda, vdb ва ғайра истифода мешаванд.

Аҷоиб, ҳоло мо бояд ҳамаи ин мошинҳоро муайян кунем:


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 

Дар охир фармони -print-xml > /tmp/storage-1.xml мавҷуд аст, ки файли xml бо тавсифи ҳар як мошин дар ҷузвдони /tmp/ эҷод мекунад; агар шумо онро илова накунед, шумо нахоҳед шуд қодир ба муайян кардани мошинҳои виртуалӣ.

Ҳоло мо бояд ҳамаи ин мошинҳоро дар 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 ~]#

Ҳоло як нозуки хурд - tripleO барои идоракунии серверҳо ҳангоми насб ва интроспекция IPMI-ро истифода мебарад.

Интроспекция ин раванди санҷиши сахтафзор бо мақсади ба даст овардани параметрҳои он барои таъмини минбаъдаи гиреҳҳо мебошад. Интроспекция бо истифода аз ironic, хидмате, ки барои кор бо серверҳои металлии луч пешбинӣ шудааст, сурат мегирад.

Аммо мушкилот дар ин ҷост - дар ҳоле ки серверҳои сахтафзори IPMI порти алоҳида доранд (ё порти муштарак, аммо ин муҳим нест), пас мошинҳои виртуалӣ чунин портҳо надоранд. Дар ин ҷо асобачае бо номи vbmc ба кӯмаки мо меояд - утилитае, ки ба шумо имкон медиҳад ба порти IPMI тақлид кунед. Ба ин нозуки диққат додан лозим аст, махсусан барои онҳое, ки мехоҳанд чунин лабораторияро дар гипервизори ESXI таъсис диҳанд - ростқавлона, ман намедонам, ки он аналоги vbmc дорад, бинобар ин, пеш аз ҷойгир кардани ҳама чиз дар бораи ин масъала ҳайрон шудан лозим аст. .

vbmc насб кунед:


yum install yum install python2-virtualbmc

Агар OS шумо бастаро наёбад, пас анборро илова кунед:

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

Акнун мо утилитаро насб кардем. Ҳама чиз дар ин ҷо ба дараҷаи расвоӣ аст. Ҳоло мантиқист, ки дар рӯйхати vbmc серверҳо вуҷуд надоранд


[root@hp-gen9 ~]# vbmc list

[root@hp-gen9 ~]# 

Барои пайдо шудани онҳо, онҳо бояд ба таври дастӣ чунин эълон карда шаванд:


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

Ман фикр мекунам, ки синтаксиси фармон бидуни шарҳ равшан аст. Бо вуҷуди ин, ҳоло ҳама ҷаласаҳои мо дар ҳолати ПОЁН қарор доранд. Барои он ки онҳо ба ҳолати UP гузаранд, шумо бояд онҳоро фаъол созед:


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

Ва ламси ниҳоӣ - шумо бояд қоидаҳои брандмауэрро ислоҳ кунед (ё онро комилан хомӯш кунед):


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

Акнун биёед ба зери абр равем ва тафтиш кунем, ки ҳама чиз кор мекунад. Суроғаи мошини мизбон 192.168.255.200 аст, дар зери абр мо ҳангоми омодагӣ ба ҷойгиркунӣ бастаи зарурии ipmitool илова кардем:


[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

Тавре ки шумо мебинед, мо гиреҳи идоракуниро тавассути vbmc бомуваффақият оғоз кардем. Акнун биёед онро хомӯш кунем ва идома диҳем:


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

Қадами навбатӣ интроспекцияи гиреҳҳое мебошад, ки дар онҳо абрҳои абрӣ насб карда мешаванд. Барои ин мо бояд файли jsonро бо тавсифи гиреҳҳои худ омода созем. Лутфан таваҷҷӯҳ намоед, ки бар хилофи насб дар серверҳои бараҳна, файл портеро нишон медиҳад, ки дар он vbmc барои ҳар як мошин кор мекунад.


[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

Эзоҳ: гиреҳи идоракунӣ ду интерфейс дорад, аммо дар ин ҳолат ин муҳим нест, дар ин насб як барои мо кофӣ хоҳад буд.

Ҳоло мо файли json-ро омода мекунем. Мо бояд суроғаи кӯкнори портеро, ки тавассути он таъминкунӣ анҷом дода мешавад, нишон диҳем, параметрҳои гиреҳҳоро нишон диҳем, ба онҳо ном гузорем ва чӣ гуна ба 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"
        }
    ]
}

Акнун ба мо лозим аст, ки тасвирҳоро барои иронӣ омода созем. Барои ин, онҳоро тавассути wget зеркашӣ кунед ва насб кунед:

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

Бор кардани тасвирҳо ба зери абр:

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

Санҷед, ки ҳамаи тасвирҳо бор карда шудаанд


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

Боз як чизи дигар - шумо бояд сервери 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 ~]$

Акнун мо метавонем фармонро барои интроспекция диҳем:

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

Тавре ки шумо аз баромад мебинед, ҳама чиз бе хатогӣ анҷом ёфт. Биёед тафтиш кунем, ки ҳамаи гиреҳҳо дар ҳолати дастрасанд:


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

Агар гиреҳҳо дар ҳолати дигар бошанд, одатан идорашаванда бошанд, пас чизе хато кард ва шумо бояд ба гузориш нигаред ва фаҳмед, ки чаро ин ҳодиса рӯй дод. Дар хотир доред, ки дар ин сенария мо виртуализатсияро истифода мебарем ва шояд хатогиҳои марбут ба истифодаи мошинҳои виртуалӣ ё vbmc вуҷуд дошта бошанд.

Минбаъд, мо бояд нишон диҳем, ки кадом гиреҳ кадом вазифаро иҷро мекунад - яъне профилеро, ки гиреҳ бо он ҷойгир мекунад, нишон диҳед:


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

Профилро барои ҳар як гиреҳ муайян кунед:


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

Биёед тафтиш кунем, ки мо ҳама чизро дуруст иҷро кардем:


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

Агар ҳама чиз дуруст бошад, мо фармон медиҳем, ки абрро ҷойгир кунем:

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

Дар насби воқеӣ, қолибҳои фармоишӣ табиатан истифода мешаванд, дар ҳолати мо ин равандро хеле душвор хоҳад кард, зеро ҳар як таҳрир дар қолаб бояд шарҳ дода шавад. Тавре ки қаблан навишта шуда буд, ҳатто як насби оддӣ барои мо барои дидани он ки чӣ тавр кор мекунад, кофӣ хоҳад буд.

Эзоҳ: тағирёбандаи --libvirt-type qemu дар ин ҳолат зарур аст, зеро мо виртуализатсияи лонаро истифода хоҳем кард. Дар акси ҳол, шумо наметавонед мошинҳои виртуалиро идора кунед.

Ҳоло шумо тақрибан як соат ва ё шояд бештар аз он вақт доред (вобаста ба имкониятҳои сахтафзор) ва шумо танҳо умедворед, ки пас аз ин вақт шумо паёми зеринро хоҳед дид:


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

Ҳоло шумо як версияи қариб мукаммали openstack доред, ки шумо метавонед дар он омӯзиш, озмоиш ва ғайра.

Биёед тафтиш кунем, ки ҳама чиз дуруст кор мекунад. Дар стек директорияи хонагии корбар ду файл мавҷуд аст - як stackrc (барои идоракунии зери абр) ва дуюми overcloudrc (барои идоракунии абрҳои абрӣ). Ин файлҳо бояд ҳамчун сарчашма нишон дода шаванд, зеро онҳо дорои маълумоти зарурӣ барои тасдиқи.


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

Насби ман ҳоло ҳам як ламси хурдро талаб мекунад - илова кардани масир ба контроллер, зеро мошине, ки ман бо он кор мекунам, дар шабакаи дигар аст. Барои ин, ба контрол-1 дар зери ҳисоби администратори гармӣ гузаред ва маршрутро қайд кунед


(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

Хуб, акнун шумо метавонед ба уфуқ биравед. Ҳама маълумот - суроғаҳо, логин ва парол - дар файли /home/stack/overcloudrc мебошанд. Диаграммаи ниҳоӣ чунин менамояд:

Муқаддима ба қисми шабакавии инфрасохтори абрӣ

Дар омади гап, дар насби мо суроғаҳои мошинҳо тавассути DHCP дода мешуданд ва тавре мебинед, онҳо "тасодуфӣ" дода мешаванд. Шумо метавонед дар қолаб ба таври қатъӣ муайян кунед, ки агар шумо лозим бошад, кадом суроғаро ҳангоми ҷойгиркунӣ ба кадом мошин замима кардан лозим аст.

Трафик байни мошинҳои виртуалӣ чӣ гуна мегузарад?

Дар ин мақола мо се варианти гузариши трафикро дида мебароем

  • Ду мошин дар як гипервизор дар як шабакаи L2
  • Ду мошин дар гипервизорҳои гуногун дар як шабакаи L2
  • Ду мошин дар шабакаҳои гуногун (решавӣ байнишабакавӣ)

Мо парвандаҳоро бо дастрасӣ ба ҷаҳони беруна тавассути шабакаи беруна, бо истифода аз суроғаҳои шинокунанда ва инчунин масири тақсимшуда бори дигар баррасӣ хоҳем кард, ҳоло мо ба трафики дохилӣ таваҷҷӯҳ хоҳем кард.

Барои тафтиш, биёед диаграммаи зеринро якҷоя кунем:

Муқаддима ба қисми шабакавии инфрасохтори абрӣ

Мо 4 мошини виртуалӣ таъсис додем - 3 дар як шабакаи L2 - net-1 ва 1 дигар дар шабакаи 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 ~]$ 

Биёед бубинем, ки мошинҳои сохташуда дар кадом гипервизорҳо ҷойгиранд:

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

(абрӣ) [stack@undercloud ~]$
Мошинхои вм-1 ва вм-3 дар хисоббарор-0, машинахои vm-2 ва вм-4 дар гирехи хисоббарор-1 чойгир шудаанд.

Илова бар ин, роутери виртуалӣ барои имкон додани масир байни шабакаҳои мушаххас сохта шудааст:

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

Роутер дорои ду порти виртуалӣ мебошад, ки ҳамчун шлюз барои шабакаҳо амал мекунанд:

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

Аммо пеш аз он ки мо бубинем, ки трафик чӣ гуна ҷараён дорад, биёед бубинем, ки мо дар гиреҳи идоракунӣ (ки он ҳам гиреҳи шабака аст) ва дар гиреҳи ҳисоббарорӣ чӣ дорем. Биёед бо гиреҳи ҳисобкунӣ оғоз кунем.


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

Дар айни замой узел се купруки овс — бр-инт, бр-тун, бр-экс дорад. Дар байни онҳо, чунон ки мебинем, маҷмӯи интерфейсҳо мавҷуданд. Барои осонии фаҳмиш, биёед ҳамаи ин интерфейсҳоро дар диаграмма тарҳрезӣ кунем ва бубинем, ки чӣ мешавад.

Муқаддима ба қисми шабакавии инфрасохтори абрӣ

Ба суроғаҳое, ки нақбҳои VxLAN бардошта мешаванд, дидан мумкин аст, ки як нақб ба ҳисоббарорӣ-1 (192.168.255.26), туннели дуюм ба идора-1 (192.168.255.15) баланд мешавад. Аммо аз ҳама ҷолиб он аст, ки br-ex интерфейсҳои физикӣ надорад ва агар шумо ба он нигоҳ кунед, ки чӣ гуна ҷараёнҳо танзим карда шудаанд, шумо мебинед, ки ин пул танҳо дар айни замон трафикро коҳиш дода метавонад.


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

Тавре ки шумо аз баромад мебинед, суроға мустақиман ба порти физикӣ пайваст карда мешавад, на ба интерфейси пули виртуалӣ.


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

Тибқи қоидаи аввал, ҳама чизест, ки аз бандари phy-br-ex омадааст, бояд партофта шавад.
Воқеан, дар айни замон ҷои дигаре вуҷуд надорад, ки ҳаракати нақлиёт ба ин купрук ба ҷуз аз ин интерфейс (интерфейс бо br-int) ворид шавад ва аз рӯи қатраҳо, трафики BUM аллакай ба пул парвоз кардааст.

Яъне трафик метавонад ин гиреҳро танҳо тавассути нақби VxLAN тарк кунад ва ҳеҷ чизи дигар. Аммо, агар шумо DVR-ро фаъол созед, вазъият тағир меёбад, аммо мо бо ин дафъаи дигар сарукор хоҳем кард. Ҳангоми истифодаи изолятсияи шабакавӣ, масалан бо истифода аз vlanҳо, шумо на як интерфейси L3 дар vlan 0, балки якчанд интерфейсҳо хоҳед дошт. Аммо, трафики VxLAN гиреҳро ҳамин тавр тарк мекунад, аммо инчунин дар як намуди vlan бахшидашуда фаро гирифта шудааст.

Мо гиреҳи ҳисобкуниро ҷудо кардем, биёед ба гиреҳи назорат гузарем.


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

Дар асл, мо метавонем бигӯем, ки ҳама чиз якхела аст, аммо суроғаи IP дигар на дар интерфейси физикӣ, балки дар пули виртуалӣ аст. Ин барои он анҷом дода мешавад, ки ин бандар портест, ки тавассути он трафик ба ҷаҳони беруна мебарояд.


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

Ин порт ба пули br-ex баста шудааст ва азбаски дар он тегҳои vlan вуҷуд надоранд, ин порт як бандари магистралӣ мебошад, ки дар он ҳама вланҳо иҷозат дода мешаванд, ҳоло трафик бе тег берун меравад, тавре ки бо vlan-id 0 дар баромади боло.

Муқаддима ба қисми шабакавии инфрасохтори абрӣ

Ҳама чизи дигар дар айни замон ба гиреҳи ҳисобкунӣ монанд аст - ҳамон пулҳо, ҳамон нақбҳо, ки ба ду гиреҳи ҳисоббарорӣ мераванд.

Мо гиреҳҳои нигаҳдорӣ дар ин мақоларо баррасӣ нахоҳем кард, аммо барои фаҳмидани он бояд гуфт, ки қисми шабакаи ин гиреҳҳо то ба дараҷаи нангин аст. Дар ҳолати мо, танҳо як порти физикӣ (eth0) мавҷуд аст, ки ба он суроғаи IP таъин шудааст ва ҳамин тавр. Туннельхои VxLAN, купрукхои туннели ва гайра вучуд надоранд - умуман овс нест, зеро дар он ягон маъно нест. Ҳангоми истифодаи изолятсияи шабака, ин гиреҳ дорои ду интерфейс хоҳад буд (портҳои ҷисмонӣ, ҷисмонӣ ё танҳо ду влан - муҳим нест - аз он чизе, ки шумо мехоҳед вобаста аст) - яке барои идоракунӣ, дуюм барои трафик (навиштан ба диски VM) , хондан аз диск ва ғ.)

Мо фаҳмидем, ки мо дар гиреҳҳо дар сурати набудани ягон хидмат чӣ дорем. Акнун биёед 4 мошини виртуалиро оғоз кунем ва бубинем, ки схемаи дар боло тавсифшуда чӣ гуна тағир меёбад - мо бояд портҳо, роутерҳои виртуалӣ ва ғайра дошта бошем.

То ҳол шабакаи мо чунин аст:

Муқаддима ба қисми шабакавии инфрасохтори абрӣ

Мо дар ҳар як гиреҳи компютер ду мошини виртуалӣ дорем. Истифодаи compute-0 ҳамчун мисол, биёед бубинем, ки ҳама чиз чӣ гуна дохил карда шудааст.


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

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

Мошин танҳо як интерфейси виртуалӣ дорад - 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 ~]$ 

Ин интерфейс дар bridge 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 ~]$ 

Тавре ки шумо аз баромад мебинед, дар купрук танҳо ду интерфейс мавҷуд аст - tap95d96a75-a0 ва qvb95d96a75-a0.

Дар ин ҷо дар бораи намудҳои дастгоҳҳои шабакаи виртуалӣ дар OpenStack каме таваққуф кардан лозим аст:
vtap - интерфейси маҷозӣ, ки ба инстансия замима шудааст (VM)
qbr - пули Linux
qvb ва qvo - ҷуфти vEth ба пули Linux ва пули Open vSwitch пайваст
br-int, br-tun, br-vlan — Кушодани пулҳои vSwitch
patch-, int-br-, phy-br- - Интерфейсҳои патч vSwitch, ки пулҳоро пайваст мекунанд
qg, qr, ha, fg, sg - Портҳои кушодаи vSwitch, ки аз ҷониби дастгоҳҳои виртуалӣ барои пайвастшавӣ ба OVS истифода мешаванд

Тавре ки шумо мефаҳмед, агар мо дар купрук бандари qvb95d96a75-a0 дошта бошем, ки ҷуфти vEth аст, пас дар ҷое ҳамтои он мавҷуд аст, ки онро мантиқан бояд qvo95d96a75-a0 номид. Биёед бубинем, ки дар 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 ~]$ 

Чунон ки мебинем, порт дар br-int. Br-int ҳамчун коммутаторе амал мекунад, ки портҳои мошини виртуалиро қатъ мекунад. Илова ба qvo95d96a75-a0, дар баромад порти qvo5bd37136-47 намоён аст. Ин бандари мошини дуюми виртуалӣ аст. Дар натиҷа диаграммаи мо ҳоло чунин менамояд:

Муқаддима ба қисми шабакавии инфрасохтори абрӣ

Саволе, ки бояд хонандаи бодиққатро фавран ба худ ҷалб кунад - пули Linux байни порти мошини виртуалӣ ва порти OVS чист? Гап дар он аст, ки барои муҳофизати мошин, гурӯҳҳои амниятӣ истифода мешаванд, ки чизе ҷуз iptables нест. OVS бо iptables кор намекунад, аз ин рӯ ин "асғола" ихтироъ шудааст. Бо вуҷуди ин, он кӯҳна шуда истодааст - онро дар релизҳои нав бо conntrack иваз мекунад.

Яъне, дар ниҳоят схема чунин менамояд:

Муқаддима ба қисми шабакавии инфрасохтори абрӣ

Ду мошин дар як гипервизор дар як шабакаи L2

Азбаски ин ду VM дар як шабакаи L2 ва дар як гипервизор ҷойгиранд, трафики байни онҳо мантиқан ба таври маҳаллӣ тавассути br-int ҷараён мегирад, зеро ҳарду мошинҳо дар як VLAN хоҳанд буд:


[heat-admin@overcloud-novacompute-0 ~]$ sudo virsh domiflist instance-00000001
Interface  Type       Source     Model       MAC
-------------------------------------------------------
tap95d96a75-a0 bridge     qbr95d96a75-a0 virtio      fa:16:3e:44:98:20

[heat-admin@overcloud-novacompute-0 ~]$ 
[heat-admin@overcloud-novacompute-0 ~]$ 
[heat-admin@overcloud-novacompute-0 ~]$ sudo virsh domiflist instance-00000003
Interface  Type       Source     Model       MAC
-------------------------------------------------------
tap5bd37136-47 bridge     qbr5bd37136-47 virtio      fa:16:3e:83:ad:a4

[heat-admin@overcloud-novacompute-0 ~]$ 
[heat-admin@overcloud-novacompute-0 ~]$ sudo ovs-appctl fdb/show br-int 
 port  VLAN  MAC                Age
    6     1  fa:16:3e:83:ad:a4    0
    3     1  fa:16:3e:44:98:20    0
[heat-admin@overcloud-novacompute-0 ~]$ 

Ду мошин дар гипервизорҳои гуногун дар як шабакаи L2

Акнун биёед бубинем, ки трафик байни ду мошин дар як шабакаи L2, аммо дар гипервизорҳои гуногун ҷойгир аст, чӣ гуна мегузарад. Рости гап, ҳеҷ чиз тағир намеёбад, танҳо трафик байни гипервизорҳо тавассути нақби vxlan мегузарад. Биёед як мисолро дида бароем.

Суроғаҳои мошинҳои виртуалӣ, ки мо дар байни онҳо трафикро мушоҳида мекунем:

[heat-admin@overcloud-novacompute-0 ~]$ sudo virsh domiflist instance-00000001
Interface  Type       Source     Model       MAC
-------------------------------------------------------
tap95d96a75-a0 bridge     qbr95d96a75-a0 virtio      fa:16:3e:44:98:20

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


[heat-admin@overcloud-novacompute-1 ~]$ sudo virsh domiflist instance-00000002
Interface  Type       Source     Model       MAC
-------------------------------------------------------
tape7e23f1b-07 bridge     qbre7e23f1b-07 virtio      fa:16:3e:72:ad:53

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

Мо ба ҷадвали интиқол дар br-int дар 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 ~]

Трафик бояд ба порти 2 равад - биёед бубинем, ки он чӣ гуна порт аст:

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

Ин patch-tun аст, яъне интерфейс дар br-tun. Биёед бубинем, ки бо бастаи 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 ~]$ 

Баста дар VxLAN бастабандӣ шуда, ба порти 2 фиристода мешавад. Биёед бубинем, ки порти 2 ба куҷо мебарад:

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

Ин нақби vxlan дар компютер-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 ~]$

Биёед ба ҳисоббарорӣ-1 равем ва бубинем, ки бо баста чӣ мешавад:

[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 дар ҷадвали интиқоли br-int дар compute-1 ҷойгир аст ва тавре ки аз баромади боло дида мешавад, он тавассути порти 2, ки бандари сӯи 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

Хуб, пас мо мебинем, ки дар br-int дар compute-1 як макони таъинот кӯкнор мавҷуд аст:

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

Яъне, бастаи қабулшуда ба порти 3 парвоз мекунад, ки дар паси он аллакай як мошини виртуалӣ - 00000003 мавҷуд аст.

Зебоии ҷойгиркунии Openstack барои омӯзиш дар инфрасохтори виртуалӣ дар он аст, ки мо метавонем ба осонӣ трафикро байни гипервизорҳо сабт кунем ва бубинем, ки бо он чӣ рӯй медиҳад. Ин аст он чизе ки мо ҳоло мекунем, tcpdump-ро дар бандари vnet ба сӯи ҳисоббарор-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*******************

Сатри аввал нишон медиҳад, ки Патек аз суроғаи 10.0.1.85 ба суроғаи 10.0.1.88 (трафики ICMP) меравад ва он дар бастаи VxLAN бо vni 22 печонида шудааст ва баста аз ҳост 192.168.255.19 (ҳисоб-0) ба мизбони 192.168.255.26 мегузарад. .1 (ҳисоб кардан-XNUMX). Мо метавонем тафтиш кунем, ки VNI ба он чизе, ки дар ovs нишон дода шудааст, мувофиқат мекунад.

Биёед ба ин сатр баргардем actions=load:0->NXM_OF_VLAN_TCI[],load:0x16->NXM_NX_TUN_ID[],output:2. 0x16 дар системаи шумораҳои шонздаҳӣ vni аст. Биёед ин ададро ба системаи 16 табдил диҳем:


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

Яъне vni ба вокеият мувофик аст.

Сатри дуюм трафики бозгаштро нишон медиҳад, хуб, шарҳ додани он ҷоиз нест, дар он ҷо ҳама чиз равшан аст.

Ду мошин дар шабакаҳои гуногун (маршруткунии байнишабака)

Ҳолати охирин барои имрӯз масир байни шабакаҳо дар дохили як лоиҳа бо истифода аз роутери виртуалӣ мебошад. Мо парвандаро бидуни DVR баррасӣ мекунем (мо онро дар мақолаи дигар дида мебароем), аз ин рӯ масир дар гиреҳи шабака рух медиҳад. Дар ҳолати мо, гиреҳи шабака дар як объекти алоҳида ҷойгир карда нашудааст ва дар гиреҳи идоракунӣ ҷойгир аст.

Аввалан, биёед бубинем, ки масир кор мекунад:

$ 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

Азбаски дар ин ҳолат баста бояд ба шлюз равад ва ба он ҷо равона карда шавад, мо бояд суроғаи MAC-и шлюзро пайдо кунем, ки барои он мо дар мисоли ҷадвали ARP-ро дида мебароем:

$ 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

Акнун биёед бубинем, ки трафик бо макони таъинот (10.0.1.254) fa:16:3e:c4:64:70 бояд ба куҷо фиристода шавад:

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

Биёед бубинем, ки бандари 2 ба куҷо мебарад:

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

Ҳама чиз мантиқист, ҳаракат ба бр-тун меравад. Биёед бубинем, ки он дар кадом туннели vxlan печонида мешавад:

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

Бандари сеюм туннели 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 ~]$ 

Ки ба гиреҳи назорат назар мекунад:

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

Трафик ба гиреҳи назоратӣ расидааст, бинобар ин мо бояд ба он равем ва бубинем, ки масир чӣ гуна сурат мегирад.

Тавре ки шумо дар ёд доред, гиреҳи идоракунӣ дар дохили он маҳз ба гиреҳи ҳисоббарорӣ монанд буд - ҳамон се пул, танҳо br-ex порти физикӣ дошт, ки тавассути он гиреҳ метавонад трафикро берун фиристад. Эҷоди мисолҳо конфигуратсияро дар гиреҳҳои ҳисоббарорӣ тағйир дод - bridge linux, iptables ва интерфейсҳо ба гиреҳҳо илова карда шуданд. Эҷоди шабакаҳо ва роутери виртуалӣ инчунин дар конфигуратсияи гиреҳи идоракунӣ тамғаи худро гузошт.

Ҳамин тавр, маълум аст, ки суроғаи дарвозаи MAC бояд дар ҷадвали интиқоли br-int дар гиреҳи идоракунӣ бошад. Биёед тафтиш кунем, ки он дар он ҷост ва ба куҷо нигоҳ карда мешавад:

[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 аз порти qr-0c52b15f-8f намоён аст. Агар ба рӯйхати портҳои виртуалӣ дар Openstack баргардем, ин намуди порт барои пайваст кардани дастгоҳҳои гуногуни виртуалӣ ба OVS истифода мешавад. Аниқтараш, qr порти роутери маҷозӣ мебошад, ки ҳамчун фазои ном муаррифӣ мешавад.

Биёед бубинем, ки кадом фазоҳои номҳо дар сервер мавҷуданд:

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

То се нусха. Аммо аз рӯи номҳо, шумо метавонед ҳадафи ҳар яки онҳоро тахмин кунед. Мо ба мисолҳои дорои ID 0 ва 1 дертар бармегардем, ҳоло мо ба фазои номи 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 ~]$ 

Ин фазои ном ду фазои дохилиро дар бар мегирад, ки мо қаблан офаридаем. Ҳарду портҳои виртуалӣ ба br-int илова карда шуданд. Биёед суроғаи mac-и порти qr-0c52b15f-8f-ро тафтиш кунем, зеро трафик, аз рӯи суроғаи макони таъинот, ба ин интерфейс меравад.

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

Яъне, дар ин ҳолат ҳама чиз тибқи қонунҳои масири стандартӣ кор мекунад. Азбаски трафик барои ҳост 10.0.2.8 таъин шудааст, он бояд тавассути интерфейси дуюми qr-92fa49b5-54 баромада, тавассути нақби vxlan ба гиреҳи ҳисоббарорӣ гузарад:


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

Ҳама чиз мантиқӣ аст, тааҷҷубовар нест. Биёед бубинем, ки суроғаи кӯкнори ҳост 10.0.2.8 дар 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 ~]$ 

Чи тавре ки интизор мерафт, трафик ба бр-тун меравад, биёед бубинем, ки трафик ба кадом тунел меравад:

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

Харакати наклиёт ба туннель ба хисоб-1 меравад. Хуб, дар compute-1 ҳама чиз оддӣ аст - аз br-tun баста ба br-int ва аз он ҷо ба интерфейси мошини виртуалӣ мегузарад:

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

Биёед тафтиш кунем, ки ин воқеан интерфейси дуруст аст:

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

Дарвоқеъ, мо тамоми роҳро тавассути баста гузаштем. Ман фикр мекунам, ки шумо пай бурдед, ки трафик аз нақбҳои гуногуни vxlan гузашта, бо VNI-ҳои гуногун баромад. Биёед бубинем, ки инҳо чӣ гуна VNI мебошанд, пас аз он мо дар бандари назорати гиреҳ партов ҷамъ мекунем ва боварӣ ҳосил мекунем, ки трафик ба таври дар боло тавсифшуда ҷараён дорад.
Ҳамин тариқ, нақби ҳисобкунак-0 дорои амалҳои зерин мебошад=борбор:0->NXM_OF_VLAN_TCI[],борбор:0x16->NXM_NX_TUN_ID[], баромад:3. Биёед 0x16-ро ба системаи рақами даҳӣ табдил диҳем:


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

Тунел барои ҳисоббарор-1 дорои VNI-и зерин аст: амалҳо=борбор:0->NXM_OF_VLAN_TCI[],борбор:0x63->NXM_NX_TUN_ID[], баромад:2. Биёед 0x63-ро ба системаи рақами даҳӣ табдил диҳем:


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

Хуб, акнун биёед ба партовгоҳ назар андозем:

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

Бастаи аввал бастаи vxlan аз ҳост 192.168.255.19 (ҳисоббарорӣ-0) ба ҳост 192.168.255.15 (назорат-1) бо vni 22 мебошад, ки дар дохили он бастаи ICMP аз ҳост 10.0.1.85 ба ҳост 10.0.2.8 бастабанди шудааст. Тавре ки мо дар боло ҳисоб кардем, vni ба он чизе ки мо дар баромад дидем, мувофиқат мекунад.

Бастаи дуюм бастаи vxlan аз ҳост 192.168.255.15 (назорат-1) ба ҳост 192.168.255.26 (ҳисоб кардан-1) бо vni 99 мебошад, ки дар дохили он бастаи ICMP аз ҳост 10.0.1.85 ба ҳост 10.0.2.8 бастабанди шудааст. Тавре ки мо дар боло ҳисоб кардем, vni ба он чизе ки мо дар баромад дидем, мувофиқат мекунад.

Ду бастаи навбатӣ трафики бозгашт аз 10.0.2.8 на 10.0.1.85 мебошанд.

Яъне, дар ниҳоят мо схемаи гиреҳи идоракунии зеринро гирифтем:

Муқаддима ба қисми шабакавии инфрасохтори абрӣ

Ба назар чунин мерасад? Мо дар бораи ду фазои ном фаромӯш кардем:

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

Вақте ки мо дар бораи меъмории платформаи абрӣ сӯҳбат кардем, хуб мебуд, агар мошинҳо суроғаҳоро аз сервери DHCP ба таври худкор қабул кунанд. Инҳо ду сервери DHCP барои ду шабакаи мо 10.0.1.0/24 ва 10.0.2.0/24 мебошанд.

Биёед тафтиш кунем, ки ин дуруст аст. Дар ин фазои ном танҳо як суроға мавҷуд аст - 10.0.1.1 - суроғаи худи сервери DHCP ва он инчунин ба 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

Биёед бубинем, ки оё равандҳои дорои qdhcp-67a3798c-32c0-4c18-8502-2531247e3cc2 дар номи онҳо дар гиреҳи идоракунӣ мавҷуданд:


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

Чунин раванд вуҷуд дорад ва дар асоси маълумоти дар баромади боло овардашуда, мо метавонем, масалан, бубинем, ки мо дар айни замон чӣ гуна иҷора дорем:

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

Дар натиҷа, мо маҷмӯи хидматҳои зеринро дар гиреҳи назорат мегирем:

Муқаддима ба қисми шабакавии инфрасохтори абрӣ

Хуб, дар хотир доред - ин ҳамагӣ 4 мошин, 2 шабакаи дохилӣ ва як роутери виртуалӣ аст... Мо ҳоло дар ин ҷо шабакаҳои беруна надорем, як қатор лоиҳаҳои гуногун, ки ҳар кадоми онҳо шабакаҳои худро доранд (якҷоя) ва мо дорем роутери тақсимшуда хомӯш шуд ва дар ниҳоят, дар курсии санҷишӣ танҳо як гиреҳи идоракунӣ мавҷуд буд (барои таҳаммулпазирии хатоҳо бояд кворуми се гиреҳ мавҷуд бошад). Мантиқист, ки дар тиҷорат ҳама чиз "каме" мураккабтар аст, аммо дар ин мисоли оддӣ мо мефаҳмем, ки он чӣ гуна бояд кор кунад - оё шумо 3 ё 300 фазои ном доред, албатта муҳим аст, аммо аз нуқтаи назари кори тамоми сохтор, ҳеҷ чиз хеле тағир намеёбад ... гарчанде ки шумо SDN-и фурӯшандаро пайваст намекунед. Аммо ин як ҳикояи тамоман дигар аст.

Умедворам ҷолиб буд. Агар шумо ягон шарҳ/иловагӣ дошта бошед, ё дар ҷое, ки ман дурӯғ гуфта бошам (ман одам ҳастам ва фикри ман ҳамеша субъективӣ хоҳад буд) - нависед, ки чӣ бояд ислоҳ/илова карда шавад - мо ҳама чизро ислоҳ мекунем/илова мекунем.

Дар хотима, ман мехоҳам чанд сухан дар бораи муқоисаи Openstack (ҳам ванилин ва ҳам фурӯшанда) бо ҳалли абрии VMWare бигӯям - дар тӯли ду соли охир ба ман ин савол хеле зиёд дода мешавад ва, ростӣ, ман аллакай аз он хаста шудааст, аммо ба ҳар ҳол. Ба андешаи ман, муқоиса кардани ин ду ҳалли хеле душвор аст, аммо мо метавонем бешубҳа бигӯем, ки дар ҳарду ҳалли мушкилот камбудиҳо мавҷуданд ва ҳангоми интихоби як ҳалли шумо бояд мусбат ва манфиро баркашид.

Агар OpenStack як ҳалли аз ҷониби ҷомеа асосёфта бошад, пас VMWare ҳақ дорад танҳо он чизеро, ки мехоҳад иҷро кунад (хонед - он чизе, ки барои он фоиданок аст) ва ин мантиқист - зеро он як ширкати тиҷоратӣ аст, ки барои пул кор кардан аз муштариёнаш одат кардааст. Аммо як калон ва фарбеҳ вуҷуд дорад, аммо шумо метавонед аз OpenStack берун шавед, масалан, аз Nokia ва бо хароҷоти кам ба ҳалли масъала, масалан, Juniper (Contrail Cloud) гузаред, аммо шумо гумон аст, ки аз VMWare берун шавед. . Барои ман, ин ду қарор чунинанд - Openstack (фурӯшанда) як қафаси оддӣест, ки шумо дар он ҷойгир кардаед, аммо шумо калид доред ва шумо метавонед дар вақти дилхоҳ тарк кунед. VMWare як қафаси тиллоист, соҳиби калиди қафас аст ва он ба шумо гарон меафтад.

Ман на маҳсулоти аввал ва на дуюмро пешбарӣ намекунам - шумо он чизеро, ки ба шумо лозим аст, интихоб мекунед. Аммо агар ман чунин интихоб медоштам, ман ҳарду қарорро интихоб мекардам - ​​VMWare барои абри IT (борҳои кам, идоракунии осон), OpenStack аз баъзе фурӯшанда (Nokia ва Juniper ҳалли хеле хуби калидиро пешниҳод мекунанд) - барои абри Telecom. Ман Openstack-ро барои IT холис истифода намебарам - ин мисли тирпарронии гунҷишкҳо бо туп аст, аммо ман барои истифодаи он ба ғайр аз зиёдатӣ ҳеҷ гуна муқобилият намебинам. Бо вуҷуди ин, истифодаи VMWare дар телекоммуникатсионӣ мисли кашидани санги майдашуда дар Ford Raptor аст - аз берун зебо аст, аммо ронанда бояд ба ҷои як 10 сафар кунад.

Ба андешаи ман, бузургтарин нуқсони VMWare комилан баста будани он аст - ширкат ба шумо дар бораи чӣ гуна кор кардани он маълумот намедиҳад, масалан, vSAN ё он чизе, ки дар ядрои гипервизор мавҷуд аст - ин барои он фоидаовар нест - яъне шумо ҳеҷ гоҳ коршиноси VMWare нашавед - бе дастгирии фурӯшанда, шумо ҳалок мешавед (бисёр вақт ман бо коршиносони VMWare вомехӯрам, ки аз саволҳои ночиз ба ҳайрат меоянд). Барои ман, VMWare мошинеро бо капоташ баста мехарад - бале, шумо шояд мутахассисоне дошта бошед, ки камарбанди вақтро иваз карда метавонанд, аммо танҳо касе, ки ин маҳлулро ба шумо фурӯхтааст, капотро кушода метавонад. Шахсан ман қарорҳоеро дӯст намедорам, ки ба онҳо мувофиқат карда наметавонам. Шумо мегӯед, ки шояд ба шумо лозим нест, ки зери кулоҳ равед. Бале, ин имконпазир аст, аммо ман ба шумо нигоҳ мекунам, вақте ки ба шумо лозим аст, ки дар абр аз 20-30 мошини виртуалӣ, 40-50 шабака, ки нисфи онҳо ба берун рафтан мехоҳанд, ва нимаи дуюмаш хоҳиш мекунад Шитоби SR-IOV, дар акси ҳол ба шумо якчанд даҳҳо ин мошинҳо лозим мешаванд - вагарна иҷроиш кофӣ нахоҳад буд.

Дигар нуқтаи назар вуҷуд дорад, бинобар ин танҳо шумо метавонед қарор диҳед, ки чӣ интихоб кунед ва муҳимтар аз ҳама, шумо барои интихоби худ масъул хоҳед буд. Ин танҳо фикри ман аст - шахсе, ки ҳадди аққал 4 маҳсулот - Nokia, Juniper, Red Hat ва VMWare -ро дида ва ламс кардааст. Яъне ман чизе дорам, ки бо он муқоиса кунам.

Манбаъ: will.com

Илова Эзоҳ