Nustatykite saugias self-healing ribas
BaigtaAutomatizuokite žinomus atkūrimo veiksmus su aiškiais įgaliojimais, patikrinimu ir sustabdymo sąlygomis. Atskirkite vykdymo aplinkos atkūrimą nuo programinės įrangos keitimo.
Leidžia TaigaKaip rašome
Patikrinkite, ar supratoteValdiklis du kartus paleido vykdymo procesą iš naujo. Eilė toliau auga, o duomenų bazė nepasiekiama. Ką turi numatyti taisyklė?Atlikite užduotį
Ko išmoksite
- Atskirkite self-healing nuo ilgalaikės programinės įrangos pataisos.
- Apibrėžkite ribotą atkūrimo taisyklę ir nepriklausomus sėkmės patikrinimus.
- Atpažinkite, kada automatizavimas turi sustoti ir eskaluoti.
Atkurkite žinomą būseną
Self-healing automatiškai aptinka apibrėžtą gedimą ir bando atlikti leistiną atkūrimo veiksmą. Pavyzdžiai gali būti sugedusio proceso paleidimas iš naujo ar neveiksnaus egzemplioriaus pakeitimas. Veiksmas turi atitikti gedimą ir paslaugos būsenos modelį.
Kubernetes gali pakeisti sugedusius darbo krūvio egzempliorius ir palaikyti deklaruotą būseną. Tai netaiso klaidingos programos logikos ar kiekvieno saugyklos gedimo. Infrastruktūros atkūrimui ir programinės įrangos teisingumui reikia skirtingų patikrinimų. Kubernetes self-healing.
Apibrėžkite tikslą prieš mechanizmą. Atkurti eksportą reiškia, kad tinkamas darbas teisingai užbaigiamas. Veikiantis konteineris yra tik viena išankstinė sąlyga.
Atskirkite tris pakeitimų rūšis
| Pakeitimas | Pavyzdys | Būtinas sprendimas |
|---|---|---|
| Vykdymo aplinkos atkūrimas | Pakeisti vieną sugedusį būsenos nesaugantį vykdymo procesą | Tai gali leisti iš anksto patvirtinta atkūrimo taisyklė |
| Programinės įrangos pataisa | Pataisyti atminties nuotėkį, kuris sustabdo vykdymo procesą | Peržiūra, testai, išleidimo kontrolės priemonės ir produkcinis patikrinimas |
| Taisyklių pakeitimas | Padidinti leidžiamą paleidimų iš naujo dažnį ar prieigos apimtį | Aiškus už taisykles atsakingo asmens patvirtinimas |
Agentas po atkūrimo gali pasiūlyti pataisą. Toks pasiūlymas yra naujas programinės įrangos pakeitimas. Jis neturi paveldėti neribotų įgaliojimų iš atkūrimo valdiklio.
Valdiklis taip pat neturi keisti savo sėkmės kriterijų, kai patikrinimas nepavyksta. Antraip sistema gali pranešti apie pagerėjimą nepagerindama paslaugos.
Užrašykite atkūrimo taisykles prieš jas įjungdami
Toliau pateiktos taisyklės yra išgalvotos. Jų skaičiai iliustruoja projektavimo pasirinkimus; tai nėra rekomenduojamos numatytosios reikšmės.
| Taisyklės laukas | Išgalvota eksporto vykdymo proceso taisyklė |
|---|---|
| Paleidimo sąlyga | 90 sekundžių negaunamas vykdymo proceso gyvybingumo signalas ir eilėje yra darbo |
| Išankstinės sąlygos | Kitas vykdymo procesas veiksnus; priklausomybių patikrinimai sėkmingi; nėra įtariamo kompromitavimo ar vientisumo klaidos |
| Leidžiamas veiksmas | Pakeisti vieną vykdymo procesą naudojant šiuo metu patvirtintą artefaktą |
| Būsenos apsauga | Užduotys naudoja ilgalaikę saugyklą ir patikrintą idempotentiškumo raktą |
| Riba | Daugiausia du pakeitimai per 15 minučių; niekada daugiau nei vienas vienu metu |
| Laukimo tarpas | Po pakeitimo laukti penkias minutes prieš kitą bandymą |
| Sėkmė | Sintetinė užduotis užbaigiama teisingai, o paveikta eilė pradeda mažėti |
| Sustabdyti ir eskaluoti | Neįvykdyta bet kuri išankstinė sąlyga, pasiekta riba arba neįmanoma patikrinti sėkmės |
Naudokite mažiausias būtinas teises turinčią tapatybę. Registruokite taisyklių versiją, paleidimo įrodymus, veiksmą, išteklių ir rezultatą. Suteikite nepriklausomą būdą išjungti valdiklį. Įvardykite atsakingą žmogų, kuris gauna eskalavimą.
Testuokite nesėkmės kelius ir sėkmingą atkūrimą
Pakartotinis bandymas gali pakartoti šalutinį poveikį. Vykdymo procesas gali išsaugoti failą ir sustoti prieš patvirtindamas užduotį. Prieš leisdami kitą vykdymą, patikrinkite idempotentiškumą. Žr. cloud native sutrikimo pavyzdį.
Pakartotiniai bandymai taip pat gali dar labiau apkrauti perkrautą priklausomybę. Naudokite ribotą bandymų skaičių, laukimo terminus ir tinkamai didinamą delsą. Venkite sinchroniškų pakartotinių bandymų visuose egzemplioriuose. AWS paaiškina, kodėl didėjanti delsa ir atsitiktinis jos kitimas padeda sumažinti šį sustiprinimą. Pakartotinių bandymų gairės.
Išbandykite išgalvotas taisykles trimis atvejais. Vienas sustojęs vykdymo procesas turėtų būti atkurtas. Duomenų bazės neveikimas turėtų neleisti kartotinių pakeitimų. Neaiški vientisumo klaida turėtų sustabdyti automatizavimą ir pareikalauti reagavimo sprendimo.
Taip pat patikrinkite trūkstamą telemetriją. Gyvybingumo signalo nebuvimas gali reikšti sugedusį vykdymo procesą arba sugedusį rinkimo kelią. Valdikliui reikia jo veiksmui pakankamų įrodymų, o ne pasitikėjimo DI paaiškinimu.
Matuokite, ar taisyklės padeda
Registruokite patikrintus atkūrimus, nesėkmingus bandymus, eskalavimus, dubliuotą darbą ir laiką, kai naudotojai patiria poveikį. Palyginkite su ankstesniu eksploatavimo būdu panašiomis sąlygomis.
Pagrindinę klaidą palikite kaip inžinerinį darbą. Pakartotinai paleidžiant atmintį prarandantį procesą galima sumažinti tiesioginį poveikį, nors nuotėkis tęsiasi. Toliau skaitykite apie self-improvement, kad susietumėte stebėjimą su ilgalaike pataisa.
Atlikite užduotį
Suprojektuokite šios pamokos išgalvoto eksporto vykdymo proceso atkūrimo taisykles. Nurodykite paleidimo sąlygą, išimtis, leidžiamą veiksmą, bandymų ribą, laukimo tarpą, sėkmės patikrinimą ir už eskalavimą atsakingą asmenį. Išbandykite jas duomenų bazės neveikimo ir nežinomos duomenų vientisumo klaidos atvejais.
Atsisiųsti užduoties lapą (Markdown)Atšaukus šį pasirinkimą ištrinama visa šioje naršyklėje išsaugota pažanga.
Pažanga lieka šioje naršyklėje. Be paskyros ir stebėjimo.
Šaltiniai ir papildoma literatūra
- Kubernetes: Self-Healing ↗
- AWS Builders’ Library: Timeouts, retries, and backoff with jitter ↗
- Google SRE: Automation at Google ↗