Incident report 24-06-2017: SAN nedbrud

Hermed følger en “teknisk” forklaring på weekendens driftproblemer.

UnoEuro drives på en række SAN-systemer. Et SAN er en kæmpe samling diske som bruges fælles på tværs af mange maskiner. SAN14, som er det SAN der havde problemer, har eksempelvis over 245 harddiske (i alt 213 TB).

Normalt er al data på et SAN spredt ligeligt ud over alle disse diske, for at sikre optimal performance og redundans.

På et tidspunkt fredag aften dør der en disk i SAN14. Det er normalt aldrig et problem, men denne gang får det desværre alvorlige konsekvenser. Da SAN’et gerne vil rebuilde data, pga. den døde harddisk, rebuilder den det forkert, så alle skrivninger på hele SAN’et lander på 2 diske, i stedet for på 140 diske. Dette alene, gjorde at servere på SAN14 blev langsomme.

For at løse problemet, med de 2 diske, beder Dell os ‘prune’ disse diske, dvs. tømme dem og dermed sprede data ud over hele SAN’et igen. Da disse 2 diske er ekstremt pressede, pga. alle de skrivninger der laves til dem, er denne ‘prune’-process enormt langsom. Da prune-processen starter bliver svartiden på SAN’et med det samme eksponentielt dårligere, så data derpå bliver praktisk talt ubrugeligt. Dette betyder at mange UnoEuro servere enten går ned eller bliver langsomme, inkl mailsystemet som også ligger på det SAN. Der er tale om cirka 49 webservere (blandet PHP og ASP) og 9 MySQL servere.

Mailsystemet kommer dog forholdsvis hurtigt i normal drift igen, da det ligger godt i forhold til prune-processen.

Efter cirka 50% kan vi pludselig se at prune-processen kommer til at tage lang tid, på et tidspunkt var ‘estimate’ omkring 4000 timer, hvilket selvfølgelig var helt uacceptabelt. For at give flere ressourcer til at SAN’et kunne færdiggøre prune-processen, og derved komme tilbage til normal performance, blev vi derfor nødt til både at slukke for en masse maskiner på SAN’et samt flytte en masse maskiner væk til andre SAN-systemer. Flytningen af servere var naturligvis også langsom, da SAN’et stadig var langsomt. I det hele taget en helt forfærdelig situation at stå i.

Selv efter serverne er kommet op igen lørdag aften, er performance stadig uacceptabel. Samtidig er SAN14 endnu ikke ‘healthy’, dvs. vi stoler ikke på det kan køre stabilt i den tilstand det er i, og vi er bekymret for mulig fremtidig datatab. Natten til søndag vælger vi derfor at slukke for alle ikke-systemkritiske servere der bruger SAN14, for at give SAN’et natten over til at færdiggøre prune-processen. Søndag morgen er performance tilbage til omkring 90% og de sidste 10% forventer vi at have klar inden for et par dage. Ingen data er gået tabt i processen.

For at gøre det hele værre, havde vi allerede planlagt at flytte alt væk fra SAN14 inden for de næste 6 måneder, da vi er ved at udskifte den bagvedliggende infrastruktur. Det er selvfølgelig en process som vil blive fremskyndet efter weekendens hændelser.

Store systemer, store problemer.

Alt dette er en forholdsvis simplificeret version af hvad der skete, der er selvfølgelig sket en masse komplicerede ting og beslutninger undervejs, som er svære at beskrive eller blot glemt i farten :)
Vi er klar over vores kunder har været frustreret, det har vi også været. Vi håber denne driftsrapport viser at vi har gjort alt hvad vi kan for at mindske nedetid, datatab og for at komme dette problem til livs så hurtigt som muligt. At drive webhosting er ikke så simpelt som skulle tro :)

Tidslinje

Fredag 20:06
En disk dør i SAN14 og SAN’et starter automatisk en rebuild.

Fredag 23:50
Alle servere på SAN14 begynder at køre dårligt fordi SAN’et er ved at køre et restripe, som resultat af den døde disk.

Lørdag 10:01
Vi vælger at slukke en række webservere for at sætte fart på at SAN’et får ‘rebuildet’ færdigt.

Lørdag 10:52
Dell melder at prune-processen er på 95135/139693, ETA 6 timer (hvis bare).
(Det er meningen det skal være 0/139693)

Lørdag 11:42
Vi begynder at se forbedringer i performance nu, især mailsystemet kører bedre.

Lørdag 11:55
Mail lader til at være fuldt kørende igen. Den kø der er opstået er ved at blive afviklet nu.

Lørdag 12:27
Mailkøen er afviklet og al mail er i normal drift igen

Lørdag 12:34
Vi er ved at diskutere med Dell om vi kan tænde for webserverne igen.

Lørdag 13:03
Vi er så småt ved at starte webservere nu.
Prune-processen er på 84765/139693.

Lørdag 13:30
Prune-processen er på 84732/139693.

Lørdag 14:18
Der er stadig problemer med dele af det beskadiget array, så mange webservere kan ikke komme online før rebuild er færdig. Vi prøver at få så mange servere op som vi kan.
Prune-processen er på 84711/139693.

Lørdag 14:50
Prune-processen er på 84698/139693 (Ja, det går fucking langsomt).

Lørdag 15:20
Prune-processen er på 84682/139693.

Lørdag 16:51
Vi er ved at flytte maskiner væk fra det berørte SAN for at frigøre kapacitet til at starte flere webservere.

Lørdag 17:59
Vi er stadig ved at frigøre ressourcer til at kunne få de sidste servere online.
Prune-processen er på 72733/139693.

Lørdag 18:35
Nogle flere servere er startet.

Lørdag 19:40
Alle servere er startet og i drift. Der er stadig nedsat performance.

Søndag 00:30
For at kunne rebuild SAN’et er vi desværre nødt til at slukke for nogle servere natten over.

Søndag 07:30
Alt online igen.

 

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *