ڪلائوڊ انفراسٽرڪچر جو نيٽ ورڪ حصو جو تعارف

ڪلائوڊ انفراسٽرڪچر جو نيٽ ورڪ حصو جو تعارف

ڪلائوڊ ڪمپيوٽنگ اسان جي زندگيءَ ۾ اونهي ۽ اونهائي ۾ داخل ٿي رهي آهي ۽ شايد ئي ڪو اهڙو ماڻهو ناهي جنهن گهٽ ۾ گهٽ هڪ ڀيرو ڪلائوڊ سروسز استعمال نه ڪئي هجي. بهرحال، ڪڪر ڇا آهي ۽ اهو ڪيئن ڪم ڪري ٿو، ٿورا ماڻهو ڄاڻن ٿا، جيتوڻيڪ هڪ خيال جي سطح تي. 5G اڳ ۾ ئي هڪ حقيقت بڻجي رهيو آهي ۽ ٽيليڪ انفرااسٽرڪچر ستون حلن کان ڪلائوڊ حلن ڏانهن منتقل ٿيڻ شروع ٿي رهيو آهي ، جيئن اهو ٿيو جڏهن اهو مڪمل طور تي هارڊويئر حلن مان ورچوئلائزڊ ”ٿنڀن“ ڏانهن منتقل ٿيو.

اڄ اسان ڪلائوڊ انفراسٽرڪچر جي اندروني دنيا جي باري ۾ ڳالهائينداسين، خاص طور تي اسان نيٽ ورڪ جي بنيادي حصن تي نظر ڪنداسين.

بادل ڇا آهي؟ ساڳيو ورچوئلائزيشن - پروفائل ڏسڻ؟

هڪ منطقي سوال کان وڌيڪ. نه - هي ورچوئلائيزيشن نه آهي، جيتوڻيڪ اهو ان کان سواء نه ٿي سگهي. اچو ته ٻه تعريفون ڏسو:

ڪلائوڊ ڪمپيوٽنگ (هتي ڪلائوڊ طور حوالو ڏنو ويو) ورهايل ڪمپيوٽنگ وسيلن تائين صارف-دوست رسائي فراهم ڪرڻ لاءِ هڪ نمونو آهي جنهن کي لازمي طور تي مقرر ڪيو وڃي ٿو ۽ مطالبو تي شروع ڪيو وڃي ٿو گهٽ ۾ گهٽ ممڪن دير سان ۽ خدمت فراهم ڪندڙ کي گهٽ ۾ گهٽ قيمت سان.

ورچوئلائيزيشن - هي هڪ جسماني وجود (مثال طور، هڪ سرور) کي ڪيترن ئي ورچوئل ۾ ورهائڻ جي صلاحيت آهي، انهي سان وسيلن جي استعمال کي وڌايو (مثال طور، توهان وٽ 3 سرور لوڊ ٿيل هئا 25-30 سيڪڙو، ورچوئلائزيشن کان پوءِ توهان 1 سرور لوڊ ڪيو. 80-90 سيڪڙو تي). قدرتي طور تي، ورچوئلائيزيشن ڪجهه وسيلن کي کائي ٿو - توهان کي هائپرائزر کي کارائڻ جي ضرورت آهي، جڏهن ته، مشق ڏيکاريل آهي، راند شمع جي لائق آهي. ورچوئلائيزيشن جو هڪ مثالي مثال VMWare آهي، جيڪو مڪمل طور تي ورچوئل مشينون تيار ڪري ٿو، يا مثال طور KVM، جنهن کي مان ترجيح ڏيان ٿو، پر اهو ذائقي جو معاملو آهي.

اسان ورچوئلائيزيشن کي استعمال ڪريون ٿا ان کي محسوس ڪرڻ کان سواءِ، ۽ جيتوڻيڪ آئرن روٽرز اڳ ۾ ئي ورچوئلائيزيشن استعمال ڪن ٿا - مثال طور، JunOS جي جديد ورزن ۾، آپريٽنگ سسٽم هڪ ورچوئل مشين جي طور تي نصب ٿيل آهي حقيقي وقت جي لينڪس ڊسٽريبيوشن (Wind River 9) جي مٿان. پر ورچوئلائيزيشن ڪلائوڊ ناهي، پر ورچوئلائيزيشن کان سواءِ ڪلائوڊ موجود نه ٿو رهي سگهي.

ورچوئلائيزيشن ھڪڙي عمارت جي بلاڪ مان آھي جنھن تي بادل ٺاھيو ويو آھي.

صرف هڪ L2 ڊومين ۾ ڪيترن ئي هائپر وائزرز کي گڏ ڪرڻ سان ڪلائوڊ ٺاهڻ، ڪجهه قسم جي جوابي ذريعي خودڪار طور تي vlans کي رجسٽر ڪرڻ لاءِ ڪجهه يامل پلے بڪ شامل ڪرڻ ۽ خود بخود ورچوئل مشين ٺاهڻ لاءِ ان جي مٿان آرڪيسٽريشن سسٽم وانگر ڪجهه رکڻ ڪم نه ڪندو. اهو وڌيڪ صحيح ٿيندو، پر نتيجو فرانڪينسٽائن اهو بادل نه آهي جنهن جي اسان کي ضرورت آهي، جيتوڻيڪ اهو ٻين لاء حتمي خواب ٿي سگهي ٿو. ان کان علاوه، جيڪڏهن توهان ساڳيو Openstack وٺو، اهو لازمي طور تي اڃا تائين فرينڪنسٽن آهي، پر اوهين، اچو ته ان بابت هاڻي نه ڳالهايون.

پر مان سمجهان ٿو ته مٿي بيان ڪيل وصف مان اهو مڪمل طور تي واضح ناهي ته اصل ۾ ڪڪر ڇا کي سڏيو وڃي.

تنهن ڪري، NIST (National Institute of Standards and Technology) مان هڪ دستاويز 5 مکيه خاصيتون مهيا ڪري ٿو جيڪي ڪلائوڊ انفراسٽرڪچر هجڻ گهرجن:

درخواست تي خدمت مهيا ڪرڻ. استعمال ڪندڙ کي لازمي طور تي مختص ڪيل ڪمپيوٽر وسيلن تائين مفت رسائي ڏني وڃي (جهڙوڪ نيٽ ورڪ، ورچوئل ڊسڪ، ميموري، پروسيسر ڪور، وغيره)، ۽ اهي وسيلا لازمي طور تي مهيا ڪيا وڃن - يعني خدمت فراهم ڪندڙ جي مداخلت کان سواءِ.

خدمت جي وسيع دستيابي. وسيلن تائين رسائي معياري ميڪانيزم جي ذريعي مهيا ڪئي وڃي ته جيئن معياري پي سي ۽ پتلي ڪلائنٽ ۽ موبائل ڊوائيسز ٻنهي جي استعمال جي اجازت ڏين.

وسيلن کي تلاء ۾ گڏ ڪرڻ. وسيلن جي تلاءَ کي هڪ ئي وقت ڪيترن ئي گراهڪن کي وسيلا مهيا ڪرڻ جي قابل هجڻ گهرجي، انهي ڳالهه کي يقيني بڻائڻ ته گراهڪ الڳ الڳ ۽ باهمي اثر کان آزاد آهن ۽ وسيلن جي مقابلي ۾. نيٽ ورڪ پڻ تلاء ۾ شامل آهن، جيڪي اوورليپنگ ايڊريس استعمال ڪرڻ جي امڪان کي ظاهر ڪن ٿا. تلاءَ لازمي طور تي طلب ڪرڻ جي قابل هوندا. تلاءَ جو استعمال اهو ممڪن بڻائي ٿو ته وسيلن جي غلطي رواداري جي ضروري سطح مهيا ڪرڻ ۽ جسماني ۽ مجازي وسيلن جي خلاصي - خدمت جي وصول ڪندڙ کي صرف وسيلن جي سيٽ سان مهيا ڪيو وڃي ٿو جنهن جي هن درخواست ڪئي آهي (جتي اهي وسيلا جسماني طور تي واقع آهن، ڪيترا سرورز ۽ سوئچز - اهو ڪلائنٽ ڏانهن ڌيان نٿو ڏئي). بهرحال، اسان کي حقيقت ۾ رکڻ گهرجي ته فراهم ڪندڙ کي انهن وسيلن جي شفاف رزرويشن کي يقيني بڻائڻ گهرجي.

مختلف حالتن ۾ تڪڙو موافقت. خدمتون لچڪدار هجڻ گهرجن - وسيلن جي تيز فراهمي، انهن جي ورڇ، ڪلائنٽ جي درخواست تي وسيلن کي شامل ڪرڻ يا گھٽائڻ، ۽ ڪلائنٽ جي حصي تي اهو احساس هجڻ گهرجي ته ڪلائوڊ وسيلا لامحدود آهن. سمجھڻ جي آسانيءَ لاءِ، مثال طور، توھان کي ڊيڄاريندڙ نظر نه ٿو اچي ته ايپل iCloud ۾ توھان جي ڊسڪ اسپيس جو حصو غائب ٿي ويو آھي ڇاڪاڻ ته سرور تي هارڊ ڊرائيو ٽٽي وئي آھي، ۽ ڊرائيوز ڀڄي پونديون آھن. اضافي طور تي، توهان جي حصي تي، هن خدمت جا امڪان تقريبن لامحدود آهن - توهان کي 2 ٽي بي جي ضرورت آهي - ڪو مسئلو ناهي، توهان ادا ڪيو ۽ وصول ڪيو. ھڪڙو مثال Google.Drive يا Yandex.Disk سان ڏئي سگھجي ٿو.

مهيا ڪيل خدمت کي ماپڻ جو امڪان. ڪلائوڊ سسٽم کي لازمي طور تي ڪنٽرول ڪرڻ ۽ استعمال ٿيل وسيلن کي بهتر ڪرڻ گهرجي، ۽ اهي ميکانيزم استعمال ڪندڙ ۽ خدمت فراهم ڪندڙ ٻنهي لاء شفاف هجڻ گهرجن. اهو آهي، توهان هميشه چيڪ ڪري سگهو ٿا ڪيترا وسيلا توهان ۽ توهان جا گراهڪ استعمال ڪري رهيا آهيو.

اهو حقيقت تي غور ڪرڻ جي قابل آهي ته اهي گهرجون گهڻو ڪري عوامي بادل لاء گهربل آهن، تنهنڪري هڪ خانگي بادل لاء (يعني، ڪمپني جي اندروني ضرورتن لاء هڪ بادل شروع ڪيو ويو آهي)، انهن گهرجن کي ٿورڙي ترتيب ڏئي سگهجي ٿو. بهرحال، انهن کي اڃا تائين ڪرڻو پوندو، ٻي صورت ۾ اسان ڪلائوڊ ڪمپيوٽنگ جا سڀئي فائدا حاصل نه ڪنداسين.

اسان کي بادل جي ضرورت ڇو آهي؟

بهرحال، ڪنهن به نئين يا موجوده ٽيڪنالاجي، ڪنهن به نئين پروٽوڪول کي ڪنهن شيء لاء ٺاهي وئي آهي (چڱو، RIP-ng کان سواء، يقينا). ڪنهن کي به پروٽوڪول جي ضرورت نه آهي پروٽوڪول جي خاطر (چڱو، RIP-ng کان سواء، يقينا). اهو منطقي آهي ته ڪلائوڊ ٺاهيو ويو آهي ڪنهن قسم جي خدمت مهيا ڪرڻ لاءِ صارف/ڪلائنٽ کي. اسان سڀ گهٽ ۾ گهٽ ڪلائوڊ سروسز کان واقف آهيون، مثال طور Dropbox يا Google.Docs، ۽ مان سمجهان ٿو ته گھڻا ماڻهو انهن کي ڪاميابيءَ سان استعمال ڪن ٿا - مثال طور، هي مضمون Google.Docs ڪلائوڊ سروس استعمال ڪندي لکيو ويو آهي. پر بادل جون خدمتون جيڪي اسان ڄاڻون ٿا اهي صرف ڪلائوڊ جي صلاحيتن جو حصو آهن- وڌيڪ واضح طور تي، اهي صرف هڪ SaaS قسم جي خدمت آهن. اسان ٽن طريقن سان ڪلائوڊ سروس مهيا ڪري سگھون ٿا: SaaS، PaaS يا IaaS جي صورت ۾. توهان کي ڪهڙي خدمت جي ضرورت آهي توهان جي خواهش ۽ صلاحيتن تي منحصر آهي.

اچو ته هر هڪ ترتيب ۾ ڏسو:

خدمت جي طور تي سافٽ ويئر (SaaS) ڪلائنٽ کي مڪمل خدمت مهيا ڪرڻ لاء هڪ نمونو آهي، مثال طور، هڪ اي ميل سروس جهڙوڪ Yandex.Mail يا Gmail. هن خدمت جي ترسيل ماڊل ۾، توهان، هڪ ڪلائنٽ جي حيثيت ۾، اصل ۾ ڪجھ به نه ٿا ڪريو سواءِ خدمتن جي استعمال جي - يعني، توهان کي خدمت قائم ڪرڻ بابت سوچڻ جي ضرورت ناهي، ان جي غلطي رواداري يا بيڪار. بنيادي شيء توهان جي پاسورڊ سان سمجهوتو ڪرڻ نه آهي؛ هن خدمت فراهم ڪندڙ توهان لاء باقي ڪم ڪندو. خدمت فراهم ڪندڙ جي نقطي نظر کان، هو پوري خدمت لاء مڪمل طور تي ذميوار آهي - سرور هارڊويئر ۽ ميزبان آپريٽنگ سسٽم کان ڊيٽابيس ۽ سافٽ ويئر سيٽنگن تائين.

هڪ خدمت جي طور تي پليٽ فارم (PAS) - جڏهن هن ماڊل کي استعمال ڪندي، خدمت فراهم ڪندڙ ڪلائنٽ کي خدمت لاء هڪ ورڪ پيس فراهم ڪري ٿو، مثال طور، اچو ته هڪ ويب سرور وٺو. خدمت فراهم ڪندڙ ڪلائنٽ کي هڪ ورچوئل سرور مهيا ڪري ٿو (حقيقت ۾، وسيلن جو هڪ سيٽ، جهڙوڪ RAM/CPU/اسٽوريج/نيٽ وغيره)، ۽ هن سرور تي او ايس ۽ ضروري سافٽ ويئر به نصب ڪيو، جڏهن ته، ترتيب ڏيڻ هي سڀ شيون ڪلائنٽ طرفان ڪيو ويندو آهي ۽ خدمت جي ڪارڪردگي لاءِ ڪلائنٽ جواب ڏيندو آهي. خدمت فراهم ڪندڙ، جيئن اڳئين صورت ۾، ذميوار آهي جسماني سامان جي ڪارڪردگي، هائپر ويزرز، مجازي مشين پاڻ، ان جي نيٽ ورڪ جي دستيابي، وغيره، پر خدمت خود هاڻي ان جي ذميواري جي علائقي ۾ ناهي.

ھڪڙي بنيادي طور تي خدمتون (IaaS) - اهو طريقو اڳ ۾ ئي وڌيڪ دلچسپ آهي، حقيقت ۾، خدمت فراهم ڪندڙ ڪلائنٽ کي هڪ مڪمل ورچوئلائزڊ انفراسٽرڪچر مهيا ڪري ٿو - اهو آهي، وسيلن جو ڪجهه سيٽ (پول)، جهڙوڪ سي پي يو ڪور، ريم، نيٽ ورڪ، وغيره وغيره. ڪلائنٽ - ڪلائنٽ انهن وسيلن سان ڇا ڪرڻ چاهي ٿو مختص ڪيل پول (ڪوٽا) ۾ - اهو خاص طور تي فراهم ڪندڙ لاءِ اهم ناهي. ڇا ڪلائنٽ چاهي ٿو پنهنجو VEPC ٺاهي يا هڪ مني آپريٽر به ٺاهي ۽ ڪميونيڪيشن سروسز مهيا ڪري - ڪو سوال ئي ناهي - اهو ڪريو. اهڙي صورتحال ۾، خدمت فراهم ڪندڙ ذميوار آهي وسيلن جي فراهمي، انهن جي غلطي رواداري ۽ دستيابي، انهي سان گڏ او ايس جيڪو انهن کي انهن وسيلن کي گڏ ڪرڻ جي اجازت ڏئي ٿو ۽ ڪنهن به وقت وسيلن کي وڌائڻ يا گهٽائڻ جي صلاحيت سان ڪلائنٽ تائين پهچائي ٿو. ڪسٽمر جي درخواست تي. ڪلائنٽ سڀني ورچوئل مشينن ۽ ٻين ٽينسل کي سيلف سروس پورٽل ۽ ڪنسول ذريعي ترتيب ڏئي ٿو، بشمول نيٽ ورڪ قائم ڪرڻ (ٻاهرين نيٽ ورڪن کان سواءِ).

OpenStack ڇا آهي؟

سڀني ٽنهي اختيارن ۾، خدمت فراهم ڪندڙ کي هڪ OS جي ضرورت آهي جيڪا ڪلائوڊ انفراسٽرڪچر جي تخليق کي فعال ڪندي. حقيقت ۾، SaaS سان، هڪ کان وڌيڪ ڊويزن ٽيڪنالاجي جي پوري اسٽيڪ لاء ذميوار آهي - اتي هڪ ڊويزن آهي جيڪو انفراسٽرڪچر لاء ذميوار آهي - اهو آهي، اهو هڪ ٻئي ڊويزن کي IaaS مهيا ڪري ٿو، هي ڊويزن ڪلائنٽ کي SaaS مهيا ڪري ٿو. OpenStack ڪلائوڊ آپريٽنگ سسٽم مان هڪ آهي جيڪو توهان کي اجازت ڏئي ٿو سوئچز، سرورز ۽ اسٽوريج سسٽم جو هڪ گروپ گڏ ڪري هڪ واحد وسيلن جي تلاءَ ۾، هن عام تلاءَ کي ذيلي پولز (ڪراچين) ۾ ورهايو ۽ انهن وسيلن کي نيٽ ورڪ تي گراهڪن کي مهيا ڪري.

OpenStack هڪ ڪلائوڊ آپريٽنگ سسٽم آهي جيڪو توهان کي ڪمپيوٽنگ وسيلن، ڊيٽا اسٽوريج ۽ نيٽ ورڪ وسيلن جي وڏي تلاءَ کي ڪنٽرول ڪرڻ جي اجازت ڏئي ٿو، معياري تصديق واري ميڪانيزم کي استعمال ڪندي API ذريعي مهيا ڪيل ۽ منظم.

ٻين لفظن ۾، هي مفت سافٽ ويئر پروجيڪٽ جو هڪ سيٽ آهي جيڪو ڪلائوڊ سروسز ٺاهڻ لاءِ ٺاهيو ويو آهي (ٻئي عوامي ۽ نجي) - اهو آهي، اوزار جو هڪ سيٽ جيڪو توهان کي وسيلن جي هڪ واحد تلاء ۾ سرور ۽ سوئچنگ سامان کي گڏ ڪرڻ جي اجازت ڏئي ٿو، منظم ڪريو. اهي وسيلا، ضروري سطح جي غلطي رواداري مهيا ڪن ٿا.

هن مواد کي لکڻ جي وقت، OpenStack جوڙجڪ هن طرح نظر اچي ٿو:
ڪلائوڊ انفراسٽرڪچر جو نيٽ ورڪ حصو جو تعارف
تان ورتل تصوير openstack.org

OpenStack ۾ شامل ڪيل اجزاء مان هر هڪ مخصوص فنڪشن انجام ڏئي ٿو. هي ورهايل فن تعمير توهان کي حل ۾ شامل ڪرڻ جي اجازت ڏئي ٿو فنڪشنل اجزاء جو سيٽ جيڪو توهان کي گهربل آهي. بهرحال، ڪجهه جزا روٽ جزا آهن ۽ انهن کي ختم ڪرڻ جي نتيجي ۾ مڪمل طور تي حل جي مڪمل يا جزوي نااهليت جي ڪري ٿي. اهي اجزاء عام طور تي ورهايل آهن:

  • ڊيش بورڊ - OpenStack خدمتن کي منظم ڪرڻ لاءِ ويب تي ٻڌل GUI
  • پيڙهه هڪ مرڪزي سڃاڻپ سروس آهي جيڪا ٻين خدمتن لاءِ تصديق ۽ اختيار ڏيڻ جي ڪارڪردگي مهيا ڪري ٿي، انهي سان گڏ صارف جي سندن ۽ انهن جي ڪردارن کي منظم ڪرڻ.
  • نئترين - هڪ نيٽ ورڪ سروس جيڪا مختلف OpenStack سروسز جي انٽرفيس جي وچ ۾ ڪنيڪشن فراهم ڪري ٿي (بشمول VMs جي وچ ۾ ڪنيڪشن ۽ انهن جي ٻاهرين دنيا تائين رسائي)
  • وندر - مجازي مشينن لاء بلاڪ اسٽوريج تائين رسائي فراهم ڪري ٿي
  • نووا - مجازي مشينن جي زندگي جي چڪر جو انتظام
  • روشني - ورچوئل مشين جي تصويرن ۽ تصويرن جو ذخيرو
  • وٺندڙ - اسٽوريج اعتراض تائين رسائي فراهم ڪري ٿي
  • Ceilometer - هڪ خدمت جيڪا ٽيلي ميٽري کي گڏ ڪرڻ ۽ دستياب ۽ استعمال ٿيل وسيلن کي ماپڻ جي صلاحيت فراهم ڪري ٿي
  • گرمي - آرڪيسٽريشن جي بنياد تي ٽيمپليٽس لاءِ پاڻمرادو تخليق ۽ وسيلن جي فراهمي

سڀني منصوبن جي مڪمل فهرست ۽ انهن جا مقصد ڏسي سگهجن ٿا هتي.

هر OpenStack جزو هڪ خدمت آهي جيڪو هڪ مخصوص فنڪشن انجام ڏئي ٿو ۽ هڪ API مهيا ڪري ٿو انهي فنڪشن کي منظم ڪرڻ ۽ هڪ متحد انفراسٽرڪچر ٺاهڻ لاءِ ٻين ڪلائوڊ آپريٽنگ سسٽم سروسز سان لهه وچڙ ۾. مثال طور، نووا ڪمپيوٽنگ ريسورس مئنيجمينٽ ۽ هڪ API مهيا ڪري ٿو انهن وسيلن کي ترتيب ڏيڻ جي رسائي لاءِ، Glance مهيا ڪري ٿو تصويري انتظام ۽ هڪ API انهن کي منظم ڪرڻ لاءِ، Cinder مهيا ڪري ٿو بلاڪ اسٽوريج ۽ هڪ API ان کي منظم ڪرڻ لاءِ، وغيره. سڀئي ڪم هڪ تمام ويجهي طريقي سان ڳنڍيل آهن.

بهرحال، جيڪڏهن توهان ان تي نظر وجهو، OpenStack ۾ هلندڙ سڀئي خدمتون آخرڪار ڪنهن قسم جي ورچوئل مشين (يا ڪنٽينر) نيٽ ورڪ سان ڳنڍيل آهن. سوال پيدا ٿئي ٿو - ڇو اسان کي ايتري قدر عناصر جي ضرورت آهي؟

اچو ته هڪ ورچوئل مشين ٺاهڻ ۽ ان کي نيٽ ورڪ سان ڳنڍڻ ۽ Openstack ۾ مسلسل اسٽوريج لاءِ الگورتھم ذريعي وڃو.

  1. جڏهن توهان هڪ مشين ٺاهڻ جي درخواست ٺاهيندا آهيو، پوءِ اها درخواست Horizon (Dashboard) ذريعي هجي يا CLI ذريعي درخواست هجي، پهرين شيءِ جيڪا ٿئي ٿي اها آهي توهان جي درخواست جو اختيار Keystone تي - ڇا توهان مشين ٺاهي سگهو ٿا، ڇا ان وٽ آهي هن نيٽ ورڪ کي استعمال ڪرڻ جو حق، ڇا توهان جو مسودو ڪوٽا، وغيره.
  2. Keystone توهان جي درخواست جي تصديق ڪري ٿو ۽ جوابي پيغام ۾ هڪ تصديق واري ٽوڪن ٺاهي ٿو، جيڪو اڳتي هلي استعمال ڪيو ويندو. Keystone کان جواب حاصل ڪرڻ کان پوء، درخواست نووا (nova api) ڏانهن موڪلي وئي آهي.
  3. Nova-api توهان جي درخواست جي صحيحيت چيڪ ڪري ٿو Keystone سان رابطو ڪري اڳ ۾ ٺاهيل آٿ ٽوڪن استعمال ڪندي
  4. Keystone تصديق ڪري ٿو ۽ اجازتن ۽ پابندين تي معلومات مهيا ڪري ٿو هن سند جي ٽوڪن جي بنياد تي.
  5. Nova-api نووا-ڊيٽابيس ۾ نئين VM لاءِ داخلا ٺاهي ٿي ۽ مشين ٺاهڻ جي درخواست کي نووا-شيڊيولر ڏانهن منتقل ڪري ٿي.
  6. نووا شيڊولر ميزبان (ڪمپيوٽر نوڊ) کي چونڊيندو آهي جنهن تي وي ايم مقرر ڪيو ويندو مخصوص پيٽرولن، وزن ۽ زونن جي بنياد تي. هن جو هڪ رڪارڊ ۽ VM ID نووا ڊيٽابيس ڏانهن لکيل آهن.
  7. اڳيون، نووا-شيڊيولر سان رابطو ڪري ٿو نووا-ڪمپيوٽي کي درخواست ڏيڻ لاءِ هڪ مثال. نووا-ڪمپيوٽ رابطا نووا-ڪنڊڪٽر مشين جي پيٽرولن بابت معلومات حاصل ڪرڻ لاءِ (نووا-ڪنڊڪٽر هڪ نووا عنصر آهي جيڪو نووا-ڊيٽابيس ۽ نووا-ڪمپيوٽ جي وچ ۾ هڪ پراڪسي سرور جي طور تي ڪم ڪري ٿو، نووا-ڊيٽابيس تائين درخواستن جي تعداد کي محدود ڪري ٿو ته جيئن ڊيٽابيس جي مسئلن کان بچڻ لاءِ. مسلسل لوڊ گھٽائڻ).
  8. نووا-ڪنڊڪٽر نووا-ڊيٽابيس کان درخواست ڪيل معلومات حاصل ڪري ٿو ۽ ان کي نووا-ڪمپيوٽ ڏانهن منتقل ڪري ٿو.
  9. اڳيون، نووا-ڪمپيوٽ ڪالون نظر اچن ٿيون تصوير جي ID حاصل ڪرڻ لاءِ. Glace Keystone ۾ درخواست جي تصديق ڪري ٿو ۽ گهربل معلومات واپس ڪري ٿو.
  10. نووا-ڪمپيوٽ رابطا نيوٽران نيٽ ورڪ جي پيٽرولن بابت معلومات حاصل ڪرڻ لاءِ. جھڙي نظر ۾، نيوٽران ڪيسٽون ۾ درخواست جي تصديق ڪري ٿو، جنھن کان پوء اھو ڊيٽابيس ۾ داخل ٿئي ٿو (پورٽ سڃاڻپ ڪندڙ، وغيره)، ھڪڙي پورٽ ٺاھڻ جي درخواست ٺاھي ٿو، ۽ نووا-ڪمپيوٽ ڏانھن درخواست ڪيل معلومات واپس ڪري ٿو.
  11. نووا-ڪمپيوٽ رابطا ڪنڊر هڪ درخواست سان گڏ هڪ حجم مختص ڪرڻ لاءِ ورچوئل مشين کي. جھڙي نظر ۾، سائڊر Keystone ۾ درخواست جي تصديق ڪري ٿو، حجم ٺاھڻ جي درخواست ٺاھي ٿو، ۽ درخواست ڪيل معلومات واپس ڪري ٿو.
  12. نووا-ڪمپيوٽ رابطا libvirt هڪ درخواست سان گڏ ورچوئل مشين کي مقرر ڪيل پيٽرولن سان ترتيب ڏيڻ لاءِ.

حقيقت ۾، هڪ سادي ورچوئل مشين ٺاهڻ جو بظاهر سادو آپريشن ڪلائوڊ پليٽ فارم جي عناصر جي وچ ۾ API ڪالن جي اهڙي وورپول ۾ بدلجي ٿو. ان کان علاوه، جيئن توهان ڏسي سگهو ٿا، جيتوڻيڪ اڳوڻي نامزد ڪيل خدمتون پڻ ننڍن حصن تي مشتمل هونديون آهن جن جي وچ ۾ رابطو ٿئي ٿو. هڪ مشين ٺاهڻ صرف هڪ ننڍڙو حصو آهي جيڪو توهان کي ڪرڻ جي اجازت ڏئي ٿو ڪلائوڊ پليٽ فارم - اتي هڪ خدمت آهي ٽريفڪ کي توازن ڪرڻ جي ذميوار، هڪ خدمت بلاڪ اسٽوريج لاءِ ذميوار، هڪ خدمت DNS لاءِ ذميوار، هڪ خدمت جيڪا بيئر ميٽل سرورز مهيا ڪرڻ جي ذميوار، وغيره. بادل توهان کي اجازت ڏئي ٿو ته توهان جي مجازي مشينن کي رڍن جي رڍ وانگر علاج ڪرڻ گهرجي (جيئن ته ورچوئلائيزيشن جي مخالفت). جيڪڏهن توهان جي مشين کي ورچوئل ماحول ۾ ڪجهه ٿئي ٿو - توهان ان کي بيڪ اپ وغيره مان بحال ڪريو ٿا، پر ڪلائوڊ ايپليڪيشنون اهڙي طرح ٺهيل آهن ته ورچوئل مشين اهڙو اهم ڪردار ادا نٿو ڪري - مجازي مشين "مري وئي" - ڪو مسئلو ناهي. - ھڪڙو نئون ٺاھيو ويو آھي ھڪڙي گاڏي جي ٽيمپليٽ تي ٻڌل آھي ۽، جيئن چوندا آھن، اسڪواڊ فائٽر جي نقصان کي نوٽيس نه ڪيو. قدرتي طور تي، هي آرڪيسٽريشن ميڪانيزم جي موجودگي لاء مهيا ڪري ٿو - هيٽ ٽيمپليٽ استعمال ڪندي، توهان آساني سان هڪ پيچيده فنڪشن کي ترتيب ڏئي سگهو ٿا جنهن ۾ ڪيترن ئي نيٽ ورڪن ۽ ورچوئل مشينن تي مشتمل آهي.

اهو هميشه ذهن ۾ رکڻ جي قابل آهي ته نيٽ ورڪ کان سواء ڪو به ڪلائوڊ انفراسٽرڪچر ناهي - هر عنصر هڪ طريقي سان يا ٻيو نيٽ ورڪ ذريعي ٻين عناصر سان رابطو ڪري ٿو. ان کان سواء، بادل هڪ بلڪل غير جامد نيٽ ورڪ آهي. قدرتي طور تي، هيٺيون نيٽ ورڪ اڃا به گهٽ يا وڌيڪ جامد آهي - نوان نوڊس ۽ سوئچز هر روز شامل نه ڪيا ويندا آهن، پر اوورلي جزو تبديل ٿي سگهي ٿو ۽ لازمي طور تي مسلسل تبديل ٿيندو - نوان نيٽ ورڪ شامل ڪيا ويندا يا ڊاهي ويندا، نئين مجازي مشينون ظاهر ٿينديون ۽ پراڻيون هونديون. مرڻ. ۽ جيئن توهان آرٽيڪل جي شروعات ۾ ڏنل ڪلائوڊ جي تعريف کان ياد رکو ٿا، وسيلن کي صارف کي خودڪار طور تي مختص ڪيو وڃي ۽ خدمت فراهم ڪندڙ جي مداخلت کان گهٽ ۾ گهٽ (يا بهتر اڃا تائين، بغير) سان. اھو آھي، نيٽ ورڪ وسيلن جي روزي جو قسم جيڪو ھاڻي موجود آھي فرنٽ-اينڊ جي صورت ۾ توھان جي ذاتي اڪائونٽ جي صورت ۾ http/https ذريعي پھچائي سگھجي ٿو ۽ آن ڊيوٽي نيٽ ورڪ انجنيئر واسيلي ھڪڙي پس منظر جي طور تي بادل نه آھي، جيتوڻيڪ جيڪڏهن واسيلي کي اٺ هٿ آهن.

نيوٽران، نيٽ ورڪ سروس جي طور تي، ڪلائوڊ انفراسٽرڪچر جي نيٽ ورڪ حصي کي منظم ڪرڻ لاءِ API مهيا ڪري ٿي. خدمت اختيار ڪري ٿي ۽ Openstack جي نيٽ ورڪنگ حصي کي منظم ڪري ٿي هڪ خلاصي پرت مهيا ڪندي جنهن کي نيٽورڪ-اي-سروس (NaaS) سڏيو ويندو آهي. اهو آهي، نيٽورڪ ساڳيو مجازي ماپبل يونٽ آهي، مثال طور، مجازي سي پي يو ڪور يا رام جي مقدار.

پر OpenStack جي نيٽ ورڪ جي حصي جي فن تعمير تي وڃڻ کان اڳ، اچو ته غور ڪريون ته ھي نيٽ ورڪ OpenStack ۾ ڪيئن ڪم ڪري ٿو ۽ ڇو نيٽ ورڪ ڪلائوڊ جو ھڪ اھم ۽ لازمي حصو آھي.

تنهن ڪري اسان وٽ ٻه RED ڪلائنٽ VMs ۽ ٻه گرين ڪلائنٽ VMs آهن. اچو ته فرض ڪريون ته اهي مشينون هن طريقي سان ٻن هائپرائزرز تي واقع آهن:

ڪلائوڊ انفراسٽرڪچر جو نيٽ ورڪ حصو جو تعارف

هن وقت، هي صرف 4 سرورز جي ورچوئلائيزيشن آهي ۽ وڌيڪ ڪجهه به ناهي، جتان هن وقت تائين اسان سڀ ڪجهه ڪيو آهي 4 سرورز کي ورچوئلائيز ڪرڻ، انهن کي ٻن جسماني سرورن تي رکڻ. ۽ اڃا تائين اهي نيٽ ورڪ سان ڳنڍيل نه آهن.

بادل ٺاهڻ لاء، اسان کي ڪيترن ئي اجزاء شامل ڪرڻ جي ضرورت آهي. پهريون، اسان نيٽ ورڪ جو حصو ورچوئل ڪريون ٿا - اسان کي انهن 4 مشينن کي جوڙي ۾ ڳنڍڻ جي ضرورت آهي، ۽ گراهڪ هڪ L2 ڪنيڪشن چاهيون ٿا. توهان هڪ سوئچ استعمال ڪري سگهو ٿا ۽ هڪ ٽرڪن کي ان جي هدايت ۾ ترتيب ڏئي سگهو ٿا ۽ لينڪس پل استعمال ڪندي هر شيء کي حل ڪري سگهو ٿا، يا وڌيڪ ترقي يافته استعمال ڪندڙن لاء، Openvswitch (اسان ان کي بعد ۾ واپس ڪنداسين). پر اتي ڪيترائي نيٽ ورڪ ٿي سگھن ٿا، ۽ سوئچ ذريعي L2 کي مسلسل دٻائڻ بھترين خيال نه آھي - اتي مختلف ڊپارٽمينٽ آھن، ھڪ سروس ڊيسڪ، ايپليڪيشن مڪمل ٿيڻ لاءِ مھينن جو انتظار، مشڪلاتن جي حل جا ھفتا - جديد دنيا ۾ ھي طريقو هاڻي ڪم نه ڪندو. ۽ جيترو جلدي هڪ ڪمپني هن کي سمجهي، ان لاء اڳتي وڌڻ آسان آهي. تنهن ڪري، هائپر وائزرز جي وچ ۾ اسان هڪ L3 نيٽ ورڪ چونڊينداسين جنهن ذريعي اسان جون ورچوئل مشينون رابطو ڪندا، ۽ هن L3 نيٽ ورڪ جي چوٽي تي اسين ورچوئل L2 اوورلي نيٽ ورڪ ٺاهينداسين جتي اسان جي ورچوئل مشينن جي ٽرئفڪ هلندي. توھان استعمال ڪري سگھو ٿا GRE، Geneve يا VxLAN encapsulation طور. اچو ته هاڻوڪي تي ڌيان ڏيو، جيتوڻيڪ اهو خاص طور تي اهم ناهي.

اسان کي ڪٿي VTEP ڳولڻ جي ضرورت آهي (مون کي اميد آهي ته هرڪو VxLAN اصطلاحن سان واقف آهي). جيئن ته اسان وٽ هڪ L3 نيٽ ورڪ آهي جيڪو سڌو سنئون سرورز مان اچي رهيو آهي، ڪجھ به اسان کي سرور تي VTEP رکڻ کان روڪي نٿو سگهي، ۽ OVS (OpenvSwitch) اهو ڪرڻ ۾ بهترين آهي. نتيجي طور، اسان هن ڊزائن کي حاصل ڪيو:

ڪلائوڊ انفراسٽرڪچر جو نيٽ ورڪ حصو جو تعارف

جيئن ته VMs جي وچ ۾ ٽرئفڪ کي ورهايو وڃي، مجازي مشينن جي بندرگاهن ۾ مختلف vlan نمبر هوندا. ٽيگ نمبر صرف هڪ ورچوئل سوئچ جي اندر ڪردار ادا ڪري ٿو، ڇاڪاڻ ته جڏهن VxLAN ۾ شامل ڪيو ويو ته اسان ان کي آساني سان ختم ڪري سگهون ٿا، ڇو ته اسان وٽ VNI هوندو.

ڪلائوڊ انفراسٽرڪچر جو نيٽ ورڪ حصو جو تعارف

هاڻي اسان بنا ڪنهن پريشاني جي انهن لاءِ پنهنجون مشينون ۽ ورچوئل نيٽ ورڪ ٺاهي سگهون ٿا.

بهرحال، ڇا جيڪڏهن ڪلائنٽ هڪ ٻي مشين آهي، پر هڪ مختلف نيٽ ورڪ تي آهي؟ اسان کي نيٽ ورڪ جي وچ ۾ rooting جي ضرورت آهي. اسان هڪ سادي اختيار تي نظر ڪنداسين جڏهن مرڪزي روٽنگ استعمال ڪيو ويندو آهي - اهو آهي، ٽرئفڪ کي خاص وقف نيٽ ورڪ نوڊس ذريعي روٽ ڪيو ويندو آهي (سٺو، ضابطي جي طور تي، اهي ڪنٽرول نوڊس سان گڏ آهن، تنهنڪري اسان وٽ ساڳيو شيء هوندو).

اهو لڳي ٿو ته ڪجھ به پيچيده نه آهي - اسان ڪنٽرول نوڊ تي هڪ پل انٽرفيس ٺاهيندا آهيون، ان ڏانهن ٽرئفڪ کي هلائيندا آهيون ۽ اتان کان اسان ان کي رستو ڏيون ٿا جتي اسان کي ضرورت آهي. پر مسئلو اهو آهي ته RED ڪلائنٽ 10.0.0.0/24 نيٽ ورڪ استعمال ڪرڻ چاهي ٿو، ۽ گرين ڪلائنٽ 10.0.0.0/24 نيٽ ورڪ استعمال ڪرڻ چاهي ٿو. اهو آهي، اسان ايڊريس اسپيس کي ٽڪرائڻ شروع ڪندا آهيون. اضافي طور تي، گراهڪ نٿا چاهيون ته ٻيا گراهڪ انهن جي اندروني نيٽ ورڪن ۾ رستي جي قابل هجن، جيڪو احساس ڪري ٿو. نيٽ ورڪ ۽ ڪلائنٽ ڊيٽا ٽرئفڪ کي الڳ ڪرڻ لاء، اسان انهن مان هر هڪ لاء الڳ نالي جي جڳهه مختص ڪنداسين. نيمس اسپيس حقيقت ۾ لينڪس نيٽ ورڪ اسٽيڪ جي هڪ ڪاپي آهي، يعني نالو اسپيس RED ۾ ڪلائنٽ مڪمل طور تي ڪلائنٽ کان الڳ ٿي ويا آهن نيمس اسپيس GREEN (چڱو، يا ته انهن ڪلائنٽ نيٽ ورڪن جي وچ ۾ روئٽنگ جي اجازت آهي ڊفالٽ نيم اسپيس ذريعي يا اپ اسٽريم ٽرانسپورٽ سامان تي).

اهو آهي، اسان هيٺ ڏنل ڊراگرام حاصل ڪندا آهيون:

ڪلائوڊ انفراسٽرڪچر جو نيٽ ورڪ حصو جو تعارف

L2 سرنگون سڀني ڪمپيوٽنگ نوڊس کان ڪنٽرول نوڊ تائين ڪنورجن ٿيون. نوڊ جتي انهن نيٽ ورڪن لاءِ L3 انٽرفيس واقع آهي، هر هڪ الڳ الڳ نالي جي جاءِ ۾.

