شبکه در XenServer (LACP Bond، VLAN و Bonding)
درک شبکهبندی در XenServer اغلب در گام اول کمی دشوار میباشد اما در واقع بسیار ساده است. اما پیش از اینکه به پیکربندی شبکه در XenServer بپردازیم لازم تا کمی با اصطلاحات جدید در این زمینه آشنا شویم.
در واقع XenServer به عنوان یک پلتفرم مجازیسازی اینترفیسهای مجازی را برای ماشینهای مجازی که میبایست به اینترفیسهای فیزیکی یا شبکهها بر روی شبکه فیزیکی خود XenServer متصل و map شوند، تعریف میکند. این mapping اغلب موجب گیج شدن میشود. بنابراین اجازه دهید تا نگاهی داشته باشیم به این اصطلاحات جدید و اینکه چطور آنها به ماشینهای مجازی اجازه تعامل با شبکه فیزیکی واقعی که به XenServer متصل است را میدهند.
اما XenServer سه اصطلاح جدید را زمانیکه بحث شبکهبندی به میان میآید، تعریف میکند. اولین اصطلاح که معمولاً سادهترین بخش این یادگیریست نوع دیگری از اینترفیس کارت شبکههای سنتی یا NIC است. در XenServer، NICهای فیزیکی واقعی یک سیستم اغلب به اینترفیسهای فیزیکی که به اختصار PIF نامیده میشوند، اشاره دارند.
دومین اصطلاحی که XenServer از آن به عنوان یک اینترفیس مجازی یاد میکند، به اختصار VIF نامیده میشود. این اینترفیسهای مجازی NICهایی هستند که به ماشینهای مجازی در حال اجرا بر روی XenServer، attach میشوند.
سومین اصطلاحی که اغلب در شبکهبندی XenServer از آن صحبت میشود، Xen Bridge که به اختصار xenbr نیز معرفی میشود. این bridgeها زمانیکه XenServer نصب میشود، ایجاد شده و به ازای هر PIFی که در طول پروسه نصب پیدا میشود، یکی از آنها ایجاد میشود. از این bridgeها جهت اینکه به VIFها اجازه برقراری ارتباط با PIFها داده شود، استفاده میشود.
درک شبکهبندی در XenServer اغلب در گام اول کمی دشوار میباشد اما در واقع بسیار ساده است. اما پیش از اینکه به پیکربندی شبکه در XenServer بپردازیم لازم تا کمی با اصطلاحات جدید در این زمینه آشنا شویم.
در واقع XenServer به عنوان یک پلتفرم مجازیسازی اینترفیسهای مجازی را برای ماشینهای مجازی که میبایست به اینترفیسهای فیزیکی یا شبکهها بر روی شبکه فیزیکی خود XenServer متصل و map شوند، تعریف میکند. این mapping اغلب موجب گیج شدن میشود. بنابراین اجازه دهید تا نگاهی داشته باشیم به این اصطلاحات جدید و اینکه چطور آنها به ماشینهای مجازی اجازه تعامل با شبکه فیزیکی واقعی که به XenServer متصل است را میدهند.
اما XenServer سه اصطلاح جدید را زمانیکه بحث شبکهبندی به میان میآید، تعریف میکند. اولین اصطلاح که معمولاً سادهترین بخش این یادگیریست نوع دیگری از اینترفیس کارت شبکههای سنتی یا NIC است. در XenServer، NICهای فیزیکی واقعی یک سیستم اغلب به اینترفیسهای فیزیکی که به اختصار PIF نامیده میشوند، اشاره دارند.
دومین اصطلاحی که XenServer از آن به عنوان یک اینترفیس مجازی یاد میکند، به اختصار VIF نامیده میشود. این اینترفیسهای مجازی NICهایی هستند که به ماشینهای مجازی در حال اجرا بر روی XenServer، attach میشوند.
سومین اصطلاحی که اغلب در شبکهبندی XenServer از آن صحبت میشود، Xen Bridge که به اختصار xenbr نیز معرفی میشود. این bridgeها زمانیکه XenServer نصب میشود، ایجاد شده و به ازای هر PIFی که در طول پروسه نصب پیدا میشود، یکی از آنها ایجاد میشود. از این bridgeها جهت اینکه به VIFها اجازه برقراری ارتباط با PIFها داده شود، استفاده میشود.
منظور از Network چیست؟
یک Network به سوئیچ مجازی یا Virtual Switchی گفته میشودکه VIFها و PIFها به آن متصل میشوند. در واقع VIFها اینترفیسهای downstreamی هستند که از یک طرف به Virtual Switch و از طرف دیگر به ماشینهای مجازی و PIFها نیز اینترفیس upstreamی هستند که از یک طرف به Virtual Switch و از طرف دیگر نیز به physical switchها متصل میشوند.
بنابراین زمانیکه یک guest یا ماشین مجازی روی یک XenServer میخواهد به دو شبکه واقعی متصل شود، نیازمند استفاده از VIF است که به آن متصل شوند و تغییراتی که میبایست بر روی routing table آن صورت گیرد تا ارتباط ماشین مجازی با از طریق اینترفیسهای با شبکههای واقعی برقرار شود. از طرف دیگر هر یک از این اینترفیسهای نیازمند یک MAC آدرس هستند که XenServer میتواند MAC آدرسهای را بصورت رندم (تصادفی) به آنها اختصاص دهید و یا اینکه یک administrator این کار را بصورت دستی انجام دهد.
توجه: XenServer معمولاً نیاز به یک اینترفیس جهت مدیریت ترافیک و یک اینترفیس دیگر برای ترافیک guestها یا ماشینهای مجازی دارد.
به عنوان مثال همانطور که در سناریو شکل 23 مشاهده میکنید، XenServer ما که بر روی یک سرور فیزیکی نصب شده است دارای چهار اینترفیس فیزیکی یا PIF میباشد که دو از آنها جهت Link Aggregation توسط پروتکل LACP با هم Bond شدهاند و دو اینترفیس دیگر نیز بصورت Active/Passive Failover برای ترافیک Storage شبکه در نظر گرفته شدهاند.
یک Network به سوئیچ مجازی یا Virtual Switchی گفته میشودکه VIFها و PIFها به آن متصل میشوند. در واقع VIFها اینترفیسهای downstreamی هستند که از یک طرف به Virtual Switch و از طرف دیگر به ماشینهای مجازی و PIFها نیز اینترفیس upstreamی هستند که از یک طرف به Virtual Switch و از طرف دیگر نیز به physical switchها متصل میشوند.
بنابراین زمانیکه یک guest یا ماشین مجازی روی یک XenServer میخواهد به دو شبکه واقعی متصل شود، نیازمند استفاده از VIF است که به آن متصل شوند و تغییراتی که میبایست بر روی routing table آن صورت گیرد تا ارتباط ماشین مجازی با از طریق اینترفیسهای با شبکههای واقعی برقرار شود. از طرف دیگر هر یک از این اینترفیسهای نیازمند یک MAC آدرس هستند که XenServer میتواند MAC آدرسهای را بصورت رندم (تصادفی) به آنها اختصاص دهید و یا اینکه یک administrator این کار را بصورت دستی انجام دهد.
توجه: XenServer معمولاً نیاز به یک اینترفیس جهت مدیریت ترافیک و یک اینترفیس دیگر برای ترافیک guestها یا ماشینهای مجازی دارد.
به عنوان مثال همانطور که در سناریو شکل 23 مشاهده میکنید، XenServer ما که بر روی یک سرور فیزیکی نصب شده است دارای چهار اینترفیس فیزیکی یا PIF میباشد که دو از آنها جهت Link Aggregation توسط پروتکل LACP با هم Bond شدهاند و دو اینترفیس دیگر نیز بصورت Active/Passive Failover برای ترافیک Storage شبکه در نظر گرفته شدهاند.
توجه داشته باشید که نوع کابلکشی و designی که شما برای اینترفیسهای XenServer خود در نظر میگیرد میتواند با چیزی که در اینجا من در نظر گرفتهام کاملاً متفاوت باشد و این موضوع بستگی به تعداد اینترفیسهای فیزیکی XenServer شما و نقش آن در شبکه شرکت و یا سازمانتان دارد.
حال که با مفاهیم مربوط به شبکهبندی در XenServer آشنا شدیم، میتوانید به پیکربندی آن بپردازیم. بنابراین فرض کنید که هیچ پیکربندیای بعد از نصب XenServer بر روی آن انجام نشده است.
• گام1: بدست آوردن اطلاعات درباره اینترفیسهای فیزیکی XenServer
اولین کار بدست آوردن اطلاعات درباره اینترفیسهای فیزیکی روی XenServer مزبور است. برای این منظور میتوانید از ابزار کمکی 'xe' بصورت زیر استفاده نمایید:
# xe pif-list
دستور فوق اطلاعاتی مهمی که جهت پیکربندی اینترفیسهای شبکه به آنها نیاز خواهید داشت را برمیگرداند. بخشهای مهم این خروجی عبارتند از نام اینترفیسها سنتی لینوکس (eth0، eth1 و...) و همچنین UUID هر یک از اینترفیسها. در پیکربندی دانستن UUID و نام هر یک از اینترفیسها مهم است چرا که جهت map کردن این دو بصورت منطقی در XenServer به آن نیاز خواهیم داشت.
حال که با مفاهیم مربوط به شبکهبندی در XenServer آشنا شدیم، میتوانید به پیکربندی آن بپردازیم. بنابراین فرض کنید که هیچ پیکربندیای بعد از نصب XenServer بر روی آن انجام نشده است.
• گام1: بدست آوردن اطلاعات درباره اینترفیسهای فیزیکی XenServer
اولین کار بدست آوردن اطلاعات درباره اینترفیسهای فیزیکی روی XenServer مزبور است. برای این منظور میتوانید از ابزار کمکی 'xe' بصورت زیر استفاده نمایید:
# xe pif-list
دستور فوق اطلاعاتی مهمی که جهت پیکربندی اینترفیسهای شبکه به آنها نیاز خواهید داشت را برمیگرداند. بخشهای مهم این خروجی عبارتند از نام اینترفیسها سنتی لینوکس (eth0، eth1 و...) و همچنین UUID هر یک از اینترفیسها. در پیکربندی دانستن UUID و نام هر یک از اینترفیسها مهم است چرا که جهت map کردن این دو بصورت منطقی در XenServer به آن نیاز خواهیم داشت.
حال که یک لیست از PIFها را داریم میتوانیم به پیکربندی networkها مناسب برای قرارگیری اینترفیسهای مناسب در آنها بپردازیم. برای این سرور من PIFها را بصورت زیر پیکربندی خواهم کرد:
eth0 و eth1: در یک LACP bond متصل به یک trunk پیکربندی میشوند. این اینترفیسها بعداً برای guest traffic یا ترافیک ماشینهای مجازی مورد استفاده قرار خواهند گرفت.
ا eth2 و eth3: در یک Active/Passive Fail-over برای مدیریت و iSCSI traffic پیکربندی میشوند. این اینترفیسها به پورتهای access روی سوئیچ متصل خواهند شد.
توجه: گاهی اوقات ترتیب قرارگیری اینترفیسها فیزیکی بر روی XenServer جهت مقداردهی اولیه PIF اینترفیسها درست نیست، بنابراین با استفاده از یک ابزار کمکی که interface-rename نام دارد میتوانید نام صحیحی را به اینترفیسهای سرور خود (با پیشوند eth) اختصاص دهید.
eth0 و eth1: در یک LACP bond متصل به یک trunk پیکربندی میشوند. این اینترفیسها بعداً برای guest traffic یا ترافیک ماشینهای مجازی مورد استفاده قرار خواهند گرفت.
ا eth2 و eth3: در یک Active/Passive Fail-over برای مدیریت و iSCSI traffic پیکربندی میشوند. این اینترفیسها به پورتهای access روی سوئیچ متصل خواهند شد.
توجه: گاهی اوقات ترتیب قرارگیری اینترفیسها فیزیکی بر روی XenServer جهت مقداردهی اولیه PIF اینترفیسها درست نیست، بنابراین با استفاده از یک ابزار کمکی که interface-rename نام دارد میتوانید نام صحیحی را به اینترفیسهای سرور خود (با پیشوند eth) اختصاص دهید.
• گام2: ایجاد یک LACP Network Bond
در این بخش میبایست در سمت سوئیچ فیزیکی خود قابلیت LACP را پیکربندی نموده و سپس در سمت XenServer برای پیکربندی پروتکل LACP مجدداً از دستور xe بصورت زیر استفاده نمایید. در این دستور ابتدا برای اینترفیسهای PIF یک bonded network ایجاد کرده و نامی را به دلخواه به آن اختصاص میدهیم:
# xe network-create name-label="Tecmint-LACP-Bond"
دستور فوق یک network جدید در XenServer با نام Tecmint-LACP-Bond ایجاد میکند. بعد از اینکه دستور فوق را اجرا کنید یک UUID برای این network در ترمینال همانند شکل 25 نمایش داده خواهد شد. این UUID را در جاییکه ذخیره کرده چرا بعداً به موقع اضافه کردن PIFها به bondی که ایجاد کردهایم مورد نیاز خواهد بود.
در این بخش میبایست در سمت سوئیچ فیزیکی خود قابلیت LACP را پیکربندی نموده و سپس در سمت XenServer برای پیکربندی پروتکل LACP مجدداً از دستور xe بصورت زیر استفاده نمایید. در این دستور ابتدا برای اینترفیسهای PIF یک bonded network ایجاد کرده و نامی را به دلخواه به آن اختصاص میدهیم:
# xe network-create name-label="Tecmint-LACP-Bond"
دستور فوق یک network جدید در XenServer با نام Tecmint-LACP-Bond ایجاد میکند. بعد از اینکه دستور فوق را اجرا کنید یک UUID برای این network در ترمینال همانند شکل 25 نمایش داده خواهد شد. این UUID را در جاییکه ذخیره کرده چرا بعداً به موقع اضافه کردن PIFها به bondی که ایجاد کردهایم مورد نیاز خواهد بود.
اما نگران نباشید حتی در صورتیکه UUID نمایش داده شده در مرحله قبل را ذخیره نکردهاید یا آن را فراموش کردهاید، میتوانید با استفاده از دستور xe بصورت زیر اقدام به recover کردن آن نمایید:
# xe network-list name-label="Tecmint-LACP-Bond"
همانطور که در شکل 26 مشاهده میکنید، اطلاعات network مزبور به همراه UUID آن که برای اضافه کردن PIFها به network مورد نیاز خواهد بود نمایش داده خواهد شد.
# xe network-list name-label="Tecmint-LACP-Bond"
همانطور که در شکل 26 مشاهده میکنید، اطلاعات network مزبور به همراه UUID آن که برای اضافه کردن PIFها به network مورد نیاز خواهد بود نمایش داده خواهد شد.
حال زمان آن است که PIFهای مناسب را در networkی که ایجاد کردهایم اضافه نماییم. همانطور که پیشتر در سناریو این بخش اشاره نمودیم میبایست اینترفیسهای فیزیکی eth0 و eth1 را که به یک سوئیچ متصل هستند توسط پروتکل LACP پیکربندی نماییم. برای این منظور از دستور زیر استفاده میکنیم:
# xe bond-create mode=lacp network-uuid=fc5a79cd-a90e-c6a2-a0ff-2bf235cf7a81 pif-uuids=f6dc2f62-24b1-419f-0d61-02365848ffb0,a398d6c8-341d-3846-b0ca-226cafe4a6b8
همانطور که در دستور فوق مشاهده میکنید، بخش xe bond-create mode=lacp مشخص میکند که یک network bonding بر روی XenServer ایجاد شده است و در مد LCAP نیز میبایست پیکربندی شود. بخش network-uuid= نیز مشخص کننده UUID مربوط به networkیست که اخیراً بر روی XenServer ایجاد کردهایم. بخش pif-uuids= نیز مشخص کننده UUID هر یک از اینترفیسهای فیزیکی یا PIFهایی که میخواهیم در bond ایجاد شده شرکت کنند (در این سناریو eth0 و eth1)، همچنین توجه کنید که UUIDها را با استفاده از یک علامت کاما از یکدیگر جدا کردهایم. در نهایت در صورتیکه دستور فوق بصورت موفقیتآمیز اجرا شود، یک UUID جدید همانند شکل 27 برای network bonding ایجاد و نمایش داده خواهد شد.
# xe bond-create mode=lacp network-uuid=fc5a79cd-a90e-c6a2-a0ff-2bf235cf7a81 pif-uuids=f6dc2f62-24b1-419f-0d61-02365848ffb0,a398d6c8-341d-3846-b0ca-226cafe4a6b8
همانطور که در دستور فوق مشاهده میکنید، بخش xe bond-create mode=lacp مشخص میکند که یک network bonding بر روی XenServer ایجاد شده است و در مد LCAP نیز میبایست پیکربندی شود. بخش network-uuid= نیز مشخص کننده UUID مربوط به networkیست که اخیراً بر روی XenServer ایجاد کردهایم. بخش pif-uuids= نیز مشخص کننده UUID هر یک از اینترفیسهای فیزیکی یا PIFهایی که میخواهیم در bond ایجاد شده شرکت کنند (در این سناریو eth0 و eth1)، همچنین توجه کنید که UUIDها را با استفاده از یک علامت کاما از یکدیگر جدا کردهایم. در نهایت در صورتیکه دستور فوق بصورت موفقیتآمیز اجرا شود، یک UUID جدید همانند شکل 27 برای network bonding ایجاد و نمایش داده خواهد شد.
اما همیشه برای اطمینان از کار خود و بررسی اینکه سیستم تغییرات و پیکربندیها را تشخیص داده است یا خیر، یک ایده خوب مشاهده نتایج است. برای این منظور در اینجا میتوانیم توسط دستور زیر این موضوع را بار دیگر بررسی نماییم:
# xe bond-list
# xe bond-list
همانطور که در خروجی شکل فوق مشاهده میکنید، در واقع مشخص است که بر روی XenServer یک bond ایجاد شده و دو PIF به آن attach شدهاند.
• گام3: ایجاد یک XenServer Network VLAN
در این لحظه LACP bondی که ایجاد کردهایم آماده استفاده است. نکتهای که میبایست به آن اشاره کنیم این است که LACP bond ما در واقع یک trunk است و جهت ارسال ترافیکی میبایست برای networkهای خود tagهایی را ایجاد نماییم و در واقع ترافیک را در قالب VLAN(های) مناسب tag بزنیم. برای این منظور در گام اول میبایست network جدیدی ایجاد این VLAN خاص ایجاد کنیم. بنابراین توسط دستور زیر این کار را انجام میدهیم:
# xe network-create name-label=VLAN10 name-description="Tecmint test VLAN 10"
در صورتیکه اجرای دستور فوق موفقیتآمیز باشد، در خروجی UUIDی همانند شکل 29 برای network جدید ایجاد شده مشاهده خواهید کرد. این UUID را در جایی ثبت کنید چرا بعداً به آن نیاز خواهیم داشت.
• گام3: ایجاد یک XenServer Network VLAN
در این لحظه LACP bondی که ایجاد کردهایم آماده استفاده است. نکتهای که میبایست به آن اشاره کنیم این است که LACP bond ما در واقع یک trunk است و جهت ارسال ترافیکی میبایست برای networkهای خود tagهایی را ایجاد نماییم و در واقع ترافیک را در قالب VLAN(های) مناسب tag بزنیم. برای این منظور در گام اول میبایست network جدیدی ایجاد این VLAN خاص ایجاد کنیم. بنابراین توسط دستور زیر این کار را انجام میدهیم:
# xe network-create name-label=VLAN10 name-description="Tecmint test VLAN 10"
در صورتیکه اجرای دستور فوق موفقیتآمیز باشد، در خروجی UUIDی همانند شکل 29 برای network جدید ایجاد شده مشاهده خواهید کرد. این UUID را در جایی ثبت کنید چرا بعداً به آن نیاز خواهیم داشت.
در گام بعد میبایست UUID مربوط به اینترفیسهای PIFی که قرار است عضو این VLAN باشند را تعیین نماییم. با استفاده از دستور زیر میتوانیم UUID اینترفیسهای را تعیین نماییم:
# xe pif-list network-name-label="Tecmint-LACP-Bond"
دستور فوق UUID اینترفیس bond0 را برمیگرداند. این UUID برای tag زدن ترافیکی که قرار است VLAN و XenServer ما خارج شود مورد نیاز است.
# xe pif-list network-name-label="Tecmint-LACP-Bond"
دستور فوق UUID اینترفیس bond0 را برمیگرداند. این UUID برای tag زدن ترافیکی که قرار است VLAN و XenServer ما خارج شود مورد نیاز است.