موازنات التحميل: ما هي ولماذا نستخدمها
موازنات التحميل: ما هي ولماذا نستخدمها
تخيّل أن تطبيقك تعرّض فجأة لـ50,000 مستخدم متزامن بعد انتشار منشور على وسائل التواصل الاجتماعي. إذا اصطدم كل هذا الحمل بخادم واحد، فسوف يستنزف موارد المعالج والذاكرة وحيّز الشبكة في غضون ثوانٍ — يرى المستخدمون رسائل انتهاء المهلة، يتعطّل الخادم، وتتبخّر الإيرادات. موازن التحميل هو شرطي المرور الذي يقف أمام مجموعة خوادمك، ويوزّع الطلبات الواردة بذكاء، ويمنع أي جهاز منفرد من أن يصبح عنق الزجاجة.
ما هو موازن التحميل؟
موازن التحميل هو مكوّن شبكي — عتاديًا أو برمجيًا أو مُدارًا سحابيًا — يقبل الاتصالات الواردة ويحيلها إلى أحد الخوادم الخلفية الكثيرة (المعروفة بـمجمع الخوادم أو مجموعة المنبع). من الخارج، يرى العملاء نقطة نهاية واحدة (عنوان IP أو اسم مضيف واحد). خلف تلك النقطة، تعمل مجموعة من الخوادم بالتوازي لأداء العمل الفعلي.
بالإضافة إلى التوزيع البسيط للطلبات، يوفر موازن التحميل الحديث أيضًا:
- فحص الصحة — يُزيل الخوادم غير السليمة تلقائيًا من دائرة الخدمة.
- إنهاء SSL/TLS — يفكّ تشفير حركة HTTPS مرة واحدة، لتعمل الخوادم الخلفية على HTTP العادي، مما يوفّر دورات المعالج على كل خادم.
- إعادة استخدام الاتصالات (تجميع keep-alive) — يحتفظ باتصالات دائمة مع الخلفيات، مما يقلل من الحمل الإضافي لمصافحة TCP.
- قابلية الرصد — يسجّل زمن الاستجابة ومعدلات الأخطاء والبايتات المُرسَلة لكل مصدر خلفي، مانحًا إياك نقطة مراقبة مركزية.
موازنة التحميل على الطبقة 4 مقابل الطبقة 7
تعمل موازنات التحميل على طبقات مختلفة من نموذج OSI. إن فهم الطبقة التي يعمل عليها موازنك يحدد المعلومات التي يمكنه التصرف بناءً عليها والميزات التي يمكنه تقديمها.
الطبقة 4 — طبقة النقل
يتخذ موازن التحميل L4 قرارات التوجيه بناءً فقط على رؤوس TCP/UDP: عنوان IP المصدر، عنوان IP الوجهة، والمنفذ. لا يفحص الحمولة أبدًا — بل يُحيل تدفقات البايتات ببساطة. نظرًا لأنه لا يُحلّل HTTP، فهو سريع للغاية ويضيف زمن استجابة ضئيلًا جدًا (كثيرًا ما يكون أقل من 100 ميكروثانية). هذا يجعل L4 مثاليًا لـ:
- البروتوكولات غير HTTP: SMTP وDNS وخوادم الألعاب TCP الخام وبروكسيات قواعد البيانات.
- سيناريوهات الإنتاجية العالية جدًا حيث تهمّ حتى الميكروثواني.
- ربط IP-hash البسيط (يُوجَّه عنوان IP للعميل دائمًا إلى نفس الخادم الخلفي).
المقايضة هي أن موازنات L4 عمياء أمام محتوى التطبيق. لا يمكنك توجيه /api/* إلى مجموعة خوادم ومجموعة أخرى لـ/static/*. كل الطلبات تبدو متطابقة على طبقة النقل.
الطبقة 7 — طبقة التطبيق
يُنهي موازن التحميل L7 اتصال TCP، ويُحلّل طلب HTTP (أو gRPC أو WebSocket وغيره) بالكامل، ثم يفتح اتصالًا جديدًا مع خادم خلفي مختار. لأنه يقرأ الرؤوس والمسارات والكوكيز وحتى أجسام الطلبات، يمكنه اتخاذ قرارات توجيه واعية بالمحتوى:
- التوجيه المستند إلى المسار:
/checkout← خوشة خدمة الدفع؛/images/*← خوادم الوسائط. - التوجيه المستند إلى المضيف:
api.example.com← مجمع API؛www.example.com← مجمع الويب. - التوجيه المستند إلى الرأس:
X-Beta-User: true← خوادم النشر التجريبي. - إنهاء SSL: فكّ التشفير مرة واحدة على الموازن، واستخدام HTTP العادي داخليًا.
- الجلسات اللاصقة عبر الكوكيز: حقن كوكيز توجيه حتى تصل جلسة المستخدم دائمًا إلى نفس الخادم.
- تحديد المعدل وجدار حماية تطبيقات الويب (WAF): فحص الطلبات الخبيثة ورفضها قبل أن تصل إلى أي خادم.
الثمن هو زمن استجابة أعلى قليلًا (عادةً 0.5–2 ملّي ثانية إضافية لتحليل HTTP) ومعالج أكثر من L4. عمليًا، لمعظم خدمات الويب هذا العبء ضئيل مقارنةً بوقت معالجة التطبيق.
المعمارية الواقعية: الموازنة متعددة الطبقات
تستخدم الأنظمة الكبيرة في الغالب كلتا الطبقتين معًا. يجلس موازن تحميل L4 عالي الأداء (مثل AWS Network Load Balancer أو Maglev من Google) على حافة الإنترنت، يستوعب اتصالات TCP الخام ويوزّعها على مجموعة من بروكسيات L7 (مثل NGINX أو HAProxy أو AWS Application Load Balancer). تُجري طبقة L7 بعد ذلك توجيهًا بالمحتوى إلى عشرات مجموعات الخدمات الصغيرة خلفها.
يجمع هذا التصميم بين سرعة L4 الخام وذكاء L7، ويعني أن طبقة L7 لن تكون أبدًا النقطة الوحيدة لاستقبال حركة الإنترنت.
أمثلة عملية حسب التقنية المستخدمة
- AWS: Network Load Balancer (L4) ← Application Load Balancer (L7) ← مهام ECS/EC2
- الاستضافة الذاتية: NGINX (L7) أو HAProxy (L4 + L7) أمام خوادم التطبيق — كلاهما مجاني ومُختبر في الميدان ويعالج ملايين الطلبات في الثانية على أجهزة متواضعة
- Kubernetes: وحدة تحكم Ingress (مثل NGINX Ingress أو Traefik) هي موازن تحميل L7؛ كائنات
Serviceمن النوعLoadBalancerتُوفّر نقطة دخول L4 من مزوّد السحابة - Cloudflare/Fastly: موازنة L7 عالمية على الحافة مع حماية DDoS مدمجة وتخزين مؤقت — غالبًا الطبقة الأولى قبل أي بنية تحتية خاصة بك
المقاييس الرئيسية للمراقبة
بمجرد تفعيل موازن التحميل، راقب هذه المقاييس لكل خادم خلفي:
- الطلبات في الثانية (RPS) — هل التوزيع موحد فعلًا؟
- الاتصالات النشطة — تكشف الخوادم البطيئة التي تتراكم فيها الأعمال.
- زمن الاستجابة (p50 / p95 / p99) — ارتفاعات زمن p99 تكشف العُقد غير السليمة قبل أن تُشغَّل فحوصات الصحة.
- معدل الأخطاء (5xx) — يبدأ الإزالة التلقائية عبر فحص الصحة؛ راقب أيضًا الإيجابيات الكاذبة.
- عمق قائمة انتظار الخادم الخلفي — إذا أخّر الموازن الطلبات انتظارًا لخانة اتصال حرة، فأنت بحاجة إلى طاقة استيعابية أكبر.
upstream هو الاثنان في آنٍ واحد.