پیاده سازی توان بار در لینوکس – بخش دوم

در بخش نخست یک سناریو برای پیاده سازی توازن بار توسط Linux Virtual Server گفته شد. LVS یک ویژگی درونی هسته سیستم عامل لینوکس است و نیازی به نصب آن نیست و تنها باید ابزارهای فضای کاربر برای مدیریت LVS نصب شوند. در این مطلب اجزای LVS معرفی می شوند.

اجزای LVS

اصلی ترین بخش LVS قطعه کد ipvs در هسته سیستم عامل لینوکس است. ماشین متوازن کننده باری که در هسته خود این قطعه کد را اجرا می کند، Director نام دارد. وقتی کلاینت درخواست سرویس را می دهد، درخواست آن به Director ارسال شده و سپس Director درخواست را به یک سرور ارسال می کند. Director به عنوان یک مسیریاب برای هدایت درخواست کلاینت به سمت سرور عمل می کند.

LVS از مجموعه ابزارهایی به منظور نظارت بر (Monitoring) خوشه ای از سرور ها (Cluster) استفاده می کند. شکل ‍۱ نمای کلی از درون LVS را  بر روی ماشین متوازن کننده فعال و پشنیبان را نشان می دهد.

Picture3

شکل ۱

دایمون (Daemon) به نام pulse بر روی ماشین های متوازن کننده بار (Load Balancer) فعال و پشتیبان در حال اجرا است. فرایند pulse بر روی ماشین متوازن کننده پشتیبان (Backup یا Passive)، پیام heartbeat را به اینترفیس عمومی (Public) ماشین متوازن کننده بار ارسال می کند تا از عملکرد ماشین متوازن کننده فعال (Active) اطمینان کسب کند. دایمون یا Daemon در سیستم عامل های شبه یونیکس مانند لینوکس، فرایند پس زمینه (Background) است که به درخواست های رسیده گوش می دهد.

فرایند pulse در ماشین متوازن کننده بار فعال، فرایند lvs را به منظور پاسخ به پرس و جو های heartbeat از سمت ماشین متوازن کننده پشتیبان فعال می کند. وقتی فرایند lvs فعال شد، آنگاه دستور ipvsadm را برای پیکربندی و نگهداری IPVS Routing table در هسته لینوکس را فراخوانی می کند و سپس فرایند nanny را برای هر یک از سرور های مجازی (Virtual Servers) پیکربندی شده بر روی سرور های واقعی فراخوانی می کند.

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

در صورتی که فرایند lvs گزارش خرابی را دریافت کند، دستوری را مبنی بر حذف سرور واقعی از جدول مسیریابی ذخیره شده در هسته صادر می کند. به این معنی که با این حذف خودکار سرور، دیگر این سرور در چرخه فرایند توزیع بار شرکت نخواهد کرد.

همانطور که گفته شد، ماشین متوازن کننده بار توسط فرایند pulse درستی و صحت عملکرد ماشین متوازن کننده بار فعال را بررسی می کند و در صورتی که پاسخی را دریافت نکند، با فراخوانی send_arp یک Failover را اعلام کرده و تمامی آدرس های مجازی باید ماشین پشتیبان اختصاص داده شوند.

سپس دستور هایی را به ماشین متوازن کننده فعال و به هر دو اینترفیس های عمومی و خصوصی آن، برای غیر فعال کردن فرایند lvs آن ارسال می کند و سپس فرایند lvs را بر روی ماشین متوازن کننده پشتیبان را فعال کرده و از این پس نقش ماشین متوازن کننده فعال را ایفا می کند.