GH GambleHub

Équilibrage de charge et échec

Équilibrage de charge et échec

1) Objectifs et termes

L'équilibrage répartit le trafic entre les instances/zones/régions pour la performance et la durabilité.
Failover - basculement contrôlé en cas de panne.
RTO/RPO : temps de récupération cible et perte de données admissible.
SLO : niveau cible de disponibilité/latence ; sert de « porte » pour le faussaire automatique et le recul.

2) Couches d'équilibrage

2. 1 L4 (TCP/UDP)

Avantages : performance, simplicité, TLS passthrough. Inconvénients : aucune compréhension de l'itinéraire/cookies.
Exemples : NLB/GLB, HAProxy/Envoy L4, IPVS.

2. 2 L7 (HTTP/gRPC)

Avantages : routage sur le chemin/headers, poids canaris, sticky. Inconvénients : plus cher par CPU/latence.
Exemples : NGINX/HAProxy/Envoy/Cloud ALB/API Gateway.

2. 3 Niveau mondial

DNS/GSLB : health-checks + réponse géo/pondérée.
Anycast/BGP : une IP dans le monde, le point d'annonce le plus proche.
CDN/Edge : cache/faussaire sur le périmètre.

3) Algorithmes de distribution

Round-robin/weighted - de base.
Least connections/latency - pour les demandes « lourdes ».
Consistance hashing - adhésif par clé (user/tenant) sans session de centre.
Hash-based locality - pour les caches et les services stateful.

4) Sessions et adhésifs (sticky)

Cookie-sticky : L7 LB installe un cookie pour revenir à l'instance.
Sticky src-IP : sur L4, pire avec NAT/CGNAT.
Consistent hashing : Mieux pour les caches/chats horizontaux.
S'il est possible de faire le service stateless, sinon, sortez l'état (sessions dans Redis/DB) pour simplifier l'échec.

5) Fiabilité : Santé-checks et sortie de rotation

Active checks : HTTP 200/échantillons profonds du chemin d'affaires (par exemple, '/healthz/withdraw 'avec des dépendances).
Passive (outlier detection) : éjection des backends à 5xx/taimauts.
Warm-up : incluez en douceur de nouvelles instances (slow-start).
Graceful drain : supprimer du pool → attendre que les requêtes soient terminées.

NGINX (exemple) :
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 (fragment) :
yaml outlier_detection:
consecutive_5xx: 5 interval: 5s base_ejection_time: 30s max_ejection_percent: 50

6) Gestion des pannes : timeout/retry/circuit-breaking

Timeouts : plus court que le délai d'attente du client ; définir un per-route.
Retries : 1-2 avec gitter et idempotence ; interdiction des retraits de POST sans clés d'idempotence.
Circuit breaker : limiter les requêtes/erreurs simultanées ; une reprise « semi-ouverte ».
Budgets : limites de rétrospective/fusion des bourgs pour ne pas organiser un self-DDOS.

7) Modèles de Kubernetes

ClusterIP/NodePort/LoadBalancer/Ingress sont les primitives de base.
Read..../Liveness : trafic uniquement sur les pods prêts à l'emploi.
PodDissolutionBudget : Ne pas permettre la chute simultanée de N répliques.
HPA/VPA : mise à l'échelle des métriques CPU/RED, couplage avec LB.
ServiceTopology/Topology Aware Hints : localité par zone.
Service type = LoadBalancer (zonal) : Au minimum, 2 répliques par AZ.

Exemple de lecture d'un itinéraire critique :
yaml readinessProbe:
httpGet: { path: /healthz/dependencies, port: 8080 }
periodSeconds: 5 failureThreshold: 2

8) Trafic croisé et croisé régional

Multi-AZ (à l'intérieur de la région) : répartir uniformément (LB zonal), stocker - répliques synchrones.

Multi-region:
  • Active-Active : les deux régions desservent le trafic ; Plus complexe : la réplication des données, la cohérence et l'acheminement géographique sont nécessaires.
  • Active-Passive : la région principale sert, la réserve est « chaud/chaud/froid ». Commutation plus facile, plus rapide, mais au-dessus du RPO.
Stratégie GSLB :
  • Geo-DNS (région la plus proche).
  • Weighted DNS (canaries/redistribution).
  • Latency-based (mesures RTT).
  • Failover = par signaux de santé/disponibilité (probes provenant de plusieurs points de vantage).

9) Données et échec

Cache/State : Si possible, régional local ; pour Active-Active - CRDT/hachages constants.

