Stabiliți limite sigure pentru recuperarea automată
TerminatAutomatizați acțiuni cunoscute de recuperare, cu autoritate explicită, verificare și condiții de oprire. Separați recuperarea la execuție de modificarea software-ului.
Publicat de TaigaCum scriem
Verificați ce ați înțelesControllerul a repornit un worker de două ori. Coada continuă să crească, iar baza de date este inaccesibilă. Ce trebuie să prevadă politica?Faceți exercițiul
Ce veți învăța
- Deosebiți recuperarea automată de o corecție software permanentă.
- Definiți o politică limitată de recuperare și verificări independente ale reușitei.
- Recunoașteți când automatizarea trebuie să se oprească și să escaladeze.
Restabiliți o stare cunoscută
Recuperarea automată detectează o defecțiune definită și încearcă o acțiune autorizată de recuperare. Repornirea unui proces defect sau înlocuirea unei instanțe care nu funcționează corect sunt exemple posibile. Acțiunea trebuie să corespundă defecțiunii și modelului de stare al serviciului.
Kubernetes poate înlocui instanțe de lucru defecte și reconcilia starea declarată. Aceasta nu corectează logica defectuoasă a aplicației sau orice defecțiune de stocare. Recuperarea infrastructurii și corectitudinea software-ului necesită verificări diferite. Recuperarea automată Kubernetes.
Definiți obiectivul înaintea mecanismului. Restabilirea unui export înseamnă că lucrul eligibil se termină corect. Un container care rulează este doar o precondiție.
Separați trei tipuri de modificare
| Modificare | Exemplu | Decizie necesară |
|---|---|---|
| Recuperare la execuție | Înlocuirea unui worker defect fără stare locală | O politică de recuperare aprobată în prealabil poate autoriza acțiunea |
| Corecție software | Remedierea pierderii de memorie (memory leak) care oprește workerul | Verificare, teste, controale de lansare și confirmare în producție |
| Modificare de politică | Creșterea ratei permise de repornire sau a domeniului de acces | Aprobarea explicită a responsabilului politicii |
Un agent poate propune o corecție după recuperare. Propunerea este o modificare software nouă. Nu trebuie să moștenească autoritate nelimitată de la controllerul de recuperare.
Controllerul nu trebuie nici să își editeze propriile criterii de reușită când o verificare eșuează. Altfel, sistemul poate raporta o îmbunătățire fără a îmbunătăți serviciul.
Scrieți politica de recuperare înainte de activare
Politica următoare este fictivă. Numerele sale ilustrează alegeri de proiectare; nu sunt valori implicite recomandate.
| Câmp al politicii | Regulă fictivă pentru workerul de export |
|---|---|
| Declanșator | Semnalul heartbeat al workerului lipsește timp de 90 de secunde și există lucru în coadă |
| Precondiții | Alt worker este sănătos; verificările dependențelor trec; nu există suspiciuni de compromitere sau probleme de integritate |
| Acțiune permisă | Înlocuiți un worker folosind artefactul aprobat în prezent |
| Protecția stării | Joburile folosesc stocare durabilă și o cheie de idempotență verificată |
| Limită | Cel mult două înlocuiri în 15 minute; niciodată mai mult de una simultan |
| Pauză | Așteptați cinci minute după înlocuire înainte de o nouă încercare |
| Reușită | Un job sintetic se termină corect, iar coada afectată începe să se golească |
| Oprire și escaladare | Orice precondiție nu este îndeplinită, limita este atinsă sau reușita nu poate fi verificată |
Folosiți o identitate cu privilegii minime. Consemnați versiunea politicii, dovezile declanșatorului, acțiunea, resursa și rezultatul. Oferiți o metodă independentă de dezactivare a controllerului. Definiți responsabilul uman care primește escaladarea.
Testați căile de eșec și recuperarea reușită
O reîncercare poate repeta un efect secundar. Un worker poate stoca un fișier și se poate opri înainte de confirmarea jobului. Verificați idempotența înainte de a permite altă execuție. Consultați exemplul de defecțiune cloud native.
Reîncercările pot și amplifica supraîncărcarea unei dependențe. Folosiți încercări limitate, timpi maximi de așteptare și întârzieri adecvate. Evitați reîncercările sincronizate în toate instanțele. AWS explică de ce backoff și jitter ajută la reducerea acestei amplificări. Ghidul reîncercărilor.
Testați politica fictivă pe trei cazuri. Un singur worker oprit trebuie recuperat. O întrerupere a bazei de date trebuie să împiedice înlocuirile repetate. O problemă incertă de integritate trebuie să oprească automatizarea și să ceară o decizie de răspuns.
Verificați și telemetria lipsă. Absența unui heartbeat poate însemna un worker defect sau o cale de colectare defectă. Controllerul are nevoie de dovezi suficiente pentru acțiunea sa, nu de încredere într-o explicație AI.
Măsurați dacă politica ajută
Consemnați recuperările verificate, încercările nereușite, escaladările, lucrul duplicat și timpul în care utilizatorii au fost afectați. Comparați-le cu metoda anterioară de operare, în condiții similare.
Păstrați defectul de bază ca lucru de inginerie. Repornirea repetată a unui proces cu pierderi de memorie poate reduce impactul imediat, în timp ce pierderea continuă. Continuați cu îmbunătățirea sistemului prin feedback pentru a lega observația de o corecție durabilă.
Faceți exercițiul
Proiectați o politică de recuperare pentru workerul fictiv de export din această lecție. Precizați declanșatorul, excluderile, acțiunea permisă, limita reîncercărilor, pauza dintre încercări, verificarea reușitei și responsabilul escaladării. Testați-o pentru o întrerupere a bazei de date și o problemă necunoscută de integritate a datelor.
Descărcați fișa de lucru (Markdown)Debifarea acestei opțiuni șterge tot progresul salvat în acest browser.
Progresul rămâne în acest browser. Fără cont, fără urmărire.
Surse și lecturi suplimentare
- Kubernetes: Self-Healing ↗
- AWS Builders’ Library: Timeouts, retries, and backoff with jitter ↗
- Google SRE: Automation at Google ↗