كلاود
بنية تحتية

توزيع الحمل (Load Balancing): كيف تضبطه لسيرفرك

كلاود|١٥ يناير ٢٠٢٦|3 دقائق قراءة|٥٨١ مشاهدة
توزيع الحمل (Load Balancing): كيف تضبطه لسيرفرك

Nginx كـ reverse proxy + upstream servers. توزيع الحمل يضمن أداء مستقر حتى في الذروة. نشرح الإعداد الكامل.

ما هي موازنة الحمل؟

موازنة الحمل (Load Balancing) هي توزيع الطلبات الواردة على عدة سيرفرات بدلاً من سيرفر واحد. الهدف: لا يوجد سيرفر واحد يتحمل كل الضغط، وإذا توقف سيرفر تستمر الخدمة من السيرفرات الأخرى.

متى تحتاج موازنة الحمل؟

  • موقعك يستقبل أكثر من 1,000 زيارة متزامنة
  • تحتاج توفر عالي (High Availability) بدون انقطاع
  • تطبيقك يستهلك موارد عالية ولا يكفيه سيرفر واحد
  • تريد صيانة سيرفرات بدون توقف الخدمة

البنية الأساسية

 ┌──────────────┐
 │ العميل │
 └──────┬───────┘
 │
 ┌──────▼───────┐
 │ Load Balancer │
 │ (nginx) │
 └──────┬───────┘
 │
 ┌────────────┼────────────┐
 │ │ │
 ┌──────▼──┐ ┌──────▼──┐ ┌──────▼──┐
 │ Web 1 │ │ Web 2 │ │ Web 3 │
 │10.0.1.10│ │10.0.1.11│ │10.0.1.12│
 └─────────┘ └─────────┘ └─────────┘

إعداد موازنة الحمل بـ nginx

تثبيت nginx على سيرفر الموازنة

sudo apt update
sudo apt install nginx -y

الإعداد الأساسي (Round Robin)

# ملف: /etc/nginx/conf.d/load-balancer.conf

upstream backend_servers {
 server 10.0.1.10:80;
 server 10.0.1.11:80;
 server 10.0.1.12:80;
}

server {
 listen 80;
 server_name example.com;

 location / {
 proxy_pass http://backend_servers;
 proxy_set_header Host $host;
 proxy_set_header X-Real-IP $remote_addr;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 proxy_set_header X-Forwarded-Proto $scheme;
 }
}

خوارزميات التوزيع

# 1. Round Robin (افتراضي) — توزيع بالتساوي
upstream backend {
 server 10.0.1.10;
 server 10.0.1.11;
 server 10.0.1.12;
}

# 2. Least Connections — يرسل للسيرفر الأقل اتصالات
upstream backend {
 least_conn;
 server 10.0.1.10;
 server 10.0.1.11;
 server 10.0.1.12;
}

# 3. IP Hash — نفس العميل يروح لنفس السيرفر دائماً
upstream backend {
 ip_hash;
 server 10.0.1.10;
 server 10.0.1.11;
 server 10.0.1.12;
}

# 4. Weighted — توزيع حسب قوة السيرفر
upstream backend {
 server 10.0.1.10 weight=5; # يستقبل 5 طلبات
 server 10.0.1.11 weight=3; # يستقبل 3 طلبات
 server 10.0.1.12 weight=2; # يستقبل 2 طلبات
}

فحص صحة السيرفرات (Health Checks)

upstream backend_servers {
 server 10.0.1.10:80 max_fails=3 fail_timeout=30s;
 server 10.0.1.11:80 max_fails=3 fail_timeout=30s;
 server 10.0.1.12:80 max_fails=3 fail_timeout=30s;
}

# سيرفر احتياطي — يعمل فقط إذا توقفت جميع السيرفرات الأساسية
upstream backend_servers {
 server 10.0.1.10:80;
 server 10.0.1.11:80;
 server 10.0.1.12:80;
 server 10.0.1.99:80 backup;
}

إدارة الجلسات (Session Persistence)

مشكلة شائعة: المستخدم يسجّل الدخول على سيرفر A، والطلب التالي يروح لسيرفر B فيخرج من الجلسة.

الحل 1: IP Hash

upstream backend {
 ip_hash;
 server 10.0.1.10;
 server 10.0.1.11;
}

الحل 2: جلسات مركزية (Redis)

# تثبيت Redis على سيرفر مستقل
sudo apt install redis-server -y

# في تطبيق Laravel — ملف .env
SESSION_DRIVER=redis
REDIS_HOST=10.0.1.50
REDIS_PORT=6379

هذا الحل أفضل — الجلسات مخزنة في مكان واحد يصل له كل السيرفرات.

إضافة SSL

server {
 listen 443 ssl;
 server_name example.com;

 ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
 ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
 ssl_protocols TLSv1.2 TLSv1.3;
 ssl_ciphers HIGH:!aNULL:!MD5;

 location / {
 proxy_pass http://backend_servers;
 proxy_set_header Host $host;
 proxy_set_header X-Real-IP $remote_addr;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 proxy_set_header X-Forwarded-Proto https;
 }
}

server {
 listen 80;
 server_name example.com;
 return 301 https://$host$request_uri;
}

المراقبة والتحقق

# التحقق من حالة الإعدادات
sudo nginx -t

# مراقبة الاتصالات
sudo nginx -T | grep upstream

# حالة nginx
curl -s http://localhost/nginx_status

تطبيق عملي على كلاود

مع سيرفرات كلاود (cloud.net.sa)، تقدر تبني بنية موازنة حمل بسرعة. اطلب 3 سيرفرات VPS في الرياض — واحد كموازن حمل واثنين كسيرفرات تطبيق. زمن الاستجابة بين السيرفرات داخل نفس مركز البيانات أقل من 1ms.

ابدأ بسيرفرين وأضف المزيد حسب النمو. كلاود يتيح الترقية في أي وقت بدون إعادة ضبط البنية كاملة.


ابدأ الآن

جاهز تبني بنيتك التحتية؟ اختر خادمك السحابي بالمواصفات اللي تناسبك، أو راجع باقات الاستضافة.

مشاركة