صفر تا صد راه اندازی سرور مجازی لینوکس : امروزه استفاده از سرور های مجازی برای اکثریت کسب و کار ها ، وب سایت ها و استارت آپ ها امری اجتناب ناپذیر شده است. استفاده از سرور مجازی به دلیل هزینه کم نسبت به سرور های اختصاصی و ارائه امکانات بسیار بیشتر نسبت به هاست های معمولی ، همچنین کاربری راحت و استفاده آسان از محبوبیت بالایی بین کاربران برخوردار است. در این مقاله قصد داریم نحوه راه اندازی سرور مجازی لینوکس را آموزش دهیم ، در ادامه با نوین هاست همراه باشید..
نحوه راه اندازی سرور مجازی لینوکس
مفهوم کلاستر و تعریف آن
کلاسترها یکی از جذاب ترین مفاهیمی هستند که در بحث های پردازش موازی و سرویس دهنده وجود دارند. به طور عام ، مفهوم کلاسترها به یک مجموعه از کامپیوترها مربوط می شود که با اشتراک قدرت پردازشی یکدیگر، توان بیشتری را برای انجام دادن امور پردازشی محوله ایجاد می کنند. یک کلاستر شامل چندین ماشین است. که در یک شبکه محلی پرسرعت به هم متصل شده و با استفاده از یک برنامه زمانبندی و هماهنگ سازی میان ماشین های شبکه، امور پردازشی را انجام می دهند .
گونه ای از این کلاسترها موسوم به load-balancing cluster وظیفه موازنه کردن ترافیک شبکه را میان ماشین های شبکه بر عهده دارند. هدف این نوشتار نیز پیاده سازی چنین کلاستری است. که بتواند با تقسیم کردن درخواست های سرویس ارسالی از کاربران یک شبکه میان چند سرویس دهنده ، از تراکم حجم کاری بر روی یک سرویس دهنده کم کند.
طرح ریزی کلاستر
کلاستر شامل یک سرور مجازی مبتنی بر سیستم عامل لینوکس و تعدادی سرور فیزیکی خواهد بود. که با استفاده از یک سوئیچ ، با هم در ارتباط هستند . هدف شبکه، ارائه سرویس هایی مانند وب و ایمیل به کاربران است. کاربران از طریق یک بستر شبکه ای، مانند اینترنت، با سرور مجازی ارتباط دارند . سرورهای فیزیکی می توانند بر هر سیستم عاملی مبتنی باشند. وظیفه سرور مجازی لینوکس ، بااستفاده از آدرس های IP ، کاهش فشار حجم درخواست های ارسالی به یک سرور فیزیکی و تقسیم درخواست ها میان چند سرور موجود در شبکه است .
در واقع می توان گفت که سرور مجازی ، نقش یک رابط را میان کاربران شبکه و سرورهای فیزیکی شبکه ایفا می کند. که در این میان، امکان همزمانی پردازش های بیشتری از درخواست ها با استفاده از یک آدرس IP فراهم می شود .
هنگامی که سرور مجازی یک درخواست را از کاربر دریافت می کند، براساس یک الگوریتم زمانبندی ،درخواست کاربر را به سرور فیزیکی مربوطه تحویل می دهد. سپس سرور فیزیکی داده های مورد تقاضا را برای سرور مجازی به درخواست کاربر جواب خواهد داد؛ در این میان، سرویس دهنده حقیقی همان سرورهای فیزیکی هستند که آدرس IP آن ها توسط سرور مجازی تغییر یافته است.
سرور مجازی از دو رابط شبکه استفاده می کند: یک رابط برای برقراری ارتباط با کاربران و دسترسی کاربران به شبکه ، و رابط دوم جهت ارتباط با شبکه محلی و سرورهای فیزیکی .راه اندازی یک کلاستر با این ساختار، قابلیت هرگونه تغییر، حذف یا افزودن سرورهای فیزیکی را برای مدیر شبکه فراهم می کند .
بازسازی هسته لینوکس
لینوکس شامل هسته نسخه ۲٫۴٫۲۸ و نسخه های بالاتر، از کلاسترهای سرور مجازی یا LVS پشتیبانی می کنند. پس اگر از نسخه های پایین تر استفاده می شود. باید با اضافه کردن ماجول LVS مجددا هسته را کامپایل و بازسازی کنید.
این بسته به صورت رایگان از نشانی http://www.linuxvirtualserver.org قابل دریافت است . چون در سایت برای نسخه های مختلف هسته، بسته های مختلفی ارائه شده ، لازم است شماره بسته متناسب با نسخه هسته لینوکس سیستم بررسی شود؛ بسته دریافتی از سایت را در شاخه usr/src/ کپی کنید و دستورات زیر را اجرا نمایید :
×#cd/usr/scr/linux
#gunzip ../linux-۲.۴.۲۱-ipvs-1.0.10.patch.gz
#patch-p1< ../linux-۲.۴.۲۱-ipvs-1.0.10.patch
دستور خط اول ، موقعیت خط فرمان را به زیرشاخه ×linux منتقل می کند. در خط دوم ، با استفاده از ابزار GUNZIP ، بسته دریافت شده از سایت پروژه از حالت فشرده خارج شده و در خط سوم این بسته، به هسته اضافه شده است, پس از اضافه شده است؛ پس از اضافه شدن بسته به هسته، باید مجددا هسته کامپایل شود. یعنی در دایرکتوری×usr/src/linux دستورات زیر اجرا شوند :
#make mrproper
# make oldconfig
#make menuconfig
تنظیم آدرس سرور مجازی
با اجرای دستور آخر، یک منو با چندین زیرشاخه اجرا خواهد شد. برای فعال کردن سرور مجازی از شاخه Networking Options ، گزینه IP:Virtual Server Configuration را انتخاب نمایید. و آدرس سرور مجازی را تنظیم کنید :
virtual server support( EXPERIMENTAL)
]Ipvirtual server debugging×[
(۱۶) IPVS connection table size(the Nith power of2)
—IPVS scheduler
round-robin scheduling
< M >weighted round-robin scheduling
< M >least-connection scheduling scheduling
< M >weighted least-connection scheduling
< M >locality-based least-connection scheduling
< M >locality-based least-connection with replication scheduling
< M >destination hashing scheduling
< M >source hashing scheduling
< M >shortest expected delay scheduling
< M >never queue scheduling
—IPVS application helper
FTP protocol helper
قبل از خروج از menuconfig ، باید تغییرات ذخیره شوند. برای ساختن تمامی ماجول های جدید کرنل، دستور زیر اجرا می شود :
#make dep&&make bzlmage &&make modules && make modulesinstall
پس از اجرای دستور بالا، زیر شاخه جدیدی به نام bzlmage در دایرکتوری /arch/i386/boot/×usr/src/linux ساخته می شود و تصویر هسته کامپایل شده در این شاخه قرار می گیرد؛ برای اتمام پیکربندی هسته، باید این تصویر در شاخهboot/کپی شده و فایل های پیکربندی بوت لودرهای سیستم نیز بروز رسانی شوند .
نصب ابزار IPT و IPVsadm
در مرحله بعدی ، پس از بازسازی هسته لینوکس، برای پیکربندی سرور مجازی لینوکس ، باید بسته های IPTable و IPVsadm نصب شوند . IPTable ابزاری برای راه اندازی ساختار یک فایروال مبتنی بر فیلتر بسته های IPV4 و NAT در هسته لینوکس است. بااستفاده از این ابزار، آدرس های IPهای مجازی برای سرورهای فیزیکی تعریف می شوند.
IPVsadm نیز یک ابزار برای مدیریت سرور مجازی لینوکس، تنظیم الگوریتم زمانبندی تقسیم درخواست ها و قوانین ارسال درخواست های کاربران به سرورهای فیزیکی است. بسته نصب IPTable به همراه اکثر توزیع ها ارائه می شود و می توان از طریق برنامه مدیریت بسته های توزیع لینوکس به راحتی آن را نصب کرد؛ بسته rpm نصب ابزار IPVsadm نیز از سایت پروژه LVS قابل دریافت است. پس از نصب این دو ابزار، لازم است که گزینه IP forwarding برای سرور لینوکس فعال شود. برای این منظور، فایل etc/sysctl.conf/ را در یک ویرایشگر متنی بازکرده و گزینه زیر را با ارزش ۱ مقداردهی کنید :
net.ipv4.ipforward=1
اکنون با استفاده از دستور start ، سرویس IPTable برای ارسال بسته های IP سرورهای فیزیکی به آدرس کاربران شبکه فعال شود :
service iptables start
فعال کردن IP masquerading
در آموزش راه اندازی سرور مجازی لینوکس : برای تنظیم آدرس IP سرورهای فیزیکی در سرور مجازی لینوکس. باید به این نکته توجه شود که eth0 برای کارت شبکه ارتباطی با شبکه اینترنت و eth1 برای کارت شبکه محلی تعریف شوند. در ادامه برروی سرور مجازی، دستورات زیر را اجرا کنید:
#iptables-t nat-P POSTROUTING DROP
#iptables-t nat-A POSTROUTING-o eth0-j MASQUERDE
در خط اول ، با تعریف یک قانون برای IPTables ، یک سطح خارجی امنیتی برای شبکه تعریف می شود . DROP این اختیار را به IRTables می دهد که هرگونه بسته IP که از ruleهای تعریفی تبعیت نمی کند، از شبکه حذف شود و در نتیجه هر آدرس IP جعلی یا ساختگی را نمی توان برای شبکه تنظیم کرد. خط دوم، جدول NAT را برای آدرس دهی شبکه داخلی میان سرورهای فیزیکی با سرور مجازی و کارت شبکه eth0 فعال می کند .
پیکربندی سرور مجازی لینوکس با IPVsadm
در گام بعدی، با استفاده از ابزار IPVsadm سرور مجازی تنظیم می شود . برای شروع باید به هریک از ماشین های شبکه یک آدرس IP اختصاص داده شود . برای سرورهای فیزیکی شبکه محلی، یک بازه آدرس دهی مانند ۱۰٫۰٫۰٫۰ تا۲۵۵٫۲۵۵٫۲۵۵٫۰ انتخاب شده و از یک شماره Subnet Musk استفاده می شود. از سرور مجازی به عنوان دروازه برای سرورهای فیزیکی استفاده می شود.
ماشین های کلاینت با آدرس های IP اختصاص یافته توسط سرویس دهنده اینترنت با سرور مجازی در ارتباط خواهند بود. یکی از دو سرور یک سرویس دهنده HTTP است. که برای آن آدرس ۱۰٫۰٫۰٫۲ تعریف می شود. و سرور دوم که یک سرویس دهنده FTP است. با ۱۰٫۰٫۰٫۳ آدرس دهی می شود. آدرس ۱۰.۰٫۰٫۱ به عنوان پیش فرض دروازه برای ارتباط با سرور مجازی انتخاب می شود. و برای ارتباط سرور مجازی انتخاب می شود. برای ارتباط سرور مجازی با شبکه اینترنت آدرس IP عمومی ۶۱٫۱۶٫۱۳۰٫۱۰۰ منظور می گردد.
تعریف آدرس هاس تخصیص داده شده
اکنون با ابزار IPVsadm ، آدرس های تخصیص داده شده برای سرور مجازی تعریف می شوند :
#ipvsadm-A-t 161.16130.100:80-s wlc
#ipvsadm-A-161.16.130.100:21-s wrr
در فرامین بالا wlc و wrr دو الگوریتم مدیریت ترافیک سرور مجازی برای پورت های ۸۰ و ۲۱ هستند. غیر از این دو، الگوریتم های زمانبندی قابل تعریف دیگری نیز وجود دارد که برای آشنایی با آن ها می توانید به صفحات man این برنامه مراجعه کنید. برای تعریف سرورهای فیزیکی ، دستورات بالا به صورت زیر اجرا :می شوند
#ipvsadm-a-t 161.16130.100:80-r 10.0.0.3:80-m
# ipvsadm-a-t 161.16.130.100:80-r 10.0.0.2:80-m-w2
#ipvsadm-a-t 161.16.130.100:21-r 10.0.0.3:21-m
البته همیشه ترافیک پورت ۸۰ بیشتر از ترافیک پورت FTP خواهد بود. بدین خاطر آدرس IP شماره ۱۰٫۰٫۰٫۳ برای پورت ۸۰ نیز تعریف شده است؛ در این حالت، سرور مجازی با استفاده از الگوریتم های زمانبندی خود، می تواند بار ترافیکی این پورت را بر روی دو سرور فیزیکی تقسیم کند، با دادن ارزش دو توسط آرگومان m- به آدرس ۱۰٫۰٫۰۲، سرور مجازی خواهد فهمید که این پورت بر روی آدرس دیگری نیز تعریف شده است .
نتیجه گیری
برای آزمایش اینکه شبکه درست عمل میکند یا خیر. می توان با استفاده از ماشین های کلاینت، درخواست هایی را برای سرور مجازی فرستاد و نتیجه را مشاهده کرد . اگر به صورت همزمان چندین درخواست را از چند ماشین کلاینت ارسال کنید.
خواهید دید برخی درخواست ها به وسیله سرویس دهنده FTP پردازش شده اند و آدرس IP متفاوتی میان درخواست های رسیده برروی ماشین های کلاینت وجود دارد. خرید سرور مجازی با مشخصات بالا جوابگوی یک کلاستر با تعداد محدودی سرویس دهنده است. برای شبکه هایی که از تعداد زیادی سرویس دهنده استفاده می کنند. به راه اندازی چند سرور مجازی، تنظیمات پیشرفته جدول NAT ، و سرویس DNS نیاز خواهید داشت .