Backupservern hade legat nere i en vecka

Jag höll på med något helt annat när jag råkade försöka nå backupservern. Den svarade inte.

Den hade inte svarat på en vecka. Ingen backup hade tagits på sju dygn. Ingenting hade larmat.

Halvdöd är värre än död

Det märkliga var tillståndet den befann sig i. Hypervisorn rapporterade maskinen som igång. Nätverksgränssnittet visade trafik. Den svarade till och med på tilltal på den lägsta nätverksnivån.

Men den vanliga nätverksstacken var död. Inga svar på ping, ingen inloggning, ingen webbtjänst. Gästen levde men kunde inte prata.

Det är det värsta av två världar. En maskin som är helt nere upptäcks direkt av det mest primitiva larm man har. En maskin som lever men är stum ser ut som en frisk maskin för allt som frågar hypervisorn — och som ett nätverksglapp för allt annat.

Varför ingenting larmade

Den obekväma delen: det fanns ingen övervakning alls på den maskinen. Ingen mall, ingen kontroll, inte ens ett enkelt ping.

Backupservern hade byggts, verifierats och sedan lämnats åt sig själv — precis som backup ska fungera, och därför exakt det som gör den osynlig. Ett system vars hela syfte är att arbeta i det tysta måste övervakas hårdare än andra, inte mindre.

Och det saknades den enda kontroll som hade fångat det oavsett orsak: ett larm på att det inte tagits någon backup på ett dygn. Inte ”servern svarar”, inte ”tjänsten är igång” — utfallet. Hade den funnits vore veckan en dag.

Åtgärden var pinsamt enkel: en kontrollerad omstart. Trettio sekunder senare svarade allt igen, lagringen var monterad, ingen data hade tagit skada. Sju dygns exponering för ett fel som tog en halv minut att lösa.

Det som hittades på vägen var värre

När jag ändå var inne passade jag på att kontrollera vad som faktiskt låg utanför huset. Svaret var nedslående.

  • En enda maskin replikerades till en annan fysisk plats — och just den kedjan hade dessutom misslyckats under samma vecka, av samma orsak.
  • En andra kopia till molnlagring var konfigurerad, skriptet fanns, målet fanns — men ingenting anropade det. Det hade inte kört på över två månader. Ingen rad någonstans startade det, och eftersom det aldrig kördes klagade det aldrig.
  • Allt övrigt låg på en enda lagringsenhet, i samma rum som servrarna den säkerhetskopierade.

Det sista är det som gör hela konstruktionen till en illusion. Backup som står bredvid originalet skyddar mot att någon råkar radera en fil. Den skyddar inte mot brand, inbrott eller att lagringsenheten själv går sönder — alltså exakt de scenarier man tar backup för.

Så vet du att det funkar

Larma på ålder, inte på tjänster. ”Senaste lyckade backup är äldre än ett dygn” är den enda kontroll som fångar alla orsaker: nere server, full disk, trasigt schema, borttappat jobb.

Kontrollera att det som ska köras faktiskt körs. Ett skript utan schemaläggning är en fil, inte en rutin. Leta efter senaste körningens tidsstämpel, inte efter att skriptet finns.

Peka på var kopian ligger. Kan du inte peka på en annan byggnad har du ingen katastrofplan, hur många kopior du än har.

Vad jag tar med mig

Jag har skrivit tidigare om system som slutar leverera utan att larma. Det här är samma sjukdom i sin renaste form: en tjänst som ingen saknar förrän man behöver den, och som därför får vara trasig hur länge som helst.

Den obehagliga frågan är inte hur den gick sönder. Den är hur länge den hade fått ligga om jag inte råkat titta av en annan anledning. Ärligt svar: tills jag behövt läsa tillbaka något.

Skrivet av Daniel Azzarri · Om · Alla inlägg