Je n'avais jamais entendu parler de anycast jusqu'à il y a quelques secondes quand j'ai lu " Quels sont quelques trucs de serveur/réseau sympas ou utiles? ".
L'article wikipedia " Anycast " à ce sujet est assez formel et n'évoque pas vraiment une image mentale de la façon dont il serait utilisé.
Quelqu'un peut-il expliquer en quelques phrases informelles ce qu'est "anycast", comment vous le configurez (juste dans un sens général) et quels sont ses avantages (qu'est-ce que cela facilite)?
Anycast est une technique de mise en réseau où le même préfixe IP est annoncé à partir de plusieurs emplacements. Le réseau décide ensuite vers quel emplacement acheminer une demande d'utilisateur, en fonction des coûts du protocole de routage et éventuellement de la "santé" des serveurs publicitaires.
Anycast présente plusieurs avantages. Premièrement, en régime permanent, les utilisateurs d'un service anycast (DNS est un excellent exemple) se connecteront toujours au serveur DNS le plus proche (du point de vue du protocole de routage). Cela réduit la latence et fournit un niveau d'équilibrage de charge (en supposant que vos consommateurs sont répartis uniformément sur votre réseau).
Un autre avantage est la facilité de gestion de la configuration. Plutôt que d'avoir à configurer différents serveurs DNS selon l'endroit où un serveur/poste de travail est déployé (Asie, Amérique, Europe), vous avez une adresse IP qui est configurée à chaque emplacement.
Selon la façon dont anycast est implémenté, il peut également fournir un niveau de haute disponibilité. Si l'annonce de la route anycast est conditionnelle à une sorte de vérification de l'état (par exemple, une requête DNS pour un domaine bien connu, dans cet exemple), dès qu'un serveur tombe en panne, sa route peut être supprimée. Une fois le réseau reconvergé, les demandes des utilisateurs seront transmises de manière transparente à la prochaine instance DNS la plus proche, sans aucune intervention ou reconfiguration manuelle.
Un dernier avantage est celui de la mise à l'échelle horizontale; si vous constatez qu'un serveur est surchargé, déployez simplement un autre dans un emplacement qui lui permettrait de prendre une partie des demandes du serveur surchargé. Encore une fois, comme aucune configuration client n'est requise, cela peut être fait très rapidement.
L'une des choses qui m'a souvent dérouté dans la compréhension de "anycast" est que, même s'il s'agit d'un terme de haut niveau, dans la mise en œuvre pratique, cela se résume généralement à deux exemples:
Routeurs utilisant BGP pour annoncer le même bloc IP via plusieurs EN TANT QUE chemins en tant qu'esquisses manière de diriger les utilisateurs vers un site "plus proche". Dans le même temps, il permet un basculement presque transparent vers les autres sites en retirant simplement les itinéraires d'un site en difficulté. Cela peut être utile pour presque tous les protocoles, bien que cela soulève évidemment de nombreux problèmes de synchronisation des données dorsales.
Publier la même IP de service à partir de plusieurs points de votre propre réseau (via routage statique , OSPF , EIGRP , ou autre). Si les routes sont pondérées différemment , cela agit comme un mécanisme de basculement. Si les routes sont pondérées uniformément , elles peuvent tirer parti des capacités d'équilibrage de charge par paquet ou par flux de la plupart des routeurs de fournisseurs de marques renommées. Vous devez faire attention à ce que le protocole couche d'application soit à l'aise avec cela, c'est pourquoi vous en entendez presque toujours parler avec DNS où une demande est toujours un paquet et tout est sans état. Personnellement, je considère cela comme une intrusion hacky des problèmes de couche application dans la couche réseau lorsqu'une combinaison de DNS et d'équilibreurs de charge appropriés sera presque toujours une meilleure solution.
Principalement utilisé pour les services basés sur UDP comme DNS. Fondamentalement, vous annoncez la même route à partir de plusieurs centres de données à travers le monde. De cette façon, vos clients seront envoyés vers le centre de données "meilleur" et "le plus proche" en fonction des itinéraires BGP. Je mets "meilleur" et "plus proche" entre guillemets car les fournisseurs de réseau peuvent jouer à des jeux et acheminer le trafic de certains réseaux différemment. Généralement, les choses fonctionnent pour le mieux avec anycast, mais ce n'est pas une garantie.
Un exemple de cela serait de répertorier vos serveurs DNS comme 1.2.3.4 et 1.2.3.5. Vos routeurs annonceraient un itinéraire pour 1.2.3/24 sur plusieurs centres de données. Si vous êtes au Japon et avez un centre de données là-bas, il est probable que vous vous retrouviez là-bas. Si vous êtes aux États-Unis, vous serez envoyé dans votre centre de données américain. Encore une fois, il est basé sur le routage BGP et non sur le routage géographique réel, mais c'est généralement ainsi que les choses se décomposent.
Conformément à ma réponse d'origine, je viens de publier deux autres articles sur mon blog intitulés Anycast DNS - Partie 3, Utilisation de RIP et Anycast DNS - Partie 3, Utilisation de RIP (suite). Ce dernier donne plus de détails, mais sur www.netlinxinc.com/netlinx-blog.html, vous trouverez des recettes réelles sur la façon de configurer les routeurs Cisco et le logiciel de routage basé sur l'hôte Open Source Quagga pour Anycast DNS utilisant RIP.
Je travaille actuellement sur la rédaction du quatrième article de la série. Cela fournira des recettes sur la façon de déployer Anycast DNS à l'aide d'OSPF. Dernier de la série, je vais montrer des recettes pour déployer Anycast DNS en utilisant BGP.
Anycast DNS - Partie 1, vue d'ensemble
Anycast DNS - Partie 2, Utilisation de routes statiques
Étant donné que c'est principalement DNS pour le moment ...
Informellement, il rend votre service plus résilient et avec un meilleur accès/latence/vitesse réseau en vous permettant de configurer le même service dans plusieurs emplacements à travers le monde en utilisant la même adresse. Lorsque quelqu'un demande cette adresse, on lui donne l'itinéraire le plus proche/le meilleur.
Du point de vue du serveur:
Si l'unicast vous allez à une seule personne, et la multidiffusion vous allez à plusieurs, et la diffusion vous allez à toutes les personnes, alors anycast est schitzophrène et a plusieurs personnalités où la personnalité la mieux adaptée à chaque personne se connecte avec eux. Hmm. Pas la meilleure analogie.
DNS est une utilisation vraiment intéressante de anycast. Vous pouvez placer 5 serveurs DNS différents dans divers emplacements physiques et réseau mais partager une seule adresse (ou parfois à la fois DNS principal et secondaire). Selon l'endroit où se trouve la source, ils sont routés vers leur nœud le plus proche. Cela permet d'équilibrer le trafic et fournit une redondance en cas de mort d'un serveur DNS.
Il est également bon de noter que Anycast n'est pas bon ou fiable pour certaines connexions TCP qui ne peuvent pas survivre aux réinitialisations ou à toute longue conversation.
Les adresses IP Anycast, à l'aide de BGP, indiquent à Internet qu'il existe 2, 3 chemins ou plus vers un hôte spécifique, mais en réalité ce sont PAS le même hôte, ils sont exacts des répliques d'hôtes annoncées sur plusieurs centres de données pour obtenir une connexion à latence plus faible.
Par exemple, j'ai 3 serveurs effectuant une redirection 301 non www pour 198.251.86.133, si vous envoyez une requête ping à cet hôte, vous pouvez parfois obtenir des réponses EN DOUBLE, voire chuter en fonction de votre emplacement, car mes serveurs sont US-East, US. -Ouest et EUR. pour les connexions de courte durée (comme les 301 qui sont mises en cache par le navigateur), cela donne une réponse rapide par un serveur local dans le centre de données le plus proche.
Du point de vue de la redondance, il n'y en a pas dans anycast, vous auriez toujours besoin d'une redondance indépendante sur chaque site car cette IP (dans des scénarios typiques) pointera toujours vers ces centres de données.
Selon un de mes collègues, il est également utile comme technique d'atténuation des attaques DoS, car les gens ne peuvent attaquer que l'adresse IP anycast "la plus proche", donc s'il y a beaucoup de zombines aux États-Unis, par exemple, votre site Euro serait la plupart du temps non affectés, car ils ne peuvent pas réellement lui envoyer de paquets.
En outre, il peut être possible de l'utiliser comme moyen de filtrer (quelque peu naïvement) les paquets usurpés s'ils proviennent manifestement d'un endroit peu susceptible d'être annoncé dans BGP comme la bonne route (par exemple, les paquets arrivant en Europe lorsque l'ASN indique un N américain). bloquer).