Pārtrauciet izmantot smieklīgi zemu TTL DNS

Zems DNS latentums ir ātras interneta pārlÅ«koÅ”anas atslēga. Lai to samazinātu, ir svarÄ«gi rÅ«pÄ«gi atlasÄ«t DNS serverus un anonÄ«mie stafeti. Bet pirmais solis ir atbrÄ«voties no bezjēdzÄ«giem vaicājumiem.

Tāpēc DNS sākotnēji tika izstrādāts kā protokols ar augstu keÅ”atmiņu. Zonu administratori atseviŔķiem ierakstiem nosaka dzÄ«ves laiku (TTL), un atrisinātāji izmanto Å”o informāciju, saglabājot ierakstus atmiņā, lai izvairÄ«tos no nevajadzÄ«gas trafika.

Vai keÅ”atmiņa ir efektÄ«va? Pirms pāris gadiem mans nelielais pētÄ«jums parādÄ«ja, ka tas nav ideāls. ApskatÄ«sim paÅ”reizējo lietu stāvokli.

Lai savāktu informāciju, es laboju Å ifrēts DNS serveris lai saglabātu atbildes TTL vērtÄ«bu. Tas ir definēts kā tā ierakstu minimālais TTL katram ienākoÅ”ajam pieprasÄ«jumam. Tas sniedz labu pārskatu par reālās trafika TTL sadalÄ«jumu, kā arÄ« ņem vērā atseviŔķu pieprasÄ«jumu popularitāti. Servera labotā versija darbojās vairākas stundas.

IegÅ«tā datu kopa sastāv no 1 583 579 ierakstiem (nosaukums, qtype, TTL, laikspiedols). Å eit ir kopējais TTL sadalÄ«jums (X ass ir TTL sekundēs):

Pārtrauciet izmantot smieklīgi zemu TTL DNS

Ja neskaita nelielu satricinājumu pie 86 (galvenokārt SOA ierakstiem), ir diezgan skaidrs, ka TTL ir zemā diapazonā. Apskatīsim tuvāk:

Pārtrauciet izmantot smieklīgi zemu TTL DNS

Labi, TTL, kas pārsniedz 1 stundu, nav statistiski nozÄ«mÄ«gi. Pēc tam pievērsÄ«simies diapazonam 0ā€“3600:

Pārtrauciet izmantot smieklīgi zemu TTL DNS

Lielākā daļa TTL ir no 0 līdz 15 minūtēm:

Pārtrauciet izmantot smieklīgi zemu TTL DNS

Lielākā daļa ir no 0 līdz 5 minūtēm:

Pārtrauciet izmantot smieklīgi zemu TTL DNS

Tas nav ļoti labi.

Kumulatīvais sadalījums padara problēmu vēl acīmredzamāku:

Pārtrauciet izmantot smieklīgi zemu TTL DNS

Pusei DNS atbilžu TTL ir 1 minÅ«te vai mazāk, un trÄ«s ceturtdaļām TTL ir 5 minÅ«tes vai mazāk.

Bet pagaidiet, patiesÄ«bā ir sliktāk. Galu galā tas ir TTL no autoritatÄ«viem serveriem. Tomēr klientu atrisinātāji (piemēram, marÅ”rutētāji, lokālās keÅ”atmiņas) saņem TTL no augÅ”puses atrisinātājiem, un tas samazinās katru sekundi.

Tādējādi klients pirms jauna pieprasÄ«juma nosÅ«tÄ«Å”anas var izmantot katru ierakstu vidēji par pusi no sākotnējā TTL.

VarbÅ«t Å”ie ļoti zemie TTL attiecas tikai uz neparastiem pieprasÄ«jumiem, nevis populārām vietnēm un API? ApskatÄ«sim:

Pārtrauciet izmantot smieklīgi zemu TTL DNS

X ass ir TTL, Y ass ir vaicājuma popularitāte.

Diemžēl populārākie vaicājumi ir arÄ« vissliktāk saglabājami keÅ”atmiņā.

