DNS Anycast w Smarthost

Technologia Anycast (definicja na podstawie Wikipedii) to rodzaj transmisji sieciowej, w której dane wysyłane są do najbliższego, czyli teoretycznie najlepszego odbiorcy.

Anycast może być wykorzystywany m.in. w dostępie do usług rozproszonych na wiele serwerów. Najczęstszym przypadkiem jest wykorzystanie technologii Anycast dla celów serwerów DNS. Każde zapytanie klienta do serwera DNS kierowane jest nie do konkretnej maszyny, ale do grupy (klastra) serwerów DNS.

Dlaczego warto stosować DNS-Anycast w serwerach DNS ?

Każda domena w internecie powinna mieć podane co najmniej dwa serwery DNS, które będą ją obsługiwać, to znaczy „przetłumaczą” nazwę domeny na adres IP serwera, na którym domena ta się znajduje. Większość operatorów zaleca podanie nawet 3 serwerów DNS.

W przypadku Smarthost.pl są to serwery:

  • dns.smarthost.pl
  • dns2.smarthost.pl
  • dns3.smarthost.pl

Powszechnym problemem jest fakt, że serwery te podawane są właśnie w takiej kolejności, co powoduje, że czasem nawet 80-90% zapytań do serwerów DNS trafia w praktyce do pierwszego serwera DNS. Pozostałe dwa obsługują niewielką liczbę zapytań.

Takie „nierówne” obciążenie serwerów DNS może powodować, że odpowiedzi są nieco dłuższe, ze względu na to, że pierwszy serwer DNS może być mocno obciążony.

Czas odpowiedzi serwera DNS wpływa, jako jeden z parametrów, na ogólny czas odpowiedzi serwera, oznaczany jako TTFB (Time To First Byte).

Rozwiązaniem na wyrównanie obciążenia serwerów DNS jest technologia DNS Anycast.

Jak działa w praktyce DNS Anycast ?

Wdrożenie DNS Anycast polega na zrezygnowaniu z „klasycznych”, tj. pojedynczych maszyn, będących serwerami DNS na rzecz wielu serwerów DNS w technologii Anycast.

W praktyce, pod każdym z adresów serwerów DNS, które są podawane dla domeny, znajduje się kilka serwerów DNS a nie jedna maszyna serwerowa. Same serwery zwykle nie są bezpośrednio dostępne oraz nie znana jest ich dokładna liczba – działają one jakby „w tle” i schowane są za pojedynczą nazwą serwera DNS.

Za nazwą serwera DNS „dns.smarthost.pl” może znajdować się zatem wiele maszyn obsługujących zapytania DNS.

Połączenie jest zarządzane przez protokół BGP, a same połączenia kierowane są losowo na wszystkie maszyny DNS.

Zalety wdrożenia DNS Anycast

DNS Anycast – niezawodność

Dzięki DNS Anycast uzyskuje się zatem zwiększenie niezawodności działania serwerów DNS, gdyż zamiast jednego serwera jest wiele węzłów, które obsługują zapytania DNS. Gdy któryś serwer DNS ulega awarii, to jego rolę przejmują pozostałe węzły, a ten uszkodzony jest dynamicznie i niezauważalnie usuwany z pracy.

W klasycznym podejściu, gdy uszkodzeniu ulegnie np. pierwszy serwer DNS, zapytania DNS z internetu kierowane są nadal do uszkodzonej maszyny, zanim przełączone zostaną na serwer zapasowy. Powoduje to czasem kilkudziesięciosekundowe opóźnienia. W przypadku stosowania DNS Anycast taka sytuacja nie ma miejsca.

DNS Anycast – zwiększenie szybkości odpowiedzi DNS

Dzięki DNS Anycast można skrócić element czasu TTFB, czyli „czas oczekiwania na serwer DNS”. Skrócenie czasu jest możliwe ze względu na to, że serwerów DNS jest wiele i są one mniej obciążone niż pierwszy serwer DNS, na który trafia większość zapytań w klasycznym układzie serwerów DNS.

Kluczowym czynnikiem jest w tym przypadku losowe (np. wg algorytmu round-robin), czyli równe obciążenie wielu serwerów zapytaniami DNS.

DNS Anycast – łatwa skalowalność

Dzięki DNS Anycast można w prosty sposób dodawać kolejne maszyny będące składnikami w klastrze DNS. Adres serwerów DNS (np. dns.smarthost.pl) nie ulega zmianie, a jedynie dodawane są kolejne serwery „w zapleczu” Anycast.

Jest to niezauważalne i możliwe w każdej chwili „w locie”, gdyż w praktyce klient wysyłający zapytanie DNS, nie wie do którego serwera w klastrze się łączy, ani ile serwerów DNS tworzy klaster DNS.

DNS Anycast – możliwość rozbudowy o wiele lokalizacji geograficznych

Dzięki DNS Anycast można rozbudować system w ten sposób, żeby serwery DNS były fizycznie zlokalizowane w wielu lokalizacjach geograficznych, np. na różnych kontynentach. Dzięki takiemu zabiegowi można skrócić czas odpowiedzi serwera DNS dla klientów pochodzących z bardziej odległych lokalizacji.

Wymaga to jednak skomplikowanych mechanizmów routingu BGP, związanych m.in. z rozgłaszaniem tej samej adresacji IP w wielu sieciach autonomicznych ASN w różnych fizycznych lokalizacjach.

Dobre praktyki w systemie DNS

Serwery DNS mają być dostępne zawsze. To podstawa i oczywistość. Pojawia się zatem wiele dobrych praktyk, które należy stosować dla celów zwiększenia dostępność serwerów DNS.

Dobrą praktyką jest podawanie dla domeny 3 serwerów DNS, zamiast obowiązkowych dwóch. Ryzyko, że przestaną działać w wyniku awarii dwa serwery jest zawsze większe niż to, że ulegną awarii aż trzy serwery.

Inną dobrą praktyką, po stronie dostawcy usług, jest to, żeby serwery DNS znajdowały się w dwóch różnych sieciach autonomicznych (tzw. ASN, Autonomic System Network), z osobnymi routingami oraz lokalizacjami geograficznymi. Pozwala to na zwiększenie niezawodność działania już na poziomie ruchu sieciowego.

W Smarthost, nasze serwery DNS znajdują się fizycznie w dwóch różnych sieciach autonomicznych (ASN), a dodatkowo wprowadzona została obsługa DNS-Anycast pozwalająca na korzystanie z klastra serwerów w naszej głównej sieci ASN.


Nasz klaster serwerów DNS zarządzany przez technologię Anycast działa automatycznie dla wszystkich kont hostingowych.


Wojciech Babicz
Latest posts by Wojciech Babicz (see all)