جهش به محتوا
ورود کاربران
وبلاگسرورهای مجازیHAProxy چیست ؛ معرفی لود بالانسر قوی لینوکس
هر زمان نیاز به کمک داشتید، در کنار شما هستیم . با ما تماس بگیرید ( 031-3626 0000 ) یا درخواست خود را به صورت آنلاین ثبت نمایید.

HAProxy چیست ؛ معرفی لود بالانسر قوی لینوکس

وقتی که ما یک کسب و کار اینترنتی را راه اندازی کرده باشیم و بخواهیم سایت خود را در بهترین حالت ممکن نگه داریم یکی از مهمترین مواردی که باید به آن توجه داشته باشیم سرعت سایت ما می باشد و باید در نظر داشت که ابزار های متخلف و زیادی برای این کار وجود دارد. شما می توانید از سیستم های توزیع محتوا یا همان CDN ها، کش های مختلف مانند کش لایت اسپید و حتی افزونه های کَشی مانند WP Rocket برای اینکه یک سایت سریع داشته باشید استفاده کنید، اما در صورتی که بخواهید به صورت ریشه ای مشکلات سایت خود را برطرف کنید، میزبانی و سرور های هاستی که سایت شما را برایتان بالا نگه می دارند، جایی است که باید به سراغ آن بروید. برنامه ها و مکانیزم های زیادی وجود دارد که برای این کار مورد استفاده قرار می گیرد و در این مقاله با بررسی اینکه HAProxy چیست قصد داریم در مورد یکی از این برنامه ها صحبت کنیم و ببینیم که این عضو کلیدی چطور می تواند این کار را برای ما انجام دهد.

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

 

مکانیزم کاری سرور ها

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

مکانیزم کاری سرور ها

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

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

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

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

مشکلات کاری سرور ها

اکنون که می دانیم برنامه HAProxy در چه زمینه ای قرار است برای ما کار کند و می خواهد پاسخ کدام نیاز را به سرور ما بدهد، نوبت به این رسیده است که به صورت موردی به بررسی اینکه HAProxy چیست بپردازیم.

 

HAProxy چیست

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

در تعریف کتابی برای این سوال که HAProxy چیست باید گفت برنامه ای رایگان و اوپن سورس است که از طریق مکانیزم کار تغییر URL می تواند امکان تغییر آدرس ها را روی سرور انجام داده و وب سرور ها به صورت بهینه به این درخواست های وارده سرویس دهی می کنند.

در واقع اگر بخواهیم بگوییم که روش بالانس کردن در HAProxy چیست باید گفت که از تکنیکی به نام URL Rewriting برای این کار استفاده می کند. وقتی که یک درخواست وارد سرور می شود، در واقع نیاز دارد که به یک URL متصل شده و از سایتی که نیاز دارد اطلاعات خود را بردارد. کاری که HAProxy برای متعادل سازی انجام می دهد این است که یک درخواست ها را روی چند سرور به صورت متعادل توزیع می کند.

HAProxy چیست

این برنامه که با زبان برنامه نویسی C نوشته شده است و یک برنامه قدرتمند و حرفه ای به شمار می رود توسط خیلی از سایت هایی شلوغ مانند اینستاگرام، گیت هاب، استک اورفلو، ردیت و توییتر مورد استفاده قرار می گیرد. در واقع وقتی ساختار سایت به صورتی باشد که تعداد ریکوئست ها کوچک و زیاد باشد این برنامه می تواند به بهترین شکل ممکن آنها را سازماندهی کرده و کیفیت ایده آلی را در اختیار کاربران قرار دهد. در ادامه در مورد اینکه تاریخچه HAProxy چیست صحبت خواهیم کرد.

 

تاریخچه HAProxy چیست

Willy Tarreau برنامه نویس فرانسوی کسی بود که اولین بار برنامه HAProxy را ارائه کرد. این برنامه به صورت رایگان و منبع باز در سال ۲۰۰۰ ارائه شد و اولین ورژنی که از این برنامه ارائه شد برای هسته لینوکس بود. بعد ها این ورژن با گسترش هایی برای سیستم عامل های دیگری مانند FreeBSD و Solaris هم گسترش داده شد.

این برنامه به مدت ۱۳ سال تحت لیسانس گنو به صورت رایگان کار کرد و در سال ۲۰۱۳ با تاسیس یک شرکت تجاری به نام HAProxy Technologies نسخه رسمی و همراه با آپدیت آن به یک برنامه تجاری تبدیل شد. این برنامه ALOHA نام داشته و اگر بخواهیم بگوییم که برتری آن نسبت به HAProxy چیست می توان به رابط کاربری گرافیکی ای که این برنامه دارد به عنوان برتری اصلی آن شناخت.

در واقع نسخه جدیدی که ارائه شده بود از نظر کاربرد همان کاری را می کرد که HAProxy انجام می داد و صرفا موارد مدیریتی و رابط کاربری آن متفاوت شده بود. البته باید گفت که HAProxy در تمامی این سال ها بدون آپدیت و یا تغییر نبوده است و اصلاحات زیادی روی آن انجام شده است. البته با ارائه این برنامه توسعه HAProxy به هیچ عنوان متوقف نشد و ورژن های مختلفی از آن ارائه شدند. در ادامه این ورژن ها را بررسی خواهیم کرد.

 

ورژن های مختلف HAProxy چیست

 این برنامه در سال های ابتدای فعالیت خود به خوبی توسعه پیدا کرده و سه ورژن 1.0، 1.1 و همینطور 1.2 تا سال 2003 از این برنامه ارائه شدند. بعد از آن این برنامه به یک نسخه با ثبات رسیده و تا 13 سال آینده خبری از آپدیت نبود. سه سال بعد از ارائه Aloha در سال ۲۰۱۶ ورژن جدیدی از این برنامه ارائه شد که از زیر مجموعه های ورژن اول آن بود.

ورژن های مختلف HAProxy چیست

در مدت یک سال بعد از این تغییرات سه آپدیت جدید برای برنامه HAProxy ارائه شد و این روند پر آپدیت بودن تا سال ۲۰۱۹ که ورژن ۲.۰ ارائه شد ادامه داشت. در زمان نگارش این مقاله یعنی در ماه نوامبر سال ۲۰۲۱ ورژن ۲.۴ که در ماه می ۲۰۲۱ برای این برنامه ارائه شده است به عنوان ورژن پایدار این برنامه ارائه شده است و این برنامه همچنان در حال گسترش است. این برنامه می تواند بازدهی خوبی را روی سیستم های مختلف داشته باشد که در ادامه این مورد که وضعیت بازدهی HAProxy چیست و چگونه عمل می کند صحبت خواهیم کرد.

 

وضعیت بازدهی در HAProxy

این برنامه روی سرور های معمولی که نیروی پردازشی عادی ای را با ۶ تا ۸ هسته پردازشی ایجاد می کنند و همینطور بین ۲۰۰ هزار تا ۵۰۰ هزار درخواست در ثانیه دارند می تواند به خوبی کار خود را انجام دهد. البته باید در نظر داشت که این سرور ها باید با پهنای باند ۲۵ گیگابیت بر ثانیه ورودی داشته باشند و سیستم عامل آنها هم تحت لینوکس باشد. میزان باردهی می تواند روی سایر سیستم عامل ها کمی پایین تر از حد انتظار باشد.

برای سرور های قدرتمندی که با ۶۴ هسته پردازشی کار می کنند و از پهنای باند های ۱۰۰ گیگابیت بر ثانیه پشتیبانی می کنند، این برنامه می تواند تقریبا در حدود ۲ میلیون درخواست را در ثانیه مدیریت کرده و از این نظر به خوبی عمل می کند به طور کلی می توان گفت که این برنامه به لطف زبان برنامه نویسی قوی و طراحی ای که دارد محدودیتی روی قدرت های سخت افزاری سرور ایجاد نمی کند و مانند خیلی از برنامه های دیگر که می توانند روی پردازش هایی در اندازه های بالا تداخل ایجاد کنند عمل نمی کند.

