موازنات التحميل AWS
ما هو موازن التحميل؟
يقوم موازن التحميل بتوزيع حركة المرور الواردة بين عدة خوادم لتحسين التوافر والأداء.
┌─────────────────────────────────────────────────────────────┐
│ LOAD BALANCER - CONCEPT │
├─────────────────────────────────────────────────────────────┤
│ │
│ المستخدمون │
│ (1000 طلب) │
│ │ │
│ ▼ │
│ ┌──────────────┐ │
│ │ Load Balancer│ │
│ │ │ │
│ │ يوزع │ │
│ │ الحركة │ │
│ └──────┬───────┘ │
│ │ │
│ ┌─────────────┼─────────────┐ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌────────┐ ┌────────┐ ┌────────┐ │
│ │ Server │ │ Server │ │ Server │ │
│ │ 1 │ │ 2 │ │ 3 │ │
│ │ ~333 │ │ ~333 │ │ ~333 │ │
│ │ req │ │ req │ │ req │ │
│ └────────┘ └────────┘ └────────┘ │
│ │
│ المزايا : │
│ ✅ توزيع الحمل │
│ ✅ توافر عالي │
│ ✅ توسيع أفقي │
│ ✅ فحوصات صحية تلقائية │
│ │
└─────────────────────────────────────────────────────────────┘
أنواع موازنات التحميل AWS
المقارنة
┌─────────────────────────────────────────────────────────────┐
│ TYPES DE LOAD BALANCERS AWS │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ ALB (Application) NLB (Network) │ │
│ │ ───────────────── ─────────────── │ │
│ │ Layer 7 (HTTP) Layer 4 (TCP/UDP) │ │
│ │ │ │
│ │ ┌─────────────┐ ┌─────────────┐ │ │
│ │ │ HTTP/HTTPS │ │ TCP/UDP │ │ │
│ │ │ │ │ │ │ │
│ │ │ Path-based │ │ Ultra-fast │ │ │
│ │ │ routing │ │ millions │ │ │
│ │ │ │ │ req/sec │ │ │
│ │ └─────────────┘ └─────────────┘ │ │
│ │ │ │
│ │ حالات الاستخدام : حالات الاستخدام : │ │
│ │ • مواقع الويب • الألعاب │ │
│ │ • REST APIs • إنترنت الأشياء │ │
│ │ • الخدمات المصغرة • VoIP │ │
│ │ • TCP نقي │ │
│ │ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ GWLB (Gateway) CLB (Classic) │ │
│ │ ────────────── ───────────── │ │
│ │ Layer 3 (IP) Legacy │ │
│ │ │ │
│ │ ┌─────────────┐ ┌─────────────┐ │ │
│ │ │ Appliances │ │ قديم │ │ │
│ │ │ virtuelles │ │ تجنب │ │ │
│ │ │ │ │ │ │ │
│ │ │ Firewalls │ │ استخدم │ │ │
│ │ │ IDS/IPS │ │ ALB/NLB │ │ │
│ │ └─────────────┘ └─────────────┘ │ │
│ │ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
جدول المقارنة
| الميزة | ALB | NLB | GWLB | CLB |
|---|---|---|---|---|
| طبقة OSI | 7 | 4 | 3 | 4/7 |
| البروتوكولات | HTTP, HTTPS, gRPC | TCP, UDP, TLS | IP | TCP, SSL, HTTP |
| الأداء | جيد | فائق | جيد جداً | متوسط |
| IP ثابت | لا | نعم | نعم | لا |
| WebSocket | نعم | نعم | لا | نعم |
| التوجيه المتقدم | نعم | لا | لا | لا |
| السعر | $$ | $$$ | $$$ | $ |
| موصى به | ✅ ويب | ✅ TCP | Firewalls | ❌ قديم |
موازن التحميل للتطبيقات (ALB)
بنية ALB
┌─────────────────────────────────────────────────────────────┐
│ ARCHITECTURE ALB │
├─────────────────────────────────────────────────────────────┤
│ │
│ الإنترنت │
│ │ │
│ ▼ │
│ ┌───────────────────────────────────────────────────────┐ │
│ │ ALB │ │
│ │ ┌─────────────────────────────────────────────────┐ │ │
│ │ │ LISTENERS │ │ │
│ │ │ │ │ │
│ │ │ ┌────────────┐ ┌────────────┐ │ │ │
│ │ │ │ Port 80 │ │ Port 443 │ │ │ │
│ │ │ │ HTTP │ │ HTTPS │ │ │ │
│ │ │ └─────┬──────┘ └─────┬──────┘ │ │ │
│ │ │ │ │ │ │ │
│ │ └────────┼──────────────────┼─────────────────────┘ │ │
│ │ │ │ │ │
│ │ ┌────────┼──────────────────┼─────────────────────┐ │ │
│ │ │ │ RULES │ │ │ │
│ │ │ │ │ │ │ │
│ │ │ IF path=/api/* IF path=/images/* │ │ │
│ │ │ │ │ │ │ │
│ │ └────────┼──────────────────┼─────────────────────┘ │ │
│ │ │ │ │ │
│ └───────────┼──────────────────┼─────────────────────────┘ │
│ │ │ │
│ ▼ ▼ │
│ ┌───────────────────┐ ┌───────────────────┐ │
│ │ TARGET GROUP │ │ TARGET GROUP │ │
│ │ "api-servers" │ │ "image-servers" │ │
│ │ │ │ │ │
│ │ ┌────┐ ┌────┐ │ │ ┌────┐ ┌────┐ │ │
│ │ │EC2 │ │EC2 │ │ │ │EC2 │ │EC2 │ │ │
│ │ └────┘ └────┘ │ │ └────┘ └────┘ │ │
│ └───────────────────┘ └───────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
مكونات ALB
| المكون | الوصف | مثال |
|---|---|---|
| Listener | نقطة الدخول (المنفذ) | HTTP:80, HTTPS:443 |
| Rule | شرط التوجيه | IF path=/api/* THEN... |
| Target Group | مجموعة الخوادم المستهدفة | EC2, IP, Lambda |
| Target | خادم فردي | i-xxx على المنفذ 8080 |
التوجيه المتقدم ALB
┌─────────────────────────────────────────────────────────────┐
│ RÈGLES DE ROUTAGE ALB │
├─────────────────────────────────────────────────────────────┤
│ │
│ الشروط المتاحة : │
│ │
│ • المسار : /api/*, /images/*, /static/* │
│ • المضيف : api.example.com, www.example.com │
│ • الرؤوس : X-Custom-Header = value │
│ • الاستعلام : ?version=v2 │
│ • IP المصدر : 10.0.0.0/8 │
│ • طريقة HTTP : GET, POST │
│ │
│ مثال على القواعد : │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ Rule 1: IF path = /api/* │ │
│ │ THEN forward to tg-api-servers │ │
│ │ │ │
│ │ Rule 2: IF host = admin.example.com │ │
│ │ THEN forward to tg-admin │ │
│ │ │ │
│ │ Rule 3: IF query = ?v2 │ │
│ │ THEN forward to tg-api-v2 │ │
│ │ │ │
│ │ Default: forward to tg-web-servers │ │
│ │ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
إعداد ALB
عبر AWS CLI
# 1. إنشاء مجموعة الأهداف
aws elbv2 create-target-group \
--name tg-web-servers \
--protocol HTTP \
--port 80 \
--vpc-id vpc-xxx \
--target-type instance \
--health-check-path /health \
--health-check-interval-seconds 30
# 2. إنشاء ALB
aws elbv2 create-load-balancer \
--name my-alb \
--subnets subnet-1a subnet-1b subnet-1c \
--security-groups sg-alb \
--scheme internet-facing \
--type application
# 3. إنشاء المستمع HTTP
aws elbv2 create-listener \
--load-balancer-arn arn:aws:elasticloadbalancing:...:my-alb \
--protocol HTTP \
--port 80 \
--default-actions Type=forward,TargetGroupArn=arn:aws:...:tg-web-servers
# 4. تسجيل الأهداف
aws elbv2 register-targets \
--target-group-arn arn:aws:...:tg-web-servers \
--targets Id=i-server1 Id=i-server2
مجموعة الأمان لـ ALB
┌─────────────────────────────────────────────────────────────┐
│ SECURITY GROUPS ALB + EC2 │
├─────────────────────────────────────────────────────────────┤
│ │
│ sg-alb (لـ Load Balancer) │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Inbound: │ │
│ │ HTTP (80) from 0.0.0.0/0 │ │
│ │ HTTPS (443) from 0.0.0.0/0 │ │
│ │ │ │
│ │ Outbound: │ │
│ │ HTTP (80) to sg-web-servers │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ sg-web-servers (لـ EC2) │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Inbound: │ │
│ │ HTTP (80) from sg-alb ← فقط من ALB │ │
│ │ SSH (22) from sg-bastion │ │
│ │ │ │
│ │ Outbound: │ │
│ │ All traffic to 0.0.0.0/0 │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ ⚠️ لا تقبل EC2 حركة HTTP إلا من ALB │
│ → لا يمكن الوصول مباشرة إلى EC2 │
│ │
└─────────────────────────────────────────────────────────────┘
موازن التحميل للشبكة (NLB)
متى تستخدم NLB؟
┌─────────────────────────────────────────────────────────────┐
│ QUAND UTILISER NLB │
├─────────────────────────────────────────────────────────────┤
│ │
│ ✅ استخدم NLB لـ : │
│ │
│ • أداء فائق (ملايين الطلبات/ثانية) │
│ • زمن استجابة منخفض جداً (< 100 μs) │
│ • بروتوكولات TCP/UDP نقية (ليس HTTP) │
│ • الحاجة إلى IP ثابت │
│ • الألعاب، إنترنت الأشياء، البث │
│ • التطبيقات التي لا تدعم البروكسي │
│ │
│ ❌ لا تستخدم NLB لـ : │
│ │
│ • مواقع الويب القياسية (استخدم ALB) │
│ • REST APIs (استخدم ALB) │
│ • الحاجة إلى التوجيه حسب المسار/المضيف │
│ │
│ ميزات NLB : │
│ • يحافظ على IP المصدر للعميل │
│ • IP ثابت أو Elastic IP ممكن │
│ • العزل الزوني (التحويل التلقائي حسب AZ) │
│ • موازنة الحمل عبر المناطق (اختياري) │
│ │
└─────────────────────────────────────────────────────────────┘
تكاليف موازنات التحميل
┌─────────────────────────────────────────────────────────────┐
│ ESTIMATION COÛTS (us-east-1) │
├─────────────────────────────────────────────────────────────┤
│ │
│ ALB : │
│ • $0.0225 / ساعة ≈ $16 / شهر (ثابت) │
│ • $0.008 / LCU-ساعة (استخدام) │
│ • تقدير نموذجي : $20-50 / شهر │
│ │
│ NLB : │
│ • $0.0225 / ساعة ≈ $16 / شهر (ثابت) │
│ • $0.006 / NLCU-ساعة (استخدام) │
│ • تقدير نموذجي : $20-100 / شهر │
│ │
│ LCU (وحدة سعة موازن التحميل) : │
│ يعتمد على : │
│ • الاتصالات الجديدة / ثانية │
│ • الاتصالات النشطة │
│ • البيانات المعالجة │
│ │
└─────────────────────────────────────────────────────────────┘
ملخص
| الجانب | ALB | NLB |
|---|---|---|
| الطبقة | 7 (HTTP) | 4 (TCP) |
| حالات الاستخدام | ويب، API | TCP نقي، الألعاب |
| التوجيه المتقدم | ✅ نعم | ❌ لا |
| IP ثابت | ❌ لا | ✅ نعم |
| الأداء | جيد | فائق |
| التوصية | 90% من الحالات | حالات خاصة |
القسم التالي : الفحوصات الصحية