DNS-Server mit Lastenausgleich: UDP / TCP

10

Ich wurde gebeten, unsere Lastausgleichsinfrastruktur im Rechenzentrum neu aufzubauen.

Die ursprüngliche Anforderung bestand darin, FTP-Server mit Lastenausgleich zu erstellen. Ich habe versucht, dies mit dem aktuellen Load Balancer ( Piranha / LVS) zu tun , habe es aber nicht zum Laufen gebracht. Nicht nur, weil es für diese Software kaum Dokumentation gibt. Da dies Piranhaals veraltet gilt, ging ich HAProxynach ein paar Tagen zum Versuch über, was die Arbeit in einem Bruchteil der Zeit erledigte , die ich damit verbracht hatte Piranha.

Ich habe also einen FTP-Lastausgleich (passiver Modus) eingerichtet. Jetzt wurde ich gebeten, den gesamten Piranha Load Balancer im Rechenzentrum zu ersetzen. In der aktuellen Piranha-Konfiguration haben wir mehrere Webserver, IIS-Server ... aaa und DNS .

Nein, hier ist die Sache: Es
HAProxyscheint eine häufig verwendete LB zu sein, aber sie ist nicht in der Lage, damit umzugehenUDP load balancing . Das ist ein Mist, da mir gefällt, wie es HAProxyfunktioniert. Also habe ich viel gegoogelt und bin auf verschiedene Dinge gestoßen. Die meisten Leute scheinen LVSals LB für DNS (TCP / UDP) zu verwenden. Einige verwenden dlbDNS, einige verwenden lbnamedund einige verwenden netfilter / iptables.

Da ich bei HAProxyFTP-, HTTP- und IIS-Servern bleiben möchte , war ich verwirrt, wenn ich es nebeneinander verwendete LVS.

Anforderungen:
2 LB-Instanzen mit Failover
2 DNS-Server (bereits vorhanden) mit Failover
Mehrere Backend-Server (http, application, etc ...)

Fragen:
Ist das möglich? Ist ein UDP-Lastausgleich auf DNS-Servern überhaupt erforderlich? Gibt es irgendeine Ressource, die mir zeigen könnte, wie ich damit anfangen kann? Oder gibt es eine LB-Lösung, die nicht nur TCP / HTTP, sondern auch UDP-Lastausgleich verarbeiten kann?

PS: Die LB-Lösung sollte keine Hardware und Open Source / GPL-Lizenz / kostenlos sein.

Jede Hilfe oder Führung zu entsprechenden Ressourcen wird sehr geschätzt!

Moshpit
quelle
Überprüfen Sie Nginx nginx.com/blog/announcing-udp-load-balancing Dies scheint Ihre DNS-Frage zu beantworten
user433519

Antworten:

15

Lasten Sie Ihr DNS nicht aus.

Es ist ein unglaublich leichtes Protokoll - Sie benötigen eine enorme Menge an Datenverkehr, um mehr als eine Box zu benötigen (in diesem Fall haben Sie ohnehin nur einen Engpass bei Ihrem Load Balancer), und die Ausfallsicherheit ist integriert, da Sie mehrere NS-Datensätze verwenden können in Ihrer Delegation (andere Server werden verwendet, wenn einer ausfällt).

Shane Madden
quelle
Verwenden Sie auf jeden Fall die mehreren NS-Einträge, da TCP für DNS immer häufiger wird. Lassen Sie es einfach den Lastausgleich selbst. Das Rad neu zu erfinden ist aus einem bestimmten Grund schmerzhaft.
cpt_fink
Mehrere DNS-Server bieten Redundanz und verhindern einen Totalausfall. Ein ausgefallener DNS-Server würde jedoch immer noch zu Verzögerungen bei der Namensauflösung führen.
200_Erfolg
Okay, macht für mich Sinn. Die Sache ist, dass ich für Failover-Zwecke immer noch eine virtuelle IP benötigen würde, wenn ich mich nicht irre, da wir zwei Computer haben werden, die HAProxy und LVS für das Routing enthalten. Wie würde ich das angehen?
Mosh Pit
2
@MoshPit vrrpd oder keepalived sind gute Optionen.
Shane Madden
Ich nehme an, Sie sprechen von einem Active - Active Hot Standby-Setup, richtig?
Mosh Pit
11

Ich fühle mich mit diesen Fragen und Antworten unwohl, da nicht wirklich festgestellt wurde, um welche Art von DNS-Server es sich handelt. Es gibt einige signifikante Missverständnisse, wenn es um die Ausfallsicherheit von rekursivem DNS geht, und es ist wichtig, dass Personen, die über Suchmaschinen einsteigen, diese Diskussion nicht mit einem falschen Sicherheitsgefühl verlassen.

  • Autorisierendes DNS : Bei autorisierenden DNS-Servern ist das allgemeine Wissen über die Ausfallsicherheit von DNS genau richtig. Solange Sie mehrere autorisierende DNS-Server haben, die geo-redundant sind, ist alles in Ordnung. Der Hauptgrund für das Hinzufügen einer hohen Verfügbarkeit für einzelne IPs ist, dass Sie viele autorisierende Zonen hosten . Auf diese Weise können Sie die Anzahl Ihrer Server erhöhen, ohne die Registrareinstellungen für jede gehostete Domain ändern zu müssen.

  • Rekursives DNS : Verwenden Sie immer eine Hochverfügbarkeitslösung. (BGP, Gerät usw.) Hier können Sie ernsthafte Probleme bekommen. Nicht alle Resolver-Bibliotheken sind gleich: Windows-DNS-Clients führen einen Round-Robin-Vorgang für den zwischen Servern verwendeten ersten Server durch, aber die meisten Unix-basierten Systeme durchlaufen die Liste immer nacheinander. Noch weniger bekannt ist, dass diese Unix-Bibliotheken bei jeder Suchdomänenkombination eine Zeitüberschreitung aufweisen müssen, bevor sie zum nächsten Server wechseln können. Wenn Sie mehrere Suchdomänen konfiguriert haben und der erste Server in der Resolver-Suchreihenfolge tot ist, kann dies zu erheblichen Verzögerungen bei der DNS-Auflösung für jede einzelne Anforderung führen: mehr als genug, um Probleme in Ihren kritischen Anwendungen zu verursachen.

Denken Sie beim rekursiven DNS daran, dass Ihre Serverinfrastruktur nur so stabil ist wie die am besten geeignete Clientkonfiguration. Wenn Ihr Unternehmen wächst, haben Sie nie die Kontrolle darüber. Treffen Sie keine Entwurfsannahmen, die auf einer homogonen Server-Betriebssystemumgebung basieren, da die Dinge in einem wachsenden Unternehmen selten gleich bleiben. Dies wird definitiv jemanden beißen, wenn Sie es nicht im Voraus planen.

Andrew B.
quelle
Bisher verwenden wir bind / named als DNS-Dienst.
Mosh Pit
Guter Punkt - ich habe in meiner Antwort angenommen, dass dies maßgeblich ist, aber Sie haben Recht, es kann sich um einen Recursor handeln.
Shane Madden
1
@MoshPit Ihr "DNS-Dienst" -Kommentar hat nicht klargestellt, ob dies rekursiv oder maßgeblich ist. Autorisierend ist, wenn Sie Domains hosten. Rekursiv ist etwas, das Sie verwenden würden, um die IP-Adresse von Domänen abzurufen, die Sie nicht hosten. Server, die beides tun, sind "gemischt", was gegen bewährte Sicherheitsmethoden verstößt.
Andrew B
1
Ich entschuldige mich dafür und habe festgestellt, dass Sie diesen Kommentar gepostet haben. Wir haben die Kontrolle über unsere eigenen DNS-Server, und diese sind maßgeblich.
Mosh Pit
Verwenden Sie keinen Load Balancer für hohe Verfügbarkeit.
womble
2

In diesen Tagen können Sie dnsdistvon PowerDNS verwenden

Aus der README

dnsdist ist ein hoch DNS-, DoS- und missbrauchsbewusster Loadbalancer. Das Lebensziel besteht darin, den Datenverkehr an den besten Server weiterzuleiten und legitimen Benutzern Spitzenleistungen zu bieten, während missbräuchlicher Datenverkehr umgeleitet oder blockiert wird.

dnsdist ist dynamisch in dem Sinne, dass seine Konfiguration zur Laufzeit geändert werden kann und dass seine Statistiken über eine konsolenähnliche Schnittstelle abgefragt werden können.

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

Sie bieten Repositorys für gängige Betriebssysteme: https://repo.powerdns.com/

Boden Garman
quelle