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

سناریوی فعال-آماده باش

سناریو فعال-آماده باش (Active – Standby) بدین گونه است که، یکی فعال بوده و دیگری به صورت پشتیبان عمل کند و در صورت خرابی ماشین اول، به صورت خودکار جایگزین آن شده و عملکرد آنرا دنبال می کند. در این حالت یک رابطه فعال-آماده باش وجود دارد، به این معنی که یکی از ماشین ها در حال کار و ارائه سرویس و ماشین دیگری با همان وظایف در حال آماده باش است تا در صورتی خرابی ماشین اول، جایگزین آن شده و از این پس عملکرد آنرا انجام دهد. شکل زیر ساختار این سناریو را نشان می دهد. در صورتی که ماشین فعال از کار افتاد، ماشین در حال آماده باش مطابق با شکل زیر به صورت خودکار جایگزین ماشین از کار افتاده می شود و از این پس ترافیک شبکه به سمت آن خواهد بود.

سناریوی فعال-فعال

سناریوی دیگر به این صورت است که هر دو ماشین متوازن کننده بار همزمان فعال باشند. در این سناریو هر دو ماشین ترافیک را دریافت می کنند، و در صورت از کار افتادن یکی از دو ماشین، ماشین دیگری همچنان توزیع بار را انجام خواهد داد. در این سناریو می توان مطابق شکل 1-4 به هر ماشین متوازن کننده بار یک آدرس مجازی اختصاص داد. این نوع پیکربندی که به هر ماشین یک آدرس مجازی اختصاص داده می شود، هر ماشین مجازی را به صورت آماده باش برای ماشین دیگری در نظر می گیرد.

مطابق با شکل زیر ماشین A به صورت آماده باش برای ماشین B و ماشین B نیز به صورت آماده باش برای ماشین A عمل می کند. در حالتی دیگر، با وجود دو آدرس مجازی و دو ماشین، هر دو آدرس مجازی را می توان مطابق شکل زیر به هر دو ماشین اختصاص داد. در تمامی سناریوهای فعال-فعال در صورت از کارافتادن ماشینی، همچنان آدرس های مجازی قادر به پاسخ گویی خواهند بود. این سناریو به دلیل فعال بودن دو ماشین متوازن بار به صورت همزمان، نسبت به حالت فعال-آماده باش، کارایی بالاتری دارد.

توازن بار چگونه کار می کند

ماشین متوازن کننده بار به عنوان واسطه ای میان کلاینت ها و سرور ها قرار می گیرد و کلاینت ها درخواست های خود را به آن ارسال و سپس ماشین متوازن کننده بار سروری را مجموعه سرور های قابل دستیابی انتخاب و درخواست را به آن ارسال می کند. فرایند توزیع بار در دو گام انجام می شود. در گام نخست، ماشین متوازن کننده بار باید درستی و صحت سرور ها را با استفاده از مکانیزم های Health Check بررسی کند. در گام دوم با استفاده از الگوریتم ها یا روش های توزیع بار، بر اساس وضعیت بار سرور ها، سروری را انتخاب کند. الگوریتم نوبت چرخشی یکی از این الگوریتم ها است.

فرض کنید مانند شکل سه سرور به نام های RS1, RS2 و RS3 داریم که سرویس های وب، پست الکترونیکی و FTP را میزبانی می کنند. سرویس ها بر روی پروتکل TCP و بر روی پورت های متفاوت به درخواست ها گوش می دهند. وب سرور بر روی پورت 80، پست الکترونیکی بر روی پورت 82 (سرویس SMTP) و سرویس FTP بر روی پورت 21 به درخواست ها گوش می کنند.

کلاینت قصد مشاهده سایت را دارد، کلاینت یک اتصال TCP را ایجاد می کند و سپس درخواست HTTP را ارسال و پاسخی را دریافت می کند و در نهایت اتصال TCP را قطع می کند. فرایند ایجاد اتصال TCP به این صورت است که، زمانی که ماشین متوازن کننده بار یک درخواست TCP SYN و به طبع بسته ای را از کلاینت دریافت می کند، آن بسته IP شامل اطلاعات زیر است:

  • آدرس مبدا که همان آدرس کلاینت است.
  • شماره پورت مبدا و مربوط به کلاینت.
  • آدرس ماشین مقصد که همان آدرس مجازی ماشین متوازن کننده بار است.
  • شماره پورت مقصد که در اینجا پورت شماره 80 و مربوط به HTTP است.

ماشین متوازن کننده بار با دریافت بسته IP از سوی کلاینت، باید سروری را انتخاب کند. طبق گام های بالا ابندا توسط مکانیزم Health Check از صحت و درستی سرور ها مطمئن و فهرستی را تهیه می کند. سپس توسط الگوریتم های توزیع بار و بسته به بار بر روی سرور ها، سروری را انتخاب می کند. حال فرایند ترجمه آدرس توسط NAT انجام می شود و آدرس سرور انتخاب شده را با آدرس مقصد فعلی بسته، یعنی آدرس مجازی خودش تعویض می کند.