80 votes

Plusieurs centres de données et trafic HTTP : Le DNS Round Robin est le SEUL moyen d'assurer un basculement instantané ?

Les enregistrements A multiples pointant vers le même domaine semblent être utilisés presque exclusivement pour mettre en œuvre le DNS Round Robin comme technique bon marché d'équilibrage de la charge.

L'avertissement habituel contre le DNS RR est qu'il n'est pas bon pour la haute disponibilité. Lorsqu'une IP tombe en panne, les clients continuent à l'utiliser pendant plusieurs minutes.

Un équilibreur de charge est souvent suggéré comme un meilleur choix.

Ces deux affirmations ne sont pas totalement vraies :

  1. Dans ce cas, lorsque le trafic est de type HTTP, la plupart des navigateurs HTML sont capables d'essayer automatiquement l'enregistrement A suivant si le précédent est en panne, sans nouvelle recherche DNS. Lire ici le chapitre 3.1 y ici .

  2. Lorsque plusieurs centres de données sont concernés, le DNS RR est la seule option pour répartir le trafic entre eux.

Alors, est-il vrai qu'avec plusieurs centres de données et un trafic HTTP, l'utilisation de DNS RR est le SEUL moyen d'assurer un basculement instantané lorsqu'un centre de données tombe en panne ?

Merci,

Valentino

Editar:

  • Bien entendu, chaque centre de données dispose d'un équilibreur de charge local avec un système de secours.
  • Il n'y a pas de mal à sacrifier l'affinité de session pour un basculement instantané.
  • AFAIK, la seule façon pour un DNS de suggérer un centre de données plutôt qu'un autre est de répondre avec seulement l'IP (ou les IP) associée(s) à ce centre de données. Si le centre de données devient inaccessible, toutes ces IP le sont également. Cela signifie que, même si les navigateurs HTML intelligents sont capables d'essayer instantanément un autre enregistrement A, toutes les tentatives échoueront jusqu'à ce que l'entrée dans le cache local expire et qu'une nouvelle recherche DNS soit effectuée, récupérant les nouvelles IP de travail (je suppose que le DNS suggère automatiquement un nouveau centre de données lorsqu'il échoue). Ainsi, le "DNS intelligent" ne peut pas garantir un basculement instantané.
  • Inversement, un DNS round-robin le permet. Lorsqu'un centre de données tombe en panne, les navigateurs HTML intelligents (la plupart d'entre eux) essaient instantanément les autres enregistrements A en cache qui sautent vers un autre centre de données (qui fonctionne). Ainsi, le DNS round-robin ne garantit pas l'affinité de session ou le RTT le plus bas mais semble être le seul moyen d'assurer un basculement instantané lorsque les clients sont des navigateurs HTML "intelligents".

Edit 2 :

  • Certaines personnes proposent TCP Anycast comme solution définitive. Sur ce Dans le document (chapitre 6), il est expliqué que le basculement d'Anycast est lié à la convergence BGP. Pour cette raison, Anycast peut employer de 15 minutes à 20 secondes pour se terminer. Ces 20 secondes sont possibles sur les réseaux dont la topologie a été optimisée pour cela. Il est probable que seuls les opérateurs CDN peuvent garantir des basculements aussi rapides.

Edit 3:*

  • J'ai fait quelques recherches de DNS et traceroutes (peut-être qu'un expert peut vérifier) et :
    • Le seul CDN utilisant TCP Anycast semble être CacheFly, d'autres opérateurs comme CDN networks et BitGravity utilisent CacheFly. Il semble que leurs bords ne peuvent pas être utilisés comme des reverse proxies. Par conséquent, ils ne peuvent pas être utilisés pour assurer un basculement instantané.
    • Akamai et LimeLight semblent utiliser un DNS géo-averti. Mais ils renvoient plusieurs enregistrements A. D'après les traceroutes, il semble que les adresses IP renvoyées se trouvent dans le même centre de données. Je suis donc perplexe quant à la façon dont ils peuvent offrir un accord de niveau de service de 100 % lorsqu'un centre de données tombe en panne.

0 votes

La haute disponibilité implique un basculement quasi instantané. Le client ne devrait pas remarquer de problème même si un centre de données tombe en panne. J'ai affiné la question.

0 votes

MaxCDN utilise anycast TCP et ses bords peuvent être utilisés en mode proxy de mise en cache ("origin fetch" dans la terminologie de l'industrie CDN).

0 votes

@vmiazzo, Votre lien pdf est en panne... Voulez-vous dire 15 minutes ou 20 secondes à 15 minutes ?

2voto

rkthkr Points 8463

2 - Vous pouvez le faire avec Anycast en utilisant Quagga

(Même s'il existe des informations selon lesquelles Anycast est mauvais avec TCP, plusieurs grandes entreprises l'utilisent, comme CacheFly).

0 votes

Absolument, mais vous ne pouvez pas le faire avec des serveurs loués, vous avez besoin de votre propre réseau.

0 votes

Ajout de quelques informations sur le basculement Anycast sur la question. Fondamentalement, TCP Anycast n'est pas non plus une solution parfaite.

2voto

old_guy Points 21

Je me demande combien de personnes répondant à ces questions gèrent réellement un grand réseau mondial de serveurs ? Google utilise le round robin et ma société l'utilise depuis des années. Il peut fonctionner assez bien, avec certaines limites. Oui, il doit être complété par d'autres mesures.

La véritable clé est d'être prêt à accepter un hoquet ou deux si un serveur tombe en panne. Lorsque je débranche un serveur, si un navigateur essaie d'y accéder, il y aura un délai d'une minute environ, le temps que le navigateur apprenne que l'adresse IP est hors service. Mais il passe ensuite très rapidement à un autre serveur.

Il fonctionne très bien, et les personnes qui prétendent qu'il cause beaucoup de problèmes ne savent pas de quoi elles parlent. Il suffit de le concevoir correctement.

Le basculement est nul. La meilleure HA utilise toutes les ressources, tout le temps.

Je travaille avec l'AP depuis 1986. J'ai suivi une formation approfondie pour créer des systèmes de basculement et je ne suis pas du tout un fan du basculement.

En outre, RR permet de répartir la charge, même si c'est de manière passive plutôt qu'active. Les journaux de nos serveurs indiquent clairement le pourcentage approprié de trafic sur chaque serveur - dans la limite du raisonnable.

1voto

Paco Points 6156

Un autre choix très simple consiste à utiliser un TTL faible (le niveau le plus faible dépend de vos besoins) dans l'enregistrement A ou CNAME du DNS et à mettre à jour cet enregistrement pour choisir l'IP qui sera utilisée.

Nous avons 2 ISP et plusieurs services publics et nous utilisons avec succès cette méthode pour la haute disponibilité depuis 3 ans.

0 votes

J'ai ajouté plus d'explications dans la question. De nombreux navigateurs HTML ignorent le TTL du DNS (DNS pinning), voir le document lié à la question. Changer la configuration du DNS quand un centre de données tombe en panne ne permet pas un basculement instantané sur le client.

1voto

MarioDS Points 289

Un certain nombre de FAI ont mal configuré leurs résolveurs, qui mettent en cache les enregistrements pendant un intervalle donné et ignorent complètement les paramètres TTL. Cela ne devrait pas être le cas et il n'y a aucune excuse pour cela, mais malheureusement, d'après mon expérience de la migration de nombreux sites web et services, cela arrive.

2 votes

Il y a une excuse à cela. Les TTL bas ont un impact important sur les performances des serveurs DNS très sollicités et leur utilisation permanente, plutôt que temporaire lorsqu'un changement est nécessaire, constitue un abus du système et de leurs ressources. La plupart des FAI n'appliqueront un TTL minimum qu'une fois qu'il aura été fixé à un niveau bas pendant plus d'une période raisonnable.

1voto

TCP Anycast est en fait très stable et est utilisé au moins par CacheFly (depuis 2002), Prolexic et BitGravity. Une bonne présentation sur TCP Anycast a été faite au NANOG 37 : http://198.108.95.21/meetings/nanog37/presentations/matt.levine.pdf

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X