در بخش نخست از مجموعه مطالب “توازن بار” با مفهوم، کاربرد و نیاز به توازن بار در شبکه ها آشنا شدید. در بخش دوم با وظایف و عملکرد توازن بار و مولفه ها و اجزای آن آشنا خواهید شد. توازن بار به عنوان واسطه ای میان ترافیک کلاینت ها و سرور ها قرار می گیرد و درخواست های ارسالی از کلاینت ها را مستقیما به سرور هایی که می توانند پاسخ دهند، ارسال می کند.
همواره لازم است تا سیستمی که به عنوان متوازن کننده بار عمل می کند، فهرستی از سرور های قابل دستیابی را داشته باشد. سیستمی که در شبکه نقش توازن کننده بار را ایفا می کند دارای وظایف زیر است:
- امکان اضافه شدن یا حذف سرورها در هر لحظه را فراهم می کند که باعث می شود همیشه سروری برای پاسخ گویی به درخواست ها وجود داشته باشد.
- ماشین توازن بار باید همواره در دسترس بودن سرور ها را بررسی کرده و فهرستی از سرور های قابل دسترسی و پاسخ گویی به کلایت ها را داشته باشد.
- سرور هایی را که قادر به پاسخ گویی نیستند را شناسایی کرده و از چرخه فرایند توزیع بار خارج کند و هرگاه که سرور قادر به پاسخ گویی بود، آنرا مجدد به فرایند توزیع بار وارد نماید.
در مقایسه با DNS نوبت چرخشی، توازن بار خارج کردن و اضافه کردن مجدد سرور های از کار افتاده را برای فرایند توزیع بار را به صورت خودکار و بدون دخالت مدیر انجام می دهد. همچنین به دلیل شفاف بودن این فرایند، کلاینت ها هیچ اطلاعی نخواهند یافت.
توازن بار از نکانیزم هایی به نام Health Check همواره صحت و درستی سرور یا به عبارتی سلامتی سرور را بررسی کرده و فهرستی از سرور هایی که قادر به پاسخ گویی هستند را دارد. همچنین از الگوریتم های توزیع بار به منظور انتخاب سرور برای پاسخ گویی به کلاینت استفاده می کند.
اجزای توازن بار
درون شبکه، محیط توازن بار از سه سطح کلاینت ها، ماشین هایی در نقش توزیع کننده بار و سرور هایی که سرویس مورپ نظر مانند وب سرور، سرویس دهنده پست الکترونیکی، سرویس FTP و غیره را میزبانی می کنند، تشکیل شده است. ماشین توازن بار میان ترافیک کلاینت ها و سرور ها قرار گرفته و کلاینت ها به جای ارسال مستقیم درخواست به سرور ها، درخواست خود را به توزیع کننده بار ارسال کرده و توزیع کننده بار با انتخاب سروری از میان سرور ها، درخواست کلاینت را به آن ارسال می کند.
- روش های مسیربابی بسته های IP
اولین روش مسیربابی استفاده از NAT است. ماشین متوازن کننده بار به منظور عملکرد به عنوان واسطه، از مکانیزم NAT برای تبدیل آدرس ها استفاده می کند. NAT برای تبدیل آدرس های خصوصی درون شبکه LAN به آدرس عمومی و دسترسی به اینترنت استفاده می شود. درون محیط توازن بار نیز از NAT به منظور تبدیل آدرس ها استفاده می شود که، ماشین های کلاینت درخواست خود را به ماشین متوازن کننده بار ارسال می کنند، در بسته IP ایجاد شده، آدرس مقصد را، آدرس ماشین متوازن کننده بار قرار می دهد. ماشین متوازن کننده بار پس از دریافت درخواست (بسته) از کلاینت، آدرس مقصد را با آدرس سرور انتخاب شده جایگزین (تعویض) می کند، که این حالت را DNAT گویند. به طور کلی سه نوع تبدیل آدرس های شبکه به صورت زیر وجود دارد :
Source NAT : از این رو SNAT می گویند چونکه در این حالت تنها آدرس های مبدا ترجمه می شوند. در این حالت یک یا چند آدرس خصوصی را به یک یا چند آدرس عمومی ترجمه می شود تا به اینترنت دستیابی پیدا کنند، اما اگر درخواستی از اینترنت به NAT برسد، این درخواست ها توسط NAT، از بین خواهند رفت. اینگونه تصور کنید که ماشینی با آدرس 192.168.1.3 می خواهد صفحه وبی را از اینترنت ببیند، پس درخواست خود را ( یک بسته IP شامل آدرس های مبدا و مقصد، پورت های مبدا و مقصد) را به NAT می فرستد، NAT درخواست را به اینترنت می دهد (توسط اینترفیس خودش که توسط آدرس عمومی 1.1.1.1 دارد به اینترنت می دهد) و اطلاعات را نگه می دارد. پس از اینکه پاسخ از اینترنت به Linux Router آمد، NAT اطلاعات را نگاه می کند و آنرا با Header بسته آمده مطلبقت می دهد و می فهمد که بسته پاسخ آمده متعلق به آدرس 192.168.1.3 است.
اگر یک یا چند Host پشت NAT تنها به یک آدرس عمومی ترجمه شوند، این فرایند را Static SNAT گویند و اگر آنها به چندین (محدوده ای از) آدرس های عمومی ترجمه شوند، اینر فرایند را Dynamic SNAT گویند.
Destination NAT : DNAT عکس SNAT است، یعنی آدرس عمومی را به یک آدرس خصوصی ترجمه می کند. یعنی اجازه ایجاد درخواست از روی اینترنت را بر روی ماشین های شبکه داخلی (آدرس های خصوصی) می دهد.
Full NAT : بنابراین اگر SNAT یک آدرس خصوصی را به یک آدرس عمومی و DNAT همان آدرس عمومی را به همان آدرس خوصی همزمان ترجمه کند، به این حالت Full NAT گویند.
روش دیگر DSR است. در مسیربابی بسته توسط NAT سرور ها قاعدتا درخواست را از ماشین متوازن کننده بار دریافت می کنند و سپس پاسخ را مستقیما به کلاینت ارسال نمی کنند، بلکه پاسخ را به واسطه ماشین متوازن کننده بار که نقش NAT را ایفا می کند، به کلاینت می رساند.
اما با استفاده از DSR سرور خود مستقیما پاسخ کلاینت را می دهد. با استفاده از این روش مسیریابی کارایی شبکه و ماشین متوازن کننده بار بالا خواهد رفت. وظیفه ماشین متوازن کننده بار دریافت درخواست کلاینت و استفاده از الگوریتم های توزیع با برای انتخاب یک سرور و ارسال درخواست کلاینت به آن است. حال با استفاده از این روش مسیریابی، دیگر ماشین متوازن کننده بار مسئول ارسال پاسخ سرور به کلاینت نیست.
- سرورها
سرویس ها مورد نظر مانند وب سرور، سروریس پست الیکترونیکی بر روی سرور ها میزبانی می شوند و هدف توزیع بار و توزیع درخواست های کلاینت ها توسط ماشین متوازن کننده بار بر روی این سرور ها است. به سرور یک آدرس و شماره پورتی اختصاص داده می شود. غالبا سرور ها در شبکه خصوصی بوده و آدرس های عمومی به آنها اختصاص داده نمی شود، بلکه آدرس عمومی به ماشین متوازن کننده بار اختصاص داده خواهد شد و توسط مکانیزم DNAT تبدیل درخواست های آمده از اینترنت با آدرس های عمومی به آدرس های خصوصی صورت می گیرد.
کلاینت ها ماشین هایی هستند که درخواست دسترسی به یک سرویس بر روی سرور ها را دارند. سرور های مربوط به یک سرویس باید سرویس و محتوای یکسانی را ارائه دهند، اما می توان بر روی یک سرور بیش از دو سرویس را ارائه کرد. به طور مثال می توان سه سرور داشت که هر سه وب سایت و وب سرور را میزبانی و دو سرور، سرویس پست الکترونیکی را ارائه دهند. به هر حال سه سرور یک باید محتوای یکسانی از وب سایت را ارائه دهند.
- آدرس های مجازی
آدرس IP مجازی، آدرسی است که به چندین برنامه کاربردی بر روی یک سرور یا به چندین سرور درون یک شبکه اختصاص داده می شود. در پیاده سازی توازن با درون شبکه، یک آدرس مجازی را به چندین ماشین متوازن کننده بار اختصاص داده می شود.
- Health Check
انجام بررسی های گوناگون برای تعیین درستی و صحت سرور ها و برنامه های کاربردی (سرویس های) نصب شده بر روی آنها، یکی از چندین مزیت متوازن سازی بار است که Health Check گفته می شود. بدون وجود توازن بار، یک کلاینت ممکن است درخواستی را به سروری از کار افتاده ارسال کند. همچنین ممکن است که سرویس در حال اجرا باشد، اما برنامه کاربردی یا سرویس اجرایی بر روی آنها دچار مشکلاتی شده باشد.
در این مواقع و عدم وجود توازن بار، مدیران باید به صورت دستی اقدام به تعویض سرور از کارافتاده با یک سرور جدید کنند و یا اینکه سرور و یا برنامه کاربردی در حال اجرای بر روی آنرا به صور دستی رفع اشکال کنند. ماشین متوازن کننده بار می تواند با استفاده از Health Check این موارد را به طور خودکار شناسایی و عکس العمل مناسب را به سرعت انجام دهند.
یکی از وظایف Health Check بررسی صحت و درستی عملکرد سرور ها است که از یک دید می تواند به دو دسته بندی In-Band Check و Out-Band Check تقسیم کرد. با In-Band Check ماشین متوازن کننده بار، ترافیک میان کلاینت ها و سرور ها را به منظور بررسیحت و درستی سرور بررسی می کند. به طور مثال اگر ماشین متوازن کننده بار بسته TCP ارسالی از کلاینت را به سرور ارسال (Forward)کند، اما اگر هیچ پاسخی (هیچ بسته ACK) از سرور دریافت نکند، پس ماشین متوازن کننده بار مشکلی را در سرور تشخیص می هد.
اساس Health Check به این صورت است که، ماشین متوازن کننده بار انواع مختلفی از Health Check را انجام می دهد. این بررسی ها می تواند بر اساس لایه های محتلف OSI صورت گیرد.
در لایه 2، Health Check در برگیرنده یک درخواست ARP به منظور پیدا کردن آدرس فیزیکی (MAC Address) مربوط به اینترفیس و آدرس سرور ها است. سرور در صورتی به ماشین متوازن کننده بار پاسخ می دهد که، در حال کار باشد، در غیر اینصورت از کار افتاده و پاسخی را ارسال نخواهد کرد.
در لایه 3، Health Check در برگیرنده یک Ping با سرور است. Ping ابزاری است که به منظور بررسی اینکه آیا آدرس IP در شبکه وجود دارد و به طبع ماشین (سرور) دارنده آدرس IP فعال و در حال کار است. Ping از پروتکل ICMP استفاده می کند و بسته های با اندازه و تعداد مشخص را به سرور ارسال می کند و اگر به همان تعداد بسته ارسالی از سرور، بسته دریافت کند، پس سرور در حال کار و فعال است.
در لایه 4، ماشین متوازن کننده بار سعی در ارتباط با یک پورت از نوع TCP یا UDP دارد. به طور مثال، ماشین متوازن کننده بار بر روی پورت شماره 80 مربوط به سرور هایی که وب سرور را میزبانی می کنند درخواست هایی را ارسال می کند و در انتظار یک پاسخ از سمت سرور می ماند. در این حالت سرور قادر به پاسخ گویی است اما به دلیل بسته بودن پورت، سرور قادر به پاسخ گویی نیست.
همچنین وضعتی را در نظر بگیرید که دو سرور و هر دو سرویس وب (وب سرور) را ارائه می دهند و یکی از آنها سرویس FTP را نیز ارائه می کند. در این حالت سرور ها قادر به پاسخ گویی هستند، پورت 80 مربوط به وب سرور بسته است، پس سرور قادر به ارائه سرویس وب نیستند، ولی به دلیل باز بودن پورت 21 مربوط به FTP در سروری که آنرا میزبانی می کند، در صورت درخواست از سوی کلاینت، قادر به پاسخ گویی است.
Health Check در لایه 7 نیز قابل انجام است که Health Check سطح برنامه کاربردی نامیده می شود. بسته به برنامه کاربردی (سرویس)، مکانیزم Health Check نیز متفاوت است. به عنوان مثال، Health Check در وب سرور اینگونه است که، ماشین متوازن کننده بار یک درخواست HTTP GET و HTTP POST مبنی بر یک URL از کلاینت به سرور ارسال می کند. ماشین متوازن کننده بار را می توان به گونه ای تنظیم کرد که کد های HTTP بازگشتی از سرور را بررسی کند. به طور مثال کد و خطای 404 یعنی صفحه یا شی درخواستی یافت نشده است.
به عنوان مثالی دیگر، ماشین متوازن کننده بار، می تواند یک پرس و جوی به منظور یافتن آدرس یک دامنه را از سمت کلاینت به سرور DNS ارسال می کند و نتیجه آمده از سرور را با نتایج قبلی تطبیق دهد. برای سرویس FTP نیز، ماشین متوازن کننده بار میتواند به سرور FTP می تواند با یک حساب کاربری (نام کاربری و گذرواژه) به سرور Login کند و از صحت عملکرد آن مطلع شود.
اساس مکانیزم های Health Check به منظور بررسی درستی و صحت عملکرد سرور ها و همچنین برنامه های کاربردی (سرویس) در حال اجرای بر روی آنها است و از این رو محصولات متوازن بار متفاوتی به این منظور ارائه شده اند که مکانیزم Health Check آنها از محصولی به محصول دیگر و بسته به سرویس پشتبانی توسط آن محصول، متفاوت است. به طور مثال برنامه متن باز HAProxy به منظور توازن بار تنها برای وب سرور ها است و از سرویسی مانند SMTP پشتیبانی نمی کند.