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.