Stanovte bezpečné hranice self-healing
DokončenéAutomatizujte známe obnovovacie akcie s výslovným oprávnením, overením a podmienkami zastavenia. Oddeľte obnovu za behu od zmeny softvéru.
Vydáva TaigaAko píšeme
Overte si porozumenieKontrolér reštartoval worker dvakrát. Front naďalej rastie a databáza je nedostupná. Čo má politika urobiť?Vykonajte cvičenie
Čo sa naučíte
- Rozlišovať self-healing od trvalej opravy softvéru.
- Definovať ohraničenú politiku obnovy a nezávislé kontroly úspechu.
- Rozpoznať, kedy sa automatizácia musí zastaviť a eskalovať.
Obnovujte službu pri známom zlyhaní
Self-healing automaticky odhalí definované zlyhanie a pokúsi sa vykonať povolenú obnovovaciu akciu. Príkladom môže byť reštart zlyhaného procesu alebo nahradenie nefunkčnej inštancie. Akcia musí zodpovedať zlyhaniu a stavovému modelu služby.
Kubernetes môže nahradiť zlyhané inštancie úloh a zosúladiť stav s deklaráciou. Neopravuje tým chybnú logiku aplikácie ani nerieši každé zlyhanie úložiska. Obnova infraštruktúry a správnosť softvéru potrebujú odlišné kontroly. Kubernetes self-healing.
Pred mechanizmom definujte cieľ. Obnovenie exportu znamená, že sa oprávnená práca dokončí správne. Bežiaci kontajner je iba jedným predpokladom.
Oddeľte tri druhy zmien
| Zmena | Príklad | Požadované rozhodnutie |
|---|---|---|
| Obnova za behu | Nahradiť jeden zlyhaný bezstavový worker | Môže to povoliť vopred schválená politika obnovy |
| Oprava softvéru | Opraviť únik pamäte, ktorý zastavuje worker | Kontrola, testy, riadenie vydania a produkčné overenie |
| Zmena politiky | Zvýšiť povolenú frekvenciu reštartov alebo rozsah prístupu | Výslovné schválenie osobou zodpovednou za politiku |
Agent môže po obnove navrhnúť opravu. Tento návrh je novou softvérovou zmenou. Nesmie zdediť neobmedzené oprávnenia od kontroléra obnovy.
Kontrolér tiež nesmie pri neúspešnej kontrole upravovať vlastné kritériá úspechu. Inak môže systém hlásiť zlepšenie bez zlepšenia služby.
Napíšte politiku obnovy pred jej zapnutím
Nasledujúca politika je fiktívna. Jej čísla ilustrujú návrhové rozhodnutia; nie sú odporúčanými predvolenými hodnotami.
| Pole politiky | Fiktívne pravidlo exportného workera |
|---|---|
| Spúšťacia podmienka | Heartbeat workera chýba 90 sekúnd a vo fronte čaká práca |
| Predpoklady | Ďalší worker je funkčný; kontroly závislostí uspeli; nie je podozrenie na kompromitáciu ani narušenie integrity |
| Povolená akcia | Nahradiť jeden worker aktuálne schváleným artefaktom |
| Ochrana stavu | Úlohy používajú trvalé úložisko a overený kľúč idempotentnosti |
| Limit | Najviac dve nahradenia za 15 minút; nikdy viac než jedno naraz |
| Prestávka | Po nahradení počkať päť minút pred ďalším pokusom |
| Úspech | Syntetická úloha sa dokončí správne a dotknutý front sa začne vyprázdňovať |
| Zastavenie a eskalácia | Zlyhá ktorýkoľvek predpoklad, dosiahne sa limit alebo nemožno overiť úspech |
Použite identitu s najmenšími potrebnými oprávneniami. Logujte verziu politiky, dôkazy spúšťacej podmienky, akciu, zdroj a výsledok. Poskytnite nezávislý spôsob vypnutia kontroléra. Určte človeka, ktorý prijíma eskaláciu.
Testujte zlyhania aj úspešnú obnovu
Opakovanie môže zopakovať vedľajší účinok. Worker môže uložiť súbor a zastaviť sa pred potvrdením úlohy. Pred povolením ďalšieho vykonania overte idempotentnosť. Pozrite si príklad zlyhania v cloud native.
Opakovania môžu tiež zhoršiť preťaženie závislosti. Používajte obmedzený počet pokusov, časové limity a primeraný backoff. Vyhnite sa synchronizovaným opakovaniam všetkých inštancií. AWS vysvetľuje, prečo backoff a jitter pomáhajú obmedziť toto zosilnenie záťaže. Odporúčania na opakovanie.
Otestujte fiktívnu politiku v troch prípadoch. Jeden zastavený worker sa má obnoviť. Výpadok databázy má zabrániť opakovanému nahrádzaniu. Nejasné narušenie integrity má zastaviť automatizáciu a vyžiadať rozhodnutie o reagovaní.
Overte aj chýbajúcu telemetriu. Neprítomnosť heartbeat môže znamenať zlyhaný worker alebo zlyhanú cestu zberu. Kontrolér potrebuje dostatočné dôkazy pre svoju akciu, nie dôveru vo vysvetlenie AI.
Merajte, či politika pomáha
Zaznamenávajte overené obnovy, neúspešné pokusy, eskalácie, duplicitnú prácu a čas dosahu na používateľov. Porovnávajte ich s predchádzajúcim prevádzkovým postupom za podobných podmienok.
Základnú chybu ponechajte ako inžiniersku prácu. Opakovaný reštart procesu s únikom pamäte môže znížiť bezprostredný dosah, zatiaľ čo únik pokračuje. Pokračujte lekciou self-improvement, ktorá prepája pozorovanie s trvalou opravou.
Vykonajte cvičenie
Navrhnite politiku obnovy pre fiktívny exportný worker z tejto lekcie. Určte spúšťaciu podmienku, výnimky, povolenú akciu, limit opakovaní, prestávku medzi pokusmi, kontrolu úspechu a osobu zodpovednú za eskaláciu. Otestujte ju pri výpadku databázy a neznámom narušení integrity údajov.
Stiahnuť pracovný list (Markdown)Zrušenie tohto výberu vymaže celý postup uložený v tomto prehliadači.
Postup zostáva v tomto prehliadači. Bez účtu a sledovania.
Zdroje a ďalšie čítanie
- Kubernetes: Self-Healing ↗
- AWS Builders’ Library: Timeouts, retries, and backoff with jitter ↗
- Google SRE: Automation at Google ↗