HAProxy چیست و چه کاربردی دارد؟
آخرین نسخه HAProxy (2.8.0 ) در خرداد 1402 منتشر شد. این نرم افزار متنباز پروکسی و یک لود بالانسر است و به دلیل حجم زیادی از ویژگیهایی که برای کمک به کاهش یا حتی جلوگیری از خرابی و مدیریت ترافیک وب ارائه میدهد، بسیار محبوب است. HAProxy یک راهکار رایگان است که مدیریت کارآمدتر ترافیک وب را ترویج میکند.
خرابی وبسایت یا اپلیکشن برای کسب و کارها فاجعه بار است. وقتی میخواهید تا حد امکان به کاربران زیادی خدمات رسانی کنید، اما اگر چیزی برای مدیریت ترافیک ندارید، برنامههای وب میتوانند به سرعت از کار بیفتند. زمانی که کاربران به دنبال جایگزین میروند که معمولا یکی از رقبای شماست.
HAProxy چیست؟
HAProxy یک پروکسی متنباز، پروکسی معکوس و راهکار لود بالانس برای اپلیکیشنهای مبتنی بر HTTP و TCP است. لود بالانس تکنیکی برای مسیریابی ترافیک به سرورها بر اساس قوانین تنظیم شده در طول پیکربندی است. این قوانین ممکن است همیشه به دنبال سروری با کمترین ترافیک باشند، یا ممکن است به سادگی به پروکسی بگویند که اتصالات را به نوبت به سرورهای مختلف ارسال کند. HAProxy همچنین طیف وسیعی از ابزارها و پلتفرمهای سطح سازمانی را ارائه میدهد، اما در این مطلب بر روی پروکسی رایگان و نرمافزار لود بالانسر تمرکز میکنیم.
HAProxy برای چه مواردی استفاده میشود؟
HAProxy کاربردهای مختلفی دارد، برای وبسایتها یا اپلیکیشنهای وب که انتظار حجم بالایی از ترافیک یا ترافیک پراکنده را دارند که ممکن است گاهی اوقات افزایش یابد، ایدهآل است. وبسایتهایی با لودهای سنگین دائمی ترافیک برای جلوگیری از خرابی نیاز به لود بالانس مداوم دارند و HAProxy میتواند به توسعهدهندگان کمک کند تا به این هدف برسند.
HAProxy در دسترس بودن را در لایههای برنامه و شبکه افزایش میدهد و در نهایت تجربه کاربر را بهبود میبخشد و فرآیند مدیریت ترافیک وب را ساده میکند. HAProxy توسط تعدادی از سازمانهای بزرگ از جمله JPMorgan Chase، Boeing و Amazon Web Services استفاده و توصیه میشود.
خرید وی پی اس در پنج موقعیت جغرافیایی ایران، ترکیه، هلند، آلمان و آمریکا با قابلیت تحویل آنی در پارسدو فراهم است.
HAProxy چگونه کار میکند؟
اکثر کاربران میتوانند نرمافزار HAProxy را به صورت رایگان بر روی package manager سیستم خود نصب کنند یا بهعنوان یک کانتینر Docker قابل اجرا باشد. برخی از شرکتها ممکن است ترجیح دهند از نسخه سازمانی HAProxy استفاده کنند.
توسعه دهندگان HAProxy را برای تعیین آدرسهای IP و پورتهایی که پروکسی باید به آن متصل شود، پیکربندی میکنند که به طور دقیق بیان میکند که پروکسی چه ترافیکی را مدیریت مینماید.
این پیکربندی همچنین بیان میکند که ترافیک به کدام سرورها میرود و قوانین مربوط به آن چیست. هر پیکربندی یک frontend را تعریف میکند که بر دریافت ترافیک متمرکز است و یک باطن که حاوی اطلاعات سرور دریافت کننده است. قوانین میتوانند به اندازه ارسال درخواستها در یک پورت خاص به یک سرور منفرد باشند، یا میتوانند مانند یک الگوریتم کلی باشند که به درخواستها دستور میدهد به نوبت به هر سرور مسیریابی کنند.
لود بالانسینگ (Load balancing)
لود بالانس را به طور خلاصه در بالا توضیح دادیم، اما چگونه در یک محیط برنامه وب واقعی کار میکند؟ پاسخ به نوع لود بالنسری بستگی دارد که تصمیم به استفاده از آن دارید.
-
وب سرور لود بالانسینگ
ساده ترین راه حل لود بالانس برای چندین وب سرور چیزی به نام لود بالانسینگ لایه انتقال (لایه 4) است. لود بالانسر از یک محدوده از پیش تعریف شده از آدرسهای IP و یک پورت برای تعیین مسیریابی ترافیک استفاده میکند. در این نوع تنظیمات مهم است که اطمینان حاصل شود که چندین سرور قادر به ارائه اطلاعات یکسان و یکجور در راستای درخواست کاربران هستند.
-
اپلیکیشن سرور لود بالانسینگ
لود بالانسر لایه اپلیکیشن (لایه 7) کمی متفاوت از لود بالانسر لایه 4 عمل میکند. لایه 7 بسته به محتوای درخواست میتواند درخواستها را به سرورهای backend مختلف هدایت کند. این نوع بالانس شامل قوانین پیچیده تری است که درخواست کاربر را بسته به آنچه که نیاز دارد به سرور backend مناسب متصل میکند. این قوانین ممکن است درخواست یک مطلب وبلاگ را به سروری هدایت کند که فقط محتوای وبلاگ را ارائه میدهد، در حالی که یک درخواست فروشگاه آنلاین ممکن است به سرور کاملا متفاوتی برود.
پروکسی معکوس (Reverse proxy)
یک پروکسی معکوس بین برنامه اپلیکیشن و backend قرار گرفته و اطمینان حاصل میکند که درخواستهای کاربر به سرورهای مناسب میرسد، همچنین ویژگیهای دیگری مانند امنیت، بهبود قابلیت اطمینان یا در مورد HAProxy، مدیریت ترافیک را ارائه میدهد.
ویژگیهای HAProxy
HAProxy به دلیل ویژگیهای گستردهای که ارائه میدهد، بر پروکسی های جایگزین (NGINX، LoadMaster و...) ترجیح داده میشود. این شامل پشتیبانی از پروتکل HTTP2 ، SSL/TLS termination، پشتیبانی native SSL، لاگهای دقیق برای مانیتورینگ و مشاهده، پشتیبانی از RDP cookie ، و CLI برای مدیریت عمیق سرور است.
پشتیبانی از HAProxy کاملا غیرمعمول است زیرا توسعه دهندگان از آخرین نسخه فعلی و نسخه قبل از آن پشتیبانی میکنند، به علاوه آنها در هر گونه اصلاحات مهم برای نسخههای قبلی نیز کمک خواهند کرد. همچنین داکیومنتهای زیادی در دسترس است، از راهنماهای شروع HTML گرفته تا راهنمای پیکربندی کامل، و مقالات مفید در وبلاگ HAProxy.
اصطلاحات کلیدی
- (Access Control List) ACL شرایط را آزمایش کرده و بر اساس نتایج آن، اقداماتی را انجام میدهند. به عنوان مثال، کشف اینکه آیا یک اتصال از طریق SSL رسیده است ممکن است به ACL زیر نیاز داشته باشد:
acl ssl_was_used ssl_fc
- Frontend بخشی از پیکربندی که نحوه ارسال درخواستها به backend را مشخص میکند. این بخش پیکربندی شامل آدرسهای IP، پورت، ACL و قوانین است. قوانین بسته به نتایج تستهای ACL تعیین میکنند که چه اتفاقی میافتد.
- Backend تعریف میکند که از چه الگوریتم لود بالانسری استفاده میشود و چه سرورها و پورتهایی برای این پیکربندی فعال هستند.
- Roundrobin الگوریتم لودبالانسر پیش فرض که سرورها را به ترتیب خاصی انتخاب میکند.
- Leastconn یک الگوریتم لودبالانسر جایگزین که سرور را از لیست سرورهای انتخابی که کمترین کانکشن را دارد جستجو میکند.
- source دستورالعملی با استفاده از آدرس IP سورس برای اتصال کاربران به یک سرور خاص.
- Helth Check یک فرآیند خودکار که بررسی میکند آیا سرورها برای پردازش درخواستها در دسترس هستند یا خیر. اگر سروری در دسترس نباشد، HAProxy به طور خودکار آن را در backend غیرفعال میکند. اتوماسیون از این نوع در تمام جنبههای توسعه و برنامه نویسی حیاتی تر میشود.
- High availability که برای سادگی HA (hence HAProxy, High Availability Proxy) نامیده میشود، یک نوع راه اندازی است که تضمین میکند که در صورت overwhelmed یا از بین رفتن لود بالانسر، هیچ نقطه خرابی وجود نداشته باشد که باعث خرابی احتمالی شود. این نوع راه اندازی معمولا از لود بالانسر ثانویه یا یک جفت active/passive HAProxy استفاده میکند.
در نتیجه، HAProxy یک راهکار ساده و مقیاس پذیر برای مقابله با ترافیک وب سنگین یا غیرقابل پیش بینی است. بهعنوان یک نرمافزار رایگان و متنباز، برای سازمانهای کوچکتر یا در حال رشد اطمینانبخش است که بدانند این همان پروکسی است که توسط برخی از بزرگترین شرکتهای جهان استفاده میشود.