موازنة الحمل والفشل
موازنة الحمل والفشل
1) الأهداف والشروط
التوازن يوزع حركة المرور عبر الحالات/المناطق/المناطق من أجل الأداء والمرونة.
الفشل - الفشل الخاضع للرقابة.
RTO/RPO - هدف وقت الاسترداد وفقدان البيانات المقبول.
مستوى التوافر/الكمون المستهدف ؛ بمثابة «بوابة» للتلف التلقائي والتراجع.
2) موازنة الطبقات
2. 1 L4 (TCP/UDP)
الإيجابيات: الأداء والبساطة وعبور TLS. السلبيات: لا يوجد طريق للفهم/ملفات تعريف الارتباط.
أمثلة: NLB/GLB، HAProxy/Envoy L4، IPVS.
2. 2 L7 (HTTP/gRPC)
الإيجابيات: مسار التوجيه/الرؤوس، أوزان الكناري، لزج. السلبيات: أكثر تكلفة في وحدة المعالجة المركزية/زمن الكمون.
أمثلة: NGINX/HAProxy/Envoy/Cloud ALB/API Gateway.
2. 3 عالمية
DNS/GSLB: الفحوصات الصحية + الاستجابة الجغرافية/المرجحة.
Anycast/BGP: IP واحد في جميع أنحاء العالم، أقرب نقطة إعلان.
CDN/Edge: Cache/Feilover على المحيط.
3) خوارزميات التوزيع
مستديرة روبن/مرجحة - أساسية.
أقل اتصالات/زمن انتقال - للطلبات «الثقيلة».
التجزئة المتسقة - ثبات المستخدم/المستأجر بدون جلسة مركز.
المنطقة المحلية القائمة على الهاش - للمخابئ والخدمات الحكومية.
4) جلسات ولزجة
Cookie-sticky: L7 LB يضع ملف تعريف ارتباط للعودة إلى الحالة.
Src-IP sticky: على L4، أسوأ مع NAT/CGNAT.
التجزئة المتسقة: أفضل للمخابئ/الدردشات الأفقية.
الهدف: إذا أمكن، قم بالخدمة عديمة الجنسية، وإلا - قم بإخراج الدولة (جلسات في Redis/DB) لتبسيط الفشل.
5) الموثوقية: الفحوصات الصحية والإزالة من التناوب
الفحوصات النشطة: HTTP 200/مسارات الأعمال العميقة (على سبيل المثال '/healthz/سحب 'مع التبعيات).
سلبي (اكتشاف خارجي): طرد خلفي عند 5xx/مهلة.
الإحماء: الإدراج السلس للحالات الجديدة (البداية البطيئة).
تصريف رشيق - أخرجه من حمام السباحة → انتظر اكتمال الطلبات.
nginx upstream api {
zone api 64k;
least_conn;
server app-1:8080 max_fails=2 fail_timeout=10s;
server app-2:8080 max_fails=2 fail_timeout=10s;
keepalive 512;
}
proxy_next_upstream error timeout http_502 http_503 http_504;
proxy_next_upstream_tries 2;
الكشف الخارجي للمبعوث (جزء):
yaml outlier_detection:
consecutive_5xx: 5 interval: 5s base_ejection_time: 30s max_ejection_percent: 50
6) إدارة الأخطاء: المهلة/إعادة المحاولة/كسر الدائرة
المهلة: أقصر من المهلة المحددة للزبون ؛ تحديد المسار الواحد.
Retires: 1-2 with jitter and impempotency; حظر إعادة التدوين على POST بدون مفاتيح التطهير.
قاطع الدائرة: الحد من الطلبات/الأخطاء المتزامنة ؛ انتعاش «شبه مفتوح».
الميزانيات: حدود إعادة الدفع/دمج الدفعات حتى لا يتم ترتيب DDOS الذاتي.
7) أنماط Kubernetes
ClusterIP/NodePort/LoadBalancer/Ingress - البدائيات الأساسية.
الاستعداد/الحيوية: حركة المرور فقط على الألواح الجاهزة.
لا يمكن لـ PodDistructionBudget إسقاط النسخ المتماثلة N في نفس الوقت.
HPA/VPA: التحجيم بمقياس وحدة المعالجة المركزية/RED، الارتباط بـ LB.
ServiceTopology/Topology Aware Tints: locality by zone.
نوع الخدمة = LoadBalancer (المنطقة): 2 نسخ طبق الأصل على الأقل في كل AZ.
yaml readinessProbe:
httpGet: { path: /healthz/dependencies, port: 8080 }
periodSeconds: 5 failureThreshold: 2
8) حركة المرور عبر المناطق وعبر المناطق
Multi-AZ (داخل المنطقة): التوزيع بالتساوي (LB المنطقة)، التخزين - النسخ المتزامنة.
متعدد المناطق:- نشطة: تخدم كلتا المنطقتين حركة المرور ؛ أكثر تعقيدًا - تحتاج إلى تكرار البيانات والاتساق والتوجيه الجغرافي.
- Active-Passive: المنطقة الرئيسية تقدم، احتياطي - "ساخن/دافئ/بارد. "تبديل أسهل وأسرع، ولكن أعلى RPO.
- Geo-DNS (أقرب منطقة).
- DNS المرجح (الكناري/إعادة التوزيع).
- الكمون (قياسات RTT).
- Failover = بواسطة إشارات الصحة/التوافر (مجسات من نقاط تفضيل متعددة).
9) البيانات والفشل
المخبأ/الدولة: إن أمكن - محلي إقليمياً ؛ للنشاط النشط - CRDT/التجزئة المتسقة.
DB:- النسخ المتزامن = منخفض RPO، زمن انتقال أعلى.
- غير متزامن = زمن انتقال منخفض، ولكن RPO> 0.
- قوائم الانتظار: مواضيع انعكاسية/متعددة الأعشاب ؛ تفريغ الحدث.
- تصميم الخصوصية للعمليات وميكانيكا إعادة التشغيل.
10) المحيط: DNS/Anycast/BGP/CDN
DNS: TTL قصير (30-60) + الفحوصات الصحية من شبكتك.
على أي حال: العديد من الملوثات العضوية الثابتة مع IP واحد - أقرب واحد يتلقى حركة المرور، يكون feilover على مستوى التوجيه.
CDN/Edge: مخبأ و «بوابة» للحماية، يتم خدمة الوسائط/الساكنة عند سقوط المنشأ ؛ درع المنشأ + пер - صحة البوب.
11) تكوينات العينة
HAProxy L7:haproxy defaults timeout connect 2s timeout client 15s timeout server 15s retries 2 option redispatch
backend api balance leastconn option httpchk GET /healthz/dependencies http-check expect status 200 server app1 app-1:8080 check inter 5s fall 2 rise 2 slowstart 3000 server app2 app-2:8080 check inter 5s fall 2 rise 2 slowstart 3000
كعكة по اللزجة NGINX:
nginx upstream api {
hash $cookie_session_id consistent;
server app-1:8080;
server app-2:8080;
}
إعادة محاكمة المبعوث/مهلة (مسار):
yaml route:
timeout: 2s retry_policy:
retry_on: 5xx,connect-failure,reset num_retries: 1 per_try_timeout: 500ms
12) الفشل التلقائي: الإشارات والبوابات
Tech-SLI: معدل 5xx، p95/p99، التشبع، مصافحة TLS، إعادة ضبط TCP.
Business SLI: نجاح الودائع/المدفوعات، عدم وجود أخطاء في الدفع في PSP.
البوابات: إذا تم تجاوز العتبات، فاغلق المنطقة/الحالة، وارفع أوزان المسبح المستقر، وقم بتبديل GSLB.
كتاب التشغيل: تعليمات التراجع خطوة بخطوة.
13) الاختبارات وعمليات التفتيش (الفوضى وأيام اللعب)
اختبارات الفوضى: تعطيل AZ/المناطق، وتحلل DB/cache، ومحاكاة فقدان الحزم.
يوم اللعبة: تدريب Faylover يضم فرقًا تحت الطلب.
التشخيص: التتبع من المحيط إلى الخلف، ومطابقة شروح ومقاييس الإصدار.
14) السلامة والامتثال
mTLS بين LB↔servisy و WAF/حدود المعدل على المحيط.
مناطق الفشل/التجزئة: عزل نصف قطر الانفجار.
السياسات: حظر نقطة فشل واحدة (SPOF)، متطلبات «الحد الأدنى من النسخ المتماثلة من N/AZ».
15) الأنماط المضادة
منطقة واحدة LB/منطقة واحدة لجميع حركة المرور (SPOF).
لا يوجد فحص عميق «/healthz »(أخضر - لكن DB/قائمة الانتظار غير متوفرة).
إعادة الدفع دون → ازدواجية المعاملات/المدفوعات.
لزج لكل IP مع اختلال توازن → NAT.
DNS feilover مع ارتفاع TTL (قبل ساعات من التبديل).
لا يوجد استنزاف رشيق عند النضوب - استراحة الطلب.
16) قائمة التنفيذ المرجعية (0-45 يوما)
0-10 أيام
الحالات اللاحقة ≥2 المنطقة الحائزة للأسلحة النووية ؛ تمكين الاستعداد/الحيوية، والفحوصات الصحية.
ضبط L7-timeouts/retries (محاولة 1)، كشف خارجي.
مكّن التصريف الرشيق والبدء البطيء.
11-25 يومًا
أدخل GSLB (geo/weighted) أو Anycast للمحيط.
سياسات أوزان/طرق الكناري ؛ لزج عبر ملف تعريف الارتباط/التجزئة المتسقة.
بوابات SLO للتخفيف التلقائي (p95/5xx + business SLI).
26-45 يومًا
DR الإقليمي: Active-Active أو Active-Passive مع اختبار الترجمة.
أيام الفوضى مع إيقاف المناطق/المناطق، تقارير RTO/RPO.
الدليل التشغيلي الآلي و (التوقف المؤقت/التحول/النصوص التراجعية).
17) مقاييس النضج
تغطية Multi-AZ ≥ 99٪ من المسارات الحرجة.
يتم تنفيذ DNS/GSLB/Anycast لنقاط النهاية العامة.
MTTR عندما يسقط واحد AZ <5 دقائق (p95).
RPO للبيانات الحرجة ≤ الهدف (على سبيل المثال، ≤ 30 ثانية).
أيام اللعبة الفصلية والمباراة المجدولة الناجحة.
18)
التوازن الموثوق والفشل هو بنية ذات طبقات: L7-policies المحلية (المهلات/الإعادات/CB، الفحوصات الصحية)، اللزوجة الصحيحة والتجزئة، الاستقرار عبر المنطقة، وعلى المحيط - GSLB/DNS/Anycast. أضف بوابات SLO، والغباء، والتصريف الرشيق واختبارات الفوضى المنتظمة - وأي فقدان لعقدة أو منطقة أو حتى منطقة سيصبح حدثًا يمكن التحكم فيه مع RTO/RPO يمكن التنبؤ به.