Բեռի հավասարակշռությունը
1) Ինչո՞ ւ և որտե՞ ղ է այն ճարտարապետության մեջ
Հավասարակշռությունը հաճախորդի և backends պարկի միջև «ket» է։ Նրա նպատակները
հասանելիություն (առանց ձախողման միասնական կետի), լատենտ (p95 ներքև), մասշտաբը (հորիզոնական), անվտանգությունը (TFC/WAF), ածխաջրածինների կառավարումը (canary/blue-green)։
Օգտագործման շերտերը
Edge/Global: Anycast, GSLB/GeoDNS, CDN/Edge-LB, DDoS.
L4 (TCP/UDP): NLB, maglev, առանց տերմինացիայի։
L7 (HTTP/2, gRPC, Direct Socket, QUIC) - ճանապարհի/վերնագրերի/կլեյամների, kash/սեղմման/retray։
Data-tier: DB-прокси (PgBouncer/ProxySQL), Redis Cluster/Consistent Hash, Kafka partitioning.
2) Հավասարակշռության մոդելները և ալգորիթմները
Round-Robin (RR) 'պարզ միատեսակ։
Least Connections (LC) 'լավ երկար ձիերի համար (WS, gRPC)։
Least Request/System-of-Two (P2C) 'երկու պատահական համեմատություն' լավ հավասարակշռություն արագության/որակի։
Weighted RR/LC 'քաշը canary/« տաք »նոդի համար։
Consistent Hashing (CH) 'նստաշրջան լիպսիոն առանց աղյուսակի (cart, Redis)։
Maglev/Flow-hash: արագ L3/L4-բաշխումը, որը դիմացկունություն է ֆլամպինգին։
Latency-a.ru 'ընտրություն սայթաքող p50/p95։
EWMA 'հաշվի է առնում ուշացման պատմությունը։
Առաջարկություն ՝ լռելյայն P2C (least-request) L7; stateful/kasha - consistent hash; для WS/gRPC — least-connections.
3) Ապստրիմների առողջությունը 'ստուգում և «վտարում»
Health-checks: TCP, HTTP 200/匹配 тела, gRPC status; ընդմիջումներ/timautes/սխալների շեմն է։
Medier Eject-ը '«աղմկոտ» instans (consecutive-5xx, success-rate-eject)։
Slow-start & warmup 'նոր instans փափուկ մուտքագրումը (քաշի աստիճանական աճը)։
Connational windaining 'արտանետման/deple - ակտիվ կոննեկտների «down» առանց խզման։
4) Նստաշրջաններ և լիպտություն (stickiness)
Cookie-stickiness (L7): `Set-Cookie: lb=<id>; SameSite; Secure`.
CH-ն '«hash (userId' sessionid Id 'cartid)»։
IP-hash-ը միայն փակ ցանցերում է (NAT կոտրում է)։
TTL լիպոզա + fallback-ը նոդայի էվիքցիայի ժամանակ։
Կարևոր է, որ նվազագույնի հասցնեք լիպոտի կարիքը, պահեք վիճակը ինստանից դուրս (Redis/DB/JWT)։
5) Գլոբալ հավասարակշռություն (GTM/GSLB)
Anycase + health-probe: մեկ IP, որը տեղադրված է մոտակա PoP-ում։ ավտոմատ ֆեյլերը։
GeoTS/Latency-III պատասխանը գեո/ուշացումով։
Տարածաշրջանային կլաստերներ. «բնակիչների տվյալները» մնում են տարածաշրջանում (GDPR); միջտարածաշրջանային failover կրկնօրինակմամբ։
Քաղաքական գործիչները ՝ գեո բլոկները, «ստիկերեգիոն» հաշիվը/տոկենը։
6) Արձանագրություններ և առանձնահատկություններ
HTTP/2 'մուլտիպլեքս, գերակայություններ; անհրաժեշտ է գրագետ connational-pool apstrim։
GRPC 'երկար գոյատևող strimes www.lepe-connections, ագրեսիվ health-winks։
Windows Socket/SSE 'ձիու լիպտություն, մեծ idle-թայմաուտներ, TCP keep-alive։
QUIC/HTTP/3 'արագ մեկնարկը, կորստի դիմադրությունը։ հետևեք MTU/path-MTU-ին։
TMS-termination/mTSA: termination edge/L7-LB; ներսում mTFC/identity (SPIFFE)։
7) Պաշտպանություն պերեստրոյից (overload nol)
Rate-limit: per-IP, per-key, per-route; burst+sustain.
Adaptive Concurrency (Envoy) 'միաժամանակ հարցումների դինամիկ սահմանը։
Queue/Surge-buffer: գծի սահմանափակ չափը 503 ազնիվ հրաժարմամբ։
Hedging/Parallel racing: դանդաղ հարցումների կրկնօրինակումը (միայն idempotent)։
Timeout budget 'առանձին connational/read/write։
Backpressure: «503 + Retry-After», հաճախորդների էքսպոնենցիալ ռեակտորները ջիթերի հետ։
Slow-loris պաշտպանություն 'ընթերցանության/ձայնագրման թայմաուտներ, նվազագույն արագություն։
8) Ալգորիթմները և նախկին ղեկավարությունը
Canary (weighted): 1–5–10–25–50–100% с guardrails (p95, 5xx, timeouts).
Blue-Green: ակնթարթային սվիտչ, արձագանք - CSA/LB։
Shadow/Mirror 'հարցումների պատճենը առանց պատասխանելու։ PII դիմակավորում։
Header/Claim-routing: `X-Canary: 1` или `JWT. claims. region/role`.
9) Autskeiling եւ drenage
HPA/ASG по CPU+RPS+p95+queue-depth.
PreStop hook 'սպասել ձիերի ավարտին։
Warm pool/instroneruse-ը սառը մեկնարկների կրճատումն է։
Capacity planning: wwww.'utilization 60-70 տոկոսը նորմալ է։
10) Դիտարկումը և SLO-ն
LB: RPS, p50/p95/p99, 4xx/5xx, բաց-connections, queue-len, ejections, retries, hit-ratio kesa։
Թրեյսինգը '«traceparent/x-request-id» -ի միջոցով LB-ի միջոցով ռուսական BD ծառայություններ։
Լոգները 'կառուցվածքային, դիմակներ PII/PAN, կորլացիա ապստրիով։
SLO երթուղով. Օրինակ ՝ "latency p95-300 ռուբլի", "availability 3699։ 9%`, `5xx ≤ 0. 5%`.
Ալերտներ ՝ շեղումներով (burn-rate SLO, ej.ru, 5xx/timeout)։
11) Տվյալների և քեշի հավասարակշռությունը
PostgreSQL/MySQL:- Read/Write split (ProxySQL/pgpool) + read-replicas; sticky-txn.
- Failover 'RPO = 0 (ավելի թանկ) համաժամանակյա կրկնօրինակը։
- Redis Cluster + hash-slot; նստաշրջանների համար 'CH; Թայմաուտներ/Retryable errors.
- Հավասարակշռությունը partitioning և consumer-windups միջոցով։ չխառնվել HTTP-LB-ի հետ։
- Object Storage (S3/MinIO): multi-region failover через GSLB/replication.
12) K8s և ամպային LB
Իսպանիան (ClusterIP/NodePox/LoadBalancer) - L4։
Ingress/Gateway API-ը L7-միկրոօրգանիզմն է, կանարյան քաշը, TLS-ը։
AWS: NLB (L4, բարձր բաց), ALB (L7, WAF, sticky, header-routing)։
GCP: Global LB (L7/HTTP(S) с Anycast), TCP/UDP proxy LB.
Azure: Front Door (global), Application Gateway (L7), Load Balancer (L4).
13) Միգրացիայի օրինակներ
13. 1 NGINX (L7, least_conn, sticky, canary)
nginx upstream api_pool {
least_conn;
server api-1:8080 max_fails=3 fail_timeout=10s;
server api-2:8080 max_fails=3 fail_timeout=10s;
sticky cookie lb_id expires=30m path=/ secure httponly;
}
map $http_x_canary $dst {
default api_pool;
1 canary_pool;
}
upstream canary_pool {
least_conn;
server api-canary:8080 weight=1;
}
server {
listen 443 ssl http2;
location /api/ {
proxy_read_timeout 5s;
proxy_connect_timeout 1s;
proxy_set_header X-Request-Id $request_id;
proxy_pass http://$dst;
}
}
13. 2 HAProxy (P2C, health, slowstart, stick-table)
haproxy backend api balance leastconn option httpchk GET /health default-server inter 3s fall 3 rise 2 slowstart 10s server s1 10. 0. 0. 11:8080 check server s2 10. 0. 0. 12:8080 check stick-table type ip size 100k expire 30m http-request track-sc0 src rate limit per IP http-request deny deny_status 429 if { sc_http_req_rate(0) gt 50 }
13. 3 Envoy (P2C, outlier, retries, adaptive concurrency)
yaml load_assignment: {... }
lb_policy: LEAST_REQUEST least_request_lb_config: { choice_count: 2 }
outlier_detection:
consecutive_5xx: 5 interval: 5s base_ejection_time: 30s typed_extension_protocol_options:
envoy. extensions. filters. http. adaptive_concurrency. v3. AdaptiveConcurrency:
gradient_controller_config:
sample_aggregate_percentile: PERCENTILE_50 retry_policy:
retry_on: "5xx,reset,connect-failure"
num_retries: 2 per_try_timeout: 1s
13. 4 Kubernetes (Gateway API, weighted canary)
yaml apiVersion: gateway. networking. k8s. io/v1 kind: HTTPRoute spec:
rules:
- matches: [{ path: { type: PathPrefix, value: /api }}]
backendRefs:
- name: api-v1 weight: 90 port: 8080
- name: api-v2-canary weight: 10 port: 8080
14) Չեկ թերթերը
Նախքան LB/2019 թողարկումը
- Ալգորիթմը ընտրվում է (P2C/LC/CH) կոդավորման տիպ։
- Health-winks և ej.ru շեմն են։
- Slow-start, warmup, connational-international ներառվում են։
- TFC/mTSA, HSTS, անվտանգ ծածկագրեր; HTTP/2/3 անհրաժեշտության դեպքում։
- Sticky/CH միայն անհրաժեշտության դեպքում։ TTL и fallback.
- Rate-limit/burst, timeouts, retry-budget, adaptive concurrency.
- Logs/treiss: «trace-id» -ը անիծվում է; PII դիմակավորում։
- SLO/alerts p95/5xx/election/queue-len։
- Կանարյան քաշը + արձագանքման պլան; shadow մեծ փոփոխություններով։
Ուղղանկյուն/համակցված երթուղիների համար
- Idempotenty POST (Idempotency-Key)։
- Failover PBS-ի միջև; same-method ստուգում։
- Սխալների իրականացումը նորմալացված է. ETA/հաճախորդի պատճառները։
BD/kash համար
- RW-split/կրկնօրինակներ; թայմաուտներ, ցանցային retry-a։
- CH/slot-hash Redis-ի համար; պաշտպանություն «տաք պաշտպանությունից»։
- Մոսկվա ուշացումներ և replair-lag.
15) Որակի մետրերը (նվազագույն)
Latency p50/p95/p99 երթուղիներով/112։
Error rate 4xx/5xx, timeout/overflow.
Open/active connections, queue depth, retry count.
Medier ejections-ը և պատճառները։
Sticky hit-ratio / cache hit-ratio.
GSLB: Ռուսական բաշխումը, ֆեյլոները, PoP հասանելիությունը։
16) Anti-patterna
Մեկ մոնոլիտ LB առանց վիզաների։
Sticky-նստաշրջանները «ամեն ինչի վրա», փոխարեն հեռացնել վիճակը։
Գլոբալ անվերջ գծերը (թաքցնում են խնդիրը, աճում են p99)։
Repray առանց ջիթերի/բյուջեի '«փոթորիկ» հարցումների։
Վստահություն 'X-Forwarded-For' առանց վստահված կղզիների ցուցակի։
Delain բացակայությունը WS/gRPC ալգորիթմների ավելացման ժամանակ։
Չի սովորեցնում long-lived կոնեկտները ավտոսկայում։
17) iGaming հատկություն
Պիկի և տրամագծերը ՝ micro-cache-ը տեղեկագրերում/listings (1-5 s), հերթով։
Live-խաղեր/strims: LC երկար ձիերի համար, ամենամոտ PoP-ի գերակայությունը։
Վճարումները 'գեո/ռուբլու/գումարի/պրովայդերի միկրոակտիզացիա; խիստ թայմաուտներ և կուռքեր։
Պատասխանատու խաղը և համակրանքը 'առաջնահերթությունը բաց թողնել սահմանների/արգելափակումների հարցումները նույնիսկ դեգրադացիայի ժամանակ (fail-open/close)։
18) Իրականացման գործընթացը (4 սպրինտ)
1. Աղյուսակի քարտեզը 'արձանագրություններ, բեռներ p95/p99, կրիտիկական երթուղիներ։
2. LB կազմաձևումը 'ալգորիթմներ, health/medier, TSA, limits/timauta, observability։
3. GSLB/Edge: Anycast/GeoTS, PoP-helscheks, տարածաշրջանային տվյալների քաղաքականություններ։
4. Ռելիզի ռազմավարություն 'canary/shadow, SLO-alerts, ավտոմեքենաների սկեյլ + medain, post-պատահականության վերլուծություն։
Գլամուրային փուչիկ
Ընտրեք ալգորիթմը կոդավորման տիպ (P2C/LC/CH) և կոննեկտի տևողությունը։
Պահեք ապաստրիմները «առողջ» 'health-www.ks + www.ier + slow-start + medain։
Կառավարեք խնջույքի բեռը 'rate-limit, adaptive concurrency, ձախողման հերթեր։
Օգտագործեք GSLB/Anycript գլոբալ հասանելիության և համեմատության համար տարածաշրջաններում։
Դիտարկումը և SLO-ն պարտադիր են։ թողարկումները 'canary/shadow-ի միջոցով' արձագանքման պլանով։
Որտե՞ ղ կարող եք հեռացնել նստաշրջանը ինստաններից և LB-ից։