PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : راه اندازی یك سرور مجازی لینوكس



p2m
January 19th, 2012, 00:46
همزمان با رشد سریع اینترنت و خدمات آنلاین، هر روز بر حجم پردازش سرویس دهنده ها و تعداد درخواست های كاربران افزوده می شود. اما حداكثر توان كاری هر سرویس دهنده اندازه ای دارد كه بیشتر از آن نمی تواند به در خواست ها جواب دهد و به صورت معمول سرویس دهی كند. برای خروج از این وضعیت یك مدیر سرویس دهنده، چندین راه حل دارد: جایگزینی سرورهایی با قدرت پردازش بیشتر و یا افزایش تعداد سرویس دهنده های موجود. اما این كار شاید هزینه بسیار زیادی را به سیستم تحمیل كند. به طوری كه عملا اجرای آن غیرممكن خواهد بود. در این شرایط ، شاید برپا سازی یك سرویس دهنده مجازی بر پایه مفاهیم كلاستر و تقسیم سرویس ها میان چندین سرویس دهنده، یكی از مؤثرترین راهكارهایی باشد كه می توان برای افزایش قدرت سرویس دهنده به كاربست. كلاستر سازی این قابلیت را فراهم می كند كه با افزودن یك سرور مجازی به سیستم ، در خواست های سرویس میان چند سرویس دهنده تقسیم شود و از وارد آمدن فشار اضافی بریك سرویس دهنده و نهایتا مختل شدن سرویس دهی شبكه جلوگیری به عمل آید. در این نوشتار، به برپاسازی و پیكربندی یك سرور مجازی لینوكس در یك شبكه، كه شامل چندین سرویس دهنده مختلف، مانند سروی دهنده وب، ایمیل و FTP است نگاهی می اندازیم .



مفهوم كلاستر
كلاسترها یكی از جذاب ترین مفاهیمی هستند كه در بحث های پردازش موازی و سرویس دهنده مطرح می شوند. به طور عام ، مفهوم كلاسترها به یك مجموعه از كامپیوترها اطلاق می شود كه با اشتراك قدرت پردازشی یكدیگر، توان بیشتری را برای انجام دادن امور پردازشی محوله فراهم می كنند. یك كلاستر شامل چندین ماشین است كه در یك شبكه محلی پرسرعت به هم متصل شده و با استفاده از یك برنامه زمانبندی و هماهنگ سازی میان ماشین های شبكه، امور پردازشی را انجام می دهند .
گونه ای از این كلاسترها موسوم به load-balancing cluster وظیفه موازنه كردن ترافیك شبكه را میان ماشین های شبكه بر عهده دارند. هدف این نوشتار نیز پیاده سازی چنین كلاستری است كه بتواند با تقسیم كردن درخواست های سرویس ارسالی از كاربران یك شبكه میان چند سرویس دهنده ، از تراكم حجم كاری بر روی یك سرویس دهنده بكاهد .

طرح ریزی كلاستر
كلاستر شامل یك سرور مجازی مبتنی بر سیستم عامل لینوكس و تعدادی سرور فیزیكی خواهد بود كه با استفاده از یك سوئیچ ، با هم در ارتباط هستند . هدف شبكه، ارائه سرویس هایی مانند وب و ایمیل به كاربران است. كاربران از طریق یك بستر شبكه ای، مانند اینترنت، با سرور مجازی ارتباط دارند . سرورهای فیزیكی می توانند بر هر سیستم عاملی مبتنی باشند. وظیفه سرور مجازی لینوكس ، بااستفاده از آدرس های IP ، كاهش فشار حجم درخواست های ارسالی به یك سرور فیزیكی و تقسیم درخواست ها میان چند سرور موجود در شبكه است .
در واقع می توان گفت كه سرور مجازی ، نقش یك رابط را میان كاربران شبكه و سرورهای فیزیكی شبكه ایفا می كند كه در این میان، امكان همزمانی پردازش های بیشتری از درخواست ها با استفاده از یك آدرس IP فراهم می شود . هنگامی كه سرور مجازی یك درخواست را از كاربر دریافت می كند، براساس یك الگوریتم زمانبندی ، درخواست كاربر را به سرور فیزیكی مربوطه تحویل می دهد. سپس سرور فیزیكی داده های مورد تقاضا را برای سرور مجازی به درخواست كاربر جواب خواهد داد. در این میان، سرویس دهنده حقیقی همان سرورهای فیزیكی هستند كه آدرس IP آن ها توسط سرور مجازی تغییر یافته است. سرور مجازی از دو رابط شبكه استفاده می كند: یك رابط برای برقراری ارتباط با كاربران و دسترسی كاربران به شبكه ، و رابط دوم جهت ارتباط با شبكه محلی و سرورهای فیزیكی . راه اندازی یك كلاستر با این ساختار، قابلیت هرگونه تغییر، حذف یا افزودن سرورهای فیزیكی را برای مدیر شبكه فراهم می كند .

بازسازی هسته لینوكس
لینوكس شامل هسته نسخه 2.4.28 و نسخه های بالاتر، از كلاسترهای سرور مجازی یا LVS پشتیبانی می كنند. پس اگر از نسخه های پایین تر استفاده می شود، باید با اضافه كردن ماجول LVS مجددا هسته را كامپایل و بازسازی كنید . این بسته به صورت رایگان از نشانی The Linux Virtual Server Project - Linux Server Cluster for Load Balancing (http://www.linuxvirtualserver.org) قابل دریافت است . چون در سایت برای نسخه های مختلف هسته، بسته های مختلفی ارائه شده ، لازم است شماره بسته متناسب با نسخه هسته لینوكس سیستم بررسی شود. بسته دریافتی از سایت را در شاخه usr/src/ كپی كنید و دستورات زیر را اجرا نمایید :


×#cd/usr/scr/linux
#gunzip ../linux-2.4.21-ipvs-1.0.10.patch.gz
#patch-p1< ../linux-2.4.21-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×[
(16) 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/ را در یك ویرایشگر متنی بازكرده و گزینه زیر را با ارزش 1 مقداردهی كنید :


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 اختصاص داده شود . برای سرورهای فیزیكی شبكه محلی، یك بازه آدرس دهی مانند 10.0.0.0 تا 255.255.255.0 انتخاب شده و از یك شماره Subnet Musk استفاده می شود. از سرور مجازی به عنوان دروازه برای سرورهای فیزیكی استفاده می شود. ماشین های كلاینت با آدرس های IP اختصاص یافته توسط سرویس دهنده اینترنت با سرور مجازی در ارتباط خواهند بود. یكی از دو سرور یك سرویس دهنده HTTP است كه برای آن آدرس 10.0.0.2 تعریف می شود و سرور دوم كه یك سرویس دهنده FTP است، با 10.0.0.3 آدرس دهی می شود. آدرس 10.0.0.1 به عنوان پیش فرض دروازه برای ارتباط با سرور مجازی انتخاب می شود و برای ارتباط سرور مجازی انتخاب می شود و برای ارتباط سرور مجازی با شبكه اینترنت آدرس IP عمومی 61.16.130.100 منظور می گردد. اكنون با ابزار IPVsadm ، آدرس های تخصیص داده شده برای سرور مجازی تعریف می شوند :


#ipvsadm-A-t 161.16130.100:80-s wlc
#ipvsadm-A-161.16.130.100:21-s wrr

در فرامین بالا wlc و wrr دو الگوریتم مدیریت ترافیك سرور مجازی برای پورت های 80 و 21 هستند. غیر از این دو، الگوریتم های زمانبندی قابل تعریف دیگری نیز وجود دارد كه برای آشنایی با آن ها می توانید به صفحات 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

البته همیشه ترافیك پورت 80 بیشتر از ترافیك پورت FTP خواهدبود. بدین خاطر آدرس IP شماره 10.0.0.3 برای پورت 80 نیز تعریف شده است. در این حالت، سرور مجازی با استفاده از الگوریتم های زمانبندی خود، می تواند بار ترافیكی این پورت را بر روی دو سرور فیزیكی تقسیم كند، با دادن ارزش دو توسط آرگومان m- به آدرس 10.0.02، سرور مجازی خواهد فهمید كه این پورت بر روی آدرس دیگری نیز تعریف شده است .

نتیجه گیری
برای آزمایش درستی عملكرد شبكه، می توان با استفاده از ماشین های كلاینت، درخواست هایی را برای سرور مجازی فرستاد و نتیجه را مشاهده كرد . اگر به صورت همزمان چندین درخواست را از چند ماشین كلاینت ارسال كنید، خواهید دید برخی درخواست ها به وسیله سرویس دهنده FTP پردازش شده اند و آدرس IP متفاوتی میان درخواست های رسیده برروی ماشین های كلاینت وجود دارد. راه اندازی یك سرور مجازی با مشخصات بالا جوابگوی یك كلاستر با تعداد محدودی سرویس دهنده است. برای شبكه هایی كه از تعداد زیادی سرویس دهنده استفاده می كنند، به راه اندازی چند سرور مجازی، تنظیمات پیشرفته جدول NAT ، و سرویس DNS نیاز خواهید داشت .

yegane.a
March 8th, 2012, 00:10
very very god,tanx:67: