Failover simplu pentru site web (monitorizare + DNS dinamic)

În acest articol, vreau să arăt cât de ușor și gratuit se poate crea un sistem de failover pentru un website (sau orice alt serviciu online) folosind o combinație de monitorizare okerr și un serviciu DNS dinamic. Adică, în cazul în care apar probleme cu site-ul principal (de la erori «PHP» pe pagină până la lipsa de spațiu sau pur și simplu un număr suspect de mic de comenzi în cazul unui magazin online), noii vizitatori vor fi redirecționați către un server secundar (terț, etc.) care funcționează, sau chiar pe o pagină «Ne pare rău», unde li se va explica politicos că «există o problemă, suntem la curent și lucrăm pentru a o remedia, va fi rezolvată în curând» (iar în acest caz, de fapt, veți fi deja la curent și veți putea remedia problema).

Să trăiești cu failover sau fără?

Până nu apare o problemă, nu există o mare diferență. Dar când apare, fără failover se întâmplă adesea următoarele: încerci să înțelegi rapid care este problema, nu reușești (backup-urile nu se restabilesc, software-ul nu funcționează conform documentației, etc.), iar timpul lipsește, serverele-situri cedează, clienții sună, toată lumea este pe nervi, încerci să repari rapid în mod rudimentar «cu bandă adesivă», după care, într-un fel, reușești să demarezi lucrurile cu ajutoare improvizate și funcționează. Te gândești că, la un moment dat, va trebui să te ocupi mai detaliat de asta și să faci totul frumos, dar nu există nimic mai permanent decât provizoriul.

Acum, cum se întâmplă acest lucru în varianta elegantă cu failover:

  • Se produce o eroare
  • Eroarea este detectată automat
  • Se trimite o notificare
  • Se realizează comutarea pe unul dintre serverele de rezervă
  • Problema este analizată liniștit și fără panică, se repară și serverul este repus în funcțiune.

În acest sistem, bineînțeles, pot apărea unele blocaje, dar totuși, schema este lineară, fiecare pas este simplu și, cel mai important, poate fi testat separat, astfel că șansa de eșec a acestui sistem este mult mai mică, iar toate acțiunile pot fi automatizate și executate rapid (spre deosebire de sarcina de a găsi și remedia o problemă epică necunoscută). Aeronava ta a aterizat într-o țară îndepărtată, îți pornești telefonul și vezi în Telegram o notificare că serverul a căzut, dar totul este bine, serverul de rezervă a fost activat, poți continua călătoria, nu trebuie să te întorci înapoi sau să repari prin SSH din cea mai apropiată cafenea cu WiFi. Te vei ocupa de asta când îți va fi convenabil.

Viitorul este deja aici!

În trecut, principala problemă care făcea ca failover-ul să fie adesea o soluție inacceptabilă era suma costurilor implicate. Fie era necesar să achiziționezi echipamente scumpe (și să angajezi specialiști și mai scumpi). Fie era nevoie de soluții complicate pe baza unor ghiduri (am întâlnit chiar opțiuni în care două servere erau legate printr-un cablu null-modem și trimiteau heartbeat pe acesta, pentru ca la momentul potrivit serverul de rezervă să știe și să preia controlul). Acum există metode mai simple și gratuite. Dacă ai un site cu pisici — nu ai nicio scuză dacă încă nu ai implementat failover pentru el!

În plus, pentru schema de failover este nevoie de un server (sau poate chiar de mai multe) și, în trecut, acest lucru a implicat costuri mari, dar acum poți obține un VDS la un preț mic.

Cel mai fiabil site cu pisici

Pentru a ilustra practic soluția cu okerr + dynamic dns, am lansat propriul nostru site cu pisici cat.okerr.com. Detestăm pisicile, așa că acolo nu vor fi aproape deloc. Există trei site-uri, fiecare arată aproximativ la fel (toate pe același șablon), dar cu pisici diferite pentru a fi ușor de distins, iar fiecare oferă informații tehnice pentru a vedea cum funcționează failover-ul. Pagina se actualizează automat la fiecare minut, dar poți să dai mereu refresh în browser.

Informațiile tehnice conțin o linie "status=OK". Uneori, serverele simulează probleme și scriu status=ERR. Serverul principal "se prăbușește" la 20 de minute după fiecare oră (0:20, 1:20, 2:20, ...). Serverul de rezervă la 40 de minute. Ultimul server (serverul "sorry") funcționează întotdeauna. La 0 minute în fiecare oră, serverul principal și cel de rezervă "se recuperează".

Failover simplu pentru site web (monitorizare + DNS dinamic)

Dacă deschizi site-ul și îl lași deschis în tab-ul tău — vei observa că nu se prăbușește niciodată (deși fiecare server simulează periodic o problemă), iar în cazul unei probleme cu serverul, pur și simplu „zbura” între serverele active. Se va schimba imaginea, numele și adresa serverului și rolul său. Uneori poți surprinde momentul când status=ERR (problema deja există, dar întreaga schemă de failover nu a acționat încă), dar următoarea actualizare îți va arăta pagina de pe serverul activ.

Failover pe okerr + dynamic DNS

Să vedem cum este acesta organizat în interior. Sarcina sistemului de failover este ca adresa cat.okerr.com să indice întotdeauna spre adresa IP a serverului activ.
Fiecare server care susține site-ul nostru de pisici în okerr are un indicator care verifică starea sa o dată pe minut.

Failover simplu pentru site web (monitorizare + DNS dinamic)

În această captură de ecran, vedem cum site-ul cat.okerr.com este verificat de serverul alpha.okerr.com. Pagina ar trebui să conțină status=OK, iar așa cum observăm mai sus, starea indicatorului nostru este acum OK. Când serverul „se strică”, va apărea ERR. (Acesta este doar un exemplu de indicator, okerr este un serviciu de monitorizare, așadar se poate folosi orice tip de indicator, de exemplu, pentru a verifica spațiul liber pe disc, numărul de comenzi noi în bază, și chiar indicatori logici, cum ar fi, noaptea, vor exista anumite criterii de eroare, iar ziua, altele).

În setările proiectului, am creat un sistem de failover cu acești indicatori:

Failover simplu pentru site web (monitorizare + DNS dinamic)

În schema sunt trei indicatori (trei servere), diferite ca priorități. Serverul principal pentru site este charlie; dacă acesta nu funcționează (nu va avea „status=OK” sau este pur și simplu inaccesibil), atunci va interveni bravo și, în cele din urmă, alpha. În partea dreaptă a paginii se arată starea înregistrării DNS pe diferite servere.

Pentru cei care au observat că utilizăm numele cat.he.okerr.com: Folosim o schemă puțin mai complicată. În loc să modificăm pur și simplu înregistrarea DNS cat.okerr.com, modificăm cat.he.okerr.com (la un provider de Dynamic DNS Hurricane Electric), iar cat.okerr.com este un CNAME (alias) care nu se schimbă, indicând întotdeauna către cat.he.okerr.com. Ne place mai mult Hurricane ca provider de DNS dinamic și are chei pentru gestionarea unei înregistrări separate (nu a întregii zone); ni se pare mai sigur. Puteți, de asemenea, să nu specificați în okerr parolele-cheie pentru gestionarea întregului domeniu, ci doar pentru subdomeniu sau înregistrare.

De la cădere la ridicare

Pașii prin care funcționează această schemă:

  1. Se întâmplă (se simulează) o problemă pe server
  2. Senzorul okerr verifică o dată pe minut starea fiecărui server și raportează pe serverul principal al proiectului în okerr
  3. Indicatorul serverului corespunzător își schimbă starea de la OK la ERR
  4. La schimbarea stării indicatorului, se recalculează failover-ul, se determină ce adresă trebuie setată (dacă este necesar. De exemplu, dacă serverul principal funcționează, iar în acest timp serverul de rezervă a căzut — nu vor avea loc modificări)
  5. Această adresă este comunicată serviciului de dynamic dns. La finalizarea acestei etape, în partea dreaptă veți vedea starea „synced”
  6. Foarte curând (în câteva secunde), înregistrarea va ajunge la serverele DNS ale domeniului dumneavoastră (pentru site-ul nostru de pisici, acestea sunt ns1-ns5.he.net).
  7. Începând cu acest moment, unii utilizatori vor accesa deja noul server live. Însă nu toate serverele DNS din lume au actualizat înregistrările, iar unele pot avea încă vechea înregistrare în cache. Se poate observa cum datele de pe serverele DNS publice „dansază”, arătând alternativ valoarea nouă și cea veche. Dacă reîmprospătați pagina de setări pentru failover, okerr va solicita noi date de la serverele DNS.
  8. După ce datele s-au stabilizat, vechea înregistrare în cache s-a expirat complet — 100% din cereri merg pe noul server.

Pentru a accelera etapa 7 (care este adesea cea mai lungă), TTL-ul înregistrării DNS dinamice trebuie setat cât mai scăzut posibil. De obicei, serviciile permit intervale de 90-120 de secunde. Acesta este un compromis rezonabil.

În plus

Toate acestea pot fi configurate într-o seară (dacă aveți deja un server duplicat). Atât okerr, cât și serviciile de DNS dinamic sunt gratuite. Pentru a obține mai multe verificări în okerr și un interval de verificare mai scurt, trebuie să urmați un training (de pe pagina de profil). După finalizare, se va crește imediat nivelul (20 de indicatori pe oră + 1 rapid, de 10 minute). Și dacă nu vor fi suficiente — scrieți la support@okerr.com, cel mai probabil se va putea crește (până acum a fost întotdeauna posibil, niciodată nu a fost refuzat, din contră, mi s-a propus). Pur și simplu, nu vreau să promit tuturor totul de la bun început, nu sunt sigur că vor fi suficiente resurse pentru a-mi onora cuvântul. Dar momentan utilizatorii sunt puțini, așa că nu sunt probleme cu majorarea limitelor.

Ce poate face okerr în general — verificați pe site o prezentare. În general, este un sistem de monitorizare (zabbix din cloud), iar file checker-ul este o funcție suplimentară plăcută. De asemenea, se poate accesa demo-ul de pe site fără înregistrare.

La schimbarea stării indicatorului — se trimite o notificare pe email sau Telegram. (Am observat ce se întâmplă și am realizat că, se pare, telegram-ul este cel mai fiabil mesager. Mulțumim RKN pentru testul de stres!) Cu o configurare corectă a okerr, orice notificare este fie un semnal „lăsați totul, trebuie să reparăm!”, fie „se poate opri!”. Nu ar trebui să existe alerte suplimentare din partea okerr (dacă sunt, trebuie configurat diferit). De exemplu, pentru site-ul nostru de pisici, serverul alpha este ultimul și nu simulează niciodată o eroare. Dacă acesta cedează — trebuie să știm. Ceilalți serveri simulează constant erori, așa că, pentru a nu primi alerte de mai multe ori pe oră, acești indicatori au statutul „tăcut”.

Este logic să creați și un server de avertizare (pe orice gazduire foarte ieftină), care să aibă fie pagina dvs. de scuze (în cazul în care toate serverele principale și de rezervă sunt căzute), fie să redirecționeze la pagina de stare de pe okerr (de exemplu, a noastră cp.okerr.com/status/okerr) sau statuspage.io.

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster