I den hÀr artikeln vill jag visa hur enkelt och gratis man kan skapa en failover-schema för en webbplats (eller vilken annan internettjÀnst som helst) med hjÀlp av övervakning och en dynamisk DNS-tjÀnst. Det vill sÀga, vid eventuella problem med den primÀra webbplatsen (frÄn "PHP Error" pÄ sidan till brist pÄ utrymme eller bara ett misstÀnkt lÄgt antal bestÀllningar i fallet med en webbutik), kommer nya besökare att dirigeras till en andra (tredje och sÄ vidare) fungerande server, eller till en "TyvÀrr"-sida dÀr de artigt förklarar att "det Àr ett problem, vi Àr medvetna om det och ÄtgÀrdar det, snart fixar vi det" (och i detta fall kommer du faktiskt redan vara medveten och kunna ÄtgÀrda det).
Att leva med failover eller utan?
Innan nÄgon problem uppstÄr finns det ingen större skillnad. Men nÀr det vÀl hÀnder, sker ofta följande utan failover: du försöker snabbt lista ut vad problemet Àr, men det gÄr inte (backupen gÄr inte att ÄterstÀlla, mjukvaran fungerar pÄ nÄgot sÀtt inte som den ska enligt dokumentationen osv), och det finns ingen tid, servrar/webbplatser ligger nere, kunderna ringer, alla Àr nervösa, du försöker fixa det grovt och fult "med tejp", sedan verkar det som om det fungerar med provisoriska lösningar. Du tÀnker att du mÄste titta nÀrmare pÄ det i lugn och ro och göra allt snyggt, men inget Àr mer permanent Àn det temporÀra.
SÄ hÀr gÄr det till i den snygga varianten med failover:
- Ett fel intrÀffar
- Felet upptÀcks automatiskt
- En avisering skickas ut
- Bytet till en av de reservservrarna görs
- Problemet hanteras lugnt och utan panik, ÄtgÀrdas och servern sÀtts tillbaka i drift.
I den hÀr schemat kan det förstÄs ocksÄ uppstÄ vissa problem, men trots allt Àr schemat linjÀrt, varje steg Àr enkelt och det viktigaste - det kan testas och justeras separat, sÄ chansen för fel i detta schema Àr betydligt lÀgre, och alla ÄtgÀrder kan automatiseras och utföras snabbt (till skillnad frÄn uppgiften att hitta och ÄtgÀrda en okÀnd episk bugg). Ditt flygplan har landat i ett avlÀgset land, du slÄr pÄ telefonen och ser i Telegram att servern har kraschat, men allt Àr bra, den reservservern har aktiverats, du kan fortsÀtta din resa, du behöver varken flyga tillbaka eller fixa via SSH frÄn det nÀrmaste caféet med WiFi. Du kan ta itu med det nÀr det Àr bekvÀmare.
Framtiden Àr redan hÀr!
Tidigare var det huvudsakliga problemet som ofta gjorde failover till en oacceptabel lösning kostnaden för det. Antingen var man tvungen att köpa dyra hÄrdvaror (och anlita Ànnu dyrare specialister). Eller sÄ fick man kludda ihop nÄgot komplicerat enligt guider (jag har till och med stött pÄ en lösning dÀr tvÄ servrar kopplas samman med en null-modem-kabel, och skickar heartbeat över den, sÄ att reservservern vet nÀr det Àr dags att ta över). Nu finns det enklare och gratis metoder. Om du har en webbplats med katter - du har ingen ursÀkt om du Ànnu inte har implementerat failover för den!
Dessutom behöver du Ànnu en server (eller möjligtvis fler) för en failover-lösning, och tidigare var detta en stor kostnad, nu kan du fÄ en VDS för en spottstyck.
Den mest pÄlitliga webbsidan med katter
För att praktiskt illustrera lösningen med okerr + dynamic dns har vi lanserat vÄr egen webbplats med katter . Vi hatar katter, sÄ det kommer knappt att finnas nÄgra dÀr. Det finns totalt tre webbplatser, som alla ser ungefÀr likadana ut (alla pÄ samma mall), men med olika kattungar sÄ att det Àr lÀtt att skilja dem Ät, och varje skriver teknisk information för att visa hur failover fungerar. Sidan uppdateras automatiskt en gÄng i minuten, men man kan alltid trycka pÄ reload i webblÀsaren.
I den tekniska informationen finns det en rad âstatus=OKâ. Ibland simulerar servrar problem och skriver status=ERR. Huvudservern "faller" liksom pĂ„ 20 minuter varje timme (0:20, 1:20, 2:20, âŠ). Reservservern (backup) gör det pĂ„ 40 minuter. Den sista servern (âsorryâ-server) Ă€r alltid aktiv. Vid 0 minuter varje timme, "Ă„terstĂ€lls" huvud- och reservservern.

Om du öppnar webbplatsen och lĂ€mnar den i fliken â kommer du att se att den aldrig gĂ„r ner (Ă€ven om varje enskild server periodiskt simulerar ett problem), och i hĂ€ndelse av en serverproblem, hoppar den helt enkelt mellan aktiva servrar. Bilden, namnet och adressen till servern och dess roll kommer att förĂ€ndras. Ibland kan du fĂ„nga ett ögonblick nĂ€r status=ERR (det finns redan ett problem, men hela failover-schemat har Ă€nnu inte aktiverats), men nĂ€sta uppdatering kommer att visa dig en sida frĂ„n den fungerande webbplatsen.
Failover pÄ okerr + dynamisk DNS
LÄt oss se hur detta fungerar under huven. Syftet med failover-systemet Àr att adressen cat.okerr.com alltid pekar pÄ IP-adressen för den aktiva servern.
Bakom varje server som hÄller vÄr kattwebbplats pÄ okerr finns en indikator som kontrollerar dess status varje minut.

PĂ„ den hĂ€r skĂ€rmen ser vi hur webbplatsen cat.okerr.com kontrolleras frĂ„n servern alpha.okerr.com. Sidan ska innehĂ„lla status=OK, och som vi ser högst upp, Ă€r indikatorns status just nu OK. NĂ€r servern âgĂ„r sönderâ kommer det att bli ERR. (Detta Ă€r bara ett exempel pĂ„ en indikator, okerr â Ă€r övervakning, sĂ„ du kan fĂ€sta vilken typ av indikator som helst, till exempel kontrollera ledigt utrymme pĂ„ disken, antalet nya bestĂ€llningar i databasen, och Ă€ven logiska indikatorer, exempelvis kommer det att finnas olika felkriterier pĂ„ natten och pĂ„ dagen).
I projektinstÀllningarna skapade vi en failover-plan med dessa indikatorer:

