Optimizarea configurației DNS

DNS nu se aplică subiectelor interesante. Dacă nu sunteți un inginer pentru rețele și infrastructură, aproape că nu vă amintiți despre asta - până când ceva nu merge bine. Dacă ați lansat site-ul fără a vă deranja despre DNS, acum este momentul potrivit pentru a lua măsuri care vor păstra site-ul dvs. pe suprafață într-un moment în care alte site-uri se vor îneca.

Critica DNS este ușoară și mulți oameni fac. De fiecare dată după o întrerupere masivă a DNS, furnizorii DNS (companiile care administrează servere de nume de domeniu) primesc multe comentarii de la utilizatorii lor.

Dar este responsabilitatea noastră ca dezvoltatori de a asigura funcționarea stabilă și cu toleranță la erori a site-urilor noastre, chiar (mai degrabă, mai ales) dacă folosim servicii terțe.

Nu ne dăm seama de asta, mulți dintre noi părăsesc un punct prin care poți să arunci cu ușurință tot ceea ce se întâmplă adesea. În cazul nostru, obiectivul a fost unul dintre clienții DNSimple, dar toată lumea a suferit.

Vestea bună este că există câțiva pași care pot îmbunătăți în mod semnificativ toleranța la erori a site-urilor noastre.

1. Măriți TTL

Dezvoltatorii iubesc viteza. Dar în cazul TTL, mai rapid nu înseamnă mai bine.

TTL este timpul pentru a trăi, TTL DNS este timpul în care înregistrarea DNS va rămâne în memoria cache înainte de a fi șters.

Acesta nu este durata de viață a memoriei cache, ci mai degrabă cât va funcționa memoria cache (în ciuda conectivității, aceasta este o diferență importantă).

Întrucât dezvoltatorii se ocupă de obicei de înregistrările DNS numai atunci când fac modificări, este foarte tentant să se asigure că aceste modificări vor intra în vigoare cât mai curând posibil. Dar scăderea TTL vă face vulnerabili la întreruperi, deoarece serverele de nume răspund la mai multe solicitări.

Prin setarea TTL la 60 de secunde, spuneți serviciilor de rezolvare a DNS (localizate între clienții dvs. și serverele de nume și având o memorie cache mare) că înregistrările dvs. trebuie șterse într-un minut. După aceea, aceștia vor contacta din nou serverele de nume. Aceasta înseamnă că, în caz de defecțiune, veți fi inaccesibil după 60 de secunde.

Cu cât înregistrările dvs. DNS rămân mai lungi în memoria cache (adică, cu atât mai mare este TTL), cu cât site-ul dvs. va supraviețui mai mult dacă furnizorul de DNS nu reușește. Dacă IP-ul serverului dvs. nu se schimbă, ar trebui să setați TTL mai bine o săptămână.

Gazda Canopy este Heroku, deci folosim o înregistrare CNAME care să indice domeniul Heroku. Această înregistrare nu se schimbă niciodată, astfel încât un TTL de 60 de secunde este complet inutil. La fiecare 60 de secunde, forțăm mii de servicii de rezoluție DNS pentru a face cereri către serverele noastre DNS să recupereze datele de domeniu pe care le au deja.

Dacă TTL a avut o săptămână întreagă de luni, atunci mulțumită memorării în cache, majoritatea utilizatorilor nu ar observa nicio eșec cu DNSimpe.

2. Utilizați servere de nume de la diferiți furnizori DNS

Optimizarea configurației DNS

Acestea sunt serverele de nume implicite pentru DNSimple. Este bine că există o mulțime de ele, dar e rău că sunt toți de la DNS. Aceasta înseamnă că încă mai avem un punct de eșec.

Dacă utilizați un singur furnizor DNS, veți avea întotdeauna un punct de eșec, indiferent de numărul de servere de nume utilizate.

Pentru multe site-uri acest lucru nu este rău, dar dacă aveți nevoie de 100% uptime, aveți nevoie de o mulțime de protecție. Utilizarea mai multor furnizori DNS este una dintre cele mai bune modalități de a face față oricăror eșecuri.

Furnizorii DNS permit și chiar încurajează utilizarea a 4-6 servere de nume suplimentare. Acest lucru este excelent: în cazul în care o pauză, restul va fi capabil să facă față cererilor. Dar dacă toate serverele de nume provin de la aceeași companie, atunci nu puteți decât să credeți în 100% uptime și nu-l garantați. Chiar și cu faptul că DNSimple ne-a furnizat 4 servere de nume, toți au căzut sub atacul DDOS și pe site-ul nostru împreună cu ei.

Șansele dvs. de a rămâne sub atacul DDOS sunt majorate dacă utilizați nu numai servere de nume suplimentare, ci și serviciile furnizorilor DNS suplimentari.

Din păcate, utilizarea efectivă a serverelor de nume de la mai multe companii este mult mai complicată decât adăugarea unui server de nume extern la forma tipului prezentat în imaginea de mai sus. Această nuanță nu este foarte cunoscută, dar este importantă:

Când resolverul DNS caută un domeniu, serverul DNS răspunde, dar trimite și înregistrări pentru a autentifica răspunsul serverului. Acestea se numesc înregistrări NS și trebuie să coincidă cu serverele de nume (dacă există o nepotrivire, unii utilizatori nu vor putea ajunge în domeniul dvs.).

Prin urmare, dacă doriți să utilizați 3 servere de nume din ruta Amazon 53 și 3 de la PointDNS, intrările NS de pe Route 53 și PointDNS ar trebui să includă toate cele 6 servere de nume.

Din păcate, nu toți furnizorii DNS vă permit să editați înregistrări NS. DNSimple nu a permis, de asemenea, editarea înregistrărilor NS, însă, după atac, ei și-au dat seama de importanța acestui suport și a adăugat suport pentru DNS suplimentar.

Dacă doriți să utilizați servere de nume de la două companii diferite, fiecare dintre acestea trebuie să aibă înregistrări NS modificabile.

Adăugarea de servere de nume de la mai multe companii necesită în mod clar o mulțime de efort și nu deloc faptul că este justificată pentru toate site-urile. De exemplu, pentru site-ul dvs. personal. Folosesc un singur furnizor DNS (cu servere de nume multiple, desigur). Nu este înfricoșător, dacă acest site va rămâne câteva ore offline.

Dar pentru o aplicație precum Canopy, îngrijirea offline este inacceptabilă. Acest lucru confundă utilizatorii și le provoacă neplăceri și, de asemenea, strică reputația brandului nostru. Și aici sunt gata să sincronizez înregistrările celor doi furnizori DNS, dacă acest lucru contribuie la reducerea riscului de eșec.

În timp ce minimizarea perioadelor de întrerupere aparține responsabilității furnizorilor DNS, sarcina noastră ca dezvoltatori este utilizarea eficientă a unor instrumente cum ar fi DNS. Multe site-uri, chiar mari, sunt vulnerabile prin acest punct. Dacă nu vă puteți permite o simplă, încercați să împărțiți serverele de nume între cei doi furnizori DNS. Și crește durata de viață a cache-ului pentru serviciile de rezoluție a numelui.

Indiferent de compania pe care o alegeți să o gestionați, aceste modificări vor îmbunătăți considerabil toleranța la defecțiuni a site-ului dvs.

Articole similare