Pietuvināsim:

Pārtrauciet izmantot smieklīgi zemu TTL DNS

Spriedums: tas ir patieŔām slikti. Jau iepriekÅ” bija slikti, bet kļuva vēl sliktāk. DNS keÅ”atmiņa ir kļuvusi praktiski bezjēdzÄ«ga. Tā kā mazāk cilvēku izmanto sava ISP DNS atrisinātāju (labu iemeslu dēļ), latentuma palielināŔanās kļūst pamanāmāka.

DNS keÅ”atmiņa ir kļuvusi noderÄ«ga tikai saturam, kuru neviens neapmeklē.

Lūdzu, ņemiet vērā arī to, ka programmatūra var dažādos veidos interpretēt zemos TTL.

Kāpēc tā?

Kāpēc DNS ierakstiem ir iestatīts tik zems TTL?

  • Mantotie slodzes balansētāji tika atstāti ar noklusējuma iestatÄ«jumiem.
  • Pastāv mÄ«ti, ka DNS slodzes lÄ«dzsvaroÅ”ana ir atkarÄ«ga no TTL (tas nav taisnÄ«ba - kopÅ” Netscape Navigator laikiem klienti ir izvēlējuÅ”ies nejauÅ”u IP adresi no RR kopas un, ja nevar izveidot savienojumu, pārskatāmi izmēģinājuÅ”i citu)
  • Administratori vēlas nekavējoties piemērot izmaiņas, tāpēc to ir vieglāk plānot.
  • DNS servera vai slodzes balansētāja administrators savu uzdevumu uzskata par lietotāju pieprasÄ«tās konfigurācijas efektÄ«vu izvietoÅ”anu, nevis vietņu un pakalpojumu paātrināŔanu.
  • Zems TTL nodroÅ”ina jums sirdsmieru.
  • Cilvēki sākotnēji testÄ“Å”anai nosaka zemus TTL un pēc tam aizmirst tos mainÄ«t.

Es neiekļāvu "failover" sarakstā, jo tas kļūst arvien mazāk aktuāls. Ja jums ir nepiecieÅ”ams novirzÄ«t lietotājus uz citu tÄ«klu, lai parādÄ«tu kļūdas lapu, kad pilnÄ«gi viss pārējais ir bojāts, iespējams, ir pieļaujama aizkavÄ“Å”anās, kas pārsniedz 1 minÅ«ti.

Turklāt vienas minÅ«tes TTL nozÄ«mē, ka, ja autoritatÄ«vie DNS serveri tiek bloķēti ilgāk par 1 minÅ«ti, neviens cits nevarēs piekļūt atkarÄ«gajiem pakalpojumiem. Un atlaiÅ”ana nepalÄ«dzēs, ja iemesls ir konfigurācijas kļūda vai uzlauÅ”ana. No otras puses, izmantojot saprātÄ«gus TTL, daudzi klienti turpinās izmantot iepriekŔējo konfigurāciju un nekad neko nepamanÄ«s.

CDN pakalpojumi un slodzes balansētāji lielā mērā ir vainojami zemos TTL, it Ä«paÅ”i, ja tie apvieno CNAME ar zemiem TTL un ierakstiem ar tikpat zemiem (bet neatkarÄ«giem) TTL:

$ drill raw.githubusercontent.com
raw.githubusercontent.com.	9	IN	CNAME	github.map.fastly.net.
github.map.fastly.net.	20	IN	A	151.101.128.133
github.map.fastly.net.	20	IN	A	151.101.192.133
github.map.fastly.net.	20	IN	A	151.101.0.133
github.map.fastly.net.	20	IN	A	151.101.64.133

Ikreiz, kad beidzas CNAME vai kāda A ieraksta derÄ«guma termiņŔ, ir jānosÅ«ta jauns pieprasÄ«jums. Abiem ir 30 sekunžu TTL, taču tas nav vienāds. Faktiskais vidējais TTL bÅ«s 15 sekundes.

