Ăven under en katastrof finns det alltid tid för en kopp te
DRP (disaster recovery plan) Àr en sak som i idealfallet aldrig behövs. Men om de migrerande boberna av en slump klipper huvudfiberkabeln eller en junior-administratör rÄkar ta bort en produktionsdatabas, vill du absolut vara sÀker pÄ att du har en förberedd plan för vad du ska göra med allt detta.
Medan kunderna i panik börjar ringa supporten, letar junioren efter cyanider, öppnar du med visdom det röda kuvertet och börjar fÄ ordning pÄ allt.
I det hÀr inlÀgget vill jag dela med mig av rekommendationer om hur man skriver en DRP och vad den bör innehÄlla. Dessutom kommer vi att gÄ igenom följande saker:
- Vi lÀr oss att tÀnka som en skurk.
- Vi kommer att diskutera fördelarna med en kopp te under apokalypsen.
- Vi planerar en bekvÀm struktur för DRP
- Vi ser pÄ hur den ska testas
För vilka företag det kan vara anvÀndbart
Det Àr mycket svÄrt att dra en grÀns nÀr IT-avdelningen börjar behöva sÄdana hÀr saker. Jag skulle sÀga att DRP verkligen Àr nödvÀndigt om:
- Stopp av server, applikation eller förlust av nÄgon databas kommer att leda till betydande affÀrsförluster i allmÀnhet.
- Du har en fullt fungerande IT-avdelning. Jag menar en avdelning som Àr ett fullvÀrdigt företag, med sin egen budget, och inte bara nÄgra trötta anstÀllda som drar nÀtverk, rengör virus och fyller pÄ skrivare.
- Du har en faktisk budget Ätminstone för delvis reservplanering i hÀndelse av en nödsituation.
NĂ€r IT-avdelningen i mĂ„nader ber om ens ett par HDD till den gamla servern för backup, Ă€r det osannolikt att ni kan organisera en fullstĂ€ndig överflyttning av den nedlagda tjĂ€nsten till reservkraft. Ăven hĂ€r Ă€r dokumentationen dock inte överflödig.
Dokumentation Àr viktig
Börja med dokumentationen. Anta att din tjÀnst körs pÄ ett Perl-script som skrevs för tre generationer av administratörer sedan, och ingen vet hur det fungerar. Den ackumulerade tekniska skulden och avsaknaden av dokumentation kommer oundvikligen att skjuta dig i knet och andra lemmar, det Àr snarare en tidsfrÄga.
NÀr du har en bra beskrivning av tjÀnstens komponenter, granska statistiken över incidenter. De kommer sannolikt att vara ganska typiska. Till exempel kan din disk dÄ och dÄ fyllas, vilket leder till att noden misslyckas tills den har rensats manuellt. Eller sÄ blir kundtjÀnsten otillgÀnglig för att nÄgon Äterigen glömde att förnya certifikatet, och ingen kunde eller ville stÀlla in Let's Encrypt.
TÀnk som en sabotör
Den svĂ„raste delen ligger i att förutsĂ€ga de incidenter som aldrig har intrĂ€ffat men som potentiellt kan slĂ„ ut din tjĂ€nst helt. HĂ€r brukar vi vanligtvis leka skurkar med kollegor. Ta mycket kaffe och nĂ„got gott och lĂ„s in er i mötesrummet. Se bara till att ni ocksĂ„ lĂ„ser in de ingenjörer som sjĂ€lva har byggt den aktuella tjĂ€nsten eller som jobbar med den regelbundet. Sedan börjar ni antingen pĂ„ en tavla eller pĂ„ papper att rita alla möjliga skrĂ€cksituationer som kan hĂ€nda med er tjĂ€nst. Det Ă€r inte nödvĂ€ndigt att gĂ„ in pĂ„ detaljer om en viss stĂ€derska som drar ur kablar, det rĂ€cker med att övervĂ€ga scenariet "ĂvertrĂ€delse av det lokala nĂ€tverkets integritet".
Vanligtvis faller de flesta typiska incidenter inom följande kategorier:
- NĂ€tverksfel
- Fel i operativsystemets tjÀnster
- Applikationsfel
- HÄrdvarufel
- Virtualiseringsfel
Du gĂ„r helt enkelt igenom varje kategori och ser vad som Ă€r tillĂ€mpligt för din tjĂ€nst. Till exempel kan Nginx-processen krascha och inte starta igen â det Ă€r ett OS-fel. En sĂ€llsynt situation som gör att din webbapplikation gĂ„r ner Ă€r en programvarufel. Under detta steg Ă€r det viktigt att arbeta med problemdiagnos. Hur skiljer man en hĂ€ngande grĂ€nssnitt pĂ„ virtualisering frĂ„n en nedfallen switch och ett nĂ€tverksfel, till exempel. Detta Ă€r viktigt för att snabbt kunna identifiera ansvariga och börja driva dem tills incidenten Ă€r Ă„tgĂ€rdad.
NÀr de typiska problemen har skrivits ner, hÀller vi mer kaffe och börjar övervÀga de mest ovanliga scenarierna nÀr vissa parametrar börjar avvika kraftigt frÄn normen. Till exempel:
- Vad hÀnder om tiden pÄ den aktiva noden flyttas en minut tillbaka i förhÄllande till de andra i klustret?
- Och om tiden flyttas framÄt, vad om det Àr i 10 Är?
- Vad hÀnder om klusternoden plötsligt förlorar nÀtverket under synkroniseringen?
- Vad hÀnder om tvÄ noder inte kan dela ledarskapet pÄ grund av tillfÀllig isolering frÄn varandra i nÀtverket?
I det hĂ€r skedet Ă€r det vĂ€ldigt hjĂ€lpsamt att anvĂ€nda en bakvĂ€nd metod. Ta den mest besatta medlemmen i teamet med en sjuk fantasi och ge dem en uppgift att pĂ„ kort tid orsaka en avvikelse som förstör tjĂ€nsten. Om den Ă€r svĂ„r att diagnostisera â Ă€nnu bĂ€ttre. Du kommer inte att tro vilka konstiga och coola idĂ©er ingenjörerna kommer med om du ger dem en idĂ© om att förstöra nĂ„got. Och om du lovar dem en testmiljö för detta â riktigt bra.
Vad Àr det hÀr DRP:et ni pratar om?!
SÄ ni har definierat hotmodellen. Ni har tagit hÀnsyn till lokala invÄnare som skÀr fiberkablar i jakt pÄ koppar, och den militÀra radarn som slÀpper en radiolÀnk strikt pÄ fredagar klockan 16:46. Nu mÄste ni förstÄ vad ni ska göra med allt detta.
Er uppgift Àr att skriva de dÀr röda kuverten som kommer att öppnas i en nödsituation. RÀkna direkt med att nÀr (inte om!) allt gÄr fel, kommer bara den mest oerfarna praktikanten att finnas i nÀrheten, med hÀnder som skakar av skrÀck över vad som hÀnder. Titta pÄ hur nödsituationer Àr implementerade i medicinska kontor. Till exempel, vad man ska göra vid anafylaktisk chock. Medicinsk personal kan allt om protokollen utantill, men nÀr nÄgon börjar dö i nÀrheten, grabbar man ofta förtvivlat efter allt möjligt. För detta hÀnger det en tydlig instruktion pÄ vÀggen med punkter som "öppna förpackningen av det dÀr" och "ge intravenöst sÄ mÄnga enheter av lÀkemedlet".
I en nödsituation Àr det svÄrt att tÀnka! Det mÄste finnas enkla instruktioner för att bearbeta med ryggmÀrgen.
Ett bra DRP bestÄr av nÄgra enkla block:
- Vem ska informeras om att en nödsituation har intrÀffat. Detta Àr viktigt för att maximalt kunna parallellisera processen för att ÄtgÀrda.
- Hur man korrekt diagnostiserar â vi utför spĂ„rning, kollar systemctl status servicename och sĂ„ vidare.
- Hur mycket tid man kan spendera pĂ„ varje steg. Om du inte hinner fixa det manuellt inom SLA-tiden â stĂ€ngs den virtuella maskinen av och en backup frĂ„n igĂ„r rullas tillbaka.
- Hur man sÀkerstÀller att nödsituationen Àr avslutad.
Kom ihÄg att DRP börjar nÀr tjÀnsten helt har slutat fungera och avslutas nÀr funktionaliteten har ÄterstÀllts, Àven med minskad effektivitet. Bara förlust av reservkapacitet bör inte aktivera DRP. Du kan Àven skriva in en kopp te i DRP. Seriöst. Statistik visar att mÄnga incidenter frÄn obehagliga situationer blir katastrofala eftersom personalen, i panik, börjar försöka fixa nÄgot, vilket kan döda den enda aktiva noden med data eller slutligen förstöra klustret. Vanligtvis ger 5 minuter för att ta en kopp te dig lite tid att lugna ner dig och analysera vad som hÀnder.
Blanda inte ihop DRP med systemets pass! Ăverbelasta det inte med onödiga data. Ge bara möjligheten att snabbt och enkelt navigera via hyperlĂ€nkar till rĂ€tt avsnitt av dokumentationen och lĂ€sa i ett utökat format om de nödvĂ€ndiga delarna av tjĂ€nstens arkitektur. I sjĂ€lva DRP: n ska det bara finnas direkta instruktioner om vart och hur man ansluter sig med specifika kommandon för kopiering och klistring.
Hur man testar korrekt
Se till att varje ansvarig person kan utföra alla punkter. I det mest kritiska ögonblicket kan det visa sig att ingenjören inte har behörighet till det nödvÀndiga systemet, att lösenord saknas för det nödvÀndiga kontot, eller att han inte har en aning om vad "Anslut till tjÀnstens kontrollpanel via proxy i huvudkontoret" betyder. Varje punkt ska vara fullstÀndigt enkel.
Felaktigt â "GĂ„ in pĂ„ virtualiseringen och starta om den döda noden"
RĂ€tt svar â "Anslut till virt.example.com via webbgrĂ€nssnittet, gĂ„ till nodavsnittet och utför omstart av den nod som ger fel."
Undvik tveksamheter. TÀnk pÄ den skrÀmda praktikanten.
Testa alltid DRP. Det Ă€r inte bara en plan för att bocka av â det Ă€r vad som gör att du och dina kunder snabbt kan komma ur en kritisk situation. Det Ă€r optimalt att göra detta flera gĂ„nger:
- En expert och flera praktikanter arbetar pÄ en testmiljö som sÄ mycket som möjligt imiterar den verkliga tjÀnsten. Experten bryter tjÀnsten pÄ olika sÀtt och ger praktikanterna möjlighet att ÄterstÀlla den enligt DRP. Alla problem, oklarheter i dokumentationen och fel noteras. Efter utbildningen av praktikanterna kompletteras och förenklas DRP pÄ oklara stÀllen.
- Testning pÄ en verklig tjÀnst. Det gÄr faktiskt aldrig att skapa en perfekt kopia av en riktig tjÀnst. DÀrför Àr det nödvÀndigt att planera för att stÀnga av en del av servrarna ett par gÄnger om Äret, bryta anslutningar och orsaka andra incidenter frÄn hotlistan för att utvÀrdera ÄterstÀllningsprocessen. BÀttre med en planerad incident pÄ 10 minuter mitt i natten Àn en plötslig nedgÄng i flera timmar under högbelastning med dataförlust.
- Verklig incidentutredning. Ja, det Àr ocksÄ en del av testningen. Om en incident intrÀffar som inte fanns med pÄ hotlistan, mÄste DRP uppdateras och revideras baserat pÄ resultatet av utredningen.
Nyckelpunkter
- Om nÄgot kan gÄ fel, kommer det inte bara att gÄ fel, utan det kommer att göra det pÄ det mest katastrofala sÀttet.
- Se till att du har resurser för att omdirigera belastningen vid incidenter.
- Se till att du har sÀkerhetskopior, de ska skapas automatiskt och regelbundet kontrolleras för konsistens.
- TĂ€nk ut typiska hot-scenarier.
- Ge ingenjörerna möjlighet att tÀnka ut ovanliga sÀtt att lamslÄ tjÀnsten.
- DRP bör vara en enkel och rak instruktion. All komplicerad diagnostik kommer först efter att tjĂ€nsten har Ă„terstĂ€llts för kunderna. Ăven om det Ă€r med reservkapacitet.
- Ange nyckeltelefoner och kontakter i DRP.
- Testa regelbundet anstÀllda pÄ deras förstÄelse av DRP.
- Genomför planerade incidenter i produktion. Testmiljöer kan inte ersÀtta allt.
KĂ€lla: habr.com
