HAproxy چیست؟ چه کمکی به بهبود عملکرد وب‌سایت شما می‌کند؟

دسته بندی: آموزش, خدمات میزبانی وب, نکات فنی
haproxy چیست؟

 سریع، هوشمند و پراستفاده! این‌ها خصوصیات HAproxy هستند.  نرم‌افزاری که قرار است در این مقاله راجع به آن صحبت کنیم. می‌خواهیم ببینیم HAproxy چیست.نقش مهم HAproxy در دنیای اینترنت

HAproxy از آن دسته نرم‌افزارهایی است که شاید نامش کم‌تر شنیده باشد، اما نقش بسیار مهمی در دنیای اینترنت ایفا می‌کند. بدون اغراق! مثلاً سایت‌های پرترافیکی مثل گیت‌هاب، توییتر و اینستاگرام، بدون این نرم‌افزار – یا حداقل نرم‌افزاری مشابه – شاید حتی وجود هم نداشتند!!

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

HAproxy چیست؟

HAproxy مخفف High Availability Proxy است. این نرم‌افزار نقش Load Balancing و Reverse Proxy در پروتکل‌های HTTP و TCP را برای سایت‌ها و اپلیکیشن‌ها ایفا می‌کند. در ضمن زبانی که برنامه با آن ساخته شده، C است!

⚠ اجازه دهید کاربرد HAproxy را با مثال برای‌تان توضیح دهیم:

فرض کنید قصد تمدید معاینه فنی ماشین‌تان را دارید و به یکی از مراکز مشخص‌شده برای این امر می‌روید. صفی بی‌انتها می‌بینید و متاسفانه ساعت‌های زیادی را در انتظار از دست خواهید داد. اوضاع زمانی بدتر می‌شود که فقط یک خط برای بررسی خودروها وجود داشته باشد و قرار باشد همه آن صف وارد همان خط شوند!

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

کمک مرتبط با HAproxy

HAproxy، همین کار را برای سرورهای سایت‌ها و اپلیکیشن‌ها انجام می‌دهد؛ به این صورت که  ترافیک ورودی، به جای اینکه مستقیماً به سرور متصل شود، به HAproxy می‌رسد و سپس توسط این نرم‌افزار، به سمت سروری که خلوت‌تر است فرستاده می‌شود. 

با این تقسیم ترافیک، عملکرد سایت‌ها و اپلیکیشن‌ها بهبود پیدا می‌کند و کاربران تجربه بهتری خواهند داشت.

البته که HAproxy قابلیت‌های زیادی دارد.

HAproxy چه قابلیت‌هایی دارد؟

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

البته نسخه شرکتی این نرم‌افزار هم وجود دارد که سرویس حرفه‌ای‌تری را در کنار پشتیبانی کامل ارائه می‌کند.

خب برویم سراغ قابلیت‌ها:

Transparent Proxy

 پراکسی شفاف که به آن Inline Proxy, Intercepting Proxy و Forced Proxy هم می‌گویند،  امکان اتصال مستقیم کاربر به سرور را فراهم می‌کند.  بگذارید این‌طور بگوییم: پراکسی هست، اما انگار نیست!! از آن جمله‌های قصار.

Content Inspections

این  قابلیت، بلاک کردن پروتکل‌های ناخواسته را برای کاربران ممکن می‌کند.

CLI For Server Management

اگر قصد ایجاد تغییرات در محیط سرور را دارید، CLI کمک‌تان خواهد کرد. تغییراتی مثل خاموش و روشن کردن سرور، به‌وسیله این قابلیت انجام می‌شوند.

** منظور از خاموش و روشن کردن سرور، همان فعال و غیرفعال کردن سرور داخل haproxy است.

پشتیبانی از پروتکل‌های مختلف

HAproxy با پروتکل‌های گوناگونی مثل HTTP, HTTP/2, gPRC و FastCGI سازگار است.

HTTP Authenticator

فرایند احراز هویت در پروتکل HTTP بسیار ساده و ابتدایی است. HAproxy اینکار را انجام می‌دهد. به این صورت که سرور از کاربر Username و Password می‌خواهد تا اجازه ورود او را صادر کند.

Multithreading

مولتی‌تردینگ، مدلی از اجرای برنامه است که امکان ساخت چندین Thread در یک پروسه را فراهم می‌کند. با کمک HAproxy، می‌توان از این مدل استفاده کرد.

حتما بخوانید:  چرا از سرور مجازی (VPS) ایران سرور استفاده کنیم؟

در این مدل، Threadها به‌صورت مستقل ولی هم‌زمان، از منابع پروسه استفاده می‌کنند.

