C’est un peu parti dans tous les sens donc je me propose de faire le post du résumé en essayant d’être didactique et d’utiliser (voire définir) tous les mots utilisés ici.
On va déjà essayer de différencier load balancing et agrégation. C’est deux termes différents qui ne font pas la même chose techniquement, mais qui peuvent avoir des usages similaire (on peut faire du fail over dans les deux cas, mais je vais trop vite.)
Load Balancing.
Ça existe aussi bien en réseau (transport) que coté serveur (applicatif), et pour répondre a @PERECil, les deux fonctionnement existent. Pour régler le problème coté serveur (souvent http), je vous conseille de lire ce wiki, http://www.linux-ha.org/doc/users-guide/users-guide.html , qui détaille tout ce qu’il faut savoir sur les outils “high availability” existant sous linux. Et c’est du pur load balancing (coté applicatif serveur).
Pour le réseau, en ayant deux liens différents (genre adsl et fibre), il est possible de mettre en place un système de load balancing. Et ça fait ce que ca dit: Si un des liens est chargé, on utilise l’autre pour faire passer AUTRE CHOSE. C’est a dire que si on a deux liens, un 20MB et un 50MB, le débit maximal d’une session (donc d’un download) sera de 50MB. Non, ca ira pas a 70MB. C’est impossible.
Sous linux, le principe est détaillé ici:
http://lartc.org/howto/lartc.rpdb.multiple-links.html
J’ai mis ça en place chez moi pendant plusieurs années, via free adsl et numericable avec l’aide d’un boitier dreamplug.
Ça pose pas mal de problème:
Le load balancing “propre” ne fonctionne qu’en TCP, tant que la session est active. Si vous allez sur le net pour regarder des sites web (protocol http/https), ca va fonctionner super bien, modulo les choix de route pour le https (j’ai pas eu le cas mais les navigateurs modernes initient plusieurs connexions à la fois, genre pour la page web, le javascript, les images, je sais pas comment ca marche niveau conservation de session ssl avec plusieurs IPs). En fait, le load balanceur conserve toujours la même route tant que la session tcp est active, donc pas de soucis de routage.
En revanche, pour les sessions UDP, c’est pas le cas et c’est la foire au coup de bol. Pour tester simplement une connexion UDP, j’ai joué a un MMORPG. Ca peut tenir 3h comme 10min. De la même manière, si vous utilisez des logiciels de partage de fichiers (genre bittorent, mais il me semble que c’est le cas de tous les logiciel P2P), ça va marcher bizarrement, le load balanceur ne sachant pas trop quoi faire avec tout ces paquets UDP.
Il peut donc y avoir des soucis avec tous les protocoles UDP, DNS inclus (en général, on force un lien en particulier pour ce genre de cas, mais on perds la capacité fail over - le plus simple étant alors d’installer un serveur DNS récursif sur le firewall).
Et ca va générer d’autres problèmes funs, genre la connexion SMTP, qui est bien TCP, mais qui peut être sur n’importe quel lien. Or, si vous voulez envoyer un email via smtp.free.fr et que le load balancer décide d’utiliser le lien numericable, ca va échouer (sauf si on utilise l’authentification, et encore).
Enfin, le système ne gère pas automatiquement le fail over, c’est a dire le fait que sur les deux liens internet, un des liens est mort. Ça se fait à la main (ça doit pouvoir s’automatiser avec des pings réguliers sur chaque routeur mais bon…)
Voila pour le load balancing. Qui marche moyen. Perso, j’avais fini par utiliser free pour les connexion de commande (ssh, dns, etc) et NC pour le reste, avec un script de routage forcé sur free si NC deconne (et vice versa)
Agrégation.
Le terme était très souvent utilisé pour l’agrégation de lignes numeris (RNIS pour les anciens), ou le regroupement des lignes se faisait au niveau téléphonique/hardware et pas logiciel coté IP. Donc avec deux lignes 128kb (ouais je sais), on avait bien une connexion effective a 256kb réel (mais bon…)
Niveau IP, c’est pas possible de base car une session tcp ou udp doit toujours avoir les mêmes IP source/target le long de la session.
En revanche, la solution de OVH permet de tricher puisque la sortie n’est pas les deux connexion ADSL, mais bien le serveur (avec ip unique) chez OVH.
C’est possible assez simplement avec linux (sans chiffrement):
http://www.lartc.org/howto/lartc.loadshare.html
Mais j’ai jamais testé le système.
Donc OVH, c’est de la pseudo agrégation (pour moi, le terme est plus téléphonique que réseau) et, comme le dit merlin, reste limité en terme de débit au lien le plus faible. Si le serveur OVH est limité a 100MB, bah tu n’iras pas beaucoup plus vite que 100MB, malgré ta connexion NC a 200MB.
L’avantage, c’est que c’est tout automatique niveau failover, ce qui n’est pas le cas en load balancing pur. Le seul truc que je pige pas trop, c’est l’intérêt de chiffrer les données entre nous et ovh. Vu qu’en sortie d’ovh, ca sera en clair…
Je serais quand même curieux de voir comment ça fonctionne sur les connexion UDP comme bittorent…
Les définitions sont posées, en espérant avoir été clair - appelez moi LoneWolf.