I schemat finns tre indikatorer (tre servrar) med olika prioriteringar. Huvudservern för webbplatsen Ă€r charlie, om den inte fungerar (det kommer inte att finnas âstatus=OKâ eller den Ă€r helt enkel otillgĂ€nglig), dĂ„ Ă€r det bravo och i sista hand â alpha. PĂ„ höger sida av sidan visas statusen för DNS-posterna pĂ„ olika servrar.
För dem som har lagt mÀrke till att namnet cat.he.okerr.com anvÀnds: Vi anvÀnder ett nÄgot mer komplex schema. IstÀllet för att bara Àndra DNS-posten cat.okerr.com, Àndrar vi cat.he.okerr.com (pÄ den dynamiska DNS-leverantören ), och cat.okerr.com Àr en CNAME (alias), som inte Àndras, alltid pekar pÄ cat.he.okerr.com. Vi gillar helt enkelt Hurricane mer som dynamisk DNS, och de har nycklar för att hantera enskilda poster (inte hela zonen), vilket verkar sÀkrare för oss. Du kan ocksÄ undvika att ange lösenord eller nycklar för att hantera hela domÀnen i okerr, utan bara för underdomÀnen eller posten.
FrÄn fall till ÄterhÀmtning
Steg för steg, hur detta schema fungerar:
- Ett problem uppstÄr (simuleras) pÄ servern
- Sensorn okerr kontrollerar tillstÄndet för varje server en gÄng per minut och rapporterar till huvudservern för projektet i okerr.
- Indikatorn för den aktuella servern Àndrar tillstÄnd frÄn OK till ERR.
- Vid Àndring av indikatorns status omberÀknas failover, och det berÀknas vilken adress som ska stÀllas in (om det behövs. Till exempel, om den primÀra servern fungerar medan den sekundÀra har kraschat, blir det inga Àndringar).
- Denna adress rapporteras till den dynamiska DNS-tjÀnsten. NÀr detta steg Àr klart ser du status 'synced' till höger.
- Mycket snart (inom sekunder) kommer posten att nÄ DNS-servrarna för din domÀn (i ditt fall ns1-ns5.he.net).
- FrÄn och med detta ögonblick kommer vissa anvÀndare redan att gÄ till den nya aktiva servern. Men Ànnu har inte alla DNS-servrar i vÀrlden uppdaterat posterna, och pÄ vissa stÀllen kan den gamla posten fortfarande vara cachad. Du kan se hur data pÄ offentliga DNS-servrar 'dansar', visar bÄde den nya och den gamla vÀrden. Om du uppdaterar failover-instÀllningssidan kommer okerr att begÀra nya data frÄn DNS-servrarna.
- Efter att uppgifterna har stabiliserats och den gamla cachade posten har förÄldrats pÄ alla stÀllen - gÄr 100 % av förfrÄgningarna till den nya servern.
För att snabba upp steg 7 (ofta den lÀngsta) bör TTL för den dynamiska DNS-posten sÀttas sÄ lÄgt som möjligt. Vanligtvis tillÄter tjÀnster intervall mellan 90-120 sekunder. Detta Àr en fullt rimlig kompromiss.
Ytterligare
Allt detta kan konfigureras pÄ en kvÀll (om du redan har en duplicerande server). BÄde okerr och de dynamiska DNS-tjÀnsterna Àr gratis. För att fÄ fler kontroller i okerr och kortare kontrollintervall mÄste du genomgÄ en utbildning (frÄn profilen). Efter att ha genomgÄtt utbildningen ökar nivÄn direkt (20 indikatorer per timme + 1 snabb, 10 minuter). Om detta Àr för lite - skriv till support@okerr.com, det Àr troligtvis möjligt att öka (hittills har det alltid funnits möjlighet, ingen har nÄgonsin nekat, snarare har de erbjudit sig). Jag vill bara inte lova allt till alla frÄn början, jag Àr osÀker pÄ att resurserna rÀcker för att hÄlla mitt löfte. Men för tillfÀllet Àr antalet anvÀndare lÄgt, sÄ det finns inga problem med att öka grÀnserna.
Vad okerr kan överhuvudtaget - kolla pĂ„ webbplatsen. . Ăverhuvudtaget Ă€r detta övervakning (zabbix frĂ„n molnet), och failover Ă€r en trevlig extra funktion. Du kan ocksĂ„ besöka demon pĂ„ webbplatsen utan registrering.
NÀr indikatorns status Àndras - skickas en notifikation via e-post eller Telegram. (Vi har tittat pÄ vad som hÀnder och har kommit fram till att, verkar det som, Telegram Àr den mest pÄlitliga meddelandetjÀnsten. Tack till RKN för stresstestet!) Vid rÀtt instÀllning av okerr, Àr varje notifikation antingen ett tecken pÄ "slÀpp allt, det mÄste ÄtgÀrdas!", eller "Äterkallelse!". Det ska inte finnas nÄgra onödiga alerter frÄn okerr (om det finns, behöver instÀllningarna justeras pÄ nÄgot sÀtt). Till exempel, för vÄr kattwebbplats simulerar servern alpha aldrig ett fel. Om den gÄr ner - mÄste vi veta. Men de andra servrarna simulerar konstant fel, sÄ för att inte fÄ alerter flera gÄnger i timmen, har de indikatorerna status "tyst".
Det Àr ocksÄ vÀrt att skapa en sorry-server (pÄ den billigaste hostingtjÀnsten), som antingen kommer ha din ursÀktssida (ifall alla huvud- och reservservrar gÄr ner) eller omdirigera till den statusidan pÄ okerr (till exempel vÄr ) eller statuspage.io.
KĂ€lla: habr.com
