انتقل إلى المحتوى الرئيسي

مفاهيم التوافر العالي

ما هو التوافر العالي؟​

التوافر العالي (HA) هو قدرة النظام على البقاء قيد التشغيل ومتاحًا حتى في حالة تعطل أحد مكوناته أو أكثر.

┌─────────────────────────────────────────────────────────────┐
│ التوافر العالي │
├─────────────────────────────────────────────────────────────┤
│ │
│ الهدف: يبقى الخدمة متاحة رغم الأعطال │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ عطل في الخادم؟ → خادم آخر يتولى المهمة │ │
│ │ عطل في المنطقة (AZ)؟ → منطقة أخرى تتولى المهمة │ │
│ │ عطل في المنطقة (DR)؟ → منطقة أخرى تتولى المهمة │ │
│ │ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ القياس: نسبة التوافر (uptime) │
│ │
│ 99% = 3.65 أيام من التوقف/سنة (غير مقبول) │
│ 99.9% = 8.76 ساعات من التوقف/سنة (قياسي) │
│ 99.99% = 52.6 دقيقة من التوقف/سنة (توافر عالي) │
│ 99.999% = 5.26 دقيقة من التوقف/سنة (توافر عالي جدًا) │
│ │
└─────────────────────────────────────────────────────────────┘

SPOF - نقطة فشل واحدة​

SPOF هو مكون يؤدي تعطله إلى توقف النظام بالكامل.

┌─────────────────────────────────────────────────────────────┐
│ تحديد نقاط الفشل الواحدة │
├─────────────────────────────────────────────────────────────┤
│ │
│ بنية مع SPOF │
│ ────────────────────── │
│ │
│ المستخدمون │
│ │ │
│ ▼ │
│ ┌─────────┐ │
│ │ الخادم │ ← SPOF ! إذا تعطل هذا الخادم، يتوقف كل شيء │
│ │ الويب │ │
│ └────┬────┘ │
│ │ │
│ ▼ │
│ ┌─────────┐ │
│ │ قاعدة │ ← SPOF ! قاعدة بيانات واحدة │
│ │ البيانات│ │
│ └─────────┘ │
│ │
│ نقاط الفشل المحددة: │
│ ❌ خادم ويب واحد فقط │
│ ❌ قاعدة بيانات واحدة فقط │
│ ❌ منطقة توافر واحدة فقط │
│ │
└─────────────────────────────────────────────────────────────┘

إزالة نقاط الفشل الواحدة​

┌─────────────────────────────────────────────────────────────┐
│ بنية بدون نقاط فشل واحدة │
├─────────────────────────────────────────────────────────────┤
│ │
│ المستخدمون │
│ │ │
│ ▼ │
│ ┌─────────────┐ │
│ │ موازن التحميل │ ← مُدار بواسطة AWS (توافر عالي أصلي) │
│ └──────┬──────┘ │
│ │ │
│ ┌─────┼─────┐ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌──┐ ┌──┐ ┌──┐ │
│ │S1│ │S2│ │S3│ ← 3 خوادم في 3 مناطق AZ مختلفة │
│ └┬─┘ └┬─┘ └┬─┘ │
│ │ │ │ │
│ └─────┼─────┘ │
│ │ │
│ ▼ │
│ ┌─────────────┐ │
│ │ RDS متعدد AZ│ ← قاعدة بيانات مع وضع الاستعداد التلقائي │
│ │ Primary │ │
│ │ ↓ │ │
│ │ Standby │ │
│ └─────────────┘ │
│ │
│ نقاط الفشل الواحدة المُزالة: │
│ ✅ خوادم ويب متعددة │
│ ✅ قاعدة بيانات متعددة AZ │
│ ✅ توزيع على عدة مناطق AZ │
│ │
└─────────────────────────────────────────────────────────────┘

بنية متعددة AZ​

مناطق التوافر AWS​

