GH GambleHub

Yük balansı və failover

Yük balansı və failover

1) Məqsəd və şərtlər

Balans performansı və sabitlik üçün nümunələr/zonalar/bölgələr arasında trafik paylayır.
Failover - uğursuzluq zamanı idarə olunan keçid.
RTO/RPO: hədəf bərpa vaxtı və icazə verilən məlumat itkisi.
SLO: hədəf əlçatanlıq/gecikmə səviyyəsi; avtomatik faylover və geri dönüş üçün «qapı» rolunu oynayır.

2) Balans layları

2. 1 L4 (TCP/UDP)

Artıları: performans, sadəlik, TLS passthrough. Mənfi cəhətləri: marşrut/cookie anlayışı yoxdur.
Nümunələr: NLB/GLB, HAProxy/Envoy L4, IPVS.

2. 2 L7 (HTTP/gRPC)

Artıları: yol marşrutu/hadedam, kanarya çəkisi, sticky. Mənfi cəhətləri: CPU/gizli daha bahalı.
Nümunələr: NGINX/HAProxy/Envoy/Cloud ALB/API Gateway.

2. 3 Qlobal səviyyə

DNS/GSLB: health-checks + geo/balanslı cavab.
Anycast/BGP: dünyada bir IP, ən yaxın elan nöqtəsi.
CDN/Edge: perimetrdə cache/feylover.

3) Paylama alqoritmləri

Round-robin/weighted - əsas.
Least connections/latency - «ağır» sorğular üçün.
Consistent hashing - mərkəzi sessiya olmadan açar yapışdırma (user/tenant).
Hash-based locality - caches və stateful xidmətləri üçün.

4) Sessiyalar və yapışqanlıq (sticky)

Cookie-sticky: L7 LB nüsxəyə qayıtmaq üçün cookies qurur.
Src-IP sticky: L4-də, NAT/CGNAT-da daha pis.
Consistent hashing: üfüqi caches/chat üçün daha yaxşıdır.
Aim: mümkünsə stateless xidmətini edin, əks halda - failover-i asanlaşdırmaq üçün vəziyyəti (Redis/DB seansları) çıxarın.

5) Etibarlılıq: health-checks və rotasiya aradan qaldırılması

Active checks: HTTP 200/dərin iş yolları (məsələn, asılılıqla '/healthz/withdraw ').
Passive (outlier detection): 5xx/taymaut-da backendlərin zərb edilməsi.
Warm-up: yeni instansiyaların rəvan daxil edilməsi (slow-start).
Graceful drain: hovuzdan çıxarmaq → sorğuların tamamlanmasını gözləmək.

NGINX (nümunə):
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;
Envoy outlier detection (fraqment):
yaml outlier_detection:
consecutive_5xx: 5 interval: 5s base_ejection_time: 30s max_ejection_percent: 50

6) Uğursuzluqların idarə edilməsi: timeout/retry/circuit-breaking

Timeouts: müştərinin vaxtından daha qısa; per-route təyin edin.
Retries: 1-2 jitter və idempotent ilə; POST-da idempotentlik açarları olmadan retrajların qadağan edilməsi.
Circuit breaker: eyni vaxtda sorğuların/səhvlərin məhdudlaşdırılması; «yarı açıq» bərpa.
Budgets: self-DDOS təşkil etməmək üçün retras limitləri/burst birləşməsi.

7) Kubernetes-patternlər

ClusterIP/NodePort/LoadBalancer/Ingress - əsas primitivlər.
Readiness/Liveness: trafik yalnız hazır pod.
PodDisruptionBudget: N replikalarının eyni anda düşməsinin qarşısını almaq.
HPA/VPA: CPU/RED metrik ölçmək, LB ilə ligament.
ServiceTopology/Topology Aware Hints: ərazi üzrə lokalizasiya.
Service type = LoadBalancer (zonal): minimum - hər AZ-da 2 replika.

Kritik marşrut üçün readiness nümunəsi:
yaml readinessProbe:
httpGet: { path: /healthz/dependencies, port: 8080 }
periodSeconds: 5 failureThreshold: 2

8) Cross-zona və cross-regional trafik

Multi-AZ (region daxilində): bərabər paylayın (zonal LB), saxlama - sinxron replikalar.

Multi-region:
  • Active-Active: hər iki bölgə trafikə xidmət edir; daha mürəkkəbdir - məlumatların replikasiyası, koordinasiya və coğrafiya marşrutu lazımdır.
  • Active-Passive: əsas region xidmət, ehtiyat - «isti/isti/soyuq». Daha asan, daha sürətli keçid, lakin RPO yuxarıda.
GSLB strategiyaları:
  • Geo-DNS (ən yaxın region).
  • Weighted DNS (kanaryalar/paylanması).
  • Latency-based (RTT-ölçmə).
  • Failover = sağlamlıq/əlçatanlıq siqnalları ilə (bir neçə vantage nöqtəsindən probes).

9) Data və failover

Cash/State: mümkünsə - regional lokal; Active-Active üçün - CRDT/konsistent hash.

BD:
  • Sinxron replikasiya = aşağı RPO, daha yüksək gecikmə.
  • Asinxron = aşağı gecikmə, lakin RPO> 0.
  • Növbələr: güzgü/multiklaster topiklər; hadisələrin təkrarlanması.
  • Əməliyyatların idempotentliyini və replay-mexanikanı layihələndirin.

10) Perimetri: DNS/Anycast/BGP/CDN

DNS: Qısa TTL (30-60s) + sağlamlıq yoxlamaları şəbəkəniz xaricindədir.
Anycast: bir IP ilə bir neçə ROPs - ən yaxın marşrut səviyyəsində trafik, feylover qəbul edir.
CDN/Edge: qorunması üçün cache və «şlyuz», statik/media origin düşdükdə xidmət; origin-shield + пер-POP health.

11) Konfiqurasiya nümunələri

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 sticky по cookie:
nginx upstream api {
hash $cookie_session_id consistent;
server app-1:8080;
server app-2:8080;
}
Envoy retry/timeout (route):
yaml route:
timeout: 2s retry_policy:
retry_on: 5xx,connect-failure,reset num_retries: 1 per_try_timeout: 500ms

12) Avtomatik failover: siqnallar və geytalar

Tech-SLI: 5xx-rate, p95/p99, saturation, hendsheyks TLS, TCP resets.
Biznes SLI: depozitlərin/ödənişlərin müvəffəqiyyəti, PSP-də heç bir ödəniş səhvləri yoxdur.
Geytalar: həddi aşdıqda - zonanı/instansiyanı söndürün, sabit hovuzun çəkisini qaldırın, GSLB-ni dəyişdirin.
Runbook: addım-addım keçid və geri qaytarma (rollback) təlimatı.

13) Testlər və yoxlamalar (chaos & game-days)

Chaos testləri: AZ/regionların kəsilməsi, DB/cache deqradasiyası, packet-loss simulyasiyası.
Game-day: on-call komandalarının iştirakı ilə təlim feyloveri.
Diaqnostika: perimetrdən arxalara qədər izləmə, reliz-annotasiyaların və metriklərin müqayisəsi.

14) Təhlükəsizlik və uyğunluq

mTLS arasında LB, WAF/Rate limits perimetri.
Arıza/seqmentasiya zonaları: blast-radius izolyasiyası.
Siyasətlər: tək uğursuzluq nöqtələrinin (SPOF) qadağan edilməsi, «minimum N replika/AZ» tələbləri.

15) Anti-nümunələr

Bütün promo trafik (SPOF) üçün bir LB/bir zona.
Dərin yoxlama yoxdur '/healthz '(yaşıl - lakin BD/növbə mövcud deyil).
İdempotentlik olmadan retrai → cüt əməliyyatlar/ödənişlər.
Kütləvi NAT → disbalance Sticky per IP.
DNS Feylover yüksək TTL (keçid əvvəl saat).
Deplot zamanı graceful drain yoxdur - sorğuların qırılması.

16) Giriş çek siyahısı (0-45 gün)

0-10 gün

Instansiyaları 2 AZ-a ≥; readiness/liveness, health-checks.
L7-timeouts/retries konfiqurasiya (1 cəhd), outlier detection.
graceful drain və slow-start aktivləşdirin.

11-25 gün

GSLB (geo/weighted) və ya Anycast perimetri daxil edin.
Kanarya çəkisi/marşrut siyasəti; cookie/consistent hash vasitəsilə sticky.
Avto-feylover üçün SLO geytləri (p95/5xx + biznes SLI).

26-45 gün

Regional DR: Tərcümə testi ilə Active-Active və ya Active-Passive.
AZ/regionların bağlanması ilə Chaos-günləri, RTO/RPO hesabatları.
Avtomatlaşdırılmış runbook 'və (pause/shift/rollback skriptləri).

17) Yetkinlik metrikası

Multi-AZ ≥ 99% kritik yolları əhatə edir.
DNS/GSLB/Anycast ictimai end-point üçün tətbiq olunur.
Bir AZ düşdükdə MTTR <5 dəqiqə (p95).
Hədəf ≤ kritik məlumatlar üçün RPO (məsələn, 30 saniyə ≤).
Rüblük game-days və uğurlu planlı feylover.

18) Nəticə

Etibarlı balans və failover - L7-nin yerli siyasəti (timeouts/retries/CB, health-checks), düzgün yapışdırma və hash, xaç-zona sabitliyi və perimetrdə - GSLB/DNS/Anycast. SLO geytaları, idempotentlik, graceful drain və müntəzəm chaos testləri əlavə edin - və hər hansı bir qovşaq, zona və ya bölgənin itkisi proqnozlaşdırıla bilən RTO/RPO ilə idarə olunan bir hadisə olacaq.

Contact

Bizimlə əlaqə

Hər hansı sualınız və ya dəstək ehtiyacınız varsa — bizimlə əlaqə saxlayın.Həmişə köməyə hazırıq!

İnteqrasiyaya başla

Email — məcburidir. Telegram və ya WhatsApp — istəyə bağlıdır.

Adınız istəyə bağlı
Email istəyə bağlı
Mövzu istəyə bağlı
Mesaj istəyə bağlı
Telegram istəyə bağlı
@
Əgər Telegram daxil etsəniz — Email ilə yanaşı orada da cavab verəcəyik.
WhatsApp istəyə bağlı
Format: ölkə kodu + nömrə (məsələn, +994XXXXXXXXX).

Düyməyə basmaqla məlumatların işlənməsinə razılıq vermiş olursunuz.