بهرحال، اسان سڀ کان اهم شيء وساري ڇڏيو. مجازي مشين کي لازمي طور تي ڪلائنٽ کي هڪ خدمت مهيا ڪرڻ گهرجي، اهو آهي، ان کي گهٽ ۾ گهٽ هڪ خارجي انٽرفيس هجڻ گهرجي جنهن ذريعي ان تائين پهچي سگهجي ٿو. اهو آهي، اسان کي ٻاهرئين دنيا ۾ وڃڻ جي ضرورت آهي. هتي مختلف آپشن آهن. اچو ته آسان اختيار ڪريو. اسان هر ڪلائنٽ ۾ هڪ نيٽ ورڪ شامل ڪنداسين، جيڪو فراهم ڪندڙ جي نيٽ ورڪ ۾ صحيح هوندو ۽ ٻين نيٽ ورڪن سان اوورليپ نه ٿيندو. نيٽ ورڪ پڻ چون ٿا ۽ مهيا ڪندڙ نيٽ ورڪ جي پاسي تي مختلف VRFs کي ڏسو. نيٽ ورڪ ڊيٽا به هر ڪلائنٽ جي نالي واري جاءِ ۾ رهندو. تنهن هوندي به، اهي اڃا به هڪ جسماني (يا بانڊ، جنهن کي وڌيڪ منطقي آهي) انٽرفيس ذريعي ٻاهر جي دنيا ڏانهن وڃو. ڪلائنٽ ٽرئفڪ کي الڳ ڪرڻ لاءِ، ٻاهران وڃڻ واري ٽرئفڪ کي ڪلائنٽ لاءِ مختص ڪيل VLAN ٽيگ سان ٽيگ ڪيو ويندو.

نتيجي طور، اسان هي ڊراگرام حاصل ڪيو:

ڪلائوڊ انفراسٽرڪچر جو نيٽ ورڪ حصو جو تعارف

هڪ معقول سوال اهو آهي ته ڇو نه پاڻ کي ڪمپيوٽر نوڊس تي گيٽ وي ٺاهيو وڃي؟ اهو ڪو وڏو مسئلو ناهي؛ ان کان علاوه، جيڪڏهن توهان ورهايو ويو روٽر (DVR)، اهو ڪم ڪندو. هن منظر ۾، اسان هڪ مرڪزي گيٽ وي سان آسان ترين اختيار تي غور ڪري رهيا آهيون، جيڪو Openstack ۾ ڊفالٽ طور استعمال ڪيو ويندو آهي. تيز لوڊ ڪمن لاءِ، اهي ٻئي ورهايل روٽر ۽ ايڪسلريشن ٽيڪنالاجيون استعمال ڪندا جهڙوڪ SR-IOV ۽ Passthrough، پر جيئن چوندا آهن ته، اها هڪ مڪمل طور مختلف ڪهاڻي آهي. پهرين، اچو ته بنيادي حصو سان معاملو ڪريو، ۽ پوء اسين تفصيل ۾ وڃون ٿا.

دراصل، اسان جي اسڪيم اڳ ۾ ئي قابل عمل آهي، پر اتي ڪجھ nuances آهن:

  • اسان کي ڪنهن به طرح اسان جي مشينن جي حفاظت ڪرڻ جي ضرورت آهي، اهو آهي، ڪلائنٽ ڏانهن سوئچ انٽرفيس تي فلٽر وجهي.
  • هڪ مجازي مشين لاءِ ممڪن بڻايو ته خودڪار طريقي سان هڪ IP پتو حاصل ڪري، انهي ڪري ته توهان کي هر وقت ڪنسول ذريعي لاگ ان ٿيڻ ۽ ايڊريس رجسٽر ڪرڻ جي ضرورت ناهي.

اچو ته مشين جي حفاظت سان شروع ڪريون. ان لاءِ توهان استعمال ڪري سگهو ٿا banal iptables، ڇو نه.

اهو آهي، هاڻي اسان جي ٽوپولوجي ٿورو وڌيڪ پيچيده ٿي چڪي آهي:

ڪلائوڊ انفراسٽرڪچر جو نيٽ ورڪ حصو جو تعارف

اچو ته اڳتي وڌون. اسان کي DHCP سرور شامل ڪرڻو پوندو. سڀ کان وڌيڪ مثالي جڳهه DHCP سرورز کي ڳولڻ لاء هر ڪلائنٽ لاء ڪنٽرول نوڊ هوندو جيڪو اڳ ۾ ئي مٿي ذڪر ڪيو ويو آهي، جتي نالا اسپيس واقع آهن:

ڪلائوڊ انفراسٽرڪچر جو نيٽ ورڪ حصو جو تعارف

بهرحال، اتي هڪ ننڍڙو مسئلو آهي. ڇا ٿيندو جيڪڏهن سڀ ڪجھ ريبوٽ ٿئي ۽ DHCP تي ڪرائي تي ڏيڻ واري سموري معلومات غائب ٿي وڃي. اهو منطقي آهي ته مشينن کي نوان ايڊريس ڏنا ويندا، جيڪو تمام آسان ناهي. هتي ٻه طريقا آهن - يا ته ڊومين جا نالا استعمال ڪريو ۽ هر ڪلائنٽ لاءِ هڪ DNS سرور شامل ڪريو، پوءِ پتو اسان لاءِ خاص اهم نه هوندو (K8s ۾ نيٽ ورڪ جي حصي وانگر) - پر ٻاهرين نيٽ ورڪن سان مسئلو آهي، ڇو ته ايڊريس پڻ جاري ڪري سگھجن ٿيون انهن ۾ DHCP ذريعي - توهان کي ڪلائوڊ پليٽ فارم ۾ DNS سرورز ۽ هڪ خارجي DNS سرور سان هم وقت سازي جي ضرورت آهي، جيڪو منهنجي خيال ۾ تمام لچڪدار ناهي، پر بلڪل ممڪن آهي. يا ٻيو اختيار ميٽا ڊيٽا استعمال ڪرڻ آهي- يعني، مشين کي جاري ڪيل ايڊريس بابت معلومات محفوظ ڪريو ته جيئن DHCP سرور ڄاڻي ٿو ته مشين کي ڪهڙي ايڊريس جاري ڪرڻي آهي جيڪڏهن مشين کي اڳ ۾ ئي پتو ملي چڪو آهي. ٻيو اختيار آسان ۽ وڌيڪ لچڪدار آهي، ڇاڪاڻ ته اهو توهان کي ڪار بابت اضافي معلومات بچائڻ جي اجازت ڏئي ٿو. ھاڻي ھاڻي ڊاگرام ۾ ايجنٽ ميٽاداٽا شامل ڪريون:

ڪلائوڊ انفراسٽرڪچر جو نيٽ ورڪ حصو جو تعارف

هڪ ٻيو مسئلو جيڪو پڻ بحث جي لائق آهي اهو آهي هڪ خارجي نيٽ ورڪ کي استعمال ڪرڻ جي صلاحيت سڀني گراهڪن طرفان، ڇو ته ٻاهرين نيٽ ورڪ، جيڪڏهن اهي صحيح هجڻ گهرجن پوري نيٽ ورڪ تي، ڏکيو ٿيندو - توهان کي انهن نيٽ ورڪ جي مختص کي مسلسل مختص ۽ ڪنٽرول ڪرڻ جي ضرورت آهي. سڀني ڪلائنٽ لاءِ هڪ واحد خارجي اڳ ۾ ترتيب ڏنل نيٽ ورڪ استعمال ڪرڻ جي صلاحيت تمام ڪارائتو ثابت ٿيندي جڏهن عوامي ڪلائوڊ ٺاهيندي. اهو مشينن کي ترتيب ڏيڻ آسان بڻائي ڇڏيندو ڇو ته اسان کي ايڊريس ڊيٽابيس سان صلاح ڪرڻ ۽ هر ڪلائنٽ جي خارجي نيٽ ورڪ لاءِ هڪ منفرد ايڊريس اسپيس چونڊڻ جي ضرورت ناهي. ان کان علاوه، اسان اڳ ۾ هڪ خارجي نيٽ ورڪ رجسٽر ڪري سگهون ٿا ۽ مقرري جي وقت تي اسان کي صرف ڪلائنٽ مشينن سان ٻاهرين ايڊريس سان لاڳاپيل ڪرڻ جي ضرورت پوندي.

۽ هتي NAT اسان جي مدد لاءِ اچي ٿو - اسان صرف اهو ممڪن بڻائينداسين ته گراهڪن لاءِ ٻاهرئين دنيا تائين رسائي NAT ترجمي کي استعمال ڪندي ڊفالٽ نالي واري جاءِ ذريعي. خير، هتي هڪ ننڍڙو مسئلو آهي. اهو سٺو آهي جيڪڏهن ڪلائنٽ سرور هڪ ڪلائنٽ طور ڪم ڪري ٿو ۽ نه سرور جي طور تي - اهو آهي، اهو ڪنيڪشن قبول ڪرڻ بدران شروع ڪري ٿو. پر اسان لاءِ ان جي ابتڙ ٿيندو. انهي صورت ۾، اسان کي منزل NAT ڪرڻ جي ضرورت آهي ته جيئن ٽرئفڪ حاصل ڪرڻ وقت، ڪنٽرول نوڊ سمجهي ٿو ته هي ٽريفڪ ڪلائنٽ A جي ورچوئل مشين A لاءِ آهي، جنهن جو مطلب آهي ته اسان کي ضرورت آهي NAT ترجمي کي ٻاهرين ايڊريس مان، مثال طور 100.1.1.1. .10.0.0.1، هڪ اندروني پتي ڏانهن 100. انهي حالت ۾، جيتوڻيڪ سڀئي گراهڪ ساڳيا نيٽ ورڪ استعمال ڪندا، اندروني اڪيلائي مڪمل طور تي محفوظ آهي. اھو آھي، اسان کي ڪرڻ جي ضرورت آھي dNAT ۽ sNAT ڪنٽرول نوڊ تي. ڇا هڪ نيٽ ورڪ استعمال ڪرڻ آهي سچل پتي سان يا ٻاهرين نيٽ ورڪن سان، يا ٻئي هڪ ڀيرو، ان تي منحصر آهي ته توهان ڪڪر ۾ آڻڻ چاهيو ٿا. اسان ڊراگرام ۾ سچل ايڊريس شامل نه ڪنداسين، پر خارجي نيٽ ورڪن کي ڇڏي ڏينداسين جيڪي اڳ ۾ شامل ڪيا ويا آھن - ھر ڪلائنٽ جو پنھنجو ھڪڙو خارجي نيٽ ورڪ آھي (ڊاگرام ۾ اھي ڏيکاريل آھن vlan 200 ۽ XNUMX خارجي انٽرفيس تي).

نتيجي طور، اسان کي هڪ دلچسپ ۽ ساڳئي وقت چڱي طرح سوچڻ وارو حل مليو، جنهن ۾ هڪ خاص لچڪ آهي پر اڃا تائين غلطي برداشت ڪرڻ واري ميڪانيزم نه آهي.

پهرين، اسان وٽ صرف هڪ ڪنٽرول نوڊ آهي - ان جي ناڪامي سڀني سسٽم جي خاتمي کي ڏسندي. هن مسئلي کي حل ڪرڻ لاء، توهان کي گهٽ ۾ گهٽ 3 نوڊس جو ڪورم ٺاهڻ جي ضرورت آهي. اچو ته هن کي ڊراگرام ۾ شامل ڪريون:

ڪلائوڊ انفراسٽرڪچر جو نيٽ ورڪ حصو جو تعارف

قدرتي طور تي، سڀئي نوڊس هم وقت سازي ڪيا ويندا آهن ۽ جڏهن هڪ فعال نوڊ نڪرندو آهي، ٻيو نوڊ پنهنجي ذميوارين تي قبضو ڪندو.

ايندڙ مسئلو مجازي مشين ڊسڪ آهي. هن وقت، اهي پاڻ کي هائپرائزر تي ذخيرو ٿيل آهن، ۽ هائپر وائيزر سان مسئلن جي صورت ۾، اسان سڀني ڊيٽا کي وڃائي ڇڏيو آهي - ۽ هڪ حملي جي موجودگي هتي مدد نه ڪندي جيڪڏهن اسان ڊسڪ نه وڃايو، پر سڄو سرور. هن کي ڪرڻ لاء، اسان کي هڪ خدمت ٺاهڻ جي ضرورت آهي جيڪا ڪنهن قسم جي اسٽوريج لاء فرنٽ آخر طور ڪم ڪندي. اهو ڪهڙي قسم جو اسٽوريج هوندو اهو اسان لاءِ خاص اهم ناهي، پر اهو اسان جي ڊيٽا کي ڊسڪ ۽ نوڊ جي ناڪامي کان بچائڻ گهرجي، ۽ ممڪن آهي ته پوري ڪابينا. هتي ڪيترائي آپشن آهن - اتي آهن، يقينا، فائبر چينل سان SAN نيٽ ورڪ، پر اچو ته ايماندار ٿي - FC اڳ ۾ ئي ماضي جو هڪ ذخيرو آهي - ٽرانسپورٽ ۾ E1 جو هڪ اينالاگ - ها، مان متفق آهيان، اهو اڃا تائين استعمال ڪيو ويو آهي، پر صرف جتي ان کان سواء بلڪل ناممڪن آهي. تنهن ڪري، مان رضاڪارانه طور تي 2020 ۾ ايف سي نيٽ ورڪ کي ترتيب نه ڏيندس، ڄاڻو ته ٻيا وڌيڪ دلچسپ متبادل آهن. جيتوڻيڪ هر هڪ کي پنهنجي پنهنجي، اتي اهي هوندا جيڪي يقين رکندا آهن ته FC ان جي سڀني حدن سان گڏ اسان کي تمام ضروري آهي - مان بحث نه ڪندس، هر ڪنهن جي پنهنجي راء آهي. بهرحال، منهنجي راء ۾ سڀ کان وڌيڪ دلچسپ حل هڪ SDS استعمال ڪرڻ آهي، جهڙوڪ Ceph.

Ceph توهان کي ممڪن بيڪ اپ اختيارن جي هڪ گروپ سان گڏ هڪ انتهائي دستياب ڊيٽا اسٽوريج حل ٺاهڻ جي اجازت ڏئي ٿو، ڪوڊس سان شروع ٿئي ٿو برابري جي چڪاس سان (رايڊ 5 يا 6 جي مطابق) مختلف ڊسڪ تي مڪمل ڊيٽا جي نقل سان ختم ٿيڻ سان، ڊسڪ جي جڳھ کي حساب ۾ رکندي. سرور، ۽ سرورز ۾ ڪابينا، وغيره.

