Ich habe einen Domänennamen wie api.test.com
. Ich habe auch drei Server.
Ich möchte Redundanz zwischen ihnen haben, und wenn also ein Server offline ist, wird der Domänenname api.test.com
nicht dorthin umgeleitet, sondern nur zu den anderen.
A
Ich habe festgestellt, dass wir mehrere / -Einträge für denselben Domänennamen haben können AAAA
, es wird jedoch nicht berücksichtigt, ob der Computer pingt oder nicht, sondern es wird einfach zufällig eine aller verfügbaren IPs vergeben.
Wie kann ich Redundanz erreichen? Sollte ich mir einen anderen Server zulegen, der alle Anfragen umleitet, z. B. einen Proxy?
Antwort1
Nein, so funktioniert es nicht. Sie können mehrere Datensätze eines bestimmten Typs und Namens in einer Zone konfigurieren. Der Client ist sich dessen im Allgemeinen nicht bewusst; er fordert einen bestimmten Namen und Typ an (ein Browser fordert beispielsweise einen Namen vom Typ A, AAAA an, den Sie in das Adressfeld eingegeben haben).
Wenn mehr als ein Datensatz zurückgegeben wird, wählt er einen zufällig aus und versucht, sich dort zu verbinden. Es liegt am Client, erneut zu versuchen, eine Verbindung zu einem anderen Datensatz herzustellen, falls dieser vorhanden ist. Server fördern dieses Verhalten auch, indem sie dieselbe Abfrage jedes Mal mit einer anderen Reihenfolge der Datensätze beantworten. Selbst wenn also ein Client „immer den ersten auswählt“, findet die Zufallsauswahl auf dem Server trotzdem statt. Auf diese Weise wird eine primitive Form der Lastverteilung erreicht.
Spezielle DNS-Load Balancer geben A-Records mit sehr niedriger TTL zurück, sodass sie schnell ablaufen. Der Server kann daher schnell auf plötzliche Lastspitzen oder Ausfälle von Backend-Knoten reagieren, indem er deren Adressen aus Antworten auslässt. Sie können dies in Aktion sehen, wenn Sie versuchen, die Videokonferenzserver von Zoom aufzulösen. Sie verwenden diese Technologie. Dafür ist jedoch diese spezielle Software, ein DNS-Load Balancer, erforderlich, um einen DNS für diesen Namen zu verwalten, und das ist erst der Anfang der Geschichte.
Wenn die erste IP-Anfrage, die im A-Eintrag empfangen wurde, keine Antwort liefert, melden Webclients normalerweise eine Fehlermeldung, selbst wenn es andere IP-Adressen zum Ausprobieren gab. Es gibt Software, die es tatsächlich noch einmal versucht, beispielsweise könnte OpenVPN es unbegrenzt oft erneut versuchen, aber das ist ein Sonderfall.
DNS sorgt für Redundanz durch einen völlig anderen Mechanismus, wiederum vorausgesetzt, dass der Client intelligent genug ist. Es gibt spezielle Arten von DNS-Einträgen, genanntSRV(Dienst), der über 4 Datenfelder verfügt: Priorität, Gewicht, Hafen, Name.
Der Name ist am einfachsten: der Name des A-Eintrags, den dieser SRV-Eintrag beschreibt. Port ist der TCP- oder UDP-Port, auf dem der angeforderte Dienst auf dem Server mit diesem Namen läuft. Dies muss ein Name sein, dem ein A- oder AAAA-Eintrag zugeordnet ist; CNAME ist nicht zulässig. Wenn es mehr als einen A- oder AAAA-Eintrag mit diesem Namen gibt, wird für diesen bestimmten SRV-Eintrag das übliche DNS-Verhalten „einmal versuchen“ angewendet (der Client sollte jedoch andere SRV-Einträge ausprobieren, falls welche vorhanden sind, z. B. mit höheren Prioritätswerten).
Die Gewichtung ermöglicht eine tiefergehende Kontrolle des Lastenausgleichs: Wenn mehrere Datensätze mit derselben Priorität vorhanden sind, sollte der Client versuchen, die Last entsprechend ihrer Gewichtung zu verteilen. Dies geschieht häufig probabilistisch.
Priorität besteht aus Redundanz: Zuerst müssen Datensätze mit dem niedrigsten Wert ausprobiert werden, dann die mit der nächsten Priorität usw. Aber auch hier liegt die Entscheidung über einen erneuten Versuch beim Client.
Der Datensatz sieht folgendermaßen aus:
_kerberos._tcp.example.net. SRV 0 100 88 dc.example.net.
Unterstriche sind im Datensatznamen tatsächlich wörtliche Unterstriche. Es heißt, dass der Dienst „Kerberos“ über TCP an Port 88 von dc.example.net bereitgestellt wird. dc.example.net muss ein A- oder AAAA-Eintrag sein. Dieses Beispiel stammt aus MS Active Directory, das für den ordnungsgemäßen Betrieb stark auf DNS angewiesen ist und es für LDAP (Verzeichnis) und Kerberos (Sicherheitsframework) verwendet. Wenn Sie mehr als einen AD-Domänencontroller haben, gibt es mehr solcher Einträge, die auf verschiedene DCs verweisen.
Diese Art von Datensätzen wird beispielsweise für LDAP, Kerberos, Kpasswd (Kerberos-Passwortänderung), XMPP (Jabber), SIP (IP-Telefonie) undmanch andereDienstleistungen.
MXist wie ein „Sonderfall von SRV“, der an Port 25 gebunden ist und nur das Feld „Priorität“ ohne „Gewicht“ hat. Es ist nur ein „alter Stil“, der vor SRV erfunden wurde (und der es inspiriert hat). Und er wird nur für E-Mails verwendet.
SRV kann Ihnen bei Webdiensten nicht helfen. Es hilft nur bei Diensten, bei denen der Client weiß, dass er SRV-Einträge verwenden muss, um den Server zu ermitteln. Webclients tun dies nie.