توزیع بار (Load Balancing)
Load Balancer: الگوریتمهای توزیع (Round Robin، Least Connections، Hash)، لایه ۴ و ۷ و Health Check
Load Balancer چیست؟
توزیعکننده بار ترافیک ورودی را بین چند سرور پخش میکند — قلب مقیاس افقی. بدون آن، «۵ سرور» یعنی ۴ سرور بیکار و ۱ سرور سوخته!
الگوریتمهای توزیع
| الگوریتم | ایده | مناسب برای |
|---|---|---|
| Round Robin | نوبتی گردشی | سرورهای همقدرت، درخواستهای هماندازه |
| Weighted RR | نوبتی با وزن | سرورهای ناهمگن |
| Least Connections | کمترین اتصال باز | درخواستهای طولانی/متفاوت ✓ |
| IP Hash | هش IP کاربر → سرور ثابت | نیاز به Session چسبان |
| Least Response Time | سریعترین پاسخده | حساس به تأخیر |
لایه ۴ در برابر لایه ۷
| ویژگی | L4 | L7 |
|---|---|---|
| سطح کار | TCP/UDP | HTTP (مسیر، هدر، کوکی) |
| سرعت | سریعتر ✓ | کندتر |
| هوشمندی | محدود | Routing بر اساس URL، SSL، کش ✓ |
| مثال | HAProxy TCP، AWS NLB | Nginx، AWS ALB |
در عمل: L7 برای اپهای وب (هوشمند)، L4 برای دیتابیس/TCP خام (سریع).
Health Check — حذف سرور مرده
LB هر چند ثانیه سرورها را چک میکند (مثلاً GET /health):
- پاسخ ۲۰۰ ← سالم ← در چرخه بمان
- تایماوت/۵xx ← ناسالم ← از چرخه خارج! (ترافیک به بقیه)
- بازگشت ← دوباره وارد چرخه
بدون Health Check، LB ترافیک را به سرور مرده میفرستد = قطعی!
افزونگی خود LB!
LB خودش تکنقطهشکست است ← جفت LB (Active-Passive) با VIP و keepalived: اگر اصلی مرد، IP به پشتیب میرود.
نکته مصاحبه: LB را در هر دیاگرام بکشید و الگوریتم را با دلیل بگویید: «Least Connections چون درخواستهای ما طولانیاند» — همین جزئیات امتیاز میآورد.
جمعبندی
- LB = قلب مقیاس افقی؛ ترافیک را هوشمند پخش میکند
- الگوریتم: RR ساده، LeastConn هوشمند، Hash برای Session
- L4 سریع/ساده، L7 هوشمند (HTTP-aware)
- Health Check + جفت LB = دسترسپذیری واقعی
این مبحث بخشی از دوره آموزش کامل طراحی سیستم (System Design) است.