در مورد این موضوع باید گفت که وب سرور هم یکی از اصلی ترین مواردی است که می تواند روی بازدهی HAProxy تاثیر بگذارد، در صورتی که بخواهیم بگوییم بهترین کیفیت ارائه شده توسط HAProxy چیست باید گفت که باید این کیفیت را از وب سرور NginX بگیریم. پیش تر در مقاله NginX چیست در مورد این وب سرور قدرتمند که با استفاده از زبان php کار می کند و می توان آن را یکی از قدرتمندترین وب سرور های ارائه شده برای سیستم عامل لینوکس دانست صحبت کرده بودیم و در مجموع باید گفت که HAProxy می تواند به خوبی با این وب سرور هماهنگ شده و با توجه به اینکه این وب سرور از لود بالانسینگ در لایه اپلیکیشن هم پشتیبانی می کند، درخواست ها را برای این وب سرور تنظیم نماید.

وضعیت بازدهی در HAProxy

اکنون به صورت دقیق می دانیم که HAProxy چیست و چه کاری را برای ما انجام می دهد اما موضوع دیگری وجود دارد که باید در مورد آن صحبت کرد و آن این است که HAProxy دقیقا به چه صورتی این کار را انجام می دهد و مکانیزم لود بالانسینگ در این برنامه چیست.

 

انواع لود بالانسینگ در HAProxy چیست

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

در مورد اینکه HAProxy چگونه این درخواست ها را می خواهند دو رویکرد کلی وجود دارد که این برنامه از آنها استفاده می کند. در واقع این رویکرد ها به دو لایه اصلی از مدل ۷ لایه ای OSI که برای ساختار اینترنتی ارائه شده است بستگی دارد. مدل OSI مدلی است که در آن ۷ لایه اصلی برای اینترنت ارائه می شود که از بالا به پایین به این صورت هستند:

مدل 7 لایه ای OSI

 

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

 

لود بالانسینگ لایه ۴

یکی از اصلی ترین و مهمترین مواردی که HAProxy کار لود بالاسینگ را انجام می دهد در لایه ۴ یا همان لایه Transport است. کار این لایه در واقع این است که بسته هایی که از لایه شبکه گرفته است را آماده تحویل به مکانیزمی کند که می خواهد آنها را برای استفاده به هم پیوند دهد. در واقع این لایه تشخیص می دهد که بسته ای که از کابل وارد سیستم شده است باید روی چه پورتی تنظیم شده و محتوایی که دارد از چه نوعی است و باید به المان های نرم افزاری مورد نیاز تحویل شود.

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

در تصویر زیر می توانید این مورد را به صورت کامل ببینید که چه اتفاقی برای بسته ها می افتد و نقش HAProxy چیست و چه کاری انجام می دهد:

لود بالانسینگ لایه 4

 

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

 

لود بالانسینگ لایه ۷

لایه ۷ یا لایه اپلیکیشن بخشی از مدل OSI است که در آن فایل ارسالی در حالتی قرار دارد که توسط برنامه ای که قرار است از آن استفاده کند قابل درک باشد، به طور مثال اگر فایل ارسالی یک فیلم باشد ادیت با فرمتی که دارد تکمیل شده و آماده پلی کردن باشد. در این حالت که به صورت بهتر و هوشمند تری می توان کار لود بالانسینگ را انجام داد، HAProxy می تواند تشخیص دهد که کدام یک از سرور های زیر مجموعه ای که دارد می توانند بهتر با این درخواست کار کنند. به عنوان مثال می توانید شکل زیر را در نظر داشته باشید.

لود بالانسینگ لایه 7

 

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

هر دوی این لود بالانس ها می توانند بهینه سازی های بسیار خوب و کاملی برای سایت باشند ولی در کل باید گفت که روش کار HAProxy در لایه ۷ به صورت هوشمندانه تر است و در حالت اول بهتر می تواند بسته هایی با تعداد بالا را مدیریت کند. اگر بخواهیم بگوییم که هدف هر کدام از این بهینه سازی ها و لود بالانسینگ های HAProxy چیست باید گفت که از لایه ۴ معمولا در سرور های میانی اینترنت و از لایه ۷ در سرور های لبه استفاده می شود.

 

نتیجه گیری

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

این مقاله برای شما مفید بود؟
بلهخیر

دیدگاهتان را بنویسید

Solve : *
22 ⁄ 11 =