Niveau :      
Résumé : Round Robin DNS

Contrairement à ce que vous pensez, il ne s'agit pas du mignon de Batman mais d'une méthode de répartition. Nous allons parler du round robin dns.

Le but est de répartir la charge d'un serveur sur des machines distinctes. Le principe est simple, il s'agit de fournir plusieurs IP pour la même entrée dns. Le client choisira alors de lui-même une de ces IP au hasard. C'est ce hasard qui répartira la charge entre les différents serveurs renseignés.

Les entrées DNS ressembleront donc à ceci

www.toto.net IN A 10.0.0.1
www.toto.net IN A 10.0.0.2

Attention tout de même :

  • En cas de problème sur une des 2 IP, le client doit faire de lui-même l'accès à une autre IP, ce qu'un certain nombre de logiciels devraient faire naturellement (mais pas tous).
  • Si le problème se situe au dessus de la couche TCP (par exemple une erreur HTTP 500), le logiciel client ne se rendra pas compte qu'il devrait interroger l'autre IP et l'utilisateur verra l'erreur. Pour une bonne gestion de la tolérance aux pannes, on préférera donc un loadbalancer.
  • Les applicatifs doivent faire attention à la notion de session. Si l'applicatif se nomme irc, il n'y a pas de problème car il y a une session par connexion. Si l'application est en PHP, vous avez le choix entre ne pas utiliser de session, stocker les données de session dans une base de données partagée, tout faire tenir dans un cookie ou enfin partager le répertoire contenant les données de session (avec NFS ou OCFS par exemple)

Notez au passage qu'un CNAME dans le DNS est un véritable alias, donc la ligne suivante conserve la fonction round robin DNS à test.toto.net :

test.toto.net IN CNAME www.toto.net.

Par contre, il est impossible de spécifier plusieurs CNAME pour un nom, et donc d'espérer faire du round robin de cette façon.

Notez aussi que le round robin DNS est un concept intégré au mail depuis longtemps. On l'utilise aussi fréquemment pour irc. C'est une solution permettant le partage de charge à peu de frais, mais pour le web on lui préférera l'utilisation d'un loadbalancer lorsqu'on en a les moyens et lorsque c'est possible. En effet leur utilisation est plutôt difficile entre plusieurs sites géographiques distincts.