Lärstig 05Lektion 7 / 8

Sätt säkra gränser för självläkning

Automatisera kända återställningsåtgärder med uttryckliga befogenheter, verifiering och stoppvillkor. Skilj återställning i drift från ändringar av programvara.

Avancerad nivå12 minGranskad

Publicerad av Så skriver vi

Det här lär du dig

  • Skilj självläkning från en permanent korrigering av programvaran.
  • Definiera en avgränsad återställningspolicy och oberoende framgångskontroller.
  • Identifiera när automatiseringen måste stoppa och eskalera.

Återställ ett känt tillstånd

Självläkning upptäcker automatiskt ett definierat fel och försöker utföra en behörig återställningsåtgärd. Exempel kan vara att starta om en misslyckad process eller ersätta en instans som inte fungerar. Åtgärden måste passa felet och tjänstens tillståndsmodell.

Kubernetes kan ersätta misslyckade arbetslastinstanser och anpassa driften till deklarerat tillstånd. Det korrigerar inte felaktig applikationslogik eller varje lagringsfel. Återställning av infrastruktur och korrekt programvarubeteende behöver olika kontroller. Självläkning i Kubernetes.

Definiera målet före mekanismen. Att återställa en export innebär att arbete som omfattas slutförs korrekt. En container som körs är bara en förutsättning.

Skilj mellan tre slags ändringar

ÄndringExempelNödvändigt beslut
Återställning i driftErsätt en misslyckad tillståndslös workerEn förhandsgodkänd återställningspolicy kan ge behörighet till detta
ProgramvarukorrigeringRätta minnesläckan som stoppar workernGranskning, tester, releasekontroller och verifiering i produktion
PolicyändringÖka den tillåtna omstartstakten eller åtkomstens omfångUttryckligt godkännande från policyansvarig

En agent kan föreslå en korrigering efter återställningen. Förslaget är en ny programvaruändring. Det får inte ärva obegränsade befogenheter från återställningsstyrenheten.

Styrenheten får inte heller ändra sina egna framgångskriterier när en kontroll misslyckas. Annars kan systemet rapportera en förbättring utan att tjänsten förbättras.

Skriv återställningspolicyn innan den aktiveras

Följande policy är fiktiv. Siffrorna illustrerar designval; de är inte rekommenderade standardvärden.

PolicyfältRegel för den fiktiva export-workern
UtlösareWorkerns heartbeat saknas i 90 sekunder och det finns arbete i kön
FörutsättningarEn annan worker fungerar; beroendekontroller godkänns; inget misstänkt intrång eller integritetsfel finns
Tillåten åtgärdErsätt en worker med den för närvarande godkända artefakten
TillståndsskyddJobb använder beständig lagring och en verifierad idempotensnyckel
GränsHögst två ersättningar på 15 minuter; aldrig mer än en åt gången
VäntetidVänta fem minuter efter en ersättning före nästa försök
FramgångEtt syntetiskt jobb slutförs korrekt och den berörda kön börjar minska
Stoppa och eskaleraNågon förutsättning faller, gränsen nås eller framgång inte kan verifieras

Använd en identitet med minsta möjliga behörighet. Logga policyversion, underlag för utlösaren, åtgärd, resurs och resultat. Ge en oberoende möjlighet att stänga av styrenheten. Definiera vilken mänsklig ansvarig som tar emot en eskalering.

Testa felvägar och lyckad återställning

Ett återförsök kan upprepa en sidoeffekt. En worker kan lagra en fil och sedan stanna innan jobbet kvitteras. Verifiera idempotens innan en ny körning tillåts. Se felexemplet för cloud native.

Återförsök kan också förstärka belastningen på ett överbelastat beroende. Begränsa antalet försök, använd timeouter och lämplig backoff. Undvik synkroniserade återförsök i hela miljön. AWS förklarar varför backoff och jitter kan minska denna förstärkning. Vägledning för återförsök.

Testa den fiktiva policyn mot tre fall. En enskild stoppad worker ska återställas. Ett databasavbrott ska förhindra upprepade ersättningar. Ett osäkert integritetsfel ska stoppa automatiseringen och begära ett beslut om insats.

Kontrollera även saknad telemetri. Ett uteblivet heartbeat kan betyda att workern har fallerat eller att insamlingsvägen inte fungerar. Styrenheten behöver tillräckligt underlag för sin åtgärd, inte tilltro till en AI-förklaring.

Mät om policyn hjälper

Registrera verifierade återställningar, misslyckade försök, eskaleringar, dubblerat arbete och tid med användarpåverkan. Jämför med den tidigare driftmetoden under liknande förhållanden.

Behåll det underliggande felet som en utvecklingsuppgift. Upprepade omstarter av en process med minnesläcka kan minska den omedelbara påverkan medan läckan finns kvar. Fortsätt med självförbättring för att koppla observationen till en varaktig korrigering.

Gör övningen

Utforma en återställningspolicy för lektionens fiktiva export-worker. Ange utlösare, undantag, tillåten åtgärd, gräns för återförsök, väntetid, framgångskontroll och ansvarig för eskalering. Testa policyn mot ett databasavbrott och ett okänt dataintegritetsfel.

Ladda ned övningsblad (Markdown)

Kontrollera din förståelse

Styrenheten har startat om en worker två gånger. Kön fortsätter växa och databasen är inte åtkomlig. Vad ska policyn göra?

Källor och vidare läsning

Relaterad läsning från Taiga