Bet pagaidi! Tas ir vēl sliktāk. Daži atrisinātāji Å”ajā situācijā rÄ«kojas ļoti slikti ar diviem saistÄ«tiem zemiem TTL:

$ urbis raw.githubusercontent.com @4.2.2.2 raw.githubusercontent.com. 1 IN CNAME github.map.fastly.net. github.map.fastly.net. 1 IN A 151.101.16.133

Level3 atrisinātājs, iespējams, darbojas BIND. Ja turpināsit sÅ«tÄ«t Å”o pieprasÄ«jumu, vienmēr tiks atgriezts TTL 1. BÅ«tÄ«bā raw.githubusercontent.com nekad netiek saglabāts keÅ”atmiņā.

Å eit ir vēl viens Ŕādas situācijas piemērs ar ļoti populāru domēnu:

$ drill detectportal.firefox.com @1.1.1.1
detectportal.firefox.com.	25	IN	CNAME	detectportal.prod.mozaws.net.
detectportal.prod.mozaws.net.	26	IN	CNAME	detectportal.firefox.com-v2.edgesuite.net.
detectportal.firefox.com-v2.edgesuite.net.	10668	IN	CNAME	a1089.dscd.akamai.net.
a1089.dscd.akamai.net.	10	IN	A	104.123.50.106
a1089.dscd.akamai.net.	10	IN	A	104.123.50.88

Vismaz trÄ«s CNAME ieraksti. Jā. Vienam ir pienācÄ«gs TTL, taču tas ir pilnÄ«gi bezjēdzÄ«gs. Citu CNAME sākotnējais TTL ir 60 sekundes, bet domēniem akamai.net maksimālais TTL ir 20 sekundes, un neviena no tām nav fāzē.

Kā ir ar domēniem, kas pastāvīgi aptaujā Apple ierīces?

$ drill 1-courier.push.apple.com @4.2.2.2
1-courier.push.apple.com.	1253	IN	CNAME	1.courier-push-apple.com.akadns.net.
1.courier-push-apple.com.akadns.net.	1	IN	CNAME	gb-courier-4.push-apple.com.akadns.net.
gb-courier-4.push-apple.com.akadns.net.	1	IN	A	17.57.146.84
gb-courier-4.push-apple.com.akadns.net.	1	IN	A	17.57.146.85

Tā pati problēma kā Firefox un TTL lielākoties tiks iestrēgusi 1 sekundē, izmantojot Level3 atrisinātāju.

Dropbox?

$ urbt client.dropbox.com @8.8.8.8 client.dropbox.com. 7 IN CNAME client.dropbox-dns.com. client.dropbox-dns.com. 59 IN A 162.125.67.3 $ urbis client.dropbox.com @4.2.2.2 client.dropbox.com. 1 IN CNAME client.dropbox-dns.com. client.dropbox-dns.com. 1 IN A 162.125.64.3

Pie ieraksta safebrowsing.googleapis.com TTL vērtÄ«ba ir 60 sekundes, piemēram, Facebook domēnos. Un atkal no klienta viedokļa Ŕīs vērtÄ«bas ir uz pusi samazinātas.

Kā būtu ar minimālā TTL iestatīŔanu?

Izmantojot nosaukumu, pieprasÄ«juma veidu, TTL un sākotnēji saglabāto laikspiedolu, es uzrakstÄ«ju skriptu, lai modelētu 1,5 miljonus pieprasÄ«jumu, kas tiek nosÅ«tÄ«ti caur keÅ”atmiņas atrisinātāju, lai novērtētu nevajadzÄ«go pieprasÄ«jumu apjomu, kas nosÅ«tÄ«ts sakarā ar keÅ”atmiņas ieraksta derÄ«guma termiņu.

47,4% pieprasÄ«jumu tika veikti pēc esoŔā ieraksta derÄ«guma termiņa beigām. Tas ir nepamatoti augsts.

Kāda bÅ«s ietekme uz keÅ”atmiņu, ja ir iestatÄ«ts minimālais TTL?