┌─────────────────────────────────────────────────────────────┐
│ مناطق التوافر (AZ) │
├─────────────────────────────────────────────────────────────┤
│ │
│ منطقة AWS (مثال: us-east-1) │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ ┌───────────┐ ┌───────────┐ ┌───────────┐ │ │
│ │ │ AZ-a │ │ AZ-b │ │ AZ-c │ │ │
│ │ │ │ │ │ │ │ │ │
│ │ │ مركز بيانات│ │ مركز بيانات│ │ مركز بيانات│ │ │
│ │ │ معزول │ │ معزول │ │ معزول │ │ │
│ │ │ │ │ │ │ │ │ │
│ │ └─────┬─────┘ └─────┬─────┘ └─────┬─────┘ │ │
│ │ │ │ │ │ │
│ │ └──────────────┼──────────────┘ │ │
│ │ │ │ │
│ │ شبكة عالية السرعة │ │
│ │ (زمن انتقال منخفض بين AZ) │ │
│ │ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ الخصائص: │
│ • كل AZ = 1+ مراكز بيانات مفصولة فيزيائيًا │
│ • طاقة، شبكة، تبريد مستقل │
│ • مسافة كافية لتجنب الكوارث المشتركة │
│ • زمن انتقال < 2ms بين AZ في نفس المنطقة │
│ │
└─────────────────────────────────────────────────────────────┘

حساب التوافر​

┌─────────────────────────────────────────────────────────────┐
│ حساب التوافر │
├─────────────────────────────────────────────────────────────┤
│ │
│ الصيغة: التوافر الكلي = 1 - (1 - توافر المكون)^n │
│ │
│ مثال: خادم واحد لديه 99% توافر │
│ │
│ 1 خادم: │
│ التوافر = 99% = 0.99 │
│ وقت التوقف = 3.65 أيام/سنة │
│ │
│ 2 خوادم (بالتوازي): │
│ التوافر = 1 - (1-0.99)² = 1 - 0.0001 = 99.99% │
│ وقت التوقف = 52 دقيقة/سنة │
│ │
│ 3 خوادم (بالتوازي): │
│ التوافر = 1 - (1-0.99)³ = 1 - 0.000001 = 99.9999% │
│ وقت التوقف = 32 ثانية/سنة │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ │ │
│ │ عدد الخوادم التوافر وقت التوقف │ │
│ │ ────────── ───────── ───────── │ │
│ │ 1 99% 3.65 أيام │ │
│ │ 2 99.99% 52 دقيقة │ │
│ │ 3 99.9999% 32 ثانية │ │
│ │ │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
│ ⚠️ انتباه: هذا يفترض أعطال مستقلة! │
│ إذا كانت الخوادم في نفس AZ، فإن عطل AZ يؤثر عليها جميعًا → استخدم Multi-AZ │
│ │
└─────────────────────────────────────────────────────────────┘

أنماط التوافر العالي​

النمط 1: Active-Passive​

┌─────────────────────────────────────────────────────────────┐
│ ACTIVE-PASSIVE (الاستعداد) │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌───────────────────────────────────────────────────┐ │
│ │ │ │
│ │ ┌─────────────┐ ┌─────────────┐ │ │
│ │ │ ACTIVE │ │ PASSIVE │ │ │
│ │ │ (Primary) │───────►│ (Standby) │ │ │
│ │ │ │ sync │ │ │ │
│ │ │ يعالج │ │ ينتظر │ │ │
│ │ │ الحركة │ │ دوره │ │ │
│ │ └─────────────┘ └─────────────┘ │ │
│ │ │ │ │
│ │ │ إذا تعطل │ │
│ │ ▼ │ │
│ │ ┌─────────────┐ ┌─────────────┐ │ │
│ │ │ (down) │ │ ACTIVE │ │ │
│ │ │ │ │ (جديد) │ │ │
│ │ └─────────────┘ └─────────────┘ │ │
│ │ │ │
│ └───────────────────────────────────────────────────┘ │
│ │
│ المزايا: العيوب: │
│ ✅ بسيط ❌ موارد غير مستغلة │
│ ✅ بيانات متزامنة ❌ التحويل ليس فوريًا │
│ ✅ تكلفة معتدلة │
│ │
│ حالات الاستخدام: RDS متعدد AZ، قواعد البيانات │
│ │
└─────────────────────────────────────────────────────────────┘

النمط 2: Active-Active​