Ceph تعمير ڪرڻ لاء توهان کي 3 وڌيڪ نوڊس جي ضرورت آهي. اسٽوريج سان رابطو پڻ نيٽ ورڪ ذريعي ڪيو ويندو بلاڪ، اعتراض ۽ فائل اسٽوريج سروسز استعمال ڪندي. اچو ته اسڪيما ۾ اسٽوريج شامل ڪريو:

ڪلائوڊ انفراسٽرڪچر جو نيٽ ورڪ حصو جو تعارف

نوٽ: توهان هائپر ڪنورجيڊ ڪمپيوٽ نوڊس پڻ ٺاهي سگهو ٿا - هي هڪ نوڊ تي ڪيترن ئي ڪمن کي گڏ ڪرڻ جو تصور آهي - مثال طور، اسٽوريج + ڪمپيوٽي - ڪيف اسٽوريج لاءِ خاص نوڊس وقف ڪرڻ کان سواءِ. اسان ساڳي غلطي برداشت ڪرڻ واري اسڪيم حاصل ڪنداسين - ڇو ته SDS اسان جي وضاحت ڪيل ريزرويشن سطح سان ڊيٽا محفوظ ڪندو. بهرحال، هائپر ڪنورجڊ نوڊس هميشه هڪ سمجهوتو هوندو آهي - ڇاڪاڻ ته اسٽوريج نوڊ صرف هوا کي گرم نه ڪندو آهي جيئن ته اهو پهرين نظر ۾ لڳي ٿو (جيئن ته ان تي ڪا به ورچوئل مشينون نه آهن) - اهو سي پي يو وسيلن کي SDS جي خدمت تي خرچ ڪري ٿو (حقيقت ۾، اهو سڀ ڪجهه ڪري ٿو. نوڊس، ڊسڪ، وغيره جي ناڪامي کان پوء نقل ۽ بحالي). اهو آهي، جيڪڏهن توهان ان کي اسٽوريج سان گڏ ڪيو ته توهان ڪمپيوٽ نوڊ جي ڪجهه طاقت وڃائي ڇڏيندؤ.

هي سڀ شيون ڪنهن نه ڪنهن طريقي سان منظم ٿيڻ گهرجن - اسان کي اهڙي شيءِ جي ضرورت آهي جنهن جي ذريعي اسان هڪ مشين، هڪ نيٽ ورڪ، هڪ ورچوئل روٽر وغيره ٺاهي سگهون. اهو ڪرڻ لاءِ، اسان ڪنٽرول نوڊ ۾ هڪ خدمت شامل ڪنداسين جيڪا ڊيش بورڊ طور ڪم ڪندي. ڪلائنٽ هن پورٽل سان http/ https ذريعي ڳنڍڻ جي قابل هوندو ۽ هر شي کي هن جي ضرورت آهي (چڱو، لڳ ڀڳ).

نتيجي طور، اسان وٽ هاڻي هڪ غلطي برداشت ڪرڻ وارو نظام آهي. هن انفراسٽرڪچر جي سڀني عناصر کي ڪنهن نه ڪنهن طريقي سان منظم ڪيو وڃي. اهو اڳ ۾ بيان ڪيو ويو آهي ته Openstack منصوبن جو هڪ سيٽ آهي، جن مان هر هڪ مخصوص فنڪشن مهيا ڪري ٿو. جيئن اسان ڏسون ٿا، ڪافي عناصر کان وڌيڪ آھن جن کي ترتيب ڏيڻ ۽ ڪنٽرول ڪرڻ جي ضرورت آھي. اڄ اسان نيٽ ورڪ جي حصي بابت ڳالهائينداسين.

نيوٽران فن تعمير

OpenStack ۾، اهو Neutron آهي جيڪو ورچوئل مشين بندرگاهن کي هڪ عام L2 نيٽ ورڪ سان ڳنڍڻ جو ذميوار آهي، مختلف L2 نيٽ ورڪن تي واقع VMs جي وچ ۾ ٽريفڪ جي روٽنگ کي يقيني بڻائي، گڏوگڏ ٻاهرئين روٽنگ، خدمتون مهيا ڪرڻ جهڙوڪ NAT، Floating IP، DHCP وغيره.

هڪ اعلي سطح تي، نيٽ ورڪ سروس جي آپريشن (بنيادي حصو) هيٺ بيان ڪري سگهجي ٿو.

جڏهن VM شروع ڪري، نيٽ ورڪ سروس:

  1. ڏنل VM (يا بندرگاهن) لاءِ هڪ بندرگاهه ٺاهي ٿو ۽ ان بابت DHCP سروس کي اطلاع ڏئي ٿو؛
  2. ھڪڙو نئون ورچوئل نيٽ ورڪ ٺاھيو ويو آھي (libvirt ذريعي)؛
  3. VM قدم 1 ۾ ٺاهيل بندرگاهن سان ڳنڍي ٿو؛

حيرت انگيز طور تي، نيوٽران جو ڪم معياري ميڪانيزم تي مبني آهي جيڪو هر ڪنهن کان واقف آهي، جيڪو ڪڏهن به لينڪس ۾ ڊايو آهي - namespaces، iptables، linux bridges، openvswitch، conntrack، وغيره.

اهو فوري طور تي واضح ڪيو وڃي ته Neutron هڪ SDN ڪنٽرولر نه آهي.

نيوٽران ڪيترن ئي باہم جڙيل اجزاء تي مشتمل آهي:

ڪلائوڊ انفراسٽرڪچر جو نيٽ ورڪ حصو جو تعارف

Openstack-نيوٽران-سرور هڪ ڊيمون آهي جيڪو API ذريعي صارف جي درخواستن سان ڪم ڪري ٿو. هي شيطان ڪنهن به نيٽ ورڪ ڪنيڪشن کي رجسٽر ڪرڻ ۾ ملوث ناهي، پر ان لاءِ ضروري معلومات مهيا ڪري ٿو ان جي پلگ ان کي، جيڪو پوءِ گهربل نيٽ ورڪ عنصر کي ترتيب ڏئي ٿو. OpenStack نوڊس تي نيوٽران ايجنٽ نيوٽران سرور سان رجسٽر ٿين ٿا.

Neutron-server اصل ۾ python ۾ لکيل هڪ ايپليڪيشن آهي، جنهن ۾ ٻه حصا آهن:

  • REST سروس
  • نيوٽران پلگ ان (ڪور/سروس)

REST سروس ٻين حصن مان API ڪال وصول ڪرڻ لاءِ ٺهيل آهي (مثال طور، ڪجهه معلومات مهيا ڪرڻ جي درخواست، وغيره)

پلگ ان پلگ ان سافٽ ويئر جا حصا/ماڊيول آھن جيڪي API درخواستن دوران سڏيا ويندا آھن - اھو آھي، ھڪڙي خدمت جو انتساب انھن جي ذريعي ٿئي ٿو. پلگ ان ٻن قسمن ۾ ورهايل آهن - خدمت ۽ روٽ. ضابطي جي طور تي، گھوڙي پلگ ان بنيادي طور تي ايڊريس جي جڳھ کي منظم ڪرڻ ۽ VMs جي وچ ۾ L2 ڪنيڪشن جو ذميوار آھي، ۽ سروس پلگ ان اڳ ۾ ئي اضافي ڪارڪردگي مهيا ڪن ٿا جهڙوڪ VPN يا FW.

اڄ موجود پلگ ان جي فهرست مثال طور ڏسي سگھجي ٿي هتي

اتي ڪيترائي سروس پلگ ان ٿي سگھن ٿا، پر صرف ھڪڙو گھوڙي پلگ ان ٿي سگھي ٿو.

openstack-neutron-ml2 معياري Openstack روٽ پلگ ان آهي. ھن پلگ ان ۾ ھڪڙو ماڊلر فن تعمير آھي (ان جي اڳوڻن جي برعڪس) ۽ ان سان ڳنڍيل ڊرائيورن ذريعي نيٽ ورڪ سروس کي ترتيب ڏئي ٿو. اسان ٿوري دير کان پوءِ پاڻ پلگ ان کي ڏسنداسين، ڇو ته حقيقت ۾ اها لچڪ ڏئي ٿي جيڪا OpenStack نيٽ ورڪ واري حصي ۾ آهي. روٽ پلگ ان کي تبديل ڪري سگھجي ٿو (مثال طور، Contrail Networking اهڙي متبادل ڪندو آهي).

RPC سروس (rabbitmq-server) - هڪ خدمت جيڪا مهيا ڪري ٿي قطار جو انتظام ۽ ٻين OpenStack خدمتن سان رابطو، گڏوگڏ نيٽ ورڪ سروس ايجنٽن جي وچ ۾ رابطو.

نيٽ ورڪ ايجنٽ - ايجنٽ جيڪي هر نوڊ ۾ واقع آهن، جن جي ذريعي نيٽورڪ خدمتون ترتيب ڏنل آهن.

ايجنٽ جا ڪيترائي قسم آهن.

مکيه ايجنٽ آهي L2 ايجنٽ. اهي ايجنٽ هر هڪ هائپرائزر تي هلن ٿا، بشمول ڪنٽرول نوڊس (وڌيڪ واضح طور تي، سڀني نوڊس تي جيڪي نوڪر لاءِ ڪا به خدمت مهيا ڪن ٿا) ۽ انهن جو بنيادي ڪم ورچوئل مشينن کي عام L2 نيٽ ورڪ سان ڳنڍڻ آهي، ۽ جڏهن ڪو واقعو ٿئي ٿو ته الرٽ پڻ پيدا ڪن ٿا ( مثال طور بندرگاهن کي غير فعال/ فعال ڪريو).

اڳيون، نه گهٽ اهم ايجنٽ آهي L3 ايجنٽ. ڊفالٽ طور، هي ايجنٽ خاص طور تي نيٽ ورڪ نوڊ تي هلندو آهي (اڪثر ڪري نيٽ ورڪ نوڊ هڪ ڪنٽرول نوڊ سان گڏ هوندو آهي) ۽ نوڪر نيٽ ورڪن جي وچ ۾ (ٻنهي جي نيٽ ورڪن ۽ ٻين نوڪررن جي نيٽ ورڪن جي وچ ۾، ۽ ٻاهرين دنيا تائين پهچ، مهيا ڪري ٿي) NAT، گڏوگڏ DHCP سروس). جڏهن ته، هڪ DVR استعمال ڪندي (تقسيم ٿيل روٽر)، هڪ L3 پلگ ان جي ضرورت پڻ ڪمپيوٽ نوڊس تي ظاهر ٿئي ٿي.

L3 ايجنٽ استعمال ڪري ٿو لينڪس نالن جي جڳھن کي مهيا ڪرڻ لاءِ ھر نوڪر کي پنھنجي الڳ ٿيل نيٽ ورڪن جي ھڪڙي سيٽ سان ۽ ورچوئل روٽرز جي ڪارڪردگي جيڪي ٽريفڪ کي روٽ ڪن ٿا ۽ گيٽ وي سروسز مهيا ڪن ٿا پرت 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 encapsulation overlay نيٽ ورڪ ۽ vlan ٻاهرين نيٽ ورڪن لاءِ.

ٽائيپ ڊرائيورن ۾ ھيٺيون نيٽ ورڪ جا قسم شامل آھن:

فليٽ - نيٽ ورڪ بغير ٽيگنگ
وي ايلان - ٽيگ ٿيل نيٽ ورڪ
مقامي - هڪ خاص قسم جو نيٽ ورڪ سڀني ۾ هڪ تنصيب لاءِ (اهڙي تنصيب جي ضرورت آهي يا ته ڊولپرز لاءِ يا ٽريننگ لاءِ)
GRE - اوورلي نيٽ ورڪ GRE سرنگون استعمال ڪندي
VxLAN VxLAN سرنگون استعمال ڪندي نيٽ ورڪ کي اوورلي

مشيني ڊرائيور اوزار جي وضاحت ڪريو جيڪي قسم جي ڊرائيور ۾ بيان ڪيل ٽيڪنالاجي جي تنظيم کي يقيني بڻائين - مثال طور، openvswitch، sr-iov، opendaylight، OVN، وغيره.

هن ڊرائيور جي عمل تي منحصر ڪري، يا ته نيوٽران پاران ڪنٽرول ٿيل ايجنٽ استعمال ڪيا ويندا، يا هڪ خارجي SDN ڪنٽرولر سان ڪنيڪشن استعمال ڪيا ويندا، جيڪو L2 نيٽ ورڪن کي منظم ڪرڻ، روٽنگ، وغيره سان لاڳاپيل سڀني مسئلن جو خيال رکندو آهي.

مثال: جيڪڏهن اسان ML2 کي OVS سان گڏ استعمال ڪريون ٿا، ته پوءِ هڪ L2 ايجنٽ هر ڪمپيوٽنگ نوڊ تي نصب ٿيل آهي جيڪو OVS کي منظم ڪري ٿو. تنهن هوندي، جيڪڏهن اسان استعمال ڪريون ٿا، مثال طور، OVN يا OpenDayLight، پوء OVS جو ڪنٽرول انهن جي دائري اختيار ۾ اچي ٿو - نيوٽران، روٽ پلگ ان ذريعي، ڪنٽرولر کي حڪم ڏئي ٿو، ۽ اهو اڳ ۾ ئي ڪري ٿو جيڪو ان کي ٻڌايو ويو آهي.

اچو ته Open vSwitch تي برش ڪريون

