Enkel failover för webbplats (övervakning + dynamisk DNS)

I den här artikeln vill jag visa hur enkelt och gratis du kan göra ett failover-schema för en webbplats (eller någon annan internettjänst) med en kombination av övervakning okerr och dynamisk DNS-tjänst. Det vill säga, i händelse av problem med huvudsajten (från ett problem med ett "PHP-fel" på sidan, till brist på utrymme eller helt enkelt ett misstänkt litet antal beställningar i fallet med en onlinebutik), kommer nya besökare dirigeras till den andra (tredje, och så vidare) ytterligare) en känd fungerande server, eller på sidan "Förlåt", där de artigt kommer att förklara att "det finns ett problem, vi är redan medvetna om det och fixar det redan, vi kommer att fixa det snart” (och i det här fallet är du faktiskt redan insatt och kan reparera).

Att leva med failover eller utan?

Tills något problem uppstår är det inte så stor skillnad. Men när det händer, utan failover, händer ofta följande: du försöker snabbt ta reda på vad problemet är, det fungerar inte (säkerhetskopior distribueras inte, programvaran av någon anledning fungerar inte som den ska från dokumentationen , etc.), men det finns ingen tid, ingen server - sajterna ligger runt, kunder ringer, alla är på kant, du försöker på något sätt fixa det grovt och smutsigt "med tejp", sedan på något sätt verkar det starta upp med kryckor och liv. Du tror att du på fritiden kommer att behöva reda ut det mer i detalj och göra om allt vackert, men det finns inget mer permanent än tillfälligt.

Nu, hur detta händer i en vacker version med en filer:

  • Ett misstag händer
  • Felet upptäcks automatiskt
  • Varning skickas ut
  • Byte till en av backupservrarna överförs
  • Lugnt och utan panik löses problemet, åtgärdas och servern sätts i drift igen.

Detta schema kan naturligtvis också ha sina egna problem, men ändå är schemat linjärt, varje steg är enkelt och huvudsaken är att det kan felsökas separat, så risken för misslyckande med detta schema är mycket lägre, och alla åtgärder kan automatiseras och utföras snabbt (till skillnad från uppgiften att hitta och fixa okänt episk skit). Ditt plan har landat i ett avlägset land, du slår på din telefon och ser ett meddelande i ett telegram om att servern har kraschat, men allt är bra, backupservern har aktiverats, du kan fortsätta din resa, du behöver inte att flyga tillbaka eller reparera den via SSH från närmaste kafé med WiFi . Du kommer att ta reda på det när det är bekvämare.

Framtiden är redan här!

Tidigare var huvudproblemet som ofta gjorde failover till en oacceptabel lösning hur mycket kostnaden det kostar. Eller så var det nödvändigt att köpa dyr hårdvara (och bjuda in ännu dyrare specialister). Eller kollektivgård något komplicerat enligt guiderna (jag stötte till och med på ett alternativ där två servrar dessutom är anslutna med en nollmodemkabel, och de skickar ett hjärtslag genom den, så att backupservern vid rätt tidpunkt känner igen det och tar över kontrollera). Nu finns det enklare och gratis sätt. Om du har en webbplats med katter finns det ingen ursäkt för dig att inte implementera failover för den ännu!

Tja, dessutom, för ett failover-schema behöver du en annan server (och kanske mer än en) och innan var detta en stor kostnad, nu kan du få en VDS för slantar.

Den mest pålitliga sidan med katter

För att praktiskt illustrera lösningen med okerr + dynamisk dns lanserade vi vår hemsida med katter cat.okerr.com. Vi hatar katter, så det blir inte många av dem där. Det finns tre platser totalt, var och en ser ungefär likadan ut (alla på samma mall), men med olika kattungar för att göra det lätt att urskilja, och var och en skriver teknisk information för att se hur failover fungerar. Sidan uppdaterar sig själv en gång var 1:e minut, men du kan alltid klicka på ladda om i webbläsaren.

I den tekniska informationen finns en rad "status=OK". Ibland låtsas servrar problem och skriver status=ERR. Huvudservern "verkar krascha" 20 minuter varje timme (0:20, 1:20, 2:20, …). Backupserver på 40 minuter. Den sista servern ("förlåt" servern) är alltid igång. Vid 0 minuter varje timme "återställs" huvud- och backupservrarna.

Enkel failover för webbplats (övervakning + dynamisk DNS)

Om du öppnar sidan och lämnar den i fliken kommer du att se att den aldrig kraschar (även om varje enskild server periodvis simulerar ett problem), och i händelse av problem med servern "körs" den helt enkelt mellan liveservrar. Bilden, namnet och adressen för servern och dess roll kommer att ändras. Ibland kan du fånga ögonblicket när status = ERR (problemet finns redan, men hela failover-schemat har ännu inte fungerat), men nästa uppdatering kommer att visa dig en sida från arbetsplatsen.

Failover på okerr + dynamisk DNS

Låt oss se hur det fungerar under huven. Filarens uppgift är att se till att cat.okerr.com-adressen alltid pekar på IP-adressen för den fungerande servern.
Bakom var och en av servrarna som är värd för vår kattsajt i okerr finns en indikator som kontrollerar dess status en gång i minuten.

Enkel failover för webbplats (övervakning + dynamisk DNS)

I den här skärmdumpen ser vi hur sajten cat.okerr.com kontrolleras från alpha.okerr.com-servern. Sidan ska innehålla status=OK, och som vi ser ovan är vår indikatorstatus OK nu. När servern "går sönder" kommer det att uppstå ett ERR. (Detta är bara ett exempel på en indikator, okerr övervakar, så du kan bifoga vilken typ av indikator som helst, till exempel kontrollera ledigt utrymme på disken, antalet nya beställningar i databasen och även logiska indikatorer, till exempel , på natten kommer det att finnas vissa felkriterier, och under dagen andra).

I projektinställningarna skapade vi ett failover-schema med dessa indikatorer:

Enkel failover för webbplats (övervakning + dynamisk DNS)

Systemet har tre indikatorer (tre servrar), olika i prioritet. Huvudservern för sajten är charlie, om den inte fungerar (den kommer inte att ha "status=OK" eller är helt enkelt otillgänglig), då bravo och i det senare fallet - alpha. Den högra sidan av sidan visar statusen för DNS-posten på olika servrar.

För de som märkt att namnet cat.he.okerr.com används: Vi använder ett lite mer komplext schema. Istället för att bara ändra DNS-posten för cat.okerr.com, ändrar vi cat.he.okerr.com (på Dynamic DNS-leverantören Orkanen Electric), och cat.okerr.com är ett CNAME (alias), som inte ändras, pekar alltid på cat.he.okerr.com. Vi gillar bara Hurricane bättre som en dynamisk DNS, och den har nycklar för att hantera en enda ingång (snarare än en hel zon), vi tror att det är säkrare. Du behöver inte heller ange nyckellösenord i okerr för att hantera hela domänen, utan bara för en underdomän eller post.

Från att falla till att stiga

Steg för steg hur detta schema fungerar:

  1. Ett problem uppstår (simulerat) på servern
  2. Okerr-sensorn kontrollerar statusen för varje server en gång i minuten och rapporterar till huvudprojektservern i okerr
  3. Motsvarande serverindikator ändras från OK till ERR
  4. När statusen för indikatorn ändras, beräknas failover om, och det beräknas vilken adress som behöver ställas in (om det behövs. Till exempel, om huvudservern fungerar, och samtidigt som backupservern dog, kommer inga ändringar att göras gjord)
  5. Denna adress rapporteras till den dynamiska dns-tjänsten. När det här steget är klart ser du statusen "synkroniserad" till höger.
  6. Mycket snart (sekunder) kommer posten att nå DNS-servrarna på din domän (för kattsidan är det ns1-ns5.he.net).
  7. Från och med detta ögonblick kommer vissa användare redan att vara på den nya liveservern. Men inte alla DNS-servrar i världen har uppdaterat posterna ännu, och den gamla posten kan fortfarande vara cachad någonstans. Du kan se hur data på offentliga DNS-servrar "dansar" och visar antingen ett nytt eller gammalt värde. Om du uppdaterar failover-konfigurationssidan kommer operatören själv att begära ny data från DNS-servrarna.
  8. Efter att data har stabiliserats är den gamla cachade posten ruttet överallt - alla 100 % av förfrågningarna går till den nya servern.

För att påskynda 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 intervaller på 90-120 sekunder. Detta är en helt rimlig kompromiss.

dessutom

Allt detta kan konfigureras på en kväll (om du redan har en backupserver). Både okerr och dynamiska DNS-tjänster är gratis. För att få fler checkar i okerr och en kortare verifieringsperiod måste du genomföra utbildning (från din profilsida). När det är klart ökar nivån omedelbart (20 indikatorer per timme + 1 snabb, 10 minuter). Och om det är få av dem, skriv till [e-postskyddad], troligen kommer det att vara möjligt att öka (hittills har det alltid funnits en möjlighet, jag har aldrig tackat nej, tvärtom, jag erbjöd det själv). Det är bara det att jag till en början inte vill lova alla allt, jag är inte säker på att jag har tillräckligt med kapacitet för att hålla mitt ord. Men än så länge är det få användare, så det är inga problem med att höja gränserna.

Vad okerr kan göra i allmänhet - titta på hemsidan presentation. I allmänhet är detta övervakning (zabbix från molnet), och filerna är en trevlig extrafunktion. Du kan också komma åt demon från webbplatsen utan registrering.

När indikatorns status ändras skickas ett meddelande via e-post eller telegram. (Vi tittade på vad som hände och insåg att telegram verkar vara den mest pålitliga budbäraren. Tack vare RKN för stresstestet!) Med okerr korrekt konfigurerad är varje avisering antingen en signal "släpp allt, vi måste fixa det!" , eller "släcker!" Det bör inte finnas några extra varningar från okerra (om det finns måste de konfigureras på något annat sätt). Till exempel, för vår kattsajt, är alfaservern den sista och förfalskar aldrig ett fel. Om han ligger ner måste vi veta. Men andra servrar låtsas ständigt fel, därför, för att inte ta emot varningar flera gånger i timmen, har dessa indikatorer en "tyst" status.

Det är också vettigt att skapa en ledsen server (på vilket billigaste värd som helst), som antingen kommer att ha din ursäktsida (ifall alla huvud- och backupservrar är nere) eller som omdirigerar dig till statussidan på okerr (till exempel vår cp.okerr.com/status/okerr) eller statuspage.io.

Källa: will.com

Lägg en kommentar