GH GambleHub

Բեռի հավասարակշռումը և failover

Բեռի հավասարակշռությունը և failover

1) Նպատակներն ու տերմինները

Հավասարակշռությունը բաժանում է պարամետրերի/գոտիների/տարածաշրջանների միջև արտադրողականության և կայունության համար։

Failover-ը կառավարվող փոխանցումն է, երբ մերժվում է։

RTO/RPO 'վերականգնման նպատակային ժամանակը և տվյալների թույլատրելի կորցումը։

SLO 'հասանելիության/լատենտության ստանդարտ մակարդակ; ծառայում է որպես «դարպաս» ավտոմատ կեղծարարի և արձագանքման համար։

2) Հավասարակշռության շերտերը

2. 1 L4 (TCP/UDP)

Պլյուսներ 'արտադրողականություն, պարզություն, TMS passthrough։ Մինուսներ 'բացակայում է հասկանալը/կտորները։

Օրինակներ ՝ NLB/GLB, HAProxy/Envoy L4, IPVS։

2. 2 L7 (HTTP/gRPC)

Պլյուսներ 'երթուղայնացում/հեդերներ, կանարյան քաշներ, sticky։ Մինուսներ 'ավելի թանկ է CPU/լատենտ։

Օրինակներ ՝ NGINX/HAProxy/Envoy/Cloud ALB/API Gateway։

2. 3 Գլոբալ մակարդակ

III/GSLB: health-winks + geo/կշռված պատասխանը։

Anycom/BGP: մեկ IP ամբողջ աշխարհում, մոտակա անոնսի կետը։

CDN/Edge: kes/feilover պարագծի վրա։

3) Բաշխման ալգորիթմներ

Round-robin/weighted-ը հիմնական է։

Least connections/latency-ը «ծանր» հարցումների համար է։

Consistent hashing-ը բանալին (user/tenae) առանց կենտրոնային նստաշրջանի։

Hash-based delality-ը քեշի և stateful-ծառայությունների համար է։

4) Նստաշրջաններ և սոսինձ (sticky)

Cookie-sticky: L7 LB-ը տեղադրում է cookie-ը կիսագնդի համար։

Disc-IP sticky: L4-ում ավելի վատ է NAT/CGNAT-ի դեպքում։

Consistent hashing 'ավելի լավ է հորիզոնական քեշի/չաթի համար։

A.r. հնարավորության դեպքում կատարեք stateless ծառայությունը, հակառակ դեպքում, ձեր վիճակը (Redis/DB), որպեսզի պարզեցնեք failover-ը։

5) Lenta.ru: health-winks և հեռացումը տարհանումից։

Actions: HTTP 200/խորը բիզնեսի փորձարկումներ (օրինակ ՝ «/healthz/withdr.ru »կախվածությամբ)։

Passive (wwww.ier det.ru): Backends ejection 5x/timauth-ում։

Warm-up 'նոր instans (slow-start) լողացող ստանդարտ։

Graceful intain: հեռացնել փամփուշտից, որպեսզի սպասենք հարցումների ավարտին։

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 www.ier det.ru (հատված)

yaml outlier_detection:
consecutive_5xx: 5 interval: 5s base_ejection_time: 30s max_ejection_percent: 50

6) Ձախողումների կառավարում ՝ timeout/retry/circuit-breaking

Timeouts: ավելի կարճ, քան հաճախորդի թայմաուտը։ տալ per-rome։

Retries: 1-2 ջիթերի և կուռքերի հետ։ հոսանքի արգելքը POST-ի վրա առանց շարունակականության։

Circuit breaker 'միաժամանակ հարցումների/սխալների սահմանափակումը։ «կիսաթափանցիկ» վերականգնումը։

Budgets: Retrav/Bursts միաձուլումը, որպեսզի չլինի www.f-DDOS։

7) Kubernetes-pattern-ը

ClusterIP/NodePox/LoadBalancer/Ingress - հիմնական պրիմիտիվներ։

Readiness/Liveness: International միայն պատրաստի պոդների վրա։

PodPortrupics Budget-ը 'հակառակը N կրկնօրինակը։

HPA/WPA-ն 'CPU/RED մետրերի մեծացումը, LB-ի միացումը։

DirecTopology/Topology Ault Hinault: տարածքը։

Deltype = LoadBalancer (zonal): Առնվազն երկու կրկնօրինակներ յուրաքանչյուր AZ-ում։

Քննադատական մրցույթի համար readiness-ի օրինակ

yaml readinessProbe:
httpGet: { path: /healthz/dependencies, port: 8080 }
periodSeconds: 5 failureThreshold: 2

8) Քրոս-գոտին և Քրոս-105-ը։

Multi-AZ (տարածաշրջանի ներսում), բաժանեք միատեսակ (zonal LB), պահպանեք սինխրոն կրկնօրինակները։

Multi-region:
  • Active-Action-ը 'երկու տարածաշրջանները ծառայում են զբոսաշրջիկներին։ ավելի բարդ է, անհրաժեշտ է կրկնօրինակել տվյալները, համակարգել և ուղղել աշխարհագրությունը։
  • Active-Passive: հիմնական տարածքը սպասարկում է, պահուստը «տաք/տաք/սառը» է։ Ավելի հեշտ է, ավելի արագ, բայց RPO-ից բարձր։

GSLB ռազմավարությունը

Geo-IV (ամենամոտ տարածքը)։

Weighted III (kanaraks/վերաբաշխում)։

Latency-based (RTT չափումներ)։

Failover = առողջության/հասանելիության ազդանշանների վրա (probes մի քանի vantage կետերից)։

9) Տվյալները և failover

Քաշ/սթեյթ 'հնարավորության դեպքում' տեղական; Active-Action-ի համար - CRDT/կոնսիստենտ հեշեր։

ԲԴ

Սինխրոն կրկնօրինակումը = ցածր RPO, ավելի բարձր լատենտություն։

Ասինխրոն = ավելի ցածր լատենտ, բայց RPO> 0։

Գծեր ՝ հացահատիկ/բազմաբնույթ կացիններ; իրադարձությունների կրկնապատկումը։

Նախագծեք գործողությունների և replay-մեխանիկայի համադրելիությունը։

10) Պարիմետրը ՝ RF/Anycrim/BGP/CDN

CSA: կարճ TTL (30-60s) + health-winks ձեր ցանցից դուրս։

Anycase: մի քանի ROR 'ov մեկ 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, TMS, TCP resets։

Բիզնես-SLI 'դեպոզիտների հաջողությունը/2019, PSA-ի ոչ պաշտոնական սխալներ։

Գեյթ 'երբ ավելի բարձր է շեմերը, անջատեք գոտին/ինստան, բարձրացրեք կայուն փամփուշտի քաշը, փոխեք GSLB-ը։

Runbook: Քայլող հրահանգներ ռուսական և ռուսական (rollback)։

13) Թեստեր և թեստեր (chaos & game-days)

Chaos-թեստեր 'AZ/տարածաշրջանների անջատումը, BD/kash քայքայումը, packet-loss սիմուլյացիան։

Game-day: Ուսումնամարզական ֆեյլեր, որը մասնակցում է on-call թիմերին։

Ախտորոշումը 'պարագծից մինչև բեկենդներ, ռելիզի և մետրի համեմատություն։

14) Անվտանգություն և ընկերակցություն

MTSA-ի միջև LB-ի միջև տեղադրված ծառայություններ, WAF/Rate limits պարագծի վրա։

Մերժման/սեգմենտացիայի գոտիները 'blast-radius մեկուսացումը։

Քաղաքական գործիչները 'միայնակ հրաժարվելու կետերի արգելքը (SPOF), «Նվազագույն N կրկնօրինակման/AZ» պահանջները։

15) Anti-patterna

Մեկ LB/մեկ տարածք ամբողջ prod-2019 համար (SPOF)։

Խորը ստուգման բացակայությունը '/healthz '(կանաչ, բայց BD/հերթը անհասանելի է)։

Repray առանց idempotenty-ը բացատրում է վիրահատությունների/վճարումների դուբլը։

Sticky per IP-ը զանգվածային NAT-ի ժամանակ անհավասարակշռում է։

MS-ֆեյլերը բարձր TTL-ով (ժամացույց մինչև 105)։

Ոչ մի graceful international-ի դեպքում 'հարցումների բացը։

16) Chek-Show-( 0-45 օր)

0-10 օր

Բաժանել instans 2 AZ; միացրեք readiness/liveness, health-winks։

Տեղադրել L7-timeouts/retries (1 փորձ), medier detae։

Ներառել graceful and slow-start։

11-25 օր

Ներդրել GSLB (geo/weighted) կամ Anycript-ը պարագծի համար։

Կանարյան քաշը/երթուղիների քաղաքականությունը; sticky cookie/consistent hash միջոցով։

SLO-gatts ավտոմեքենայի ֆեյլերի համար (p95/5xx + բիզնես SLI)։

26-45 օր

DR 'Action-Active կամ Acctive-Passive-ը թարգմանության թեստի հետ։

Chaos-օրեր AZ/տարածաշրջանների անջատմամբ, RTO/RPO զեկույցները։

Ավտոմատացված runbook "և (pause/shift/rollback)։

17) Հասունության մետրերը

Multi-AZ-ի ծածկումը կրիտիկական ճանապարհների 99 տոկոսն է։

III/GSLB/Anycript-ը ներդրված է հանրային էնդպոինտների համար։

MTTR-ը, երբ ընկավ մեկ AZ <5 րոպե (p95)։

RPO-ը կրիտիկական տվյալների համար 210 (օրինակ ՝ 3,30 վայրկյան)։

Եժեքվարթալ game-days-ը և հաջողակ պլանավորված ֆեյլովերը։

18) Եզրակացություն

Հուսալի հավասարակշռությունը և failover-ը փխրուն ճարտարապետություն է 'տեղական L7 քաղաքականությունները (timeouts/retries/CB, health-winks), ճիշտ սոսնձումը և քաշումը, խաչաձև հովանոցը, իսկ պարագծի վրա' GSLB/IV/Anycripe։ Ավելացրեք SLO-gatts, impotenty, graceful and www.chaos-թեստերը, և հանգույցի ցանկացած կորուստ, գոտիները կամ նույնիսկ տարածաշրջանները կդառնա կառավարվող իրադարձություն կանխատեսելի RTO/RPO-ի հետ։

Contact

Կապ հաստատեք մեզ հետ

Կապ հաստատեք մեզ հետ ցանկացած հարցի կամ աջակցության համար։Մենք միշտ պատրաստ ենք օգնել։

Սկսել ինտեգրացիան

Email-ը՝ պարտադիր է։ Telegram կամ WhatsApp — ըստ ցանկության։

Ձեր անունը ըստ ցանկության
Email ըստ ցանկության
Թեմա ըստ ցանկության
Նամակի բովանդակություն ըստ ցանկության
Telegram ըստ ցանկության
@
Եթե նշեք Telegram — մենք կպատասխանենք նաև այնտեղ՝ Email-ի дополнение-ով։
WhatsApp ըստ ցանկության
Ձևաչափ՝ երկրի կոդ և համար (օրինակ՝ +374XXXXXXXXX)։

Սեղմելով կոճակը՝ դուք համաձայնում եք տվյալների մշակման հետ։