Pārtrauciet izmantot smieklīgi zemu TTL DNS

X ass ir minimālās TTL vērtÄ«bas. Ieraksti, kuru avota TTL pārsniedz Å”o vērtÄ«bu, netiek ietekmēti.

Y ass ir to pieprasÄ«jumu procentuālā daļa no klienta, kuram jau ir keÅ”atmiņā saglabāts ieraksts, taču tam ir beidzies derÄ«guma termiņŔ un tiek veikts jauns pieprasÄ«jums.

ā€œPapilduā€ pieprasÄ«jumu daļa tiek samazināta no 47% lÄ«dz 36%, vienkārÅ”i iestatot minimālo TTL uz 5 minÅ«tēm. Iestatot minimālo TTL uz 15 minÅ«tēm, Å”o pieprasÄ«jumu skaits samazinās lÄ«dz 29%. Minimālais TTL 1 stunda samazina tos lÄ«dz 17%. BÅ«tiska atŔķirÄ«ba!

Kā bÅ«tu, ja neko nemainÄ«tu servera pusē, bet gan iestatÄ«tu minimālo TTL klienta DNS keÅ”atmiņās (marÅ”rutētāji, lokālie atrisinātāji)?

Pārtrauciet izmantot smieklīgi zemu TTL DNS

NepiecieÅ”amo pieprasÄ«jumu skaits samazinās no 47% uz 34% ar minimālo TTL 5 minÅ«tēm, lÄ«dz 25% ar vismaz 15 minÅ«tēm un lÄ«dz 13% ar vismaz 1 stundu. VarbÅ«t 40 minÅ«tes ir optimāla.

Šo mazo izmaiņu ietekme ir milzīga.

Kādas ir sekas?

Protams, pakalpojumu var pārvietot uz jaunu mākoņpakalpojumu sniedzēju, jaunu serveri, jaunu tÄ«klu, pieprasot klientiem izmantot jaunākos DNS ierakstus. Un diezgan mazs TTL palÄ«dz Ŕādu pāreju veikt vienmērÄ«gi un nemanāmi. Taču, pārejot uz jaunu infrastruktÅ«ru, neviens negaida, ka klienti pāriet uz jauniem DNS ierakstiem 1 minÅ«tes, 5 minÅ«Å”u vai 15 minÅ«Å”u laikā. Minimālā TTL iestatÄ«Å”ana uz 40 minÅ«tēm 5 minÅ«Å”u vietā netraucēs lietotājiem piekļūt pakalpojumam.

Tomēr tas ievērojami samazinās latentumu un uzlabos privātumu un uzticamību, izvairoties no nevajadzīgiem pieprasījumiem.

Protams, RFC saka, ka TTL ir stingri jāievēro. Taču realitāte ir tāda, ka DNS sistēma ir kļuvusi pārāk neefektīva.

Ja strādājat ar autoritatÄ«viem DNS serveriem, lÅ«dzu, pārbaudiet savus TTL. Vai tieŔām vajag tik smieklÄ«gi zemas vērtÄ«bas?

Protams, ir labs iemesls DNS ierakstiem iestatīt mazus TTL. Bet ne tiem 75% DNS trafika, kas paliek praktiski nemainīgs.

Un, ja kāda iemesla dēļ jums patieŔām ir jāizmanto zemi TTL DNS, tajā paŔā laikā pārliecinieties, vai jÅ«su vietnē nav iespējota keÅ”atmiņa. To paÅ”u iemeslu dēļ.

Ja darbojas vietējā DNS keÅ”atmiņa, piemēram, dnscrypt-starpniekserveriskas ļauj iestatÄ«t minimālos TTL, izmantojiet Å”o funkciju. Tas ir labi. Nekas slikts nenotiks. Iestatiet minimālo TTL uz aptuveni 40 minÅ«tēm (2400 sekundēm) un 1 stunda. Diezgan saprātÄ«gs diapazons.

Avots: www.habr.com