Load Balancing لایه ۴ و لایه ۷

 مهم‌ترین قابلیت HAproxy، همین Load Balancing است.  همین قابلیت است که ترافیک ورودی را بین سرورهای مختلف تقسیم می‌کند و در نهایت، عملکرد سایت یا اپلیکیشن را بهبود می‌بخشد.

همچنین HAproxy به‌خوبی مقیاس‌پذیر است؛ یعنی حتی می‌توان آن را برای اتصال به هزاران سرور Back-end هم آماده کرد.

قابلیت های HAproxy

اما بیایید کمی بیشتر راجع به Load Balancing صحبت کنیم.

Load Balancing چیست و چند نوع از آن وجود دارد؟

آیکون Load Balancingمثال معاینه فنی را خاطرتان هست؟ در آن مثال، فرستادن ماشین‌ها به خطوط مختلف، دقیقاً همین فرایند لود بلنسینگ است. برای اینکه یک خط خیلی شلوغ نباشد و خط دیگر خالی، بار ورودی بین آن‌ها تقسیم می‌شود.

همان‌طور که گفتیم،  HAProxy ابتدا یک نرم‌افزار مخصوص Load Balancing است  و در مراحل بعدی قابلیت‌های دیگری هم دارد (همان‌هایی که درموردشان صحب کردیم)؛ یعنی این HAproxy است که وظیفه دارد تا فرایند Load Balancing را برای تقسیم ترافیک ورودی به سایت یا اپلیکیشن انجام دهد.

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

 بدون لود بلنسینگ

در این حالت، کاربر بدون هیچ واسطه‌ای و به‌صورت مستقیم به وب‌سرور متصل می‌شود. تصویر زیر را ببینید:

بدون Load Balancing

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

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

ساده‌ترین راه تقسیم ترافیک بین چند سرور، استفاده از لود بلنسر لایه ۴ است. تصویر زیر این نوع را نشان می‌دهد:

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

در این حالت،  درخواست کاربر به لود بلنسر می‌رسد و نرم‌افزار (مثلاً HAproxy) درخواست را برای گروهی از سرورهای Backend می‌فرستد. هر سروری که آزادتر باشد، پاسخ درخواست را مستقیماً برای کاربر ارسال می‌کند . (پاسخ همان صفحه‌ای است که کاربر قصد بازدید از آن را دارد.) اگر به تصویر بالا دقت کنید، متوجه خواهید شد که هر دو وب سرور به یک دیتابیس متصل هستند. به همین خاطر، محتوای یکسانی از جانب هر دو به دست مخاطب خواهد رسید.

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

این نوع از Load Balancing، طرز کار پیچیده‌تری نسبت به لایه ۴ دارد. ماهیت کلی این نوع را در تصویر زیر می‌بینید:

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

مثلاً درخواست‌هایی که برای بازدید وبلاگ هستند، به blog backend می‌روند و دیگر درخواست‌ها به web backend! در ضمن هردو مجموعه سرورها، در نهایت به یک دیتابیس مشترک متصل هستند.

خب از Load Balancing هم گفتیم و حالا می‌خواهیم در مورد امنیت HAproxy بگوویم.

آیا HAproxy امنیت بالایی دارد؟

از آنجایی که این نرم‌افزار متن‌باز است، امنیتش هم توسط کاربران تامین می‌شود! اما فکر نکنید که HAproxy ناامن است. اتفاقاً  طی سال‌های اخیر، موارد بسیار نادری از آسیب‌پذیری در این نرم‌افزار مشاهده شده است. 

همچنین HAproxy این قابلیت را دارد که هنگام شناسایی نقص امنیتی، سطح حمله رخ داده را به‌شدت محدود و کنترل می‌کند.

ویژگی دیگر این نرم‌افزار در موضوع امنیت، رصد کردن رفتار کاربران برای شناسایی موارد مشکوک است. اگر حرکت نامتعارفی از جانب کاربری سر بزند، اقدامات لازم به‌سرعت انجام می‌شوند و کاربر از دسترسی به سایت یا اپلیکیشن محروم می‌شود.

حتی HAproxy امکان Rate Limiting و استفاده از Black List و White List را هم برای کاربرانش فراهم می‌کند.

haproxy امن است

اما یک سوال: Load Balancer چگونه تصمیم می‌گیرد که درخواست را برای کدام سرور بفرستند؟ این انتخاب بر اساس الگوریتم‌های این نرم‌افزار انتخاب می‌شود.

HAproxy بر اساس چه الگوریتم‌هایی عمل می‌کند؟

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

حتما بخوانید:  دامنه پرمیوم: آدرسی سرراست برای وب‌سایت‌تان

roundrobin

الگوریم پیش‌فرض HAproxy همین roundrobin است. الگوریتمی ساده که در انتخاب سرورها نوبت را در نظر می‌گیرد!

