Du load-balancing avec Vyatta

juillet 20th, 2009
|

Après la découverte de Vyatta grâce a l’excellent blog de guiguiabloc: Je cite: « Ce qui le rend intéressant, c’est son approche à la “Cisco”, avec des commandes en mode “configure” très proche des IOS, ce qui le classe dans la catégorie des cisco-like. », pour en savoir plus, n’hésitez pas a lire son billet avant de poursuivre.

Je me suis donc mis en tête de faire du load-balancing depuis deux connexions ADSL vers mon LAN avec un serveur DHCP et dnsmasq (mise en cache des requêtes dns). voici les différentes étapes qui nous mènent à un routeur pas cher et qui fonctionne vraiment à merveille. Voici le schéma de l’installation:

vyatta-loadbalancing

Nous allons commencer par passer en mode configuration pour spécifier, dans l’ordre:

  • Hostname
  • Serveur SSH
  • DNS
  • Fuseau Horaire
1
2
3
4
5
6
7
configure
set system host-name aggregateur
set service ssh allow-root false
set service ssh
set system name-server 208.67.222.222
set system name-server 208.67.220.220
set system time-zone GMT+2

Spécifions maintenant les paramètres ip de nos interfaces:

  • Adresses ip de: eth0, eth1, eth2
  • Description des interfaces
  • Routes vers le WAN
1
2
3
4
5
6
7
8
9
set interfaces ethernet eth0 address 192.168.3.254/24
set interfaces ethernet eth1 address 10.0.1.2/30
set interfaces ethernet eth2 address 10.0.2.2/30
set interfaces ethernet eth0 description "*** LAN ***"
set interfaces ethernet eth1 description "*** WAN1 ***"
set interfaces ethernet eth2 description "*** WAN2 ***"
set protocols static route 0.0.0.0/0 next-hop 10.0.1.1
set protocols static route 0.0.0.0/0 next-hop 10.0.2.1
commit

Des lors, vous pouvez mettre vôtre serveur du une baie (ou au fond du garage..) et vous y connecter en ssh.

Bien, maintenant mettons en place le load-balancing vers le WAN avec vérification de l’état et failover. (Les serveurs que j’ai utilisé ici pour vérifier l’état des liens sont les ns1 et ns2 de google, si vous les changez spécifiez en deux différents, ça vous évitera de perdre la connexion si le serveur tombe..):

Règles de vérification:

1
2
3
4
5
6
7
8
set load-balancing wan interface-health eth1 failure-count 5
set load-balancing wan interface-health eth1 success-count 5
set load-balancing wan interface-health eth1 nexthop 10.0.1.1
set load-balancing wan interface-health eth1 ping 216.239.32.10
set load-balancing wan interface-health eth2 failure-count 5
set load-balancing wan interface-health eth2 success-count 5
set load-balancing wan interface-health eth2 nexthop 10.0.2.1
set load-balancing wan interface-health eth2 ping 216.239.34.10

Puis ajoutons les règles du load-balancing lui même:

1
2
3
4
set load-balancing wan rule 10 inbound-interface eth0
set load-balancing wan rule 10 interface eth1
set load-balancing wan rule 10 interface eth2
set load-balancing wan

On applique et on sauvegarde le tout:

1
2
commit
save

Voilà, je vous avais prévenu c’est terriblement simple et efficace ! Pour afficher l’état:

1
2
exit
show wan-load-balance status

Passons maintenant a la partie service: DCHP et DNSMASq.

1
2
3
4
5
6
7
8
9
10
set service dhcp-server shared-network-name LAN
set service dhcp-server shared-network-name LAN subnet 192.168.3.0/24
set service dhcp-server shared-network-name LAN subnet 192.168.3.0/24
start 192.168.3.100 stop 192.168.3.200
set service dhcp-server shared-network-name LAN subnet 192.168.3.0/24
default-router 192.168.3.254
set service dhcp-server shared-network-name LAN subnet 192.168.3.0/24
dns-server 192.168.3.254
set service dhcp-server shared-network-name LAN subnet 192.168.3.0/24
dns-server 208.67.222.222
1
2
set service dns forwarding system
set service dns forwarding listen-on eth0

C’est fini, en 15 minutes vous avez un système terriblement efficace et très peu cher.. que rêver de mieux ?
Bien entendu, il sagit ici de l’installation minimale, il reste encore a mettre en place des règles pour le firewall et d’autres petites finitions.

5 Comments:

  1. Joli tuto ! :-D
    Je vois que tu as utilisé une des belles fonctions de vyatta (et par la même, donner à tous un nouveau tutoriel pour l’utilisation de cet excellent outil :-) )

    Merci pour le retro-link (pourquoi je suis barré ? tu m’aimes plus ??? :-p ) et merci pour ce billet riche en enseignement et retour d’expérience.

    ++

  2. Merci a toi, sans quoi je serais passé à côté.
    Bon, puisque tu me le demande gentiment, je supprime le trait sur ton nom… héhé. Bon, en fait c’était une extension qui affichait le lien comme mort. ;)

  3. Bonjour,

    J’avais une question sur ma manière dont Vyatta gère le load balanceing.
    Le gère t’il au niveau des sessions ou au niveau des IP ?
    Au niveau des sessions eh bien c’est un problème car si vous connectez à un forum avec une i publique et que la requete suivante vous passez sur l’autre ip publique, alors le forum ne vous reconnaitra plus !

    SI vyatta gère cela au niveau des ip, alors vous serez a 80 % redirigé toujours vers la meme ligne internet et cela n’ira pas non plus !

    Avez vous une idée de comment gérer ces problèmes ?

    Merci,

    Olivier

  4. Bonjour et Merci,
    Que fait on des connexions asymetriques, jai 7 Mbps sur un lien et 4.5 sur lautre

    Merci

Leave a comment: