GH GambleHub

Жүктеме теңгерімі және failover

Жүктеме теңгерімі және failover

1) Мақсаттар мен терминдер

Теңгерім трафикті өнімділік пен тұрақтылық үшін даналар/аймақтар/аймақтар арасында бөледі.
Failover - істен шыққан кезде басқарылатын ауыстырып қосу.
RTO/RPO: мақсатты қалпына келтіру уақыты және деректерді жоғалту.
SLO: қол жетімділіктің/жасырындылықтың нысаналы деңгейі; автоматты фейловер мен кері қайтару үшін «қақпа» ретінде қызмет етеді.

2) Теңгеру қабаттары

2. 1 L4 (TCP/UDP)

Артықшылықтары: өнімділік, қарапайымдылық, TLS passthrough. Кемшіліктері: маршрутты/кукилерді түсінбеу.
Мысалдар: NLB/GLB, HAProxy/Envoy L4, IPVS.

2. 2 L7 (HTTP/gRPC)

Артықшылықтары: жол/хедералар бойынша маршруттау, канареялық салмақтар, sticky. Кемшіліктері: CPU/жасырындылығы бойынша қымбат.
Мысалдар: NGINX/HAProxy/Envoy/Cloud ALB/API Gateway.

2. 3 Жаһандық деңгей

DNS/GSLB: health-checks + гео/салмақталған жауап.
Anycast/BGP: әлем бойынша бір IP, анонстың жақын нүктесі.
CDN/Edge: кэш/фейловер периметрінде.

3) Тарату алгоритмдері

Round-robin/weighted - базалық.
Least connections/latency - «ауыр» сұраулар үшін.
Consistent hashing - орталық сессиясыз кілт бойынша жабысқақтық (user/tenant).
Hash-based locality - кэштер мен stateful-сервистер үшін.

4) Сессиялар және желімділік (sticky)

Cookie-sticky: L7 LB данасына қайтару үшін cookie орнатады.
Src-IP sticky: L4, NAT/CGNAT кезінде нашар.
Consistent hashing: көлденең кэштер/сөйлесулер үшін жақсы.
Aim: мүмкіндігінше stateless қызметін жасаңыз, әйтпесе failover қызметін жеңілдету үшін жай-күйді (Redis/DB-дегі сессияларды) шығарыңыз.

5) Сенімділік: health-checks және айналымнан шығару

Active checks: HTTP 200/бизнес жолдарының терең сынамалары (мысалы, тәуелділікпен '/healthz/withdraw ').
Passive (outlier detection): 5хх/таймаут кезінде бэкендтердің эжекциясы.
Warm-up: жаңа инстанцияларды біртіндеп қосу (slow-start).
Graceful drain: сұраулардың аяқталуын күту → пулынан жою.

NGINX (мысал):
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 (үзік):
yaml outlier_detection:
consecutive_5xx: 5 interval: 5s base_ejection_time: 30s max_ejection_percent: 50

6) Ақауларды басқару: timeout/retry/circuit-breaking

Timeouts: клиенттің таймауттан қысқа; per-route орнату.
Retries: 1-2 джиттері және іспеттілігі бар; іспеттілік кілтсіз POST-та ретрациялауға тыйым салу.
Circuit breaker: бір уақыттағы сұрауларды/қателерді шектеу; «жартылай ашық» қалпына келтіру.
Budgets: self-DDOS орнатпау үшін ретрайлардың лимиттері/бурсттардың қосылуы.

7) Kubernetes-паттерндер

ClusterIP/NodePort/LoadBalancer/Ingress - негізгі примитивтер.
Readiness/Liveness: трафик тек дайын под.
PodDisruptionBudget: N репликаның бір уақытта құлауына жол бермеу.
HPA/VPA: CPU/RED өлшемдері бойынша масштабтау, LB байланысы.
ServiceTopology/Topology Aware Hints: аймақ бойынша орналасуы.
Service type = LoadBalancer (zonal): минимум - әр AZ-да 2 репликадан.

Критикалық бағыт үшін readiness мысалы:
yaml readinessProbe:
httpGet: { path: /healthz/dependencies, port: 8080 }
periodSeconds: 5 failureThreshold: 2

8) Кросс-аймақтық және кросс-аймақтық трафик

Multi-AZ (өңір ішінде): біркелкі таратыңыз (zonal LB), сақтау - синхронды репликалар.

Multi-region:
  • Active-Active: екі өңір де трафикке қызмет көрсетеді; күрделі - деректерді репликалау, география бойынша келісу және бағыттау қажет.
  • Active-Passive: негізгі өңір қызмет көрсетеді, резерв - «ыстық/жылы/суық». Оңай, жылдам ауыстыру, бірақ RPO жоғары.
GSLB стратегиясы:
  • Geo-DNS (жақын аймақ).
  • Weighted DNS (канарейка/қайта бөлу).
  • Latency-based (RTT-өлшеу).
  • Failover = денсаулық/қол жетімділік сигналдары бойынша (бірнеше vantage-нүктеден probes).

9) Деректер және failover

Кэш/стейт: мүмкіндігінше - аймақтық; Active-Active үшін - CRDT/консистентті хэштер.

БД:
  • Синхронды репликация = төмен RPO, жоғары жасырындылық.
  • Асинхронды = төмен латенттілік, бірақ RPO> 0.
  • Кезектер: зеркалау/мультикластерлік топиктер; оқиғаларды қайталау.
  • Операциялардың теңсіздігін және replay-механиканы жобалаңыз.

10) Периметр: DNS/Anycast/BGP/CDN

DNS: қысқа TTL (30-60s) + желіден тыс health-checks.
Anycast: бір IP-мен бірнеше РОР 'лар - жақын трафикті қабылдайды, бағыттау деңгейінде фейловер.
CDN/Edge: қорғау үшін кэш және «шлюз», статика/медиа origin құлаған кезде қызмет көрсетіледі; origin-shield + пер-POP health.

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 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: сигналдар мен гейттер

Тех-SLI: 5xx-rate, p95/p99, saturation, TLS хэндшейндері, TCP resets.
Бизнес-SLI: депозиттер/төлемдер табысты, PSP-де төлем қателері жоқ.
Гейттер: шектен асқан кезде - аймақты/инстанцияны өшіру, тұрақты пулдың салмағын көтеру, GSLB ауыстыру.
Runbook: қадамдық қайта қосу және қайтару нұсқаулығы (rollback).

13) Тесттер мен инспекциялар (chaos & game-days)

Chaos-тесттер: AZ/аймақтарды ажырату, БД/кэштің тозуы, packet-loss симуляциясы.
Game-day: on-call командаларының қатысуымен жаттығу фейловері.
Диагностика: периметрден бэкендке дейін трассалау, релиз-аннотация мен метриканы салыстыру.

14) Қауіпсіздік және комплаенс

mTLS LB, WAF/Rate limits арасында периметрде.
Істен шығу/сегменттеу аймақтары: blast-radius оқшаулау.
Саясат: жалғыз бас тарту нүктелеріне (SPOF) тыйым салу, «минималды N реплика/AZ» бойынша талаптар.

15) Қарсы үлгілер

Барлық азық-түлік трафигі (SPOF) үшін бір LB/бір аймақ.
Терең тексерудің болмауы '/healthz '(жасыл - бірақ ДБ/кезек қол жетімді емес).
Теңсіздіксіз ретрай → операциялар/төлемдер дублі.
Жаппай NAT → дисбаланс кезінде Sticky per IP.
Жоғары TTL бар DNS-фейловер (ауыстырып қосуға дейінгі сағаттар).
Сұрау үзілген кезде graceful drain жоқ.

16) Енгізу чек-парағы (0-45 күн)

0-10 күн

Инстанцияларды 2 AZ ≥ бойынша тарату; readiness/liveness, health-checks қосыңыз.
L7-timeouts/retries баптау (1 әрекет), outlier detection.
graceful drain және slow-start қосылсын.

11-25 күн

Периметр үшін GSLB (geo/weighted) немесе Anycast енгізіңіз.
Канареялық салмақтар/бағыттар саясаты; sticky cookie/consistent hash арқылы.
Авто-фейловерге арналған SLO-гейттер (p95/5xx + бизнес-SLI).

26-45 күн

Аймақтық DR: Active-Active немесе аударма тестімен Active-Passive.
Chaos-AZ/өңірлер ажыратылған күндер, RTO/RPO есептері.
Автоматтандырылған runbook 'және (pause/shift/rollback скрипттері).

17) Жетілу метрикасы

Multi-AZ ≥ 99% сындарлы жолдарды жабу.
DNS/GSLB/Anycast көпшілік эндпоинттер үшін енгізілген.
MTTR бір AZ <5 минут (p95) құлау кезінде.
Мақсатты ≤ сыни деректері үшін RPO (мысалы, 30 секундтан ≤).
Тоқсан сайынғы game-days және сәтті жоспарлы фейловер.

18) Қорытынды

Сенімді теңгерім және failover - бұл қабатты сәулет: жергілікті L7-саясат (timeouts/retries/CB, health-checks), дұрыс желімділік және хэштеу, кросс-аймақтық тұрақтылық, ал периметрде - GSLB/DNS/Anycast. SLO-гейттерді, идемпотенттілікті, graceful drain және тұрақты chaos-тесттерді қосыңыз - және түйіннің, аймақтың немесе тіпті өңірдің кез келген жоғалуы болжамды RTO/RPO-мен басқарылатын оқиғаға айналады.

Contact

Бізбен байланысыңыз

Кез келген сұрақ немесе қолдау қажет болса, бізге жазыңыз.Біз әрдайым көмектесуге дайынбыз!

Интеграцияны бастау

Email — міндетті. Telegram немесе WhatsApp — қосымша.

Сіздің атыңыз міндетті емес
Email міндетті емес
Тақырып міндетті емес
Хабарлама міндетті емес
Telegram міндетті емес
@
Егер Telegram-ды көрсетсеңіз — Email-ге қоса, сол жерге де жауап береміз.
WhatsApp міндетті емес
Пішім: +ел коды және номер (мысалы, +7XXXXXXXXXX).

Батырманы басу арқылы деректерді өңдеуге келісім бересіз.