Жүк балансы жана failover
Жүк балансы жана failover
1) Максаттар жана терминдер
Баланстоо өндүрүмдүүлүк жана туруктуулук үчүн үлгүлөрү/зоналар/региондор арасында трафикти бөлүштүрөт.
Failover - иштен чыкканда башкарылуучу которуу.
RTO/RPO: максаттуу калыбына келтирүү убактысы жана жол берилиштерди жоготуу.
SLO: максаттуу жеткиликтүүлүк/жашыруун деңгээл; автоматтык фейловер жана артка кайтаруу үчүн "дарбаза" катары кызмат кылат.
2) баланстоо катмарлары
2. 1 L4 (TCP/UDP)
Артыкчылыктары: аткаруу, жөнөкөйлүк, TLS passthrough. Кемчиликтери: эч кандай түшүнүк маршруту/cookie.
Мисалдар: NLB/GLB, HAProxy/Envoy L4, IPVS.
2. 2 L7 (HTTP/gRPC)
Жакшы жактары: жол/chederam багыттоо, канара салмагы, sticky. Кемчиликтери: кымбат CPU/жашыруун.
Мисалдар: NGINX/HAProxy/Envoy/Cloud ALB/API Gateway.
2. 3 Global деңгээл
DNS/GSLB: ден соолук-текшерүү + гео/салмактуу жооп.
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 көчүрмөсүн кайра куки орнотот.
Src-IP sticky: L4 боюнча, NAT/CGNAT менен жаман.
Consistent hashing: горизонталдуу кэш/чат үчүн жакшы.
Aim: Мүмкүн болсо stateless кызматын жасаңыз, антпесе - failover жөнөкөйлөтүү үчүн байлыкты (Redis/DB сессияларын) алып чыгыңыз.
5) Ишенимдүүлүк: ден соолук-текшерүү жана айлануу алып салуу
Active checks: HTTP 200/бизнес жолдорунун терең үлгүлөрү (мисалы, көз карандылыктар менен '/healthz/withdraw ').
Passive (outlier detection): 5хх/таймауттарда бэкенддердин эжекциясы.
Warm-up: жаңы учурларды (slow-start) жылмакай киргизүү.
Graceful drain: бассейнден алып салуу → суроолор аяктагандан кийин күтүү.
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 Jitter жана Idempotent менен; демпотенттик ачкычтары жок POST боюнча ретрациялоо.
Circuit breaker: бир эле учурда суроо-талаптарды/каталарды чектөө; "жарым ачык" калыбына келтирүү.
Budgets: self-DDOS уюштуруу эмес, retrains/бурст бириктирүү чектери.
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 реплика.
yaml readinessProbe:
httpGet: { path: /healthz/dependencies, port: 8080 }
periodSeconds: 5 failureThreshold: 2
8) Кросс-зоналык жана кросс-аймактык трафик
Multi-AZ (региондун ичинде): бирдей бөлүштүрүү (zonal LB), сактоо - синхрондуу репликалар.
Multi-region:- Active-Active: эки аймак тең трафикти тейлейт; татаал - маалыматтарды репликациялоо, координациялоо жана география боюнча багыттоо керек.
- Active-Passive: негизги аймак кызмат кылат, камдык - "ысык/жылуу/суук". Жөнөкөй, тез которуу, бирок RPO жогору.
- 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) + ден соолук текшерүүлөр сиздин тармактын сыртында.
Anycast: бир IP менен бир нече ROPs - жакын жол, багыттоо деъгээлинде Failover кабыл алат.
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) Auto failover: сигналдар жана гейтс
Tech-SLI: 5xx-rate, p95/p99, saturation, TLS hendsheyks, TCP resets.
Бизнес-SLI: депозиттер/төлөмдөрдүн ийгилиги, PSP эч кандай төлөм каталар.
Гейтс: босогодон ашканда - аймакты/бийликти өчүрүү, туруктуу бассейндин салмагын көтөрүү, GSLB которуу.
Runbook: этап-этабы менен которуу жана кайтаруу (rollback).
13) Тесттер жана текшерүүлөр (chaos & game-days)
Chaos-тесттер: АЗ/аймактарды өчүрүү, DD/кэш деградациясы, packet-loss симуляциясы.
Game-day: on-call командаларынын катышуусу менен машыгуу фейловери.
Диагностика: периметрден backends, релиз-аннотацияларды жана метриктерди салыштыруу.
14) Коопсуздук жана комплаенс
mTLS LB кызматтары, WAF/Rate limits периметри боюнча.
Бузулуу/сегменттөө зоналары: blast-radius изоляциясы.
Саясат: Бир мүчүлүштүк чекиттерине тыюу салуу (SPOF), "минималдуу N реплика/AZ" боюнча талаптар.
15) Анти-үлгүлөрү
Бардык прод-трафик үчүн бир LB/бир аймак (SPOF).
Жок терең текшерүү '/healthz '(жашыл - бирок DD/кезек жок).
Idempotentity жок Retray → эки бүтүм/төлөмдөр.
массалык NAT → дисбаланс менен Sticky per IP.
DNS Feylover жогорку TTL (которулганга чейин саат).
Эч кандай 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 периметри киргизүү.
Канар салмагы/жол саясаты; куки/consistent hash аркылуу sticky.
SLO-Oto Feylover үчүн гейтс (p95/5xx + бизнес-SLI).
26-45 күн
Аймактык DR: Active-Active же котормо тест менен Active-Passive.
АЗ/региондорду өчүрүү менен Chaos-күндөрү, RTO/RPO отчеттору.
Автоматташтырылган runbook 'i (скрипттер pause/shift/rollback).
17) Жетилүү метрикасы
Multi-AZ ≥ 99% критикалык жолдорду камтыйт.
DNS/GSLB/Anycast коомдук endpoints үчүн киргизилген.
MTTR бир аз <5 мүнөт (p95).
маанилүү маалыматтар ≤ максаттуу үчүн RPO (мисалы, ≤ 30 секунд).
Чейрек game-days жана ийгиликтүү пландаштырылган Failover.
18) Корутунду
Ишенимдүү баланстоо жана failover - бул катмарлуу архитектура: жергиликтүү L7-саясат (убакыт/кайра/CB, ден соолук-текшерүү), туура жабышчаак жана хеширлөө, кросс-зоналык туруктуулук жана периметри боюнча - GSLB/DNS/Anycast. SLO гейтс кошуу, боштук, graceful drain жана үзгүлтүксүз chaos тесттер - жана ар кандай жоготуу түйүн, аймак, ал тургай, аймак алдын ала RTO/RPO менен башкарылуучу иш-чара болуп калат.