Le DNS à tour de rôle est-il une solution possible pour la haute disponibilité?

Réponses:

13

Le round robin DNS n'est pas un bon substitut à un équilibreur de charge. Le serveur DNS continuera de distribuer l'IP du nœud qui est en panne, de sorte que certains de vos utilisateurs accéderont à votre service et d'autres non.

Lorsque le client effectue la requête DNS, le serveur DNS renvoie toutes les adresses IP associées à ce nom. La magie est effectuée par le serveur DNS en faisant tourner l'ordre de cette liste pour chaque requête. Cependant, il appartient à l'application de mettre en œuvre la capacité de "parcourir" la liste jusqu'à ce qu'elle trouve une adresse IP qui fonctionne. Et la plupart des applications ne le font pas.

Windows Telnet, curieusement, est une de ces applications suffisamment intelligente pour parcourir la liste chaînée des adresses IP renvoyées. Vous pouvez voir ce comportement vous-même si vous essayez de telnet sur google.com, par exemple. Vous remarquerez qu'il faut beaucoup de temps pour finalement échouer. C'est parce que google.com a beaucoup d'adresses IP et que le client telnet essayait tout le monde.

Ryan Ries
la source
Je comprends que les clients obtiennent toujours les deux IP de la NS. C'est juste que par défaut, ils choisissent le premier de la liste. Mais que se passe-t-il si le premier est en panne? vont-ils essayer avec le second?
GetFree
9
Cela dépend totalement de l'application. Si nous parlons de navigateurs Web par exemple, la plupart des navigateurs Web modernes parcourent la liste jusqu'à ce qu'ils réussissent, certains navigateurs (généralement les plus anciens) échouent juste après que la première IP infructueuse ait été essayée. Plus d'infos: nber.org/sys-admin/dns-failover.html et blog.engelke.com/2011/06/07/web-resilience-with-round-robin-dns
Ryan Ries
D'après les liens que vous avez donnés, il semble que cela fonctionne. Au moins pour les clients HTTP (ce qui m'intéresse en ce moment). Tous les navigateurs modernes et même les clients HTTP de niveau inférieur basculent vers une autre IP de la liste.
GetFree
Oui. Je voulais juste vous dire que cela dépend de l'application. YMMV, etc.
Ryan Ries
@RyanRies, le RFC donne-t-il des recommandations concernant le comportement du client? Telnet est-il conforme lorsqu'il essaie toutes les adresses IP au lieu d'utiliser simplement la première?
Pacerier
14

L'utilisation d'un équilibreur de charge laissera toujours un seul point de défaillance. Si votre équilibreur de charge se déconnecte, votre site Web tombe en panne.

Conterary à la réponse ci - dessus, la plupart des clients HTTP déjà DO soutien à essayer chaque adresse IP renvoyée d'une requête DNS jusqu'à ce que l' on revient avec une réponse valide. Veuillez voir ici:

http://blog.engelke.com/2011/06/07/web-resilience-with-round-robin-dns/

Il semble que l'auteur ait testé les navigateurs suivants et les ait trouvés fonctionner correctement.

Chrome 11 sur Windows 7
Firefox 4.0 sur Windows 7
Internet Explorer 8 sur Windows 7
Opera 11 sur Windows 7
Safari 5 sur Windows 7
Internet Explorer 7 sur Windows XP (après un délai notable)
Firefox 4.0 sur Windows XP (après un délai notable)
Navigateur natif Android sur Android 2.3.3
Navigateur natif iPhone sur iOS 4.3.3

L'utilisation du round robin ne fera pas toutes les fonctionnalités d'un serveur d'équilibrage de charge, des choses comme la possibilité de surveiller les temps de réponse des deux serveurs et d'acheminer plus de trafic vers l'un, si l'autre ne répond pas aussi vite qu'il le devrait). Pour la résilience, je dirais que le Round Robin DNS est probablement une meilleure solution car il n'y a plus un seul point de défaillance.

Tony Weston
la source
Voir le deuxième commentaire dans la réponse acceptée
GetFree
2

Bien que le DNS à tour de rôle n'ait généralement pas de rétroaction sur l'état des serveurs pour lesquels il fournit des adresses, il peut être utile si vous disposez alors d'une sorte d'équilibreur de charge (y compris des astuces basées sur un routeur) pour chacune de ces adresses.

Il existe des astuces pour mettre à jour DNS en cas d'échec; si cela se produit, un DNS à tour de rôle avec des TTL suffisamment courts peut être un pseudo-équilibreur de charge.

Michael Graff
la source