Jednostavan failover za web mjesto (monitoring + dinamički DNS)

U ovom članku želim pokazati kako jednostavno i besplatno možete napraviti failover shemu za web stranicu (ili bilo koju drugu internetsku uslugu) koristeći kombinaciju nadzora okerr i dinamički DNS servis. Odnosno, u slučaju bilo kakvih problema s glavnom stranicom (od problema s “PHP Error” na stranici, do nedostatka prostora ili jednostavno sumnjivo malog broja narudžbi u slučaju online trgovine), novi će posjetitelji biti usmjereni na drugi (treći i tako dalje) daljnji) server za koji znamo da radi, ili na stranicu "Žao nam je", gdje će vam ljubazno objasniti da "postoji problem, već smo svjesni i već ga rješavamo, uskoro će to popraviti” (i u ovom slučaju zapravo već znate i možete popraviti).

Živjeti s failoverom ili bez?

Dok se ne dogodi neki problem, nema velike razlike. Ali kada se dogodi, bez failovera često se događa sljedeće: pokušavate brzo otkriti u čemu je problem, ne ide (sigurnosne kopije se ne postavljaju, softver iz nekog razloga ne radi kako bi trebao prema dokumentaciji) , itd.), ali nema vremena, nema servera - stranice leže okolo, klijenti zovu, svi su napeti, pokušavate to nekako grubo i prljavo "salotejpom" popraviti, onda se nekako pokrene sa štakama i životima. Mislite da ćete u slobodno vrijeme morati to detaljnije smisliti i sve lijepo ponoviti, ali nema ništa trajnije od privremenog.

Sada, kako se to događa u lijepoj verziji s turpijom:

  • Dogodi se greška
  • Pogreška se otkriva automatski
  • Upozorenje je poslano
  • Prebacuje se prebacivanje na jedan od rezervnih poslužitelja
  • Mirno i bez panike, problem se rješava, ispravlja i server ponovno pušta u rad.

Ova shema, naravno, također može imati svoje probleme, ali ipak, shema je linearna, svaka faza je jednostavna i glavna stvar je da se može zasebno otklanjati pogreške, tako da je mogućnost kvara ove sheme mnogo manja, a sve radnje mogu se automatizirati i izvesti brzo (za razliku od zadatka pronalaženja i popravljanja nepoznatih epskih sranja). Avion vam je sletio u daleku zemlju, uključite telefon i u telegramu vidite obavijest da se server srušio, ali sve je u redu, rezervni server je aktiviran, možete nastaviti put, ne trebate da odletite natrag ili ga popravite putem SSH iz najbližeg kafića s WiFi . Shvatit ćeš kad ti bude zgodnije.

Budućnost je već ovdje!

Prethodno je glavni problem zbog kojeg je failover često bio neprihvatljivo rješenje bio iznos troškova koji košta. Ili je bilo potrebno kupiti skup hardver (i pozvati još skuplje stručnjake). Ili kolektivna farma nešto komplicirano po vodičima (čak sam naišao na opciju gdje su dva servera dodatno spojena null modemskim kabelom, pa preko njega šalju otkucaje srca, tako da ga backup server u pravom trenutku prepozna i preuzme kontrolirati). Sada postoje lakši i besplatni načini. Ako imate web stranicu s mačkama, nema isprike da za nju još ne implementirate failover!

Pa, osim toga, za failover shemu potreban vam je još jedan poslužitelj (a možda i više od jednog) i prije je to bio veliki trošak, sada možete dobiti VDS za sitne pare.

Najpouzdanija stranica s mačkama

Kako bismo praktično ilustrirali rješenje s okerr + dynamic dns, pokrenuli smo našu web stranicu s mačkama cat.okerr.com. Mrzimo mačke, pa ih tamo neće biti puno. Postoje ukupno tri stranice, svaka izgleda otprilike isto (sva na istom predlošku), ali s različitim mačićima kako bi se lakše razlikovali, a svaka piše tehničke informacije da se vidi kako funkcionira failover. Stranica se ažurira jednom svake 1 minute, ali uvijek možete kliknuti ponovno učitaj u pregledniku.

U tehničkim informacijama nalazi se redak "status=OK". Ponekad poslužitelji glume probleme i pišu status=ERR. Glavni poslužitelj "čini se kao da se ruši" svakih 20 minuta svakog sata (0:20, 1:20, 2:20, …). Rezervni poslužitelj za 40 minuta. Posljednji poslužitelj (poslužitelj "oprosti") uvijek radi. U 0 minuta svakog sata, primarni i rezervni poslužitelj se "obnavljaju".

Jednostavan failover za web mjesto (monitoring + dinamički DNS)

Ako otvorite stranicu i ostavite je u tabu, vidjet ćete da se nikada ne ruši (iako svaki pojedini poslužitelj povremeno simulira problem), au slučaju problema s poslužiteljem jednostavno “trči” između živih poslužitelja. Slika, naziv i adresa poslužitelja i njegova uloga će se promijeniti. Ponekad možete uhvatiti trenutak kada je status = ERR (problem već postoji, ali cijela shema preusmjeravanja greške još nije radila), ali sljedeće ažuriranje će vam pokazati stranicu s radnog mjesta.

Failover na okerr + dinamički DNS

Pogledajmo kako radi ispod haube. Zadatak filera je osigurati da adresa cat.okerr.com uvijek pokazuje na IP adresu poslužitelja koji radi.
Iza svakog poslužitelja koji ugošćuje našu mačku stranicu u okerru postoji indikator koji provjerava status jednom u minuti.

Jednostavan failover za web mjesto (monitoring + dinamički DNS)

Na ovoj snimci zaslona vidimo kako se stranica cat.okerr.com provjerava s poslužitelja alpha.okerr.com. Stranica bi trebala sadržavati status=OK, i kao što vidimo gore, naš status indikatora je sada OK. Kada se server “pokvari”, pojavit će se greška. (Ovo je samo jedan primjer indikatora, okerr prati, tako da možete priložiti bilo koju vrstu indikatora, npr. provjerite slobodan prostor na disku, broj novih naloga u bazi podataka, pa čak i logičke indikatore, npr. , noću će postojati neki kriteriji pogreške, a danju drugi) .

U postavkama projekta izradili smo shemu za nadilaženje greške s ovim pokazateljima:

Jednostavan failover za web mjesto (monitoring + dinamički DNS)

Shema ima tri indikatora (tri poslužitelja), različita po prioritetu. Glavni server za stranicu je charlie, ako ne radi (neće imati “status=OK” ili je jednostavno nedostupan), onda bravo i u drugom slučaju - alfa. Desna strana stranice prikazuje status DNS zapisa na različitim poslužiteljima.

Za one koji su primijetili da se koristi naziv cat.he.okerr.com: Koristimo malo složeniju shemu. Umjesto da samo promijenimo DNS zapis cat.okerr.com, mijenjamo cat.he.okerr.com (na Dynamic DNS provideru Uragan Electric), a cat.okerr.com je CNAME (alias), koji se ne mijenja, uvijek pokazuje na cat.he.okerr.com. Samo nam se više sviđa Hurricane kao dinamički DNS i ima ključeve za upravljanje jednim unosom (a ne cijelom zonom), mislimo da je sigurniji. Također ne morate navesti ključne lozinke u okerru za upravljanje cijelom domenom, već samo za poddomenu ili zapis.

Od pada do ustajanja

Korak po korak kako ova shema funkcionira:

  1. Došlo je do problema (simulirano) na poslužitelju
  2. Okerr senzor provjerava status svakog poslužitelja jednom u minuti i javlja glavnom poslužitelju projekta u okerru
  3. Indikator odgovarajućeg poslužitelja mijenja se iz OK u ERR
  4. Kada se status indikatora promijeni, failover se ponovno izračunava, te se izračunava koju adresu treba postaviti (ako je potrebno. Npr., ako glavni poslužitelj radi, au isto vrijeme je rezervni poslužitelj umro, neće biti promjena napravio)
  5. Этот адрес сообщается в службу dynamic dns. По завершении этого этапа справа вы увидите статус “synced”
  6. Vrlo brzo (u sekundi) zapis će doći do DNS poslužitelja vaše domene (za mačku stranicu to je ns1-ns5.he.net).
  7. Od ovog trenutka nadalje, neki će korisnici već biti na novom live poslužitelju. Ali nisu svi DNS poslužitelji u svijetu još ažurirali zapise, a stari zapis možda je još uvijek negdje u predmemoriji. Možete vidjeti kako podaci na javnim DNS poslužiteljima "plešu", prikazujući ili novu ili staru vrijednost. Ako ažurirate konfiguracijsku stranicu za preokret, operater će sam zatražiti nove podatke od DNS poslužitelja.
  8. Nakon što su se podaci stabilizirali, stari predmemorirani zapis posvuda je pokvaren - svih 100% zahtjeva ide na novi poslužitelj.

Da biste ubrzali fazu 7 (često najdužu), TTL dinamičkog DNS zapisa treba postaviti što je moguće niže. Obično usluge dopuštaju intervale od 90-120 sekundi. Ovo je sasvim razuman kompromis.

dodatno

Sve se to može konfigurirati za večer (ako već imate rezervni poslužitelj). I okerr i dinamički DNS servisi su besplatni. Da biste dobili više provjera u Okerr-u i kraće razdoblje verifikacije, morate završiti obuku (sa stranice vašeg profila). Nakon završetka, razina se odmah povećava (20 indikatora po satu + 1 brzi, 10 minuta). A ako ih je malo, pišite [e-pošta zaštićena], najvjerojatnije će se moći povećati (do sada je uvijek postojala prilika, nikad nisam odbio, naprotiv, sam sam je ponudio). Samo što u početku ne želim svima obećavati sve, nisam siguran imam li dovoljno kapaciteta da održim riječ. Ali zasad je malo korisnika, tako da nema problema s povećanjem limita.

Što okerr uopće može - pogledajte na web stranici prezentacija. Općenito, ovo je praćenje (zabbix iz oblaka), a filer je zgodna dodatna funkcija. Također možete pristupiti demo verziji sa stranice bez registracije.

Kada se status indikatora promijeni, obavijest se šalje e-poštom ili Telegramom. (Pogledali smo što se događa i shvatili da se čini da je telegram najpouzdaniji messenger. Hvala RKN-u na testu otpornosti na stres!) S ispravno konfiguriranim okerrom, svaka obavijest je ili signal "baci sve, moramo to popraviti!" , ili "svjetla se gase!" Ne bi trebalo biti nikakvih dodatnih upozorenja od okera (ako ih ima, moraju se nekako drugačije konfigurirati). Na primjer, za našu mačku stranicu, alfa poslužitelj je posljednji i nikada ne lažira pogrešku. Ako leži, moramo znati. Ali drugi poslužitelji stalno glume pogreške, stoga, kako ne bi primali upozorenja nekoliko puta na sat, ti indikatori imaju status "tiho".

Također ima smisla napraviti sorry server (na bilo kojem najjeftinijem hostingu), koji će ili imati vašu stranicu isprike (u slučaju da svi glavni i rezervni poslužitelji ne rade) ili će vas preusmjeriti na statusnu stranicu na okerr-u (na primjer, naš cp.okerr.com/status/okerr) ili statuspage.io.

Izvor: www.habr.com

Dodajte komentar