70 votes

Le DNS Round-Robin est-il "suffisant" pour l'équilibrage de charge de contenu statique ?

Nous disposons d'un ensemble de contenu statique partagé que nous diffusons entre nos sites web à l'adresse suivante http://sstatic.net . Malheureusement, ce contenu n'est actuellement pas du tout équilibré en termes de charge - il est servi par un seul serveur. Si ce serveur a des problèmes, tous les sites qui en dépendent sont effectivement hors service car les ressources partagées sont des bibliothèques javascript et des images partagées essentielles.

Nous cherchons des moyens d'équilibrer la charge du contenu statique sur ce serveur, afin d'éviter la dépendance à un seul serveur.

Je me rends compte que le DNS round-robin est, au mieux, une solution de bas de gamme (certains pourraient même dire que c'est une solution de haut de gamme). ghetto ), mais je ne peux m'empêcher de me demander Le DNS round robin est-il une solution "suffisante" pour l'équilibrage de base de la charge d'un contenu statique ?

Il y a une discussion à ce sujet dans le [dns] [équilibrage de charge] et j'ai lu d'excellents articles sur le sujet.

Je suis conscient des inconvénients courants de l'équilibrage de la charge DNS par le biais de plusieurs enregistrements A round-robin :

  • il n'y a généralement pas de battements de cœur ou de détection de défaillance avec les enregistrements DNS, de sorte que si un serveur donné dans la rotation tombe en panne, son enregistrement A doit être supprimé manuellement des entrées DNS.
  • le temps de vie (TTL) doit nécessairement être fixé à un niveau très bas pour que cela fonctionne, puisque les entrées DNS sont mises en cache de manière agressive sur Internet.
  • les ordinateurs clients sont chargés de vérifier qu'il existe plusieurs enregistrements A et de choisir le bon.

Mais, le DNS round robin est-il suffisant comme solution de départ, mieux que rien, "pendant que nous recherchons et mettons en œuvre de meilleures alternatives" comme forme d'équilibrage de charge pour notre contenu statique ? Ou bien le DNS round robin ne vaut-il pas grand-chose dans le cadre de l'équilibrage de charge ? cualquier circonstances ?

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 ?

59voto

Willy Tarreau Points 3934

Jeff, je ne suis pas d'accord, l'équilibrage de charge n'implique pas la redondance, c'est plutôt le contraire en fait. Plus vous avez de serveurs, plus vous avez de chances d'avoir une panne à un instant donné. C'est pourquoi la redondance EST obligatoire lors de l'équilibrage de la charge, mais malheureusement il y a beaucoup de solutions qui ne fournissent que l'équilibrage de la charge sans effectuer aucun contrôle de santé, ce qui entraîne un service moins fiable.

Le roundrobin DNS est excellent pour augmenter la capacité, en répartissant la charge sur plusieurs points (potentiellement répartis géographiquement). Mais il ne permet pas le basculement. Vous devez d'abord décrire le type de défaillance que vous essayez de couvrir. Une panne de serveur doit être couverte localement par un mécanisme standard de reprise d'adresse IP (VRRP, CARP, ...). Une panne de commutateur est couverte par des liens résilients sur le serveur vers deux commutateurs. La défaillance d'un lien WAN peut être couverte par une configuration multi-link entre vous et votre fournisseur, en utilisant soit un protocole de routage, soit une solution de couche 2 (ex : PPP multi-link). Une panne de site devrait être couverte par BGP : vos adresses IP sont répliquées sur plusieurs sites et vous les annoncez au réseau uniquement là où elles sont disponibles.

D'après votre question, il semble que vous deviez seulement fournir une solution de basculement de serveur, ce qui est la solution la plus simple puisqu'elle n'implique aucun matériel ni aucun contrat avec un FAI. Il vous suffit de configurer le logiciel approprié sur votre serveur pour cela, et c'est de loin la solution la moins chère et la plus fiable.

Vous avez demandé "que se passe-t-il si une machine haproxy tombe en panne ?". C'est la même chose. Toutes les personnes que je connais qui utilisent haproxy pour l'équilibrage de charge et la haute disponibilité ont deux machines et exécutent soit ucarp, keepalived ou heartbeat sur elles pour s'assurer que l'une d'entre elles est toujours disponible.

J'espère que cela vous aidera !

1 votes

BTW vous pourriez être intéressé par un article que j'ai écrit il y a environ 4 ans sur ces concepts : 1wt.eu/articles/2006_lb (prenez le PDF, lire le HTML à travers les pages est ennuyeux).

2 votes

-1 : "ne fournit pas de basculement" - si, il le fait - et il le met en œuvre au seul endroit où la non-disponibilité peut être déterminée de manière fiable - au niveau du client.

7 votes

Pas du tout. Cela fonctionnerait si le DNS n'utilisait pas de caches, mais ce n'est pas le cas et les clients ne peuvent pas forcer les caches à se rafraîchir. Parlez à n'importe quelle personne qui change régulièrement les entrées DNS et elle vous dira que même si elle observe un changement de 80 % en 5 minutes, il faut généralement plus d'une semaine pour se rapprocher des 100 %. Le DNS n'assure donc pas le basculement.

21voto

Schof Points 952

En tant qu'équilibrage de charge, c'est ghetto mais plus ou moins efficace. Si vous aviez un serveur qui tombait en panne à cause de la charge, et que vous vouliez la répartir sur plusieurs serveurs, cela pourrait être une bonne raison de le faire, au moins temporairement.

Il existe un certain nombre de critiques valables à l'encontre du DNS round-robin en tant qu'outil d'"équilibrage" de la charge, et je ne recommanderais pas de l'utiliser à cette fin, si ce n'est comme un pansement à court terme.

Mais vous dites que votre motivation première est d'éviter une dépendance à un seul serveur. Sans un moyen automatisé de retirer les serveurs morts de la rotation, ce n'est pas très valable comme moyen d'éviter les temps d'arrêt. (Avec un moyen automatisé de retirer les serveurs de la rotation et un TTL court, cela devient un ghetto de basculement. Manuellement, ce n'est même pas ça).

Si l'un de vos deux serveurs à rotation tombe en panne, 50 % de vos clients subiront un échec. C'est mieux qu'une panne à 100 % avec un seul serveur, mais presque toutes les autres solutions qui assurent un véritable basculement seraient meilleures que cela.

Si la probabilité de défaillance d'un serveur est N, avec deux serveurs votre probabilité est 2N. Sans automatisme, rapide basculement, ce schéma augmente la probabilité que certains de vos utilisateurs connaissent un échec.

Si vous envisagez de retirer manuellement le serveur mort de la rotation, vous êtes limité par la vitesse à laquelle vous pouvez le faire. y le TTL du DNS. Et si le serveur meurt à 4 heures du matin ? La meilleure partie d'un vrai basculement est de pouvoir dormir toute la nuit. Vous utilisez déjà HAProxy Vous devez donc le connaître. Je vous conseille vivement de l'utiliser, car HAProxy est conçu exactement pour cette situation.

4 votes

Totalement hors sujet, mais nous avons également le problème de la nécessité de plusieurs instances HAProxy à basculer vers - que faire si la machine HAProxy tombe en panne ? Sujet de questions futures, mais VRAIMENT hors sujet pour celle-ci.

2 votes

+1 - Le "Avec un moyen automatisé ... cela devient un ghetto de basculement. Manuellement, ce n'est même pas ça." devrait être en grosses lettres grasses. Le DNS round-robin devient un responsabilité civile si vous ne surveillez pas les machines et ne les supprimez pas du DNS en cas de défaillance, et la seule façon raisonnable de le faire est d'utiliser une solution automatisée. Il existe de bien meilleures solutions que le DNS round-robin.

1 votes

Je suis tout à fait d'accord, mais 20 % de vos clients qui vous appellent pour se plaindre es mieux que 100% d'entre eux qui appellent avec des plaintes

15voto

Jim Points 53

Le Round Robin DNS n'est pas ce que les gens pensent. En tant qu'auteur d'un logiciel de serveur DNS (à savoir , BIND ) nous avons des utilisateurs qui se demandent pourquoi leur tour de table ne fonctionne plus comme prévu. Ils ne comprennent pas que, même avec une TTL de 0 seconde, il y aura une certaine quantité de cache, puisque certains caches imposent un temps minimum (souvent 30 à 300 secondes) quoi qu'il arrive.

De plus, si vos serveurs AUTH peuvent faire du round robin, il n'y a aucune garantie que ceux qui vous intéressent - les caches auxquels vos utilisateurs s'adressent - le feront. En bref, le round robin ne garantit aucun ordre du point de vue du client, seulement ce que vos serveurs AUTH fournissent à un cache.

Si vous voulez un véritable basculement, le DNS n'est qu'une étape. Ce n'est pas une mauvaise idée de lister plus d'une adresse IP pour deux clusters différents, mais j'utiliserais une autre technologie (comme le simple anycast) pour effectuer l'équilibrage de charge. Personnellement, je méprise le matériel d'équilibrage de charge qui s'amuse avec le DNS, car il se trompe généralement. Et n'oubliez pas que le DNSSEC est à venir, donc si vous choisissez quelque chose dans ce domaine, demandez à votre fournisseur ce qui se passe lorsque vous signez votre zone.

1 votes

Et certains serveurs DNS (ou les panneaux de contrôle) sont configurés pour vous donner un TTL de 7200, quel que soit le réglage que vous faites - certaines grandes sociétés d'hébergement le font IIRC.

0 votes

La mise en cache est prise en compte dans le DNS round-robin. Ainsi, si deux clients du même fournisseur d'accès demandent un nom particulier au résolveur DNS de leur fournisseur d'accès, ils obtiendront une adresse différente comme première réponse, et sur un grand nombre de demandes, cela s'équilibre assez bien.

14voto

Joey deVilla Points 4487

Je l'ai dit plusieurs fois auparavant, et je le répète - si la résilience est le problème, alors les astuces DNS sont no la réponse .

Les meilleurs systèmes HA permettront à vos clients de continuer à utiliser exactement la même adresse IP pour chaque demande. C'est le uniquement pour que les clients ne remarquent même pas l'échec.

Donc, la règle fondamentale est que la vraie résilience exige que la PI routage niveau de tromperie. Utilisez un dispositif d'équilibrage de charge, ou OSPF "equal cost multi-path", ou même VRRP.

Le DNS, quant à lui, est un s'adressant à technologie. Elle existe uniquement pour permettre le mappage d'un espace de nom à un autre. Il n'a pas été conçu pour permettre à très court terme dynamique Par conséquent, lorsque vous essayez d'apporter de telles modifications, de nombreux clients ne les remarquent pas ou, dans le meilleur des cas, mettent beaucoup de temps à les remarquer.

Je dirais aussi que depuis charge n'est pas un problème pour vous, que vous pourriez tout aussi bien avoir un autre serveur prêt à fonctionner comme réserve chaude. Si vous utilisez le dumb round-robin, vous devez modifier de manière proactive vos enregistrements DNS lorsque quelque chose se casse, alors vous pouvez tout aussi bien mettre le serveur de secours en action de manière proactive et no changez votre DNS.

9voto

SjorsH Points 91

J'ai lu toutes les réponses et il y a une chose que je n'ai pas vue, c'est que la plupart des navigateurs modernes essaient l'une des adresses IP alternatives si un serveur ne répond pas. Si je me souviens bien, Chrome essaiera même plusieurs adresses IP et continuera avec le serveur qui répondra en premier. Donc, à mon avis, l'équilibrage de charge DNS Round Robin est toujours mieux que rien.

BTW : Je vois le DNS Round Robin plus comme une simple solution de distribution de charge.

0 votes

Oups, je n'ai pas vu votre réponse avant de poster la mienne, donc +1 sur la vôtre pour que la vérité sorte !

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