leastconn

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

Source

در الگوریتم Source، سرور بر اساس هش IP درخواست‌کننده انتخاب می‌شود. به این ترتیب، تضمین می‌شود که یک کاربر، همیشه به یک سرور مشخص متصل می‌شود.

تقریباً در مورد همه جوانب HAproxy صحبت کردیم؛ اما این نرم‌افزار دو ویژگی دیگر هم در زمینه Load Balancing دارد.

منظور از Sticky Sessions و Health Check چیست؟

همان‌طور که تا اینجا متوجه شدید، HAproxy نرم‌افزاری بی‌نظیر برای سایت‌ها و اپلیکیشن‌های بزرگ و کوچک است. خب حالا می‌خواهیم از دو ویژگی جذاب دیگر این نرم‌افزار در رابطه با موضوع Load Balancing بگوییم.

Sticky Sessions

سازوکار برخی از سایت‌ها و اپلیکیشن‌ها، به‌گونه‌ای است که هر کاربر فقط باید به یک سرور متصل بماند و امکان تغییر سرور وجود ندارد. با کمک قابلیت Sticky Sessions این موضوع ممکن می‌شود.

Health Check

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

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

قابلیت Health Check در haproxy

چگونه می‌توان نرم‌افزار HAproxy 1.8.8 را روی centos نصب کرد؟

برای اینکه بتوانید از HAproxy و ویژگی‌های کارآمدش بهره ببرید، باید آن را روی سایت یا اپلیکیشن‌تان نصب کنید.

قبل از هرکاری، باید پیش‌نیازهای این نرم‌افزار را نصب کنید:

حالا باید نرم‌افزار را نصب و فایل haproxy.cfg را پیکربندی کنید:

در مرحله بعدی، باید محتوای زیر را در فایل قرار دهید:

از طریق سرور Haproxy و در بخش HAproxy Monitoring Config، می‌توانید با قرار دادن یک Username و Password، از طریق وب، وضعیت وب‌سرورها را بررسی کنید.

حتما بخوانید:  با آپاچی، وب سرور محبوب دنیای اینترنت، آشنا شوید!

برای دسترسی به سرور این نرم‌افزار، باید از آدرس زیر استفاده کنید:

http://IP-haproxy-server:8080/stats

سپس در فایل /etc/rsyslog.conf، باید دو خط زیر را از حالت کامنت خارج کنید:

بعد از آن، باید خط زیر را داخل همین فایل add کنید:

حالا باید فایل /etc/rsyslog.d/haproxy.conf را ایجاد کنید و محتوای زیر را داخل آن قرار دهید:

در این مرحله باید سرویس‌ها را Start کنید، اینکار توسط دستور زیر انجام می‌شود:

در مرحله آخر، باید پورت ۸۰ و ۸۰۸۰ را به Firewall اضافه کنید:

نکته: در Centos 7، که یکی از توزیع‌های معروف لینوکس است، احتمال دارد که iptables در سرور فعال نباشد! در چنین شرایطی باید ابتدا Firewalld را، توسط دستور زیر غیرفعال و iptables را فعال کنید:

در صورت اعمال هرگونه تغییر در فایل haproxy.cfg، باید haproxy را reload کنید. دستور زیر برای انجام این کار است:

همچنین برای فعال‌سازی پروتکل HTTPS در front-end main، باید از دستور زیر استفاده کنید:

خب این هم تمام آن چیزی که لازم بود راجع به نرم‌افزار HAproxy بدانید.

حرف آخر: HAproxy در کنار NginX قدرتمندتر است!

خب متوجه شدیم که HAproxy، نرم‌افزاری است که وظیفه‌اش بهبود عملکرد نهایی سایت و اپلیکیشن است. وب سرور Nginx به‌خاطر خصوصیاتش، زمانی که همراه با HAproxy استفاده می‌شود، عملکرد بهتری خواهد داشت. همچنین HAproxy هم در کنار این وب سرور، کارآمدتر از همیشه نشان می‌دهد.

برای تهیه این مقاله از سایت‌های DigitalOcean و TechTarget کمک گرفتیم.

اگر سوال یا نظری در این زمینه دارید، در قسمت کامنت‌ها منتظرتان هستیم. 💙

برچسب ها:
امتیاز شما

مایلید هر دو هفته یک ایمیل مفید دریافت کنید؟

ما را در شبکه‌های اجتماعی دنبال کنید

همچنین شاید دوست داشته باشید!

نظرات کاربران

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

این فیلد را پر کنید
این فیلد را پر کنید
لطفاً یک نشانی ایمیل معتبر بنویسید.
شما برای ادامه باید با شرایط موافقت کنید

فهرست