نمایش نتایج: از شماره 1 تا 5 از مجموع 5
سپاس ها 8سپاس
  • 1 توسط saman_nn2000
  • 3 توسط saman_nn2000
  • 1 توسط saman_nn2000
  • 1 توسط saman_nn2000
  • 2 توسط saman_nn2000

موضوع: راه‌اندازی یک گروه سرور (cluster)

  
  1. #1
    نام حقيقي: Saman Nasrolahi

    عضو عادی شناسه تصویری saman_nn2000
    تاریخ عضویت
    Feb 2004
    محل سکونت
    Tehran
    نوشته
    574
    سپاسگزاری شده
    101
    سپاسگزاری کرده
    28

    راه‌اندازی یک گروه سرور (cluster)

    با رشد انفجاری اینترنت، کار بر روی سرورهای وب، ایمیل و مدیا افزایش می‌یابد. سایت‌های زیادی در حال مبارزه برای حفظ کردن خود در برابر تقاضاهای رو به رشد هستند و تکنیک‌های زیادی را برای جلوگیری از overload شدن سرورهای خود به کار می‌گیرند. راه‌اندازی یک سرور بر روی یک گروه کامپیوتر (cluster) یکی از راه‌هایی هست که بطور موثر مورد استفاده قرار می‌گیرد. با این روش در صورت لزوم می‌توان با اضافه کردن یک سرور جدید به گروه سرورهای موجود، تقاضاهای بیشتر را به راحتی مدیریت کرد...


    برای درک بهتر این مفهوم قشنگ ما حصل جستجو ی خود را به صورت پیوسته تقدیم می کنم به این امید که با الطفات شما این مطلب قشنگ مفید واقع شود:



    موضوعات مشابه:
    tandis360 سپاسگزاری کرده است.

  2. #2
    نام حقيقي: Saman Nasrolahi

    عضو عادی شناسه تصویری saman_nn2000
    تاریخ عضویت
    Feb 2004
    محل سکونت
    Tehran
    نوشته
    574
    سپاسگزاری شده
    101
    سپاسگزاری کرده
    28
    مفاهیم کلاسترها و OpenMosix

    پیش‌درآمد
    مبحث کلاسترها در لینوکس یکی از جذاب‌ترین و جالب‌ترین مباحث برای افراد علاقه‌مند به پردازش‌های موازی است. بدلیل علاقه بسیار زیاد خودم به این مبحث تصمیم به تهیه مقاله‌ای در این مورد گرفتم و بهتر دیدم یکی از بهترین مقالات موجود را ترجمه کرده و تجربه‌های خودم را نیز به آن اضافه کنم. مقاله حاضر برگرفته از نوشته‌های دانیل رابینز (Daniel Robbins) می‌باشد. این نوشته‌ها را می‌توانید از این نشانی دریافت نمایید. دانیل رابینز طراح و خالق لینوکس Gentoo می‌باشد. همانطور که اشاره کردم، این یک ترجمه تنها نیست. من خود تمام آنرا عملا انجام داده و بخش‌های عملی راهنمای فوق را کاملا تغییر داده و روش آسان‌تری را برای اجرای کلاستر پیشنهاد کرده‌ام. در بخش نخست این مقاله که اکنون در حال خواندن آن هستید، با مفاهیم کلاسترهای لینوکس تا حدودی آشنا خواهید شد. در بخش بعدی به طور عملی اقدام به برپاسازی یک کلاستر لینوکس خواهیم کرد.

    کلاسترها چه هستند؟
    به طور عمومی هنگامی که صحبت از کلاسترها می‌شود، مقصود فناوری‌هایی است که از طریق آن کامپیوترهای مختلف بتوانند با هم و با اشتراک قدرت پردازش هم، بتوانند امور پردازشی را که به آنها محول شده است، انجام دهند. این امور پردازشی همه چیز می‌تواند باشد. از پردازش‌های سنگین علمی تا تبدیل فایل‌های موسیقی و یا رندر کردن جلوه‌های ویژه فیلم‌های سینمایی. برای مثال، تمامی جلوه‌های ویژه فیلم‌های ارباب حلقه‌ها توسط کلاسترهای لینوکس رندر و پردازش شده‌اند.
    انواع مختلفی از فناوری‌های کلاستر سازی برای سیستم‌عامل لینوکس وجود دارند. یکی از شناخته شده ترین آنها کلاستر Beowulf است. این کلاستر حاوی چندین ماشین است که توسط یک شبکه محلی پرسرعت به هم متصل شده‌اند. برای استفاده از این سیستم‌های کلاستر، برنامه‌های کاربردی باید مجددا برای استفاده از آن با استفاده از کتابخانه‌های کلاستر سازی نوشته شوند. عمومی‌ترین کتابخانه‌های کلاستر سازی عبارتند از PVM و MPI. هر دوی این کتابخانه‌ها بسیار عالی کار می‌کنند. با استفاده این کتابخانه‌ها، برنامه نویسان قادر به نوشتن برنامه‌هایی هستند که از منابع روی کلاستر همانند منابع روی یک کامپیوتر، بهره گیری نمایند.برای بسیاری از برنامه‌های کاربردی، PVM و MPI امکان افزایش خطی قدرت پردازش کلاسترها را با توجه به تعداد ماشین‌های روی آن فراهم می‌نمایند.

    PVM و MPI به درد همه نمی‌خورد!
    با اینکه کلاسترهای Beowulf بسیار قدرتمند هستند، ولی به درد همه کس نمی‌خورند! بزرگترین اشکال آنها نیاز به نرم‌افزارهای خاص می‌باشد که با استفاده از PVM و MPI نوشته شده باشند تا بتوانند از مزایای کلاستر استفاده کنند. البته این برای مراکز علمی و تحقیقاتی که برنامه‌های کاربردی خاص خود را از ابتدا می‌نویسند، اشکال مهمی نیست. آنها به راحتی قادرند تا از MPI و PVM استفاده کنند.
    حقیقتا درصد افراد و موسساتی که برنامه‌های کاربردی خود را از ابتدا می‌نویسند بسیار پایین است. برای کسانی که مایل هستند تا یک کلاستر بنا کرده و از مزایای آن در اجرای برنامه‌های کاربردی عادی استفاده کنند، این یک مسئله بزرگ است! برنامه‌های کاربردی این دسته از موسسات بدون استفاده از کتابخانه‌های کلاستر سازی نوشته شده‌اند، بنابراین این گونه موسسات قادر نیستند تا از مزایای کلاسترها بهره‌گیری نمایند.
    آیا جالب نیست که یک فناوری وجود داشته باشد تا بتوانید با استفاده از آن از مزایای کلاسترهای لینوکس استفاده کنید، بدون آنکه نیاز داشته باشید تا برنامه‌های کاربردی خود را از ابتدا نوشته و یا حتی آنها را مجددا کامپایل نمایید؟ خوشبختانه چنین فناوری وجود دارد و نام آن OpenMosix است!

    ورود به OpenMosix
    OpenMosix قابلیت‌های کلاستر سازی را به هسته لینوکس اضافه می‌کند، بنابراین هر پروسه استاندارد لینوکس قادر خواهد بود تا از مزایای منابع کلاستر استفاده نماید. با استفاده از تکنیک‌های موازنه بار تطبیقی (Adaptive Load Balancing) پردازش‌های در حال اجرا بر روی یک گره (node) از کلاستر، قادرند تا بطور نامحسوس به یک گره دیگر از کلاستر مهاجرت کرده و بتوانند سریعتر اجرا شوند. بدلیل اینکه OpenMosix بطور کاملا نامحسوس (Transparent) عمل می‌کند، پردازش‌هایی که از یک گره به گره دیگر مهاجرت می‌کنند، حتی نمی‌دانند (لازم هم نیست بدانند) که در یک ماشین دیگر در حال اجرا هستند!
    نامحسوس بودن OpenMosix به این معنی است که برای استفاده از مزایای موازنه بار تطبیقی آن، نیازی به برنامه نویسی خاصی نیست. در حقیقت، یک نصب پیش‌گزیده OpenMosix به طور خودکار پردازش‌ها را به بهترین گره منتقل خواهد کرد. این قابلیت OpenMosix را تبدیل به یک راه‌حل کلاستر سازی می‌کند که می‌تواند برای بخش عظیمی از برنامه‌ها مفید باشد.

    OpenMosix دقیقا چکار می‌کند؟
    بزرگترین کاری که OpenMosix انجام می‌دهد، تبدیل دسته‌ای از ماشین‌های لینوکس به یک سیستم بزرگ مجازی چند پردازنده‌ای متقارن (SMP=Symmetric MultiProcessor) است. هرچند نحوه عملکرد آن با سیستم‌های SMP واقعی مقداری تفاوت دارد. نخست اینکه سیستم‌های واقعی SMP که مبتنی بر ۲ یا چند پردازنده هستند، می‌توانند اطلاعات را با سرعت بسیار بالا تبادل نمایند، در صورتی که در OpenMosix سرعت ارتباط بین گره‌های کلاستر، محدود به سرعت شبکه محلی است که گره‌ها در آن قرار دارند. استفاده از ارتباطات اترنت گیگابیت و یا سایر انواع پر سرعت اترنت باعث خواهد شد تا تبادل داده‌ها با سرعت بالاتری صورت گرفته و کارایی کلاستر بالاتر باشد.
    البته OpenMosix دارای مزایایی نسبت به سیستم‌های چند پردازنده‌ای سنتی داراست. با استفاده از OpenMosix شما قادر به ایجاد کلاسترهایی حاوی دها و حتی صدها کامپیوتر با سخت‌افزار ارزان هستید در حالی که سیستم‌های SMP که حاوی تعداد زیادی پردازنده باشند، می‌توانند بسیار گرانقیمت باشند. برای بسیاری از برنامه‌های کاربردی، OpenMosix نسبت به سیستم‌های SMP یا Mainframe، حرف بیشتری برای گفتن دارد. البته دلیلی وجود ندارد که شما نتوانید OpenMosix را بر روی سیستم‌های قدرتمند چند پردازنده‌ای اجرا نمایید. حتی این امکان وجود دارد تا OpenMosix را به همراه برنامه‌های کاربردی که با MPI یا PVM توسعه یافته‌اند، اجرا نمایید تا سرعت کلاستر خود را بهینه نمایید.
    همانند سیستم‌های SMP سنتی، OpenMosix قادر نیست تا یک پروسه را روی چند پردازنده فیزیکی اجرا نماید. واضح‌تر اینکه نباید انتظار داشته باشید تا اجرای برنامه‌ای مانند مرورگر موزیلا روی یک کلاستر سریعتر از یک سیستم تک پردازنده‌ای باشد، مگر اینکه اجرا پروسه آنرا به یک گره سریعتر روی کلاستر منتقل نمایید. بعلاوه در حال حاضر OpenMosix امکان جداسازی رشته‌های متعدد به هم پیوسته را از یکدیگر فراهم نمی‌کند.
    OpenMosix قادر است تا پروسه‌های استاندارد لینوکس را بین گره‌های کلاستر بدون مشکل مهاجرت دهد. در صورتی که یک برنامه کاربردی تعداد زیادی زیر پروسه داشته باشد، آنگاه OpenMosix قادر است تا هر یک از آنها را به یک گره مناسب در کلاستر منتقل کند. شما می‌توانید از این قابلیت حتی در برنامه‌های کاربردی که دارای زیر پروسه نیستند نیز استفاده کنید. برای مثال، در صورتی که نیاز دارید تا تعدادی فایل موسیقی را از فرمت wav به mp3 تبدیل نمایید، تبدیل هر فایل یک پروسه خواهد بود. شما می‌توانید تمام این پروسه‌ها را یکجا اجرا نمایید. در آنصورت عمل پردازش بین کلاستر پخش خواهد شد (بجای اینکه عملیات تبدیل فایل‌ها را یک به یک انجام دهید). در صورتی که شما ۱۲ فایل موسیقی و ۱۲ گره همسان داشته باشید، عملیات تبدیل ۱۲ بار سریعتر انجام خواهد شد.

    Mosix در برابر OpenMosix
    پروژه OpenMosix جدیدترین شعبه پروژه Mosix می‌باشد که یکی از اهداف آن فراهم کردن کلاستر سازی نامحسوس روی لینوکس است. پس چرا ما از OpenMosix استفاده کنیم؟ دلایل خوبی برای این امر وجود دارد. در اواخر سال ۲۰۰۱ رهبری پروژه Mosix تصمیم به انتشار نسخه‌های جدیدی از Mosix تحت مجوزهای غیر GPL گرفت (کدهایی که قبلا GPL بودند). بنابراین نسخه‌های جدید Mosix دیگر نرم‌افزار آزاد نبودند و حقوق کاربران نیز در آنها نامشخص بود و هیچ مانعی برای نویسنده Mosix وجود نداشت تا از کاربران درخواست پرداخت وجه نماید.
    این تغییر مجوز باعث ایجاد نگرانی‌هایی در میان کاربران Mosix شد و برداشته شدن کدهای منبع و حذف لیست‌های پستی Mosix بدون توضیح موجه، این نگرانی را تشدید نمود. خوشبختانه این کاربران تنها کسانی نبودند که در باره این تغییرات جدید نگران بودند. موشه بار (Moshe Bar) یکی از مدیران پروژه Mosix با این تغییر مجوز از GPL موافق نبود. بنابراین وی پروژه OpenMosix را شروع کرد تا این اطمبنان حاصل شود که ارائه نسخه آزاد و رایگان Mosix به عموم مردم ادامه پیدا خواهد کرد. سایت رسمی پروژه OpenMosix در آدرس http://openmosix.sf.net یا http://openmosix.org قرار دارد.
    پس از آغاز این پروژه، تعداد زیادی از کاربران Mosix به OpenMosix روی آوردند. سیاست توسعه باز موشه باعث شد تا توسعه OpenMosix سرعت بیشتری بگیرد. در حال حاصر ۱۴ نفر بطور فعال روی پروژه OpenMosix کار می‌کنند در حالی که تعداد افراد پروژه Mosix تنها ۴ نفر است. در حال حاضر تعداد زیادی رفع اشکال، بهینه سازی سرعت و بهینه سازی در کدهای OpenMosix صورت گرفته است و تعدادی قابلیت جدید و بهینه سازی مجدد در سرعت نیز بزودی ارائه خواهند شد. در حقیت جدا شدن پروژه OpenMosix از Mosix باعث ارائه راه‌حل‌های بهتری برای کلاستر سازی تحت سیستم‌عامل لینوکس فراهم نموده است.
    منبع


    ARM، Alux و tandis360 سپاسگزاری کرده‌اند.

  3. #3
    نام حقيقي: Saman Nasrolahi

    عضو عادی شناسه تصویری saman_nn2000
    تاریخ عضویت
    Feb 2004
    محل سکونت
    Tehran
    نوشته
    574
    سپاسگزاری شده
    101
    سپاسگزاری کرده
    28

    برپا سازی کلاسترهای OpenMosix

    جهت برپا سازی یک کلاستر، شما به حداقل دو دستگاه مبتنی بر لینوکس که به یک شبکه داخلی متصل بوده و قادر به کامپایل کردن و اجرای هسته‌های سری 2.4 باشند، نیاز دارید. همچنین شبکه شما باید دارای حداقل سرعت ۱۰۰ مگابیت باشد. این سرعت به شما سرعت بسیار خوبی را اعطا خواهد نمود. سرعت اترنت استاندارد یعنی ۱۰ مگابیت به شما سرعت چندان جالب توجهی نخواهد داد. البته در صورتی که شبکه شما از این نوع است و مایل هستید تا فقط OpenMosix را تجربه نمایید، پاسخ‌گو خواهد بود. استفاده از اترنت‌های گیگابیت مفید بوده ولی انتخابی است. البته ممکن است واقعا به آن نیاز نداشته باشید و اترنت ۱۰۰ مگابیت امور شما را به خوبی انجام دهد.
    اتصال گره‌های کلاستر به یک سوئیچ پرسرعت سیستم‌های شما را قادر خواهد ساخت تا در حالت Full Duplex عمل نموده و پهنای باند شما دو برابر گردد. همچنین می‌توانید در یک کلاستر ۲ یا ۳ گره‌ای از سیم کشی مخصوص جهت اتصال مستقیم گره‌ها به هم استفاده نمایید.
    داشتن فضای Swap کافی قویا توصیه می‌شود. به این صورت شما قادر خواهید بود تا گره‌ها را بصورت دینامیک از کلاستر خارج نمایید بدون اینکه با کمبود حافظه مواجه شوید. این موضوع نیز انتخابی بوده و ممکن است در شرایط خاصی که کلاستر تحت فشار کاری بالایی قرار دارد، به شما کمک کند.
    در کنار مطالب بالا، باز هم اضافه می‌کنم که امکان ایجاد یک کلاستر مبتنی بر فقط دو دستگاه لینوکس و یک اترنت استاندارد نیز وجود دارد.
    لازم نیست که تمام کامپیوترهایی که در یک کلاستر قرار می‌گیرند قوی باشند و یا مهم نیست که دارای سخت‌افزارهای متنوعی باشند. هر قدرت پردازشی می‌تواند به سرعت جمعی کمک کند!

    شروع کار
    فرایند برپاسازی کلاسترهای لینوکس بسیار ساده می‌باشد. ابتدا باید هسته‌هایی که OpenMosix روی آنها فعال شده‌اند را روی گره‌های کلاسترها نصب کرده و سپس ابزارهای کاربری را روی همه آنها نصب کرده و یک تنظیم کوچک در یک فایل پیکربندی انجام دهیم.
    به عنوان نخستین مرحله از کار، باید ابزارهای نرم‌افزاری لازم را فراهم آورید. نخستین چیزی که به آن نیاز دارید، کد منبع هسته‌ای است که مایلید روی آن کار کنید. کد منبع هسته خود را می‌توانید از http://kernel.org دریافت نمایید. من برای اجرای پروژه، از هسته 2.4.23 استفاده کرده‌ام. در قدم بعدی باید وصله‌های هسته OpenMosix و سپس ابزارهای نرم‌افزاری OpenMosix را دریافت نمایید. برای دانلود وصله‌های هسته OpenMosix می‌توانید به سایت رسمی آن در آدرس http://openmosix.sf.net یا http://openmosix.org مراجعه کنید و یا از لینک‌های زیر برای هسته‌های مورد نظرتان استفاده کنید:

    هسته 2.4.21:http://tab.tuxfamily.org/download/op...m-20030825.bz2
    هسته 2.4.22:http://tab.tuxfamily.org/download/op...m-20031215.bz2
    هسته 2.4.23:http://tab.tuxfamily.org/download/op...m-20031215.bz2
    هسته 2.6.0 (آزمایشی):http://tab.tuxfamily.org/download/op...20031202.1.bz2
    ابزارهای نرم‌افزاری:http://umn.dl.sourceforge.net/source...-0.3.5.tar.bz2

    فراموش نکنید که همیشه می‌توانید جدیدترین نسخه‌های وصله هسته و ابزارهای نرم‌افزاری OpenMosix را از سایت رسمی آن دریافت نمایید. پس از اتمام دریافت تمامی اقلام مورد نیاز (تنها کد منبع هسته دارای حجم زیادی است و بقیه ابزارها همگی بین ۲۰۰ تا ۳۰۰ کیلوبایت ظرفیت دارند!) باید تجهیز گره‌‌های کلاستر را شروع کنید. ابتدا لازم است در شبکه محلی خود کامپیوترهایی را که مایلید به عنوان گره‌های کلاستر استفاده کنید، تعیین نمایید. من در دفتر کار خود دو دستگاه را برای این منظور انتخاب کردم:


    همانطوری که قبلا اشاره کردم، لازم نیست که گره‌های کلاستر حتما قویترین ایستگاه‌های کاری روی شبکه باشند. دستگاه‌های انتخابی من دارای مشخصات زیر هستند:

    Node No.1 : Debian (LAN SERVER)
    CPU : P-III 800 MHz
    RAM: 128 MB SD-RAM
    NIC : SIS 100 Mbps
    HDD: 2x40GB
    Distro : Debian GNU/Linux 3.0 (woody)
    Kernel: 2.4.23 (will be 2.4.23-om)

    Node No.2 : Cyber (Workstation)
    CPU : Celeron 333 MHz
    RAM: 160 MB SD-RAM
    NIC : D-Link 100 Mbps
    HDD: 1x6.4GB
    Distro : Libranet GNU/Linux 2.8.1
    Kernel: 2.4.21 (will be 2.4.23-om)
    پس از تعیین گره‌های کلاستر، شروع به نصب نرم‌افزارهای لازم برای این کار می‌کنیم. این عملیات را برای تمام گره‌ها باید تکرار کرد. برای شروع هسته OpenMosix را نصب می‌کنیم. ابتدا کد منبع هسته را در آدرس usr/src کپی کرده و آنرا با استفاده از دستورهای زیر باز می‌کنیم:

    cd /usr/src
    # bzip2 -d linux-2.4.23.tar.bz2
    # tar -xf linux-2.4.23.tar
    # mv linux linux.old
    # ln -s linux-2.4.23 linux

    سپس وصله هسته را در کد منبع خود اعمال می‌کنیم:

    cd linux
    # cat /home/alan/patch-2.4.23-om-20031215.bz2 | bzip2 -d | patch -p1 -l
    کد منبع هسته در چند ثانیه وصله خواهد شد. اکنون می‌توانید طبق روال‌های گذشته هسته را پیکربندی و کامپایل نمایید. فقط اطمینان حاصل کنید که گزینه‌های زیر را در بخش OpenMosix پیکربندی هسته انتخاب کنید:
    openMOSIX process migration support[*] Stricter security on openMOSIX ports[*] openMOSIX File-System[*] Poll/Select exceptions on pipes
    برای شروع پیکربندی هسته، دستور زیر را وارد نمایید:

    # cd /usr/src/linux
    # make menuconfig
    پس از اتمام پیکربندی و ذخیره تغییرات، برای کامپایل شدن هسته دستورات زیر را وارد نمایید:

    # make-kpkg clean
    # make-kpkg --revision=8:MOSIX01 kernel_image
    و یا خیلی ساده‌تر:

    # make-kpkg clean
    # make-kpkg kernel_image
    این نحو عملیات کامپایل هسته به یک بسته دبیان ختم خواهد شد که قادرید آنرا به راحتی روی سیستم نصب نمایید. مدت زمان انجام عملیات کامپایل هسته به سرعت پردازنده سیستم بستگی دارد. پس از اتمام عملیات کامپایل هسته، بسته‌ای را که ایجاد شده است، نصب می‌کنیم:

    # dpkg -i kernel_image-2.4.23-om_MOSIX01_i386.deb
    هنگام نصب این بسته، مدیر بوت Lilo به طور خودکار پیکربندی خواهد شد. در صورتی که از گراب استفاده می‌کنید، باید تغییرات را بطور دستی در فایل پیکربندی آن اعمال نمایید. برای این منظور باید فایل boot/grub/menu.lst را ویرایش کرده و خطوط زیر را اضافه نمایید. البته مقادیری مانند پارتیشن‌های قابل بوت و سایر آدرس‌ها ممکن است روی سیستم‌های شما متفاوت باشد که آنها را باید تغییر دهید:

    title Libranet GNU/Linux, kernel 2.4.23 OpenMosix
    root (hd0,1)
    kernel /vmlinuz-2.4.23-om root=/dev/hda3 ro hdb=scsi
    savedefault
    boot
    پس از اتمام نصب هسته‌ها، اکنون باید ابزارهای نرم‌افزاری OpenMosix را نصب نماییم. برای این منظور، فایلی را که دانلود کرده بودیم، باز کرده و کامپایل و نصب می‌کنیم:

    # bzip2 -d openmosix-tools-0.3.5.tar.bz2
    # tar -xf openmosix-tools-0.3.5.tar
    # cd openmosix-tools-0.3.5
    # ./configure --with-kerneldir=/usr/src/linux-2.4.23/
    # make
    # make install
    کامپایل و نصب ابزارهای نرم‌افزاری مدت زیادی طول نمی‌کشد (۱-۲ دقیقه یا کمتر روی پردازنده‌های قویتر). پس از اتمام آن، باید در یکی از فایل‌های پیکربندی مربوطه لیست گره‌های کلاستر را تعریف کرده و سپس سرویس OpenMosix را طوری تعریف کنیم تا هر بار بصورت خودکار اجرا شود. به این منظور ابتدا دستور:

    # vi /etc/openmosix.map
    اجرا کرده و باید مشخصات گره‌ها را بصورت <شماره گره> <آدرس IP گره> <تعداد> وارد نماییم:

    <Node No.> <Node IP Address> <Node QTY>
    1 192.168.0.1 1
    1 192.168.0.7 1
    آرگومان شماره هنگامی مفید است که بخواهیم چند آدرس IP پشت سرهم را تعریف نماییم. مثلا در صورتی که ۱۰ گره داشته باشیم که آدرس آنها از ۲۵ شروع می‌شود، وارد خواهیم کرد:

    1 192.168.0.25 10
    و عملیات تایپ ما را بسیار کمتر خواهد کرد. این فایل پیکربندی روی تمام گره‌ها یکسان است. بنابراین می‌توانید آنر روی تمام گره‌ها کپی کنید. پس از انجام این کار به راه‌اندازی خودکار OpenMosix می‌پردازیم. ابتدا باید تعیین کنید که سطح اجرایی پیش‌گزیده هر یک از گره‌ها کدام است. به این منظور دستور زیر را وارد نمایید:

    # runlevel
    N 2
    خوب سطح اجرایی پیش‌گزیده ما ۲ است (سیستم‌های مبتنی بر دبیان). بنابراین وارد دایرکتوری etc/rc2.d می‌شویم. در صورتی که سطح اجرایی شما متفاوت شد، این عملیات را با دایرکتوری مربوط به آن که می‌تواند rc3.d، rc4.d و... باشد انجام دهید:

    # cd /etc/rc2.d
    # ln -s ../init.d/openmosix S20openmosix

    در اینجا نمی‌خواهم فلسفه دستورات بالا را توضیح دهم زیرا از مسیر اصلی دور خواهیم شد. پس از اتمام عملیات بالا و بوت سیستم‌ها، سیستم‌هایی داریم که مبتنی بر OpenMosix بوده و سرویس آن نیز بطور خودکار اجرا می‌شود. برای بکار افتادن کلاستر، گره‌ها را بوت می‌کنیم. گره شماره ۱ با موفقیت OpenMosix را اجرا می‌کند، ولی گره شماره ۲ با پیغام Invalid Map File قادر به اتصال به کلاستر نیست. پس مقداری جستجو و بررسی فایل پیکربندی، متوجه می‌شوم که در فایل etc/hosts یک ورودی به صورت زیر موجود است:

    127.0.0.1 cyber
    آنرا تبدیل به ورودی زیر می‌کنم:

    192.168.0.7 cyber
    مجددا سرویس OpenMosix را با دستور etc/init.d/openmosix restart اجرا می‌کنم. اکنون بدون مشکل اجرا می‌شود. برای حصول اطمینان از شناخته شدن تمام گره‌های کلاستر، با دستور زیر آنها را آزمایش می‌کنم:

    # mosctl status 1
    up.
    # mosctl status 2
    up.
    بسیار عالی! هر دو گره کلاستر در حال اجرا هستند. اکنون کلاستر ما آماده است. با استفاده از دستور mosmon می‌توانید وضعیت کلی کلاستر را بررسی نمایید. اینکه کدام سیستم‌ها دارای چه مقدار بار فعال هستند و با گذاشتن بار روی یکی از آنها چه اتفاقی خواهد افتاد و ...
    منبع


    ARM سپاسگزاری کرده است.

  4. #4
    نام حقيقي: Saman Nasrolahi

    عضو عادی شناسه تصویری saman_nn2000
    تاریخ عضویت
    Feb 2004
    محل سکونت
    Tehran
    نوشته
    574
    سپاسگزاری شده
    101
    سپاسگزاری کرده
    28

    آزمایش کلاستر

    کلاستر لینوکس زیر بار
    خوب با پیگیری و انجام مراحل شرح داده شده در بخش‌های پیشین مقاله کلاسترها، اکنون یک کلاستر آماده به کار دارید که می‌توانید قدرت آنرا آزمایش کرده و به نحوه کلی عملکرد کلاسترها پی ببرید.
    برای شروع، از روی ایستگاه کاری که بعنوان مانیتور آنرا در نظر گرفته‌ام، از روی کنسول وارد گره شماره ۱ و گره شماره ۲ می‌شوم. روی گره شماره ۱ با استفاده از دستور mosmon برنامه مانیتور کلاستر را که میزان بار هر گره را بصورت نمودارهای میله‌ای نمایش می‌دهد، اجرا می‌کنم. روی گره شماره ۲، دستور زیر را در خط فرمان تايپ می‌کنم:

    # for x in 1 2 3 4
    do
    awk 'BEGIN {for(i=0;i<10000;i++)for(j=0;j<10000;j++);}' &
    done
    دستور فوق، ۴ اسکریپت awk را که شدیدا بار
    CPU را بالا خواهند برد، بطور همزمان اجرا می‌کند. به کنسول گره شماره ۱ بازگشته و نمودار بار را زیر نظر می‌گیرم:



    بیچاره گره شماره ۲! نمودار به سقف رسیده است! انتظار می‌رود پس از چند لحظه پردازش‌ها به گره‌های بعدی کلاستر (که ما فقط گره شماره ۱ را داریم) منتقل شوند. بسیار جالب است. پس از چند ثانیه پردازش‌ها به گره شماره ۱ منتقل شده و بار آن به سرعت بالا می‌رود:



    همانطوری که در تصویر بالا مشاهده می‌کنید، میزان بار گره شماره ۱ به شدت بالا رفته و از بار گره شماره ۲ کاسته می‌شود. خوب این آزمایش بدی برای حصول اطمینان از کارکرد کلاستر نیست، ولی برای بررسی دقیق‌تر و گرفتن نتایج عملی‌تر، نیاز داریم تا تعدادی عملیات واقعی پردازشی را روی کلاستر انجام دهیم. یکی از بهترین عملیات پردازشی که می‌تواند به خوبی کارایی کلاستر را در بوته آزمایش قرار دهد، عملیات کد کردن فایل‌های موسیقی است.
    به این منظور، ما دو نرم‌افزار کد کردن فایل‌های موسیقی با فرمت wav را انتخاب کرده و آزمایشات را به کمک آنها انجام خواهیم داد.

    نصب نرم‌افزارهای لازم
    نرم‌افزارهای مورد نیاز را تنها در گره‌ای که مایلید آزمایشات را از طریق آن انجام دهید نصب نمایید و نصب آن در سایر گره‌ها ضروری نیست. این قابلیت کلاستر سازی نامحسوس OpenMosix است که باعث می‌شود تا ما نیازی به نصب این نرم‌افزارها و قرار دادن فایلهای هدف روی یک اشتراک قابل دسترس در تمام شبکه نداشته باشیم.
    نرم‌افزاری که ما از آن برای آزمایشات خود استفاده خواهیم کرد، نرم‌افزار کدینگ فایلهای صوتی به فرمت MP3 به نام Lame می‌باشد که یکی از سریعترین کد کننده‌های MP3 در جهان بوده و یک نرم‌افزار بازمتن است. این نرم‌افزار را از لینک زیر دانلود نمایید. ضمنا حجم آن کمی بیشتر از ۱ مگابایت می‌باشد:
    پس از دانلود بسته کد منبع، جهت نصب نرم‌افزار دستورات زیر را در خط فرمان اجرا نمایید:

    # gunzip lame-3.93.1.tar.gz
    # tar -xf lame-3.93.1.tar
    # cd lame-3.93.1
    # ./configure
    # make
    # make install
    نرم‌افزار Lame پس از چند دقیقه کامپایل و به راحتی نصب می‌شود. من نرم‌افزار را روی هر دو گره کلاستر نصب کرده‌ام، چون می‌خواهم دقیقا نحوه عملکرد آنرا در شرایط مختلف بررسی کنم. مورد دیگری که به آن نیاز است، تعدادی فایل wav است که باید آنها را تهیه کنید. من ۵ عدد فایل wav برای انجام آزمایشات تهیه کرده‌ام که حجم آنها حدود ۱۹۶ مگابایت می‌باشد (در حقیقت فایلهای MP3 بوده‌اند که توسط XMMS به فرمت wav برگردانده شدند).
    من در دایرکتوری root هریک از گره‌ها یک دایرکتوری به نام wav ایجاد کرده و فایلهای wav را در آنجا قرار دادم. در مرحله نخست آزمایش، هر یک از گره‌ها بصورت فردی فایلهای MP3 را کد می‌کنند. برای انجام آزمایش، دستور زیر را در خط فرمان وارد می‌کنم:

    # cd /root/wav
    # for x in *.wav
    do
    lame $x
    done
    در حقیت یک حلقه عملیات تبدیل فایل‌ها را یک به یک انجام می‌دهد. نتیجه حاصل مطابق جدول زیر می‌باشد:
    Cyber<<<<<<<<<<<<18:46s
    Debian<<<<<<<<<5:01s
    خوب نتیجه قابل انتظار است، ماشین پنتیوم ۸۰۰ مگاهرتزی باید هم سریعتر از سلرون ۳۳۳ مگاهرتزی باشد. پس از این مرحله OpenMosix را اجرا کرده و کلاستر را زیر بار می‌گذارم. دستور عملیات به صورت زیر است:

    cd /root/wav
    # for x in *.wav
    do
    lame $x &
    done
    با اضافه شدن کاراکتر & تمامی ۵ عملیات به صورت همزمان و در پس زمینه اجرا خواهند شد. اجرای همزمان ۵ پروسه باعث مهاجرت پروسه‌ها به گره دیگر کلاستر و وارد شدن کلاستر در عملیات می‌گردد. خوب همانطور که انتظار می‌رفت، کلاستر واقعا کار می‌کند! بسیار هیجان انگیز است. نتیجه کار مطابق جدول زیر است:
    cyber>>>>>>>4:11s
    Debian>>>>>>3:36s
    همانطور که می‌بینید، نتیجه عملیات بسیار جالب است. زمان ۵ دقیقه‌ای عملیات در دستگاه قویتر به سه دقیقه و نیم و زمان ۱۸ دقیقه و ۴۶ ثانیه‌ای دستگاه ضعیف‌تر به چهار دقیقه و ۱۱ ثانیه کاهش یافته است!!
    منبع


    ARM سپاسگزاری کرده است.

  5. #5
    نام حقيقي: Saman Nasrolahi

    عضو عادی شناسه تصویری saman_nn2000
    تاریخ عضویت
    Feb 2004
    محل سکونت
    Tehran
    نوشته
    574
    سپاسگزاری شده
    101
    سپاسگزاری کرده
    28

    Building a Linux virtual server

    اگر بخواهیم کلاستر را با استفاده از پروژه‌ی سرور مجازی لینوکس ‍یاده سازی نماییم بدین صورت عمل می کنیم:
    The main advantage of using LVS is that unlike Microsoft network load-balancing clusters, the LVS allows you to add a node running any operating system that supports TCP/IP to the cluster.

    The cluster setup (shown below at right) consists of a load balancer server -- also known as the virtual server -- running on the Linux operating system and one or more real servers connected to it through a hub or a switch. The real servers -- which can run any operating system -- provide network services to the Internet clients, whereas the virtual server does IP-level load balancing of the incoming traffic to the various real servers. The virtual server acts as an interface between the users and the real servers and, therefore, makes the parallel services of the real servers to appear as a virtual service on a single IP address.

    When the virtual server receives a client request for data, it transfers the request to the appropriate real server according to a scheduling algorithm. The real server then replies to the virtual server, which in turn forwards the reply to the client. Although it is actually the real server that services the client request, to the client it appears as if the response came from the virtual server. The IP address of the real server is masqueraded by the IP address of the virtual server.
    The virtual server uses two network interfaces (dual-homed host), one connected to the Internet for the clients to access and the other connected to the internal local area network (LAN), where all the real servers are placed. Scalability is achieved by transparently adding or removing real servers from the internal LAN.

    Rebuilding the kernel

    Linux systems using kernel versions earlier than 2.4.28 do not have support for virtual server built into the kernel. Therefore, the first step involved in setting them up as a virtual server is to rebuild their kernel with the appropriate patch applied. Kernel versions 2.4.28 or later have LVS support built into them by default and, therefore, require no patching.

    The patches can be downloaded from the LVS Web site. There are different patches for various kernel versions. For this article, we will be configuring a patch for the 2.4.x kernel: linux-2.4.21-ipvs-1.0.10.patch.gz.

    To apply the patch to the kernel, move the patch file to the /usr/src directory and issue the following command as root:

    #cd /usr/src/linux*
    #gunzip ../linux-2.4.21-ipvs-1.0.10.patch.gz
    #patch -p1 < ../linux-2.4.21-ipvs-1.0.10.patch

    This will patch the kernel; after that you'll need to compile it. In the /usr/src/linux* directory issue these commands:

    #make mrproper
    #make oldconfig
    #make menuconfig

    This will bring up a screen with several subheadings. Select the Networking Options subhead, and then IP:Virtual Server Configuration in the following screen. Then select the following options:

    virtual server support (EXPERIMENTAL)[*] IP virtual server debugging
    (16) IPVS connection table size (the Nth power of 2)
    --- IPVS scheduler
    <M> 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
    <M> FTP protocol helper

    Save the current kernel configuration and exit from menuconfig. Then from the command prompt type:

    #make dep && make clean && make bzImage && make modules && make modules_install

    This will create a compressed kernel image (bzImage) in the /usr/src/linux*/arch/i386/boot directory and will also create and install all the modules for the new kernel. Now copy this new kernel image (bzImage) to the /boot directory.

    Lastly, either edit your /etc/grub.conf or /etc/lilo.conf file or rename the new kernel image (/boot/bzImage) to the one being referred to in your bootloader configuration file, in order to make your system boot from the new kernel.

    Installing IPTables and IPVsadm

    After rebuilding the kernel you need to have the IPTables and IPVsadm packages installed on your system to configure it as virtual server. IPTables is used to build, maintain, and inspect IPv4 packet filtering and NAT (network address translation) rules in the Linux kernel. Using it, IP masquerading will be provided to the real servers. IPVsadm is the administrating utility for the Linux Virtual Server and will be used to set the scheduling algorithm and rules for forwarding client requests to the real servers.

    The IPTables package comes bundled with most Linux distributions and can be easily installed from the installation CDs for your distribution. The source RPM for the IPVsadm utility can be obtained from the LVS Web site. For this example we'll use the ipvsadm-1.21-10.src.rpm SRPM package.

    Once the packages have been installed you need to enable IP forwarding on the server. Open the file /etc/sysctl.conf in a text editor and set this value:

    net.ipv4.ip_forward = 1

    Next, issue the following command to start the IPTables service on your system. This allows the virtual server to forward replies from the real servers to the clients:

    #service iptables start

    Enabling IP masquerading

    In order to enable masquerading for the real servers, we will assume that the external Internet interface on your Linux Virtual Server is eth0 and the internal LAN interface (connected to other real servers) is eth1. Therefore, on the server issue these commands:

    #iptables -t nat -P POSTROUTING DROP
    #iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

    The first command sets up the default policy for IPTables to DROP, which means that if none of the specific rules match, the packet will be dropped. This ensures that not every packet is masqueraded by the server and, thus, provides an extra level of security. The second command enables NAT and masquerades the internal IP addresses of all the real servers to the IP address of the external Internet interface (eth0) of the virtual server. For more on IPTables, refer to its man page.

    Configuring the virtual server using IPVsadm

    The next step is to configure the Linux Virtual Server using the IPVsadm utility. But before that, you must allocate proper IP addresses to all the machines on your network. Put the real servers in your internal LAN on a private IP address range, such as 10.0.0.0/255.255.255.0. Also, put the internal LAN interface of the virtual server on the same subnet. Assign the IP address of the internal LAN interface of the virtual server as the default gateway for all the real servers. For the external Internet interface of the virtual server, use a public IP address or the settings provided by your ISP.

    In our example setup, we used two real servers running on different operating systems. One with the IP address 10.0.0.2(providing HTTP service) and the other with IP address 10.0.0.3(providing both HTTP and FTP services), with the default gateway for both of them set as 10.0.0.1, which is the IP of the internal LAN interface of the virtual server. The external Internet interface of the virtual server had been assigned a public IP address 61.16.130.100.

    Now add the virtual service and link a scheduler to it with these commands:

    #ipvsadm -A -t 61.16.130.100:80 -s wlc
    #ipvsadm -A -t 61.16.130.100:21 -s wrr

    The above two commands add wlc (weighted least-connection scheduling) and wrr (weighted round robin scheduling) algorithms for HTTP (port 80) and FTP (port 21) traffic on the virtual server, respectively. There are several other scheduling algorithms available; you can learn more about them from the IPVsadm man page.

    Next, add real servers on the virtual server to which the client requests will be forwarded:

    #ipvsadm -a -t 61.16.130.100:80 -r 10.0.0.3:80 -m
    #ipvsadm -a -t 61.16.130.100:80 -r 10.0.0.2:80 -m -w 2
    #ipvsadm -a -t 61.16.130.100:21 -r 10.0.0.3:21 -m

    This will cause all the HTTP traffic on the virtual server to be forwarded to 10.0.0.2 and 10.0.0.3 according to the scheduling algorithm. All the FTP traffic will go to 10.0.0.3 only. The real server 10.0.0.2 is given a weight of 2 for HTTP traffic by the -w 2 switch. The default weight is 1.

    Testing it out

    After setting everything up, use a client machine to connect to the virtual server using its external IP address. To do this, open a Web browser and type in the server's IP address (61.16.130.100 in the example) in the address bar. You will get a Web page served by the Web server running on the real servers. Open multiple connections to the virtual server and check the status of the various connections on the real servers. You will notice that the incoming load is being equally distributed among the real servers. Thus, the virtual server is performing IP load balancing.

    Although the above-described virtual server setup (virtual server via NAT) can meet the performance requirements of many servers, the design is limited by the load balancer, which is a single point of failure for the whole cluster. However, you can eliminate this bottleneck by having multiple virtual servers, each connected to its own cluster of real servers, grouped together at a single domain name by round robin DNS.

    منبع


    ARM و Alux سپاسگزاری کرده‌اند.

کلمات کلیدی در جستجوها:

مفهوم clustering

کلاستر سرور

راه اندازی کلاسترمقاله در مورد clusteringclustering مفهومسرور clustercluster کردنکلاستر کردن سرورcluster linuxکلاستر سرورهاراه اندازی clusteringclusterکاپیوترسيستم كلاستريکلاستر و لینوکسکلاستر کردن دو سرورایجاد کلاسترچگونگی و تنظیم clust ering در سرور1clusterکامپیوترنحوه کلاستر کردن کامپیوتركلاستر كردن دو كامپيوترCluster کردن در شبکه؟کردن سرورها clasterمطالبی درباره clusterمفهوم clustering servers

برچسب برای این موضوع

مجوز های ارسال و ویرایش

  • شما نمی توانید موضوع جدید ارسال کنید
  • شما نمی توانید به پست ها پاسخ دهید
  • شما نمی توانید فایل پیوست ضمیمه کنید
  • شما نمی توانید پست های خود را ویرایش کنید
  •