هن وقت، OpenStack جي اهم حصن مان هڪ آهي Open vSwitch.
جڏهن OpenStack انسٽال ڪري رهيا آهيو بغير ڪنهن اضافي وينڊر جي SDN جهڙوڪ Juniper Contrail يا Nokia Nuage، OVS ڪلائوڊ نيٽ ورڪ جو مکيه نيٽ ورڪ جزو آهي ۽، iptables، conntrack، namespaces سان گڏ، توهان کي اجازت ڏئي ٿو منظم ڪرڻ جي مڪمل-ملٽي ٽيننسي اوورلي نيٽ ورڪ. قدرتي طور، هي جزو تبديل ٿي سگهي ٿو، مثال طور، جڏهن ٽئين پارٽي جي ملڪيت (وينڊر) SDN حل استعمال ڪندي.

OVS هڪ اوپن سورس سافٽ ويئر سوئچ آهي جيڪو ورچوئل ٽريفڪ فارورڊر جي طور تي مجازي ماحول ۾ استعمال لاءِ ٺهيل آهي.

هن وقت، OVS وٽ تمام مهذب ڪارڪردگي آهي، جنهن ۾ ٽيڪنالاجيون شامل آهن جهڙوڪ QoS، LACP، VLAN، VxLAN، GENEVE، OpenFlow، DPDK وغيره.

نوٽ: OVS شروعاتي طور تي انتهائي لوڊ ٿيل ٽيليڪ ڪمن لاءِ نرم سوئچ جي طور تي تصور نه ڪيو ويو هو ۽ گهٽ بينڊوڊٿ-مطالبو ڪندڙ IT افعال جهڙوڪ WEB سرور يا ميل سرور لاءِ وڌيڪ ٺهيل هو. بهرحال، OVS وڌيڪ ترقي ڪئي پئي وڃي ۽ OVS جي موجوده عملن ان جي ڪارڪردگي ۽ صلاحيتن کي تمام گهڻو بهتر ڪيو آهي، جيڪو ان کي اجازت ڏئي ٿو ته ٽيلي ڪام آپريٽرز کي انتهائي لوڊ ٿيل ڪمن سان استعمال ڪيو وڃي، مثال طور، DPDK تيز رفتاري لاءِ سپورٽ سان OVS عمل درآمد آهي.

OVS جا ٽي اهم حصا آھن جن کان توھان کي آگاھ ٿيڻ گھرجي:

  • ڪرنل ماڊل - ڪنييل اسپيس ۾ واقع هڪ جزو جيڪو ڪنٽرول عنصر مان حاصل ڪيل ضابطن جي بنياد تي ٽرئفڪ کي پروسيس ڪري ٿو؛
  • v سوئچ daemon (ovs-vswitchd) هڪ عمل آهي جيڪو يوزر اسپيس ۾ شروع ڪيو ويو آهي جيڪو ڪرنل ماڊل کي پروگرام ڪرڻ جو ذميوار آهي - يعني اهو سڌو سنئون سوئچ جي آپريشن جي منطق کي ظاهر ڪري ٿو.
  • ڊيٽابيس سرور - هڪ مقامي ڊيٽابيس تي واقع آهي هر ميزبان تي هلندڙ OVS، جنهن ۾ ترتيب ذخيرو ٿيل آهي. SDN سنڀاليندڙ هن ماڊل ذريعي OVSDB پروٽوڪول استعمال ڪندي گفتگو ڪري سگھن ٿا.

اهو سڀ ڪجهه تشخيصي ۽ انتظامي افاديت جي هڪ سيٽ سان گڏ آهي، جهڙوڪ ovs-vsctl، ovs-appctl، ovs-ofctl، وغيره.

في الحال، Openstack وڏي پئماني تي ٽيلي ڪام آپريٽرز پاران استعمال ڪيو ويندو آهي نيٽ ورڪ ڪمن کي منتقل ڪرڻ لاءِ، جهڙوڪ EPC، SBC، HLR، وغيره. ڪجهه فنڪشن بغير ڪنهن پريشاني جي OVS سان رهي سگهن ٿا، پر مثال طور، EPC سبسڪرائبر ٽريفڪ کي پروسيس ڪري ٿو - پوءِ اهو گذري ٿو ٽريفڪ جي وڏي مقدار (هاڻي ٽريفڪ جي مقدار ڪيترن ئي سو گيگا بائيٽ في سيڪنڊ تائين پهچي ٿي). قدرتي طور تي، اهڙي ٽريفڪ کي ڪرنل اسپيس ذريعي هلائڻ (جيئن ته فارورڊ ڊفالٽ طور تي موجود آهي) بهترين خيال ناهي. تنهن ڪري، OVS اڪثر ڪري ڊي پي ڊي ڪي ايڪسلريشن ٽيڪنالاجي استعمال ڪندي مڪمل طور تي يوزر اسپيس ۾ استعمال ڪيو ويندو آهي ٽريفڪ کي اين آءِ سي کان يوزر اسپيس ڏانهن ڪنيل کي پاس ڪندي.

نوٽ: ڪلائوڊ لاءِ ٽيلي ڪام جي ڪمن لاءِ ڊيپلائي ڪيو ويو، اهو ممڪن آهي ته هڪ ڪمپيوٽ نوڊ مان ٽريفڪ کي آئوٽ ڪرڻ OVS کي پاس ڪري سڌو سامان مٽائڻ لاءِ. SR-IOV ۽ پاسٿرو ميڪانيزم هن مقصد لاء استعمال ڪيا ويا آهن.

اهو ڪيئن ڪم ڪري ٿو حقيقي ترتيب تي؟

خير، هاڻي اچو ته عملي حصو ڏانهن وڃو ۽ ڏسو ته اهو سڀ ڪجهه ڪيئن ڪم ڪري ٿو.

پهرين، اچو ته هڪ سادي Openstack تنصيب کي ترتيب ڏيو. جيئن ته مون وٽ تجربن لاءِ سرور جو هڪ سيٽ نه آهي، اسان ورچوئل مشينن مان هڪ جسماني سرور تي پروٽوٽائپ گڏ ڪنداسين. ها، قدرتي طور، اهڙي حل تجارتي مقصدن لاء مناسب ناهي، پر هڪ مثال ڏسڻ لاء ڪيئن نيٽ ورڪ Openstack ۾ ڪم ڪري ٿو، اهڙي تنصيب اکين لاء ڪافي آهي. ان کان علاوه، اهڙي تنصيب تربيتي مقصدن لاء اڃا به وڌيڪ دلچسپ آهي - ڇو ته توهان ٽرئفڪ کي پڪڙي سگهو ٿا، وغيره.

جيئن ته اسان کي صرف بنيادي حصو ڏسڻ جي ضرورت آهي، اسان ڪيترائي نيٽ ورڪ استعمال نٿا ڪري سگهون پر صرف ٻه نيٽ ورڪ استعمال ڪندي هر شيء کي وڌائي سگهون ٿا، ۽ هن ترتيب ۾ ٻيو نيٽ ورڪ خاص طور تي انڊر ڪلائوڊ ۽ ڊي اين ايس سرور تائين رسائي لاء استعمال ڪيو ويندو. اسان في الحال خارجي نيٽ ورڪن تي رابطو نه ڪنداسين - هي هڪ الڳ وڏي مضمون لاء هڪ موضوع آهي.

سو، اچو ته ترتيب سان شروع ڪريون. پهريون، هڪ ننڍڙو نظريو. اسان TripleO استعمال ڪندي Openstack انسٽال ڪنداسين (اوپن اسٽيڪ تي اوپن اسٽيڪ). TripleO جو خلاصو اهو آهي ته اسان Openstack all-in-one (يعني هڪ نوڊ تي) انسٽال ڪريون ٿا، جنهن کي انڊر ڪلائوڊ سڏيو وڃي ٿو، ۽ پوءِ آپريشن لاءِ ارادو ڪيل Openstack کي انسٽال ڪرڻ لاءِ ڊيپلائي ٿيل Openstack جي صلاحيتن کي استعمال ڪريون ٿا، جنهن کي overcloud سڏيو وڃي ٿو. انڊر ڪلائوڊ فزيڪل سرورز (ننگي ڌاتو) کي منظم ڪرڻ لاءِ پنهنجي موروثي صلاحيت کي استعمال ڪندو - آئرنڪ پروجيڪٽ - هائپر وائزرز کي مهيا ڪرڻ لاءِ جيڪي ڪمپيوٽ ، ڪنٽرول ، اسٽوريج نوڊس جا ڪردار انجام ڏيندا. اهو آهي، اسان Openstack کي ترتيب ڏيڻ لاء ڪنهن به ٽئين پارٽي اوزار استعمال نه ڪندا آهيون - اسان Openstack استعمال ڪندي Openstack کي ترتيب ڏيو ٿا. اهو وڌيڪ واضح ٿي ويندو جيئن انسٽاليشن جاري آهي، تنهنڪري اسان اتي روڪي نه سگهنداسين ۽ اڳتي وڌو.

نوٽ: هن آرٽيڪل ۾، سادگي جي خاطر، مون اندروني اوپن اسٽيڪ نيٽ ورڪن لاءِ نيٽ ورڪ آئسوليشن استعمال نه ڪيو، پر هر شي کي صرف هڪ نيٽ ورڪ استعمال ڪندي لڳايو ويو آهي. بهرحال، نيٽ ورڪ جي اڪيلائي جي موجودگي يا غير موجودگي حل جي بنيادي ڪارڪردگي تي اثر انداز نٿو ڪري - هر شيء بلڪل ساڳيو ڪم ڪندي جڏهن اڪيلائي استعمال ڪندي، پر ٽرئفڪ ساڳئي نيٽ ورڪ تي وهندي. هڪ تجارتي تنصيب لاء، اهو قدرتي طور تي ضروري آهي ته الڳ الڳ استعمال ڪندي مختلف vlans ۽ انٽرفيس استعمال ڪندي. مثال طور، سيف اسٽوريج مئنيجمينٽ ٽريفڪ ۽ ڊيٽا ٽريفڪ پاڻ (ڊسڪ تائين مشين جي رسائي، وغيره) جڏهن الڳ الڳ استعمال ڪندا آهن مختلف سبنيٽس (اسٽوريج مئنيجمينٽ ۽ اسٽوريج) ۽ اهو توهان کي اجازت ڏئي ٿو ته هن ٽرئفڪ کي ورهائي حل کي وڌيڪ غلطي برداشت ڪري، مثال طور. ، مختلف بندرگاهن تي، يا مختلف ٽريفڪ لاءِ مختلف QoS پروفائلز استعمال ڪندي ته جيئن ڊيٽا ٽرئفڪ سگنلنگ ٽرئفڪ کي دٻائي نه سگهي. اسان جي حالت ۾، اهي ساڳيا نيٽ ورڪ تي ويندا ۽ حقيقت ۾ اهو اسان کي ڪنهن به طريقي سان محدود نٿو ڪري.

نوٽ: جيئن ته اسان ورچوئل مشينن کي هلائڻ وارا آهيون مجازي ماحول ۾ ورچوئل مشينن جي بنياد تي، اسان کي پهريون ڀيرو گهربل ورچوئلائيزيشن کي فعال ڪرڻ جي ضرورت آهي.

توهان چيڪ ڪري سگهو ٿا ته ڇا nested ورچوئلائيزيشن فعال آهي يا نه هن طرح:


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

جيڪڏهن توهان ڏسندا آهيو اکر N، ته پوءِ اسان ڪنهن به گائيڊ جي مطابق nested ورچوئلائيزيشن لاءِ سپورٽ کي فعال ڪريون ٿا جيڪو توهان نيٽ ورڪ تي ڳوليو، مثال طور جيئن ته هڪ .

اسان کي ورچوئل مشينن مان هيٺين سرڪٽ کي گڏ ڪرڻ جي ضرورت آهي:

ڪلائوڊ انفراسٽرڪچر جو نيٽ ورڪ حصو جو تعارف

منهنجي حالت ۾، مجازي مشينن کي ڳنڍڻ لاء جيڪي مستقبل جي تنصيب جو حصو آهن (۽ مون انهن مان 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 

ھاڻي اسان ايڊٽ ڪريون ٿا hypervisor port configurations:


[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 تي پتو پهچ نه سگهندو ڇاڪاڻ ته ان ۾ ويلان ٽيگ نه آهي. هن کي درست ڪرڻ لاءِ، توهان کي حڪم جاري ڪرڻو پوندو 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

انسٽاليشن دوران، توهان تمام ضروري پيٽرولر سيٽ ڪريو، جهڙوڪ مشين جو نالو، پاسورڊ، استعمال ڪندڙ، اين ٽي پي سرور، وغيره، توهان فوري طور تي بندرگاهن کي ترتيب ڏئي سگهو ٿا، پر ذاتي طور تي، انسٽاليشن کان پوء، مشين ذريعي لاگ ان ٿيڻ آسان آهي. ڪنسول ۽ ضروري فائلن کي درست ڪريو. جيڪڏهن توهان وٽ اڳ ۾ ئي تيار ڪيل تصوير آهي، توهان ان کي استعمال ڪري سگهو ٿا، يا اهو ڪيو جيڪو مون ڪيو - ڊائون لوڊ ڪريو گهٽ ۾ گهٽ Centos 7 تصوير ۽ ان کي استعمال ڪريو VM انسٽال ڪرڻ لاءِ.

ڪامياب تنصيب کان پوء، توهان وٽ هڪ مجازي مشين هجڻ گهرجي جنهن تي توهان انڊر ڪلائوڊ انسٽال ڪري سگهو ٿا


[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

انڊر ڪلائوڊ تنصيب

اسان هڪ اسٽيڪ يوزر ٺاهيو، پاسورڊ سيٽ ڪريو، ان کي سوڊور ۾ شامل ڪريو ۽ کيس پاسورڊ داخل ڪرڻ جي بغير سودو ذريعي روٽ حڪمن تي عمل ڪرڻ جي صلاحيت ڏيو:


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 انسٽال ڪرڻ جو ارادو نه ڪيو، ته پوء توهان کي سيف سان لاڳاپيل حڪم داخل ڪرڻ جي ضرورت ناهي. مون ڪائنس رليز استعمال ڪيو، پر توھان استعمال ڪري سگھوٿا ڪو ٻيو جيڪو توھان چاھيو.

اڳيون، انڊر ڪلائوڊ ترتيب واري فائل کي نقل ڪريو صارف جي گهر ڊاريڪٽري اسٽيڪ تي:


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 - مقامي انڊر ڪلائوڊ ايڊريس نيٽ ورڪ فراهم ڪرڻ لاءِ

نيٽ ورڪ_گيٽ وي - ساڳيو مقامي پتو، جيڪو اوور ڪلائوڊ نوڊس جي انسٽاليشن دوران ٻاهرين دنيا تائين رسائي لاءِ گيٽ وي جي طور تي ڪم ڪندو، پڻ مقامي ip سان ٺهڪي اچي ٿو.

undercloud_public_host - خارجي API پتو، مهيا ڪندڙ نيٽ ورڪ کان ڪو به مفت پتو لڳايو ويو آهي

undercloud_admin_host اندروني API پتو، مهيا ڪندڙ نيٽ ورڪ مان ڪنهن به مفت پتو لڳايو ويو آهي

undercloud_nameservers - DNS سرور

generate_service_certificate - ھي لڪير موجوده مثال ۾ تمام ضروري آھي، ڇاڪاڻ ته جيڪڏھن توھان ان کي غلط تي مقرر نه ڪيو آھي توھان کي انسٽاليشن دوران غلطي ملندي، مسئلو Red Hat بگ ٽريڪر تي بيان ڪيو ويو آھي.

local_interface نيٽ ورڪ فراهم ڪرڻ ۾ انٽرفيس. هي انٽرفيس انڊر ڪلائوڊ ڊيپلائيشن دوران ٻيهر ترتيب ڏنو ويندو، تنهنڪري توهان کي انڊر ڪلائوڊ تي ٻه انٽرفيس رکڻ گهرجن - هڪ ان تائين رسائي لاءِ، ٻيو روزي ڏيڻ لاءِ.

local_mtu - MTU. جيئن ته اسان وٽ هڪ ٽيسٽ ليبارٽري آهي ۽ مون وٽ OVS سوئچ بندرگاهن تي 1500 جو MTU آهي، اهو ضروري آهي ته ان کي 1450 تي سيٽ ڪيو وڃي ته جيئن VxLAN ۾ ڍڪيل پيڪيٽس اتان گذري سگهن.

نيٽ ورڪ_cidr - مهيا ڪندڙ نيٽ ورڪ

زبردست - ٻاهرين نيٽ ورڪ تائين رسائي حاصل ڪرڻ لاءِ NAT استعمال ڪندي

masquerade_network - نيٽ ورڪ جيڪو نيٽ ڪيو ويندو

dhcp_start - ايڊريس پول جي شروعاتي ايڊريس جنهن مان ايڊريس اوور ڪلائوڊ ڊيپلائيمينٽ دوران نوڊس کي تفويض ڪيا ويندا

dhcp_end - ايڊريس پول جو آخري پتو جنهن مان ايڊريس اوور ڪلائوڊ ڊيپلائيمينٽ دوران نوڊس کي تفويض ڪيا ويندا

inspection_iprange - پتي جو هڪ تلاءُ لازمي طور تي انسپيڪشن لاءِ (مٿين تلاءَ سان اوورليپ نه ٿيڻ گهرجي)

شيڊولر_ميڪس_ ڪوششون - اوور ڪلائوڊ کي انسٽال ڪرڻ جي ڪوششن جو وڌ ۾ وڌ تعداد (نوڊس جي تعداد کان وڌيڪ يا برابر هجڻ گھرجي)

فائل بيان ڪرڻ کان پوء، توهان هيٺ ڏنل ڪلائوڊ کي ترتيب ڏيڻ لاء حڪم ڏئي سگهو ٿا:


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

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، جيڪو /tmp/ فولڊر ۾ هر مشين جي وضاحت سان هڪ xml فائل ٺاهي ٿو؛ جيڪڏهن توهان ان کي شامل نه ڪيو، توهان نه هوندا. مجازي مشين جي سڃاڻپ ڪرڻ جي قابل.

هاڻي اسان کي انهن سڀني مشينن کي ورش ۾ بيان ڪرڻ جي ضرورت آهي:


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

ھاڻي ھڪڙو ننڍڙو nuance - tripleO استعمال ڪري ٿو IPMI سرور کي منظم ڪرڻ لاء انسٽاليشن ۽ introspection دوران.

Introspection هارڊويئر جي معائنو ڪرڻ جو عمل آهي ان جي پيرا ميٽرز کي حاصل ڪرڻ لاءِ ضروري آهي نوڊس جي وڌيڪ فراهمي لاءِ. Introspection Ironic استعمال ڪندي ڪيو ويندو آهي، هڪ خدمت جيڪا بيئر ميٽيل سرورز سان ڪم ڪرڻ لاءِ ٺهيل آهي.

پر هتي مسئلو آهي - جڏهن ته هارڊويئر IPMI سرورز وٽ هڪ الڳ بندرگاهه آهي (يا هڪ گڏيل بندرگاهه، پر اهو اهم ناهي)، پوءِ ورچوئل مشينن وٽ اهڙيون بندرگاهون نه هونديون آهن. هتي vbmc نالي هڪ ڪرچ اسان جي مدد لاءِ اچي ٿو - هڪ يوٽيليٽي جيڪا توهان کي اجازت ڏئي ٿي IPMI بندرگاهن کي نقل ڪرڻ جي. هي nuance ڌيان ڏيڻ جي قابل آهي خاص طور تي انهن لاءِ جيڪي ESXI هائپر وائيزر تي اهڙي ليبارٽري قائم ڪرڻ چاهين ٿا - سچ پڇو ، مون کي خبر ناهي ته ان ۾ وي بي ايم سي جو هڪ اينالاگ آهي ، تنهن ڪري اهو سڀ ڪجهه ترتيب ڏيڻ کان پهريان هن مسئلي بابت سوچڻ جي قابل آهي. .

vbmc انسٽال ڪريو:


yum install yum install python2-virtualbmc

جيڪڏهن توهان جو او ايس پيڪيج نه ڳولي سگهي، پوء مخزن شامل ڪريو:

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

منهنجو خيال آهي ته حڪم نحو بغير وضاحت جي واضح آهي. تنهن هوندي، هن وقت تائين اسان جا سڀئي سيشن هيٺ ڏنل حالت ۾ آهن. انهن لاءِ يوپي اسٽيٽس ڏانهن وڃڻ لاءِ، توهان کي انهن کي فعال ڪرڻو پوندو:


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

جيڪڏهن نوڊس هڪ مختلف حالت ۾ آهن، عام طور تي منظم، پوء ڪجهه غلط ٿي ويو ۽ توهان کي لاگ ان کي ڏسڻ جي ضرورت آهي ۽ اهو معلوم ڪيو ته اهو ڇو ٿيو. ذهن ۾ رکو ته هن منظر ۾ اسان ورچوئلائيزيشن استعمال ڪري رهيا آهيون ۽ ٿي سگهي ٿو ڪي ڪيڙا جڙيل آهن ورچوئل مشينن يا وي بي ايم سي جي استعمال سان.

اڳيون، اسان کي ظاھر ڪرڻ جي ضرورت آھي ته ڪھڙو نوڊ انجام ڏيندو ڪھڙو ڪم - اھو آھي، پروفائل کي ظاھر ڪيو جنھن سان نوڊ ٺھيل ٿيندو.


(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 variable هن صورت ۾ ضروري آهي، ڇاڪاڻ ته اسان استعمال ڪنداسين nested ورچوئلائيزيشن. ٻي صورت ۾، توهان مجازي مشينن کي هلائڻ جي قابل نه هوندا.

هاڻي توهان وٽ اٽڪل هڪ ڪلاڪ آهي، يا شايد وڌيڪ (هارڊويئر جي صلاحيتن تي منحصر ڪري ٿو) ۽ توهان صرف اميد ڪري سگهو ٿا ته هن وقت کان پوء توهان هيٺ ڏنل پيغام ڏسندا:


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

ھاڻي توھان وٽ آھي لڳ ڀڳ مڪمل ورزن اوپن اسٽيڪ جو، جنھن تي توھان پڙھي سگھو ٿا، تجربو ڪري سگھو ٿا، وغيره.

اچو ته چيڪ ڪريو ته هر شي صحيح ڪم ڪري رهي آهي. صارف جي گهر ڊاريڪٽري اسٽيڪ ۾ ٻه فائلون آهن - هڪ اسٽيڪ آر سي (انڊر ڪلائوڊ جي انتظام لاءِ) ۽ ٻيو اوور ڪلائوڊ آر سي (اوور ڪلائوڊ کي منظم ڪرڻ لاءِ). انهن فائلن کي ماخذ طور بيان ڪيو وڃي، ڇاڪاڻ ته انهن ۾ معلومات جي تصديق لاءِ ضروري آهي.


(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 نيٽ ورڪ تي هڪ hypervisor تي ٻه مشينون
  • ساڳئي 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                                        |

(overcloud) [stack@undercloud ~]$
مشينون vm-1 ۽ vm-3 compute-0 تي واقع آهن، مشينون vm-2 ۽ vm-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 ~]$ 

پر ان کان اڳ جو اسان ڏسون ته ٽريفڪ ڪيئن وهي ٿي، اچو ته ڏسون ته اسان وٽ في الحال ڪنٽرول نوڊ (جيڪو نيٽ ورڪ نوڊ پڻ آهي) ۽ ڪمپيوٽ نوڊ تي ڇا آهي. اچو ته compute node سان شروع ڪريون.


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

هن وقت، نوڊ ۾ ٽي اوز پل آهن - br-int، br-tun، br-ex. انهن جي وچ ۾، جيئن اسان ڏسون ٿا، اتي انٽرفيس جو هڪ سيٽ آهي. سمجھڻ جي آسانيءَ لاءِ، اچو ته انھن مڙني انٽرفيس کي ڊاگرام تي پلاٽ ڪريون ۽ ڏسون ته ڇا ٿو ٿئي.

ڪلائوڊ انفراسٽرڪچر جو نيٽ ورڪ حصو جو تعارف

انهن ايڊريس کي ڏسندي جن ڏانهن 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 بندرگاهه مان آئي آهي، ان کي رد ڪيو وڃي.
درحقيقت، هن وقت ٽريفڪ لاءِ هن پل ۾ اچڻ لاءِ ٻيو ڪٿي به ناهي سواءِ هن انٽرفيس کان (بر-انٽ سان انٽرفيس)، ۽ قطرن جي حساب سان، BUM ٽريفڪ اڳ ۾ ئي پل ۾ اچي چڪي آهي.

اهو آهي، ٽرئفڪ هن نوڊ کي صرف VxLAN سرنگ ذريعي ڇڏي سگهي ٿو ۽ ٻيو ڪجهه به ناهي. تنهن هوندي، جيڪڏهن توهان DVR کي ڦيرايو، صورتحال تبديل ٿي ويندي، پر اسان ان سان ڪنهن ٻئي وقت ڊيل ڪنداسين. جڏهن نيٽ ورڪ آئسوليشن استعمال ڪندي، مثال طور vlans استعمال ڪندي، توهان وٽ Vlan 3 ۾ هڪ L0 انٽرفيس نه هوندو، پر ڪيترائي انٽرفيس هوندا. بهرحال، 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 سرنگون، سرنگون پل وغيره نه آهن - اتي ڪو به اوو ناهي، ڇاڪاڻ ته ان ۾ ڪو به نقطو ناهي. جڏهن نيٽ ورڪ آئسوليشن استعمال ڪندي، هن نوڊ ۾ ٻه انٽرفيس هوندا (جسماني بندرگاهن، جسماني، يا صرف ٻه ويلانس - اهو مسئلو ناهي - اهو ان تي منحصر آهي جيڪو توهان چاهيو ٿا) - هڪ انتظام لاءِ، ٻيو ٽرئفڪ لاءِ (وي ايم ڊسڪ ڏانهن لکڻ. ، ڊسڪ مان پڙهڻ، وغيره)

اسان اهو معلوم ڪيو ته اسان وٽ ڪنهن به خدمتن جي غير موجودگي ۾ نوڊس تي ڇا آهي. ھاڻي اچو ته 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 ~]$ 

هي انٽرفيس لينڪس پل ۾ ڏسڻ ۾ اچي ٿو:

[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 - لينڪس پل
qvb ۽ qvo - vEth جوڙو لينڪس پل ۽ اوپن vSwitch پل سان ڳنڍيل آهي
br-int، br-tun، br-vlan - اوپن vSwitch پل
patch-, int-br-, phy-br-- اوپن وي سوئچ پيچ انٽرفيسز کي ڳنڍيندڙ پل
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 ٻاھرين ۾ نظر اچي ٿو. هي ٻئي ورچوئل مشين ڏانهن بندرگاهه آهي. نتيجي طور، اسان جو نقشو هاڻي هن طرح نظر اچي ٿو:

ڪلائوڊ انفراسٽرڪچر جو نيٽ ورڪ حصو جو تعارف

هڪ سوال جيڪو فوري طور تي ڌيان پڙهندڙ کي دلچسپي ڏيڻ گهرجي - لينڪس پل ڇا آهي مجازي مشين پورٽ ۽ OVS بندرگاهن جي وچ ۾؟ حقيقت اها آهي ته مشين کي بچائڻ لاء، سيڪيورٽي گروپ استعمال ڪيا ويا آهن، جيڪي iptables کان وڌيڪ نه آهن. OVS iptables سان ڪم نٿو ڪري، تنهنڪري هي "ڪرچ" ايجاد ڪيو ويو. بهرحال، اهو متروڪ ٿي رهيو آهي - ان کي نئين رليز ۾ ڪانٽريڪ طرفان تبديل ڪيو پيو وڃي.

اهو آهي، آخرڪار اسڪيم هن طرح ڏسڻ ۾ اچي ٿو:

ڪلائوڊ انفراسٽرڪچر جو نيٽ ورڪ حصو جو تعارف

هڪ L2 نيٽ ورڪ تي هڪ hypervisor تي ٻه مشينون

جيئن ته اهي ٻئي 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 نيٽ ورڪ تي ٻن مشينن جي وچ ۾ ڪيئن ٿيندي، پر مختلف هائپر ويزرز تي واقع آهي. ايماندار ٿيڻ لاء، ڪجھ به گهڻو تبديل نه ٿيندو، صرف هائپر ويزرز جي وچ ۾ ٽرئفڪ ويڪسلان سرنگ ذريعي ٿيندي. اچو ته هڪ مثال ڏسو.

ورچوئل مشينن جا ايڊريس جن جي وچ ۾ اسين ٽريفڪ ڏسنداسين:

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

اسان ڪمپيوٽ-0 تي br-int ۾ فارورڊنگ ٽيبل کي ڏسون ٿا:

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

ھي آھي پيچ-ٽون - اھو آھي، 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 ~]$

هي compute-1 تي هڪ vxlan سرنگ آهي:

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

اچو ته compute-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 compute-1 تي br-int فارورڊنگ ٽيبل ۾ آھي، ۽ جيئن مٿي ڏنل ٻاھرين مان ڏسي سگھجي ٿو، اھو پورٽ 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 پورٽ تي compute-0 ڏانھن ھلايو:


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

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

04:39:04.583459 IP (tos 0x0, ttl 64, id 16868, offset 0, flags [DF], proto UDP (17), length 134)
    192.168.255.19.39096 > 192.168.255.26.4789: [no cksum] VXLAN, flags [I] (0x08), vni 22
IP (tos 0x0, ttl 64, id 8012, offset 0, flags [DF], proto ICMP (1), length 84)
    10.0.1.85 > 10.0.1.88: ICMP echo request, id 5634, seq 16, length 64
04:39:04.584449 IP (tos 0x0, ttl 64, id 35181, offset 0, flags [DF], proto UDP (17), length 134)
    192.168.255.26.speedtrace-disc > 192.168.255.19.4789: [no cksum] VXLAN, flags [I] (0x08), vni 22
IP (tos 0x0, ttl 64, id 59124, offset 0, flags [none], proto ICMP (1), length 84)
    10.0.1.88 > 10.0.1.85: ICMP echo reply, id 5634, seq 16, length 64
	
*****************omitted*******************

پهرين لائن ڏيکاري ٿي ته پتيڪ ايڊريس 10.0.1.85 کان ايڊريس 10.0.1.88 (ICMP ٽريفڪ) ڏانهن وڃي ٿي، ۽ اهو هڪ VxLAN پيڪٽ ۾ ويني 22 سان ويڙهيل آهي ۽ پيڪٽ ميزبان 192.168.255.19 (compute-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 hexadecimal نمبر سسٽم ۾ 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

جيئن ته هن معاملي ۾ پيڪٽ کي گيٽ وي ڏانهن وڃڻ گهرجي ۽ اتي روٽ ڪيو وڃي، اسان کي گيٽ وي جي ميڪ ايڊريس کي ڳولڻ جي ضرورت آهي، جنهن لاء اسان مثال طور 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 ~]$ 

هر شي منطقي آهي، ٽرئفڪ br-tun ڏانهن وڃي ٿي. اچو ته ڏسون ڪهڙي ويڪسلان سرنگ ان ۾ لپي ويندي:

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

ٽيون بندرگاهه هڪ ويڪسلان سرنگ آهي:

[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 وٽ هڪ فزيڪل پورٽ هو جنهن ذريعي نوڊ ٻاهران ٽرئفڪ موڪلي سگهي ٿي. مثالن جي تخليق ڪمپيوٽ نوڊس تي ترتيب تبديل ڪئي - لينڪس پل، iptables ۽ انٽرفيس نوڊس ۾ شامل ڪيا ويا. نيٽ ورڪ جي پيدائش ۽ هڪ مجازي روٽر پڻ ڪنٽرول نوڊ جي تشڪيل تي ان جو نشان ڇڏي ويو.

تنهن ڪري، اهو واضح آهي ته گيٽ وي ميڪ ايڊريس ڪنٽرول نوڊ تي 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 سان مثالن ڏانهن موٽنداسين، هاڻي اسان کي دلچسپي آهي namespace qrouter-0a4d2420-4b9c-46bd-aec1-86a1ef299abe:


[heat-admin@overcloud-controller-0 ~]$ sudo  ip netns exec qrouter-0a4d2420-4b9c-46bd-aec1-86a1ef299abe ip route
10.0.1.0/24 dev qr-0c52b15f-8f proto kernel scope link src 10.0.1.254 
10.0.2.0/24 dev qr-92fa49b5-54 proto kernel scope link src 10.0.2.254 
[heat-admin@overcloud-controller-0 ~]$ 

ھن نالي جي جڳھ ۾ ٻه اندروني آھن جيڪي اسان اڳ ۾ ٺاھيا آھن. ٻئي مجازي بندرگاهن کي br-int ۾ شامل ڪيو ويو آهي. اچو ته چيڪ ڪريون ميڪ ايڊريس جو بندرگاهه 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 ~]$ 

جيئن توقع ڪئي وئي، ٽريفڪ br-tun ڏانهن وڃي ٿي، اچو ته ڏسون ته ايندڙ ٽريفڪ ڪهڙي سرنگ ڏانهن وڃي ٿي:

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

دراصل، اسان سڄي طريقي سان پيڪيج ذريعي ويا. مان سمجهان ٿو ته توهان محسوس ڪيو ته ٽرئفڪ مختلف ويڪسلان سرنگن مان گذري ٿي ۽ مختلف VNIs سان نڪتل آهي. اچو ته ڏسون اهي ڪهڙي قسم جا VNI آهن، جنهن کان پوءِ اسان نوڊ جي ڪنٽرول پورٽ تي هڪ ڊمپ گڏ ڪنداسين ۽ يقيني بڻائينداسين ته ٽريفڪ بلڪل ائين وهي ٿي جيئن مٿي بيان ڪيو ويو آهي.
تنهن ڪري، سرنگ کي ڳڻڻ-0 ۾ ھيٺيون عمل آھن = لوڊ:0->NXM_OF_VLAN_TCI[]،load:0x16->NXM_NX_TUN_ID[]،آؤٽ پُٽ:3. اچو ته 0x16 کي ڊيسيمل نمبر سسٽم ۾ تبديل ڪريون:


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

ڳڻپيوڪر-1 لاءِ سرنگ ھيٺ ڏنل آھي VNI: actions=load:0->NXM_OF_VLAN_TCI[],load:0x63->NXM_NX_TUN_ID[],output: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*******************

پھريون پيڪٽ ھوسٽ 192.168.255.19 (compute-0) کان ھوسٽ 192.168.255.15 (ڪنٽرول-1) وٽ وي اين آءِ 22 سان ھڪ ويڪسلان پيڪٽ آھي، جنھن جي اندر ھڪ ICMP پيڪٽ ھوسٽ 10.0.1.85 کان ھوسٽ 10.0.2.8 تائين پيڪيج ٿيل آھي. جيئن اسان مٿي ڳڻيو، vni ملندو آھي جيڪو اسان ٻاھرين ۾ ڏٺو.

ٻيو پيڪٽ ميزبان 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 ۾ پلگ ان نه ڪندا. پر اهو هڪ مڪمل طور تي مختلف ڪهاڻي آهي.

مون کي اميد آهي ته اها دلچسپ هئي. جيڪڏهن توهان وٽ ڪي رايا/اضافا آهن، يا ڪٿي مون سڌو ڪوڙ ڳالهايو آهي (مان انسان آهيان ۽ منهنجي راءِ هميشه موضوعي هوندي) - لکو جيڪو درست ڪرڻ/شامل ڪرڻ جي ضرورت آهي - اسان هر شي کي درست/شامل ڪنداسين.

آخر ۾، مان اوپن اسٽيڪ (ٻئي وينلا ۽ وينڊر) کي VMWare جي ڪلائوڊ حل سان ڀيٽڻ بابت ڪجهه لفظ چوڻ چاهيان ٿو - مون کان اهو سوال گهڻو ڪري پڇيو ويو آهي گذريل ڪجهه سالن ۾ ۽، صاف طور تي ڳالهائڻ، مان آهيان. اڳ ۾ ئي ٿڪل، پر اڃا تائين. منهنجي خيال ۾، انهن ٻن حلن جو مقابلو ڪرڻ تمام ڏکيو آهي، پر اسان اهو ضرور چئي سگهون ٿا ته ٻنهي حلن ۾ نقصان آهن ۽ جڏهن هڪ حل چونڊيو وڃي ته توهان کي نفعو ۽ نقصان جو وزن ڪرڻو پوندو.

جيڪڏهن OpenStack هڪ ڪميونٽي تي هلندڙ حل آهي، ته پوء VMWare کي صرف اهو ڪرڻ جو حق آهي جيڪو اهو چاهي ٿو (پڙهو - ڇا ان لاء فائدي وارو آهي) ۽ اهو منطقي آهي - ڇاڪاڻ ته اهو هڪ تجارتي ڪمپني آهي جيڪو پنهنجي گراهڪن کان پئسا ڪمائڻ لاء استعمال ڪيو ويندو آهي. پر اتي ھڪڙو وڏو ۽ ٿلهو آھي BUT - توھان حاصل ڪري سگھوٿا OpenStack، مثال طور نوڪيا کان، ۽ ٿوري خرچ سان ھڪڙي حل ڏانھن سوئچ ڪريو، مثال طور، Juniper (Contrail Cloud)، پر توھان ممڪن نه آھيو ته VMWare کي ختم ڪري سگھو. . منهنجي لاءِ، اهي ٻه حل هن طرح نظر اچن ٿا - Openstack (وينڊر) هڪ سادي پنجري آهي جنهن ۾ توهان رکيا آهيو، پر توهان وٽ هڪ چاٻي آهي ۽ توهان ڪنهن به وقت ڇڏي سگهو ٿا. VMWare هڪ سوني پنجري آهي، مالڪ وٽ پنجري جي ڪنجي آهي ۽ اهو توهان کي تمام گهڻو خرچ ڪندو.

مان ترقي نه ڪري رهيو آهيان يا ته پهرين پراڊڪٽ يا ٻيو - توهان چونڊيو جيڪو توهان کي گهرجي. پر جيڪڏهن مون وٽ اهڙي پسند هجي ها، ته مان ٻئي حل چونڊيندس - آئي ٽي ڪلائوڊ لاءِ VMWare (گهٽ لوڊ، آسان انتظام)، ڪجهه وينڊرز کان OpenStack (Nokia ۽ Juniper ڏاڍا سٺا ٽرنڪي حل فراهم ڪن ٿا) - ٽيلي ڪام ڪلائوڊ لاءِ. مان خالص آئي ٽي لاءِ Openstack استعمال نه ڪندس - اهو هڪ توپ سان اسپروز کي گول ڪرڻ وانگر آهي، پر مون کي ان کي استعمال ڪرڻ ۾ ڪا به تضاد نظر نٿو اچي. بهرحال، ٽيلي ڪام ۾ VMWare استعمال ڪرڻ هڪ فورڊ ريپٽر ۾ ڪچو پٿر کڻڻ جهڙو آهي - اهو ٻاهران خوبصورت آهي، پر ڊرائيور کي هڪ بدران 10 سفر ڪرڻا پوندا.

منهنجي خيال ۾، VMWare جو سڀ کان وڏو نقصان ان جي مڪمل بندش آهي - ڪمپني توهان کي ڪا به معلومات نه ڏيندو ته اهو ڪيئن ڪم ڪري ٿو، مثال طور، vSAN يا ڇا آهي هائپر وائزر ڪنيل ۾ - اهو صرف ان لاءِ فائديمند ناهي - اهو آهي، توهان VMWare ۾ ڪڏهن به ماهر نه ٿيو - وينڊر جي مدد کان سواءِ، توهان برباد آهيو (گهڻو ڪري آئون VMWare ماهرن سان ملن ٿا جيڪي ننڍڙن سوالن کان حيران آهن). منهنجي لاءِ، VMWare هڪ ڪار خريد ڪري رهيو آهي جنهن سان هوڊ بند ٿيل آهي - ها، توهان وٽ شايد ماهر هوندا جيڪي ٽائمنگ بيلٽ کي تبديل ڪري سگهن ٿا، پر صرف اهو جيڪو توهان کي وڪرو ڪيو آهي اهو هوڊ کولي سگهي ٿو. ذاتي طور تي، مون کي حل پسند نه آهي ته مان ان ۾ نه ٿي سگهان. تون چوندين ته شايد توهان کي هود جي هيٺان وڃڻ نه گهرجي. ها، اهو ممڪن آهي، پر مان توهان کي ڏسندس جڏهن توهان کي ڪلائوڊ ۾ 20-30 ورچوئل مشينن، 40-50 نيٽ ورڪن مان هڪ وڏي فنڪشن گڏ ڪرڻ جي ضرورت آهي، جن مان اڌ ٻاهر وڃڻ چاهي ٿو، ۽ ٻيو اڌ پڇي ٿو. SR-IOV تيز رفتار، ٻي صورت ۾ توهان کي وڌيڪ درجن جي انهن ڪارن جي ضرورت پوندي - ٻي صورت ۾ ڪارڪردگي ڪافي نه هوندي.

هتي ٻيا نقطا نظر اچن ٿا، تنهنڪري صرف توهان اهو فيصلو ڪري سگهو ٿا ته ڇا چونڊيو ۽، سڀ کان اهم، توهان پنهنجي پسند جي ذميوار هوندا. اهو صرف منهنجو خيال آهي - هڪ شخص جنهن ڏٺو ۽ ڇڪيو آهي گهٽ ۾ گهٽ 4 پراڊڪٽس - نوڪيا، جونيپر، ريڊ هٽ ۽ وي ايم ويئر. اهو آهي، مون کي مقابلي ڪرڻ لاء ڪجهه آهي.

جو ذريعو: www.habr.com

تبصرو شامل ڪريو