High Availability и SLA
High Availability и SLA
1) Տերմինները և կապը բիզնեսի հետ
SLI (Systel Level Indication) - չափված ցուցիչ (օրինակ ՝ 2xx/3xx - T ms)։
SLO (Black Level Objective) - SLI (օրինակ ՝ 99։ Հարցումների 95 տոկոսը 300 մզ")։
SLA (Black Level Agream) - հաճախորդի պայմանագրային պարտավորություն (տուգանքներ/վարկեր խախտելիս)։
HA (High Availability) - ճարտարապետական և վիրահատական միջոցներ, որոնք թույլ են տալիս կատարել SLO/SLA։
Սկզբունքը 'SLA-ն հիմնված է SLO-ի վրա, իսկ SLO-ն' դիտարկված SLI-ի վրա։ Դուք չեք կարող խոստանալ SLA-ում այն, ինչ չեք չափում։
2) «Իններորդ» և հասանելիության մաթեմատիկան
Ժամանակահատվածի հասանելիությունը = «ժամանակ _ աշխատանք/ընդհանուր _ ժամանակ»։ Ուղեցույցներ (տարվա ընթացքում)
Հասանելիության բարձրացում
Հաջորդական շղթան (կախված «կարմիր ուղուց») '«A _ total = Core A _ i» (յուրաքանչյուր բաղադրիչը նվազեցնում է արդյունքը)։
Զուգահեռ բանաձև ՝ «A _ total = 1 Trave (1 www.A _ i)» (պահուստը բարձրացնում է արդյունքը)։
3) Ի՞ նչ չափել (ճիշտ SLI)
Օգտագործողի տեսակետը 'հիմնական վիրահատությունների հաջողակ ավարտը (login, դեպոզիտ, չեկ-աութ) և նրանց լատենտ p99-ը։
Ժամացույցի միջանցքը 'համախմբեք սայթաքուն պատուհաններով (5/30/60 րոպե) և տարածաշրջաններով։
Բացառություններ. «Պլանավորված պատուհանները» դիտարկվում են SLO-ում, իսկ SLA-ում 'միայն եթե դա ասվում է պայմանագրում։
SLI տեսակները
Հասանելիություն 'հաջողակ պատասխանների մասնաբաժինը T.
Որակը 'p95/p99 latency։
Բաղադրիչները ՝ «հաջողակ ավանդների մասնաբաժինը 245 s»։
4) Error Budget-ը և այրման արագությունը
Error Budget = `1 − SLO`. 99-ի համար։ Ամսական պատուհանի 95% -ը տալիս է 0։ Սխալների 0,2 %/բաց։
Burn-rate: Բյուջեի սպառման արագությունը (օրինակ 4 հազար նշանակում է, որ 6 ժամվա ընթացքում դուք ուտում եք ցերեկային սահմանը)։
Քաղաքականությունը 'արագ այրման դեպքում, ածխաջրածինների հոսքը, ֆոկուսը, feature-freeze-ը։
5) HA ճարտարապետությունը 'հանգույցից մինչև տարածաշրջան
5. 1 Հանգույց/ծառայություն
N + 1: Առնվազն մեկ ավելցուկ կրկնօրինակը (Deployant 242, PDB, anti-affinity)։
Ռեսուրսների մեկուսացումը 'CPU/RAM/IO, գերակայություններ (Priorts Class)։
Graceful shutdown/intain 'ռեստարտի հարցումների կոտրման բացակայությունը։
5. 2 Գոտի/տարածք
Multi-AZ: Տարբեր գոտիներում կրկնօրինակներ, քրոս-հովանոց հավասարակշռություն, անկախ սնունդ/ցանց։
Multi-region: 108-108 (ավելի դժվար է ՝ տվյալները/կոնսիստենտիվությունը) կամ 71-լոկոմոտիվը (ավելի պարզ ՝ RPO-ից բարձր)։
Տվյալները ՝ CP փողի/պատվերի համար (kvorum/RAFT), EC/AP քեշի/վիտրինի համար։
5. 3 Ցանցային շերտ և պարիմետր
L7-LB с health-checks, retry/timeout/circuit-breaking.
GSLB/IV/Anycript գլոբալ մրցույթի համար, կարճ TTL։
Egress-վերահսկումը և հրաժարվող ալիքները մինչև արտաքին PFC/պրովայդեր։
6) Քայքայումը ընկնելու փոխարեն
Feature kill-switch (fich-դրոշներ) 'անջատել ոչ կրիտիկական, պահպանել «կարմիր ճանապարհը»։
Պարզեցված ճանապարհների անցումը 'սինխրոն asinhron/հերթը, «ընդունվում է վերամշակման մեջ»։
Rate-limit/քվոտաներ 'ավելի լավ սահմանափակել հաճախորդներին, քան բոլորին։
Stale-ռեժիմներ 'տալ cash/ստատիկ տվյալներ origin անհասանելիության դեպքում։
7) Կախվածության կառավարումը
Կախվածության քարտեզը (wwww.map) 'ուղիղ/տրանզիտիվ, քննադատություն, SLO բոլորի։
Խոցելի կապեր 'արտաքին պրովայդերը առանց SLA-ի, շրջվում է քեշի/մեկ/կրկնօրինակով։
Bulkhead-մեկուսացում 'տարբեր փամփուշտներ 2019/քվոտաներ դանդաղ երթուղիների համար։
Timeouts> Retries: Կարճ թայմաուտներ, առավելագույն 1 ռետրա idempotent վիրահատությունների համար։
8) Վիրահատություններ և փոփոխություններ
Change to: Roads/blue-green, SLO-gats, ավտոմատ արձագանք։
Պլանավորված պատուհաններ 'ստանդարտացնել' երկարություն, հաճախականություն, հաղորդակցություն։
Միջադեպերը 'դերեր (IC/Comics/Tech/DB), runbook "և, հետմորտներ ուղղիչ գործողություններով։
Securiti-ivents-ը 'փոխզիջման ժամանակ' «panika-ռեժիմ» (read-only/tocens/անջատումը/արգելափակումը)։
9) Դիտողությունն ու ալերտինգը
RED մոդելը (Rate, Errors, Duration) յուրաքանչյուր ուղղությամբ։
SLI-dashbords: Տարածաշրջանի հասանելիությունը/լատինականությունը և հաճախորդների հատվածում։
Burn-rate ալերտները 'արագ (1h, 14։ 4 նոյեմբերի), դանդաղ (6h, 2 հազար) - ազդանշան մինչև SLO-ի խափանումը։
Exemplars (Exemplars) 'մետրից անցում դեպի trace _ id։
Սինթետիկ 'արտաքին կետերից փորձարկումներ (պարիմետրեր, հիբրիդային ֆլոու)։
10) Համառության թեստեր
Game-days: սցենարները www.AZ/տարածաշրջաններ, BD/kash քայքայումը, արտաքին պրովայդերների հրաժարումը։
Chaos-գործիքներ 'ցանցի ֆոլտներ (latency/loss), kill-pods, CPU/IO։
DR-medills: RTO/RPO-ի մշակումը Tier-0 համակարգերի համար (տե՛ ս «Bakaps և DR»)։
11) SLA նախագծումը SLA նախագծումը
«Հասանելիության» սահմանումը, որը համարվում է պատահականություն (5xx, ժամանակ> T, տիրույթի սխալները)։
Հաշվարկման պատուհանը ՝ ամիս/քառորդ; 2019/պլանային աշխատանքի բացառումը։
Վարկեր/տուգանքներ 'սանդղակ (օրինակ ՝ 99։ 9–99. 99% - X%, ցածր 'Y%)։
Հաճախորդի պարտականությունները 'ինտեգրումը, ռեակտորները ողջամիտ սահմաններում, սահմանները։
Նոտիֆիկացիան և կլիմների ընթացակարգը 'ժամկետները, ձևաչափը, ապացույցային հիմքը (լոգներ/մետրիկներ)։
Ֆորս Մաջորը 'իրավաբանական ձևակերպում և սահմաններ։
Օրինակ (էսքիզներ)
"API-ի հասանելիությունը SLI-ի վրա "հաջողակ 500ms" ոչ պակաս, քան 99։ օրացուցային ամսվա 95 տոկոսը։ Պլանավորված պատուհանները (մինչև 60 րոպե/վրկ, հայտարարված 48 ժամվա ընթացքում) բացառված են։ 99-ին։ 90–99. 95 տոկոսը վարկեր 5%; 99. 80–99. 90% — 10%; <99. 80% — 25%.»
12) Աղջիկների տնտեսությունը
Յուրաքանչյուր ավելացված «իննը» մեծանում է ոչ գծային ծախսերը (կրկնակի տարածքներ, քվորումներ, պրովայդերների դուբլներ, 24 247)։ Օգտագործեք tiering SLO։
Tier-0 (գումար/պատվերներ): 99։ 95–99. 99%, մուլտֆիլմ-AZ, DR պատրաստ է։
Tier-1 (հիմնական ֆիչին): 99։ 9–99. 95%, մուլտֆիլմ-AZ։
Tier-2 (ոչ քննադատական): 99։ 5–99. 9 տոկոսը, որը բացատրում է դեգրադացիան/ստոպը պատահականության ժամանակ։
13) HA Patterns շերտերով
Պարիմետրը ՝ CDN/edge, multi-CDN կամ GSLB, WAF, rate-limit։
Հավասարակշռություն ՝ L7-ից wwww.ier-ej.ru, թայմաուտներ/retrai, sticky/consistent-hash։
Ծրագրերը 'հորիզոնական սկեյլ, readiness/liveness, PDB, topology spread։
Տվյալները ՝ leader + replicas, CP, cash L2, idempotency, PITR։
Գծեր ՝ հացահատիկ/մուլտիկլաստեր, DLQ։
Գաղտնիքները/ալգորիթմները ՝ GitOps, ատոմային դիպուկահարներ, rollback։
14) Anti-patterna
SLA-ն առանց չափման գործիքների և արտաքին սինթեզիկայի։
Միասնական գոտի/կլաստեր որպես SPOF։
Անվերահսկելի ռեակտորները նկարագրվում են «DDoS»։
Երկար գործարքներ/մուտեկտներ տաք ճանապարհին։
«Ծանր» 108/105 առանց կանանցների և վերադարձի պլանի։
Runbook-ի բացակայությունը և սթեյքհոլդերների հետ շփումը պատահականության ժամանակ։
15) Ներդրման թուղթ (0-60 օր)
0-15 օր
Որոշել քննադատական SLI օգտագործողները, SLO տալ Tier-0/1/2 մակարդակներում։
Միացրեք burn-rate ալերտները, SLO-dashbords, պարագծի սինթետիկ ստուգումներ։
Հեռացնել SPOF: 352 կրկնօրինակներ, PDB, mensi-AZ ճակատների և քննադատական BD-ի համար։
16-40 օր
Ներմուծել SLO-geiting-ի և Auto-ի հետ։
Կախվածության քարտեզը + քվոտա/պուլա/թայմաուտներ/RF յուրաքանչյուր «կարմիր ճանապարհի» վրա։
Պլանավորված պատուհանների և հաղորդակցությունների կարգավորումը, հաղորդագրությունների օրինակները։
41-60 օր
Game-day: AZ-ի անջատումը, արտաքին պրովայդերի ձախողումը, «բուրստը»։
SLA-ի և վարկերի վերահաշվարկումը, ռուսական հաճախորդների հրապարակումը։
Մոսկվան «իններորդ գինն է» և հոսանքի խաչմերուկը։
16) Հասունության մետրերը
Կրիտիկական երթուղիների 3695 տոկոսը ունեն SLI/SLO և burn-rate ալերտներ։
SLO սխալները ուղեկցվում են ածխաջրածինների սառեցմամբ (policy)։
Multi-AZ ծածկույթը Tier-0 = 100 տոկոսը, հաջողակ DR-medills 241/թաղամաս։
«Դիֆերենցիալ միտիգացիայի» ժամանակը p50 <5 րոպե, p95 <15 ռուբլիա
«Ռուսական միջադեպերի թողարկումը» հարաբերակցությունը կատարվում է և կրճատվում է (rollback rate)։
Դեպքերի/վարկերի մասին հանրային զեկույցը N աշխատանքային օրվա ընթացքում է։
17) Օրինակներ և թերություններ
Burn-rate alerta (կանոնների գաղափարը)
Արագ '"SLO 99։ 95 տոկոսը, պատուհանը 1 ժամ, burn 3614։ 4× → page on-call».
Դանդաղ '«պատուհան 6 ժամ, burn no 2 no ticket & 105»։
Envoy — circuit breaking/outlier:yaml circuit_breakers:
thresholds:
- max_connections: 200 max_pending_requests: 100 max_requests: 1000 max_retries: 1 outlier_detection:
consecutive_5xx: 5 interval: 5s base_ejection_time: 30s max_ejection_percent: 50
Կանարեյկան SLO-ի վերլուծությամբ (Argo Rollouts, գաղափարը)
yaml analysis:
templates:
- name: slo-burn metrics:
- name: error-rate successCondition: result < 0. 005 provider: prometheus
SLI ձևակերպման օրինակ
SLI: fraction_of_good_requests = good(HTTP 2xx/3xx ≤ 500ms) / all(requests)
SLO: ≥ 99. 95% per calendar month, per region
18) Եզրակացություն
High Availability-ը ոչ միայն կլաստերներ և կրկնօրինակներ են, այլ ճարտարապետության, գործընթացների և մետրերի համակարգված հավաքածու 'պարզ SLI/SLO, իրատեսական SLA, «իններորդ» տնտեսագիտության հետ, ընկնելու փոխարեն քայքայումը, թայմաուտների/քվոտաների կարգապահությունը, կանարեկային օրինակները, ուսուցումները և թափանցիկ հաղորդակցությունը։ Դարձրեք չափվող և կառավարվող հասանելիությունը, և այն կդառնա մրցակցային առավելություն, ոչ թե վիճակախաղեր։