Eine einzelne Anycast-IP-Adresse bietet nicht die gleiche Redundanz wie zwei Unicast-IP-Adressen mit unterschiedlichen IP-Präfixen.
Oft ist das schwierigste Problem für die Redundanz nicht, wenn etwas vollständig ausfällt, sondern wenn es sich gerade so schlecht verhält, dass die Integritätsprüfungen noch bestanden werden, aber tatsächlich nicht funktionsfähig sind.
Ich habe ein Anycast-DNS-Setup gesehen, bei dem ein DNS-Server ausgefallen ist, aber Pakete trotzdem an diesen DNS-Server weitergeleitet werden. Was auch immer sich um die Werbung für das Präfix kümmerte, war sich möglicherweise einfach nicht bewusst, dass der DNS-Server ausgefallen war.
Noch schwieriger wird es, wenn der betreffende DNS-Server kein autorisierender DNS-Server, sondern ein rekursiver Resolver ist.
Ein solcher rekursiver Resolver müsste sowohl die Anycast-Adresse zum Empfangen von Abfragen von Clients als auch Unicast-Adressen zum Abfragen autorisierender DNS-Server haben. Wenn die Unicast-Adressen jedoch ausfallen, kann dies leicht so gesund aussehen, dass es sich weiterhin um weitergeleitete Abfragen handelt.
Anycast ist ein großartiges Tool für Skalierbarkeit und Reduzierung der Latenz. Aus Redundanzgründen sollte es jedoch nicht allein stehen.
Mehrere redundante Anycast-Pools sind jedoch eine gute Lösung für die Verfügbarkeit. Ein bekanntes Beispiel ist 8.8.8.8 und 8.8.4.4. Beide sind Anycast-Adressen, sollten jedoch niemals an denselben physischen DNS-Server weitergeleitet werden (vorausgesetzt, Google hat seine Arbeit gut gemacht).
Wenn Sie 10 physische DNS-Server haben, können Sie diese als 2 Pools mit 5 Servern in jedem Pool oder als 5 Pools mit 2 in jedem Pool konfigurieren. Sie möchten vermeiden, dass sich ein physischer DNS-Server gleichzeitig in mehreren Pools befindet.
Wie viele IPs sollten Sie also zuweisen? Sie benötigen IPs, die unabhängig voneinander als Anycast konfiguriert werden können. Das bedeutet normalerweise, dass Sie jedem Pool einen vollständigen / 24 IPv4-Adressraum oder / 48 IPv6-Adressraum zuweisen müssen. Dies kann die Anzahl der Pools, die Sie haben können, sehr gut begrenzen.
Wenn es sich um autorisierende Server handelt, sollte die DNS-Antwort mit all Ihren NS-Einträgen und A- und AAAA-Kleber in ein einzelnes 512-Byte-Paket passen. Für die Root-Server hat sich dies auf 13 Adressen ausgewirkt. Dies beinhaltete jedoch nicht Kleber und IPv6, sodass die Anzahl, die Sie erreichen würden, niedriger wäre.
Jeder Pool sollte so geografisch wie möglich verteilt sein. Wenn Sie 5 Server in Europa und 5 in Nordamerika sowie 2 Anycast-IPs haben, erstellen Sie nicht einen Pool, der sich über jeden Kontinent erstreckt. Sie legen 2 aus Europa in einen Pool mit 3 aus Nordamerika und die anderen 5 in den anderen Pool.
Wenn Sie mehr als 2 Anycast-Pools haben, können Sie einen physischen Server vorübergehend in mehr als einem Pool befinden lassen. Sie sollten jedoch niemals zulassen, dass sich ein physischer Server gleichzeitig in allen Pools befindet.
Das Kombinieren von Anycast und Unicast ist möglich, aber Vorsicht ist geboten. Wenn Sie IPs für zwei Pools haben, würde ich nicht kombinieren. Wenn Sie jedoch nur eine einzige Anycast-IP haben, mit der Sie arbeiten können, kann es sinnvoll sein, auch Unicast-IPs einzuschließen. Das Problem ist, dass Sie durch das Einbeziehen von Unicast-IPs nicht so gute Latenz und Lastenausgleich erhalten.
Wenn ein physischer Server sowohl von Unicast als auch von Anycast zur Verfügung gestellt wird, besteht die Gefahr, dass Benutzer denselben Server wie der primäre und der sekundäre Server erreichen und den Zugriff verlieren, wenn er ausfällt. Dies kann vermieden werden, indem nur Unicast-Adressen von Servern verwendet werden, die sich nicht im Anycast-Pool befinden, oder indem Benutzern immer zwei Unicast-Adressen zur Verfügung gestellt werden.
Je mehr Unicast-Adressen Sie in den Mix einfügen, desto weniger Anfragen werden an die Anycast-Adresse gesendet und desto weniger profitieren Sie von Anycast in Bezug auf Latenz und Skalierbarkeit.
Es wird empfohlen, mindestens zwei Adressen mit unterschiedlichen Präfixen zu verwenden und diese unter zwei verschiedenen TLDs zu benennen. Diese beiden Adressen können auf Wunsch beliebig übertragen werden. Wenn Sie nur eine IP-Adresse haben, erhalten Sie einen einzigen Fehlerpunkt. Wenn das Routing zu dieser Adresse nicht funktioniert (Konfigurationsfehler, eine Anycast-Instanz funktioniert nicht richtig, das Präfix wird entführt usw.), ist Ihre gesamte Domain nicht mehr erreichbar.
Für jede Anycast-Adresse muss mindestens ein
/24
IPv4- oder/48
IPv6-Präfix in BGP routingfähig sein. Kleinere (längere) Präfixe werden in der Regel an vielen Stellen nicht in die globale Routing-Tabelle aufgenommen.Geben Sie niemals eine falsche IP-Adresse als DNS-Server ein. Dies führt zu schwerwiegenden Verzögerungen für Resolver.
quelle
Der RFC 1034 gibt nur an, dass Sie zwei DNS-Server benötigen. Dies ist keine obligatorische Anforderung, sondern eine Empfehlung. Machen Sie also damit, was Sie wollen. Unabhängig davon, ob Sie HA möchten, können Ihren 2 DNS-Servern mit anycast dieselbe IP zugewiesen werden. Das einzige, was Ihre Endbenutzer bemerken würden, wenn ein DNS-Server ausfällt, ist ein vorübergehender Mangel an Konnektivität, wenn das Netzwerk neu konvergiert.
Zusammenfassend lässt sich sagen, dass die Verwendung von Anycast ausreicht, um RFC 1034-konform zu sein.
quelle
8.8.8.8
und8.8.4.4
) für seine DNS-Server an? Sie haben bereits Anycast eingerichtet. Warum also nicht einfach eine Adresse anbieten8.8.8.8
?