┌─────────────────────────────────────────────────────────────┐
│ ACTIVE-ACTIVE │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌───────────────────────────────────────────────────┐ │
│ │ │ │
│ │ ┌─────────────────┐ │ │
│ │ │ موازن التحميل │ │ │
│ │ └────────┬────────┘ │ │
│ │ │ │ │
│ │ ┌───────────┼───────────┐ │ │
│ │ │ │ │ │ │
│ │ ▼ ▼ ▼ │ │
│ │ ┌────────┐ ┌────────┐ ┌────────┐ │ │
│ │ │ ACTIVE │ │ ACTIVE │ │ ACTIVE │ │ │
│ │ │ (1) │ │ (2) │ │ (3) │ │ │
│ │ │ │ │ │ │ │ │ │
│ │ │ يعالج │ │ يعالج │ │ يعالج │ │ │
│ │ │ الحركة │ │ الحركة │ │ الحركة │ │ │
│ │ └────────┘ └────────┘ └────────┘ │ │
│ │ AZ-a AZ-b AZ-c │ │
│ │ │ │
│ └───────────────────────────────────────────────────┘ │
│ │
│ المزايا: العيوب: │
│ ✅ جميع الموارد مستخدمة ❌ أكثر تعقيدًا │
│ ✅ أداء أفضل ❌ تزامن البيانات صعب │
│ ✅ تحويل شفاف │
│ │
│ حالات الاستخدام: خوادم ويب بدون حالة، APIs │
│ │
└─────────────────────────────────────────────────────────────┘

خدمات AWS للتوافر العالي​

الخدمةالتوافر العالي الأصليالتكوين المطلوب
S3✅ 99.999999999%لا شيء
DynamoDB✅ متعدد AZ تلقائيلا شيء
ALB/NLB✅ متعدد AZتحديد 2+ subnets
RDS⚠️ خيارتفعيل متعدد AZ
EC2❌ لاالتصميم مع ASG
Lambda✅ متعدد AZ تلقائيلا شيء
Aurora✅ متعدد AZتفعيل النسخ

تمرين: تحديد نقاط الفشل الواحدة​

السيناريو​

حلل هذه البنية وحدد نقاط الفشل الواحدة:

┌─────────────────────────────────────────────────────────────┐
│ البنية للتحليل │
├─────────────────────────────────────────────────────────────┤
│ │
│ الإنترنت │
│ │ │
│ ▼ │
│ ┌──────────┐ │
│ │ ALB │ │
│ └────┬─────┘ │
│ │ │
│ ┌──────────┴──────────┐ │
│ │ │ │
│ ▼ ▼ │
│ ┌────────┐ ┌────────┐ │
│ │ EC2 │ │ EC2 │ │
│ │ AZ-a │ │ AZ-a │ │
│ └────┬───┘ └────┬───┘ │
│ │ │ │
│ └──────────┬──────────┘ │
│ │ │
│ ▼ │
│ ┌──────────┐ │
│ │ RDS │ │
│ │ Single │ │
│ │ AZ │ │
│ └──────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
💡 الحل

نقاط الفشل المحددة:

  1. ❌ جميع EC2 في نفس AZ (AZ-a)

    • إذا تعطل AZ-a، جميع الخوادم تتوقف
    • الحل: التوزيع في AZ-a وAZ-b على الأقل
  2. ❌ RDS Single-AZ

    • إذا تعطل AZ لقاعدة البيانات، فقدان البيانات ممكن
    • الحل: تفعيل RDS متعدد AZ
  3. ✅ ALB هو جيد (متعدد AZ افتراضيًا إذا كان 2+ subnets)

البنية المصححة:

  • EC2 في AZ-a وAZ-b
  • RDS مع تفعيل متعدد AZ
  • ALB مع subnets في 2+ AZ

الملخص​

المفهومالوصف
HAيبقى النظام متاحًا رغم الأعطال
SPOFمكون فريد يؤدي تعطله إلى توقف كل شيء
Multi-AZتوزيع على عدة مناطق
99.9%~8 ساعات توقف/سنة (قياسي)
Active-Passiveواحد نشط، واحد في الانتظار
Active-Activeجميعهم يعالجون الحركة

القسم التالي: موازنات التحميل