OBD :
  • Réplication synchrone = RPO faible, latence supérieure.
  • Asynchrone = latence inférieure, mais RPO> 0.
  • Files d'attente : miroirs/haches multiplastres ; déduplication des événements.
  • Concevoir l'idempotence des opérations et la mécanique replay.

10) Périmètre : DNS/Anycast/BGP/CDN

DNS : court TTL (30-60s) + checks santé hors de votre réseau.
Anycast : Plusieurs RO avec une IP - le plus proche reçoit le trafic, un faussaire au niveau du routage.
CDN/Edge : cache et « passerelle » pour la protection, statique/médias sont servis lorsque l'origin tombe ; origin-shield + пер-POP health.

11) Exemples de configurations

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) Failover automatique : signaux et gates

T-SLI : 5xx-rate, p95/p99, saturation, handshakes TLS, resets TCP.
SLI d'entreprise : succès des dépôts/paiements, pas d'erreurs de paiement chez PSP.
Gates : si vous dépassez les seuils, désactivez la zone/l'instance, augmentez le poids du pool stable, changez de GSLB.
Runbook : instruction étape par étape de basculement et de retour (rollback).

13) Tests et inspections (chaos & game-days)

Tests de chaos : désactivation de l'AZ/régions, dégradation des bases de données/caches, simulation de packet-loss.
Game-day : un faussaire d'entraînement impliquant des équipes en ligne.
Diagnostic : trace du périmètre aux backends, mise en correspondance des annotations de sortie et des métriques.

14) Sécurité et conformité

mTLS entre les limites de LB↔servisy, WAF/Rate sur le périmètre.
Zones de défaillance/segmentation : isolation blast-radius.
Politiques : interdiction des points de défaillance uniques (SPOF), exigences pour « minimum N répliques/AZ ».

15) Anti-modèles

Un LB/une zone pour l'ensemble du trafic prod (SPOF).
Absence de vérification approfondie '/healthz '(vert - mais OBD/file d'attente non disponible).
Rétractation sans idempotence → prise de transactions/paiements.
Sticky per IP avec NAT de masse → déséquilibre.
Failover DNS avec TTL élevé (horloge avant commutation).
Il n'y a pas de graceful drain à la dérive - la rupture des requêtes.

16) Chèque de mise en œuvre (0-45 jours)

0-10 jours

Déposer les instances selon la ≥2 AZ ; inclure read..../liveness, health-checks.
Configurer L7-timeouts/retries (1 tentative), outlier detection.
Activer graceful drain et slow-start.

11-25 jours

Entrez GSLB (geo/weighted) ou Anycast pour le périmètre.
Poids canaris/politiques d'itinéraire ; sticky via cookie/consistent hash.
Gates SLO pour Auto-Faulover (p95/5xx + Business SLI).

26-45 jours

DR régional : Active-Active ou Active-Passive avec test de traduction.
Jours de chaos avec débranchement AZ/régions, rapports RTO/RPO.
Runbook automatisé et (scripts pause/shift/rollback).

17) Métriques de maturité

Couverture Multi-AZ ≥ 99 % des voies critiques.
DNS/GSLB/Anycast ont été mis en œuvre pour les endpoints publics.
MTTR en cas de chute d'un AZ <5 minutes (p95).
RPO pour les données critiques ≤ cible (par exemple, 30 secondes ≤).
Game-days trimestriels et faussaire planifié réussi.

18) Conclusion

L'équilibrage fiable et l'échec sont des architectures en couches : politiques locales L7 (timeouts/retries/CB, checks de santé), bonne adhérence et hachage, stabilité croisée, et sur le périmètre, GSLB/DNS/Anycast. Ajoutez des gates SLO, de l'idempotence, du graceful drain et des tests de chaos réguliers - et toute perte d'un nœud, d'une zone ou même d'une région deviendra un événement gérable avec un RTO/RPO prévisible.

Contact

Prendre contact

Contactez-nous pour toute question ou demande d’assistance.Nous sommes toujours prêts à vous aider !

Commencer l’intégration

L’Email est obligatoire. Telegram ou WhatsApp — optionnels.

Votre nom optionnel
Email optionnel
Objet optionnel
Message optionnel
Telegram optionnel
@
Si vous indiquez Telegram — nous vous répondrons aussi là-bas.
WhatsApp optionnel
Format : +code pays et numéro (ex. +33XXXXXXXXX).

En cliquant sur ce bouton, vous acceptez le traitement de vos données.