
به اشتراک بگذارید

به اشتراک بگذارید
💡 لود بالانسر، پلیس راهنمایی ترافیک سرورها
🔶 زیرساخت چندسروری روی سرور اختصاصی
Users 🌐
⬇️
[ Virtual IP : 203.0.113.10 ]
⬇️
[ Load Balancer (HAProxy) ]
⬇️ ⬇️ ⬇️
[ web1 ✅ ] [ web2 ✅ ] [ web3 ❌ down ]
⬇️ ⬇️
[ Database / Shared storage ]

🔸 نکته فنی: بررسی سلامت فعال و غیرفعال

| الگوریتم | نحوه تصمیمگیری | کاربرد مناسب | نام در HAProxy / Nginx |
|---|---|---|---|
| Round Robin | نوبتی و بر اساس وزن | سرورهای همتوان و درخواستهای کوتاه | roundrobin / پیشفرض |
| Least Connections | کمترین اتصال فعال | نشستهای طولانی، WebSocket و دیتابیس | leastconn / least_conn |
| IP Hash | هش IP کاربر | نیاز به ماندن کاربر روی یک سرور | source / ip_hash |
| URI Hash | هش آدرس درخواست | کش و سرورهای محتوا | uri / hash |
| Random | انتخاب تصادفی | مجموعه سرورهای بزرگ و متغیر | random / random |
| ویژگی | HAProxy | Nginx متنباز | Keepalived |
|---|---|---|---|
| نقش اصلی | لود بالانسر و پراکسی | وبسرور و پراکسی معکوس | توزیع لایه ۴ و IP شناور |
| لایه کاری | لایه ۴ و ۷ | لایه ۷؛ با ماژول stream لایه ۴ | لایه ۴ (IPVS) |
| بررسی سلامت فعال | دارد (check) | فقط در NGINX Plus | دارد (لایه ۴ تا ۷) |
| High Availability | با Keepalived | با Keepalived | داخلی، با VRRP نسخه ۲ و ۳ |
📚 آنچه استاندارد VRRP میگوید
⚠️ محدودیتهای مهم High Availability

frontend web_in
bind *:80
mode http
default_backend web_servers
backend web_servers
mode http
balance roundrobin
option httpchk GET /health
server web1 10.0.0.11:80 check
server web2 10.0.0.12:80 check
پراکسی معکوس درخواست کاربر را میگیرد و به سرور پشتی میفرستد، حتی اگر فقط یک سرور پشت آن باشد. لود بالانسر همین کار را با چند سرور انجام میدهد: درخواستها را بین آنها تقسیم میکند و سلامتشان را میسنجد. برای همین ابزارهایی مثل Nginx و HAProxy هر دو کار را انجام میدهند و در عمل مرز این دو مفهوم کمرنگ است. استثنای مهم، لود بالانسرهای لایه ۴ مثل IPVS است که بستهها را مستقیم به سرورها میرسانند و نقش پراکسی ندارند.
بله، اما فقط وقتی یک سرور دیگر جوابگوی بار سایت نیست. برای اجرای وردپرس پشت لود بالانسر باید فایلهای آپلودی بین سرورها همگام شوند، سشنها و کش در سرویس مشترکی مثل Redis ذخیره شوند و دیتابیس روی سرور جداگانه باشد. برای بیشتر سایتهای وردپرسی کوچک و متوسط، یک سرور قوی با کش مناسب سادهتر و بهصرفهتر است.
سه نوع اصلی سختافزاری، نرمافزاری و ابریاند؛ Round Robin DNS هم سادهترین روش است. برای شروع روی سرور اختصاصی، لود بالانسر نرمافزاری مثل HAProxy یا Nginx منطقیترین انتخاب است؛ هزینه لایسنس ندارد، مستندات کاملی دارد و روی هر سرور لینوکسی اجرا میشود. نوع سختافزاری معمولاً برای سازمانهای بزرگ توجیه دارد.
اگر فقط توزیع بار میخواهید، HAProxy تخصصیتر است و بررسی سلامت فعال را در همان نسخه متنباز دارد. اگر علاوه بر توزیع بار به وبسرور، سرو فایلهای استاتیک و کش هم نیاز دارید، Nginx گزینه چندکارهای است؛ ولی بررسی سلامت فعالش فقط در NGINX Plus ارائه میشود. ترکیب رایج این است که HAProxy جلوی سرورها باشد و Nginx روی خود سرورهای وب.
نه. High Availability احتمال قطعی ناشی از خرابی یک جزء را کاهش میدهد، اما خطای پیکربندی، مشکل مشترک در دیتابیس، حمله یا قطعی گسترده شبکه همچنان میتواند سرویس را متوقف کند. هر سیستمی سطحی از ریسک دارد و این سطح باید در قرارداد سطح خدمات روشن باشد؛ برای آشنایی با این مفهوم مقاله SLA چیست را بخوانید.
در Sticky Session، لود بالانسر هر کاربر را در طول نشست به یک سرور ثابت میفرستد؛ معمولاً با هش IP یا کوکی. این روش برای اپلیکیشنهایی لازم است که سشن را روی حافظه همان سرور نگه میدارند. عیب آن، توزیع نامتوازن بار و از دست رفتن نشست هنگام خرابی سرور است؛ ذخیره سشن در Redis معمولاً راهحل پایدارتری است.
از نظر فنی دو سرور کافی است: HAProxy روی یکی از آنها یا هر دو و وبسرور روی هر دو. اما برای حذف واقعی نقطه شکست واحد، معماری رایج شامل دو لود بالانسر با IP شناور، حداقل دو سرور اپلیکیشن و یک لایه داده با Replication است. تعداد دقیق به ترافیک، بودجه و میزان تحمل قطعی کسبوکارتان بستگی دارد.
بهطور کامل نه. لود بالانسر میتواند با محدودسازی نرخ درخواست و قوانین لایه ۷ بخشی از حملات سبک را مهار کند، اما حمله حجیم لایه ۳ و ۴ ظرفیت پورت و شبکه را پر میکند. برای این حملات به حفاظت در سطح شبکه دیتاسنتر نیاز دارید؛ مقاله سرور اختصاصی ضد دیداس این موضوع را بررسی میکند.