- Lastverteilung per DNS
-
Lastverteilung per DNS (englisch Round robin DNS) ist eine einfache Technik zur Lastverteilung für Netzwerkdienste auf Basis des DNS. Da es aber zu einem Caching der DNS-Antworten kommt, ist diese Lösung für Lastverteilung nur manchmal sinnvoll.
Inhaltsverzeichnis
Funktionsweise
DNS lässt es zu, dass einem Namen mehrere IP-Adressen zugewiesen werden können. Allgemeiner formuliert: Es können mehrere Resource Records mit gleichem Label, gleicher Klasse und gleichem Typ aber jeweils unterschiedlichem Datenfeld existieren. Eine derartige Anordnung wird als Resource Record Set bezeichnet.
Durch Resource Record Sets kann eine einfache Lastverteilung (engl. Loadbalancing) realisiert werden.
- Beispiel:
server.example.com. 1800 IN A 192.0.2.70 server.example.com. 1800 IN A 192.0.2.71 server.example.com. 1800 IN A 192.0.2.72
Wird ein derartiger Name von einem Resolver abgefragt, so liefert der DNS-Server grundsätzlich alle bekannten IP-Adressen zurück, allerdings in wechselnder Reihenfolge. Der erste Request wird dann beispielsweise mit [192.0.2.70, 192.0.2.71, 192.0.2.72] beantwortet und der zweite mit [192.0.2.71, 192.0.2.72, 192.0.2.70]. Es liegt dann in der Verantwortung des Resolvers, welche IP-Adresse er tatsächlich verwendet.
Nach welcher Strategie ein DNS-Server die Reihenfolge vorgibt, kann bei Bind-kompatiblen Nameservern konfiguriert werden. Bei BIND sind drei Varianten möglich: zyklisch, zufällig und fest. Bei der Variante fest werden die IP-Adressen in der Reihenfolge zurückgegeben, in der sie im Nameserver abliegen.
Anmerkung: Bei reversen Zonen der IN-ADDR.ARPA-Domäne ist ein Loadbalancing nicht möglich, obwohl für eine IP-Adresse mehrere Namen definiert werden können. Eine Lastverteilung wäre hier auch nicht sinnvoll.
Fortschrittliche Techniken
Bei moderneren Resource-Record-Typen wie SRV oder NAPTR lässt sich außerdem noch eine Gewichtung definieren, die festlegt, welche Server-IP-Adressen am häufigsten an erster Stelle stehen. Die entsprechenden Server werden damit häufiger angesprochen.
Bei Record-Typen, die keine Gewichtungsparameter zur Verfügung stellen, besteht die etwas unschöne, aber machbare Alternative darin, die IP-Adressen entsprechend ihrer Gewichtung mehrfach zu vergeben, z. B. ADSL-Leitung dreimal, Funkstrecke nur einmal.
Außerdem gibt es die Möglichkeit, aus einem Pool von möglichen Servern nur einige zurückzuliefern. So werden beispielsweise vom Google-Nameserver immer drei IP-Adressen zurückgeliefert, die teilweise wechseln. Sinnvoll ist auch eine standortbezogene Rücklieferung von IP-Adressen, wenn mehrere verteilte Rechenzentren zur Verfügung stehen – dies wird z. B. von CDNs genutzt.
Einschränkungen
Die Lastverteilung durch DNS ist natürlich nur in dem Sinn gleichmäßig, was die Zuteilung betrifft. Über die danach entstehende tatsächliche Belastung weiß DNS nichts. Auch wird nicht überprüft, ob die Zielserver überhaupt ansprechbar sind. Vorgeschaltete Skripts können aber die Verfügbarkeit prüfen und nur diejenigen Server im Nameserver eintragen, die aktuell tatsächlich zur Verfügung stehen. Damit lassen sich Lastverteilung und Ausfallsicherung verbinden.
Beispiele für Webseiten, die Lastverteilung via DNS nutzen
Weblinks
Wikimedia Foundation.