Serwery DNS z równoważeniem obciążenia: UDP / TCP

10

Poproszono mnie o przebudowanie infrastruktury równoważenia obciążenia w centrum danych.

Pierwotnym żądaniem było obciążenie serwerów FTP równoważenia. Próbowałem to zrobić przy użyciu bieżącego modułu równoważenia obciążenia ( Piranha / LVS), ale nie uruchomiłem go. Nie tylko dlatego, że jest mało dokumentacji dla tego oprogramowania. Ponieważ Piranhajest to uznawane za przestarzałe, przeszedłem do niego HAProxypo kilku dniach prób, co wykonało pracę w ułamku czasu Piranha.

Mam więc równoważenie obciążenia FTP (tryb pasywny). Teraz poproszono mnie o zastąpienie całego modułu równoważenia obciążenia Piranha w centrum danych. W obecnej konfiguracji Piranii mamy kilka serwerów WWW, serwerów IIS .... aaa i DNS .

Nie o to chodzi:
HAProxywydaje się być powszechnie używanym LB, ale nie jest w stanie sobie z tym poradzićUDP load balancing . To jest bummer, ponieważ lubię jak to HAProxydziała. Więc często googlowałem i natknąłem się na kilka rzeczy. Większość osób wydaje się używać LVSjako LB dla DNS (TCP / UDP). Niektóre wykorzystują dlbDNS, niektóre wykorzystują lbnamed, a niektóre wykorzystują netfilter / iptables.

Ponieważ chciałbym pozostać przy HAProxyserwerach FTP, HTTP, IIS, pomyliłem się co do używania go obok siebie LVS.

Wymagania:
2 instancje LB z przełączaniem awaryjnym
2 serwery DNS (już istnieją) z przełączaniem awaryjnym
Wiele serwerów zaplecza (http, aplikacja itp.)

Pytania:
czy to jest możliwe? Czy równoważenie obciążenia UDP na serwerach DNS jest nawet konieczne? Czy jest jakiś zasób, który mógłby mi pokazać, jak zacząć? A może istnieje rozwiązanie LB, które jest w stanie nie tylko obsługiwać protokół TCP / HTTP, ale także równoważenie obciążenia UDP?

PS: Rozwiązanie LB powinno być sprzętowe i otwarte / licencja GPL / wolne od kosztów.

Każda pomoc lub prowadząca do odpowiednich zasobów jest bardzo mile widziana!

Mosh Pit
źródło
Sprawdź Nginx nginx.com/blog/announcing-udp-load-balancing to wydaje się odpowiadać na twoje pytanie dns
user433519

Odpowiedzi:

15

Nie ładuj salda DNS.

Jest to niezwykle lekki protokół - potrzebujesz ogromnej ilości ruchu, aby potrzebować więcej niż jednego urządzenia (w takim przypadku i tak będziesz po prostu wąskim gardłem w module równoważenia obciążenia), a wbudowana jest odporność, ponieważ możesz używać wielu rekordów NS w twojej delegacji (inne serwery będą używane, jeśli ktoś nie działa).

Shane Madden
źródło
Zdecydowanie używaj wielu rekordów NS, ponieważ TCP staje się bardziej powszechny dla DNS, po prostu pozwól mu sam się zrównoważyć. Ponowne wynalezienie koła jest bolesne z jakiegoś powodu.
cpt_fink
Wiele serwerów DNS oferuje redundancję i zapobiega całkowitej awarii, ale zepsuty serwer DNS nadal powoduje opóźnienia w rozpoznawaniu nazw.
200_sukces
Ok, ma to dla mnie sens. Chodzi o to, że nadal potrzebowałbym wirtualnego adresu IP do celów przełączania awaryjnego, jeśli się nie mylę, ponieważ będziemy mieli 2 maszyny, które będą zawierać HAProxy i LVS do routingu. Jak mam do tego podejść?
Mosh Pit
2
@MoshPit vrrpd lub keepalived to dobre opcje.
Shane Madden
Zakładam, że mówisz o konfiguracji Active - Active Hot Standby, prawda?
Mosh Pit
11

Nie podobają mi się te pytania i odpowiedzi, ponieważ tak naprawdę nie ustalono, o jakim typie serwera DNS mówisz. Istnieją pewne znaczące nieporozumienia, jeśli chodzi o odporność rekurencyjnego DNS i ważne jest, aby osoby poruszające się za pośrednictwem wyszukiwarek nie odchodziły od tej dyskusji z fałszywym poczuciem bezpieczeństwa.

  • Autorytatywny DNS : w przypadku autorytatywnych serwerów DNS powszechna wiedza na temat odporności DNS jest dość prosta. Tak długo, jak masz wiele autorytatywnych serwerów DNS, które są geograficznie nadmiarowe, nic ci nie jest. Głównym powodem dodania wysokiej dostępności dla poszczególnych adresów IP jest to, że hostujesz wiele autorytatywnych stref. Pozwala to na zwiększenie liczby serwerów bez konieczności zmiany ustawień rejestratora dla każdej hostowanej domeny.

  • Rekurencyjny DNS : zawsze używaj jakiejś formy rozwiązania wysokiej dostępności. (BGP, urządzenie itp.) Tutaj możesz wpaść w poważne kłopoty. Wszystkie biblioteki resolvera nie są sobie równe: klienci DNS systemu Windows będą zaokrąglać początkowy serwer używany między zapytaniami, ale większość systemów opartych na Uniksie zawsze będzie kolejno przeglądać listę. Jeszcze mniej wiadomo, że te biblioteki uniksowe będą musiały przekroczyć limit czasu dla każdej kombinacji domen wyszukiwania przed przejściem na następny serwer. Jeśli skonfigurowano wiele domen wyszukiwania, a pierwszy serwer w kolejności wyszukiwania resolvera jest martwy, może to powodować znaczne opóźnienia w rozpoznawaniu DNS dla każdego pojedynczego żądania: więcej niż wystarczająco, aby spowodować problemy w aplikacjach o znaczeniu krytycznym.

Jeśli chodzi o rekurencyjny DNS, pamiętaj, że twoja infrastruktura serwera jest tak odporna, jak najbardziej konfiguracja klienta Braindead. W miarę rozwoju firmy jest to coś, nad czym nigdy nie masz kontroli. Nie przyjmuj żadnych założeń projektowych w oparciu o homogeniczne środowisko systemu operacyjnego serwera, ponieważ rzeczy rzadko pozostają takie same w rozwijającej się firmie. To na pewno ugryzie kogoś, jeśli nie planujesz tego z wyprzedzeniem.

Andrew B.
źródło
Do tej pory używamy bind / name jako usługi DNS.
Mosh Pit
Dobra uwaga - w mojej odpowiedzi zakładałem autorytatywność, ale masz rację, może to być rekursor.
Shane Madden
1
@MoshPit Twój komentarz dotyczący usługi DNS nie wyjaśnia, czy była to rekurencyjna czy wiarygodna. Autorytatywny jest, gdy hostujesz domeny. Rekurencyjne to coś, czego można użyć do uzyskania adresu IP domen, które nie są hostowane. Serwery obsługujące oba te elementy są „mieszane”, co jest sprzeczne z najlepszymi praktykami bezpieczeństwa.
Andrew B,
1
Przepraszam za to, zauważyłem, że kiedy opublikowałeś ten komentarz. Kontrolujemy własne serwery DNS, które są autorytatywne.
Mosh Pit
Nie używaj modułu równoważenia obciążenia dla wysokiej dostępności.
womble
2

Obecnie możesz korzystać dnsdistz PowerDNS

Z README

dnsdist to moduł równoważący obciążenia w wysokim stopniu DNS, DoS i nadużycia. Jego celem w życiu jest kierowanie ruchu do najlepszego serwera, zapewniając najwyższą wydajność legalnym użytkownikom podczas manewrowania lub blokowania obraźliwego ruchu.

dnsdist jest dynamiczny, w tym sensie, że jego konfiguracja może być zmieniana w czasie wykonywania, a jego statystyki można sprawdzać za pomocą interfejsu podobnego do konsoli.

https://github.com/PowerDNS/pdns/tree/master/pdns/dnsdistdist

Udostępniają repozytoria dla popularnych systemów operacyjnych: https://repo.powerdns.com/

Boden Garman
źródło