Round-Robin-DNS verstehen
(blog.hyperknot.com)Round-Robin-DNS verstehen
-
Was ist Round-Robin-DNS?
- Wenn eine Website auf einem VPS bereitgestellt wird, fügt man in der Regel im Control Panel des DNS-Anbieters einen einzelnen A-Record hinzu.
- Bei Round-Robin-DNS können mehrere Server für dieselbe Subdomain angegeben werden, um die Last auf mehrere Server zu verteilen und Offline-Server automatisch zu erkennen, damit ein Online-Server ausgewählt werden kann.
- Es bietet eine einfache und elegante Lösung ohne den Einsatz eines Load Balancers und verursacht keine Kosten.
-
Wie funktioniert es theoretisch?
- Laut RFC 8305 "Happy Eyeballs" sollten Clients Adressen vor dem Verbindungsaufbau sortieren.
- Sie prüfen, ob ein Server online oder offline ist, und sortieren die Online-Server nach Ping-Zeit.
-
Wie funktioniert es in der Praxis?
- Es werden drei VPS in den USA, Europa und Singapur erstellt, und in Cloudflare werden drei proxied und nicht proxied A-Records angelegt.
- Jeder Server liefert ein farbiges Bild und den Hostnamen aus.
Verhalten der Clients bei der Serverauswahl
-
Chrome
- Wählt an allen Standorten zufällig, bleibt nach der Auswahl jedoch dabei.
- Bewertet die Auswahl nach einigen Stunden erneut.
-
Firefox
- Ähnlich wie Chrome: zufällige Auswahl und danach fixiert.
-
Safari
- Wählt immer korrekt den nächstgelegenen Server.
-
curl
- Liegt anfangs möglicherweise falsch, korrigiert sich beim zweiten Aufruf aber auf den nächstgelegenen Server.
-
Cloudflare
- Wählt basierend auf der Client-IP einen zufälligen Standort aus und bleibt dann dabei.
Verhalten der Clients bei teilweise offline befindlichen Servern
- Alle Clients erkennen Offline-Server und wählen einen Ersatzserver aus.
- Cloudflare erkennt Offline-Server nicht; wenn der ausgewählte Server offline ist, wird der Offline-Zustand unverändert ausgeliefert.
Verbesserungen für Cloudflare
- Offline-Server sollten erkannt werden.
- Es wird eine Funktion benötigt, die den Server mit der niedrigsten Latenz auswählt.
Zusammenfassung von GN⁺
- Round-Robin-DNS ist eine Methode, um Last auf mehrere Server zu verteilen, und lässt sich auch ohne Load Balancer einfach umsetzen.
- Browser und Clients unterscheiden sich in der Art der Serverauswahl; insbesondere Safari wählt den nächstgelegenen Server zuverlässig aus.
- Bei Cloudflare besteht das Problem, dass Offline-Server nicht erkannt werden, und das sollte verbessert werden.
- Dieser Artikel ist hilfreich, um die Funktionsweise von Round-Robin-DNS zu verstehen, und kann für die Untersuchung der Unterschiede bei Serverauswahl-Algorithmen interessant sein.
1 Kommentare
Hacker-News-Kommentare
Das DNS-Team wurde um eine Erklärung der aktuellen Situation gebeten; sobald eine Antwort vorliegt, wird sie geteilt. Der Code ändert sich häufig, sodass es schwierig ist, den aktuellen Stand genau zu kennen. Die Ursache des Problems könnte in der Aufrechterhaltung der Verbindung zwischen Client-IP und Backend-Server liegen.
DNS-Load-Balancing kann komplexe Probleme verursachen. Beim golang-HTTP2-Client kann es bei der Verwendung von RR-DNS zu Problemen kommen. In manchen Fällen entdeckt der Client keine neuen Server.
MAX_CONNECTION_AGEgesetzt werden, um Clients regelmäßig zu trennen.Es gibt keine standardisierte Lösung für Service Discovery. Möglicherweise ist es am besten, einen requestbasierten Load Balancer zu implementieren und eine virtuelle IP zu verwenden, damit der Load Balancer Health Checks durchführen kann.
SRV-DNS-Records waren eine frühe Lösung, mit der sich allen Services Prioritäten zuweisen ließen, werden aber aus politischen Gründen nicht von HTTP-Clients verwendet. Neue HTTPS- und SVCB-DNS-Records werden als neue Lösung für Load Balancing vorgeschlagen.
Wenn ein Server offline ist, wechselt der Client bei einer abgelehnten Verbindung zur nächsten IP. In der Praxis kann es jedoch vorkommen, dass ein Server nicht antwortet oder nach dem Verbindungsaufbau stumm bleibt. Dann ist man auf Client-Timeouts angewiesen.
Die Zuverlässigkeit wird auf Client-Seite bestimmt. Einige Systeme geben immer die niedrigste IP-Adresse zurück, was Probleme verursachen kann. DNS-RR ist kein Load Balancer; ein Load Balancer ist die bessere Lösung.
Jemand hat einen Decoder in Perl geschrieben und behauptet, alles sollte in Perl geschrieben sein.
RR-DNS ist nur für Load Balancing nützlich und erkennt die Verfügbarkeit von Servern nicht automatisch. Dafür muss man den Clients intelligente Funktionen hinzufügen.
Wenn ein Server ausfällt, können sich Menschen dank weltweit verteilter IP-Adressen weiterhin verbinden.
Bei Amazon wurde in den 2000er-Jahren Round-Robin-DNS für Onsite-Hosts verwendet. Damals war das die schnellste Methode für Load Balancing. Allerdings war Wi-Fi der größte Engpass.
Cloudflare Load Balancing wird zwar erwähnt, aber nicht tatsächlich getestet. Cloudflare kann Offline-Server automatisch erkennen und auf andere Server umschalten.