Il est remarquable de constater que de nombreux contributeurs contribuent à la désinformation sur le DNS Round Robin en tant que mécanisme de répartition de la charge et de résilience. Il fonctionne généralement, mais vous devez comprendre comment il fonctionne et éviter les erreurs causées par toute cette désinformation.
1) Le TTL des enregistrements DNS utilisés pour le Round robin doit être court - mais PAS ZERO. Le fait d'avoir le TTL à zéro brise le principal moyen d'assurer la résilience.
2) DNS RR répartit, mais n'équilibre pas la charge, il la répartit parce que sur une large base de clients, ils ont tendance à interroger le serveur DNS indépendamment, et se retrouvent donc avec des entrées DNS de premier choix différentes. Ces différents premiers choix signifient que les clients sont servis par différents serveurs et que la charge est répartie. Mais tout dépend de l'appareil qui effectue la requête DNS et de la durée pendant laquelle il conserve le résultat. Un exemple courant est que tous les clients derrière un proxy d'entreprise (qui effectue la requête DNS pour eux) finissent par cibler un seul serveur. La charge est répartie, mais elle n'est pas équilibrée.
3) Le DNS RR offre une résilience tant que le logiciel client l'implémente correctement (et que le TTL et la capacité d'attention des utilisateurs ne sont pas trop courts). En effet, le DNS round robin fournit une liste ordonnée d'adresses IP de serveurs, et le logiciel client doit essayer de contacter chacune d'entre elles tour à tour, jusqu'à ce qu'il trouve un serveur qui accepte la connexion.
Ainsi, si le serveur de premier choix est hors service, la connexion TCP/IP du client est interrompue et, à condition que ni le TTL ni la durée d'attention n'aient expiré, le logiciel client effectue une nouvelle tentative de connexion à la deuxième entrée de la liste, et ainsi de suite jusqu'à ce que le TTL expire, ou qu'il arrive à la fin de la liste (ou que l'utilisateur abandonne par dégoût).
Une longue liste de serveurs en panne (votre faute) et de grandes limites de tentatives de connexion TCP/IP (erreur de configuration du client) peuvent entraîner une longue période avant que le client ne trouve un serveur fonctionnel. Un TTL trop court signifie qu'il n'arrive jamais à se frayer un chemin jusqu'à la fin de la liste, mais qu'il lance une nouvelle requête DNS et reçoit une nouvelle liste (dans un ordre différent, espérons-le).
Parfois le client n'a pas de chance et la nouvelle liste commence toujours avec des serveurs cassés. Pour donner au système les meilleures chances d'assurer la résilience du client, vous devez vous assurer que le TTL est plus long que le temps d'attention typique et que le client arrive en bas de la liste.
Une fois que le client a trouvé un serveur fonctionnel, il doit s'en souvenir, et lorsqu'il doit établir la prochaine connexion, il ne doit pas répéter la recherche (sauf si le TTL a expiré). Un TTL plus long réduit la fréquence à laquelle les utilisateurs subissent un retard pendant que le client cherche un serveur opérationnel - ce qui donne une meilleure expérience.
4) Le TTL DNS entre en jeu, lorsque vous souhaitez modifier manuellement les enregistrements DNS (par exemple pour supprimer un serveur en panne depuis longtemps), un TTL court permet à ce changement de se propager rapidement (une fois que vous avez pris le temps de le faire), il faut donc trouver un équilibre entre le temps qu'il faudra avant que vous ne soyez au courant du problème et que vous fassiez ce changement manuel, et le fait que les clients normaux ne devront effectuer une nouvelle recherche d'un serveur en état de marche que lorsque le TTL aura expiré.
Le DNS round robin présente deux caractéristiques exceptionnelles qui le rendent très rentable dans un large éventail de scénarios : premièrement, il est gratuit et, deuxièmement, il est presque aussi dispersé géographiquement que votre base de clients.
Il n'introduit pas une nouvelle "unité d'échec", comme le font tous les autres systèmes "intelligents". Il n'y a pas de composants ajoutés qui pourraient subir une défaillance commune et simultanée sur toute une série d'éléments interconnectés.
Les systèmes "intelligents" sont formidables et introduisent des mécanismes merveilleux pour coordonner et fournir un équilibre transparent et un mécanisme de basculement, mais en fin de compte, les méthodes mêmes qu'ils utilisent pour fournir cette expérience transparente sont leur talon d'Achille - la chose compliquée supplémentaire qui peut mal tourner, et quand cela arrive, fournira une expérience transparente de la défaillance à l'échelle du système.
Donc OUI, le DNS round robin est définitivement "suffisant" pour votre première étape au-delà d'un serveur unique hébergeant tout votre contenu statique en un seul endroit.
3 votes
HAProxy n'est pas une option ?
7 votes
Comme je l'ai dit dans le message, il s'agit d'une question spécifique sur les points suivants este solution -- peut-on rester sur le sujet ?
4 votes
Équilibrage des charges ( fr.wikipedia.org/wiki/Load_balancing_%28computing%29 ) est très différente de la redondance ( fr.wikipedia.org/wiki/Redondance_%28ingénierie%29 ). Comme Jeff l'a indiqué dans son paragraphe d'introduction, il cherche un moyen d'éliminer un point de défaillance unique (redondance), et non un véritable équilibrage de la charge. Quelqu'un peut-il ré-étiqueter ?
0 votes
C'est vrai, je n'étais pas précis Je pense à eux en termes similaires, mais ils sont techniquement différents. Pour moi, l'un implique l'autre - pouvez-vous même avoir l'équilibrage de charge sans redondance ?
3 votes
@jeff - Absolument, un équilibreur de charge stupide (ce qu'est le DNS round robin ordinaire) ne fait pas de redondance. C'est encore plus difficile si vous parlez d'équilibrage / de redondance sur plusieurs sites.
0 votes
Vous avez été très mal informé. Vous n'avez pas besoin d'un TTL bas. Vous n'avez pas besoin de reconfigurer le DNS en cas de panne. Le serveur DNS (et non le client) définit la liste des préférences - le client ne doit choisir un autre hôte que si le premier choix est indisponible. Vous pouvez facilement ajouter la détection des pannes à votre système de surveillance en ajoutant un nom d'ip unique pour chaque nœud ainsi que le nom du round-robin. Ayant travaillé avec plusieurs sites web de taille moyenne, round-robin s'est toujours avéré plus fiable et moins cher qu'un contrôleur d'équilibrage de charge dédié.
1 votes
@symcbean Non, si une réponse DNS contient plusieurs réponses, le client peut choisir n'importe laquelle d'entre elles et rien ne doit être supposé sur la base de l'ordre renvoyé par le serveur. En particulier, un serveur récursif peut envoyer les réponses dans un ordre complètement différent de celui du serveur original faisant autorité.
0 votes
@Alnitak : s'il vous plaît, allez lire les définitions de 'may', 'should', 'must' incluses dans la plupart des RFCs. Oui, l'ordre n'est pas significatif - mais qu'est-ce que cela a à voir avec ce dont nous parlons ?
2 votes
@symcbean Je suis intimement familier avec les termes de la terminologie documentée dans le RFC 2119. Vous avez dit que le serveur DNS définit la liste de préférences. À moins que vous n'ayez une définition particulièrement étrange des "listes de préférences", ce n'est tout simplement pas vrai.
0 votes
J'ai trouvé cet article très utile pour expliquer comment combiner le DNS Round-Robin et les équilibreurs de charge logiciels : rightscale.com/blog/enterprise-cloud-strategies/