Balanceamento de carga de ISPs no Ubuntu Server

1

Eu tenho um servidor Dell com o Ubuntu 11.10 Server instalado nele. O servidor possui 3 placas Ethernet, eth0, eth1 e eth2.

Eu tenho dois ISPs dizendo ISP1, ISP2

A eth0 tem um IP público (fornecido pelo ISP1 - é necessário acessar esse serviço de fora da nossa LAN) eth1 está conectado à LAN (via switch) com sub-rede 192.168.X.X eth2 obtém um IP dinâmico (via DHCP fornecido pelo ISP2) com sub-rede 172.16.x.x

Eu quero balancear a carga (tornando-a tolerante a falhas ao mesmo tempo) as duas conexões de internet. Eu encontrei o seguinte script online para ajudar a minha causa:

#!/bin/bash -v
#IPs of device connected to the internet
IP1=119.my.pub.ip #Public IP provided by ISP1
#dynamically alloted IP provided by ISP2
IP2='ifconfig | awk -F: '/172.16./ {print $2}' | awk '{ORS=" "; print $1}' | awk '{print $2}''

#Your Gateways (type route in terminal it should be in the same line as default)
P1=119.my.pu.gat #gateway provided by ISP1
P2=172.16.1.1 #gateway provided by ISP2

#Your Subnets
P0_NET=192.168.0.0/16 #local network subnet,
P1_NET=119.82.90.0/28 # Part of your gateway
P2_NET=172.16.1.0/24 #Part of your gateway
# NICs your internet interfaces
IF1=eth0
IF2=eth2
IF0=eth1

ip route add $P1_NET dev $IF1 src $IP1 table T1
ip route add default via $P1 table T1
ip route add $P2_NET dev $IF2 src $IP2 table T2
ip route add default via $P2 table T2
ip route add $P1_NET dev $IF1 src $IP1
ip route add $P2_NET dev $IF2 src $IP2

ip rule add from $IP1 table T1
ip rule add from $IP2 table T2
ip route add $P0_NET dev $IF0 table T1
ip route add $P2_NET dev $IF2 table T1
ip route add 127.0.0.0/8 dev lo table T1
ip route add $P0_NET dev $IF0 table T2
ip route add $P1_NET dev $IF1 table T2
ip route add 127.0.0.0/8 dev lo table T2

ip route add default scope global nexthop via $P1 dev $IF1 weight 1 nexthop via $P2 dev $IF2 weight 1

Eu não entendo completamente o roteiro. Conseqüentemente, Caso o código acima não funcione, qual é a melhor maneira de restaurar a máquina para sua configuração original? Quais arquivos precisam de backup antes de executar este script?

    
por chochim 24.05.2012 / 11:13

1 resposta

2

Acredito que o script que você encontrou foi criado seguindo / amalgamando as várias informações do Roteamento avançado & Controle de Trânsito HOWTO . Especificamente, a seção sobre balanceamento de carga de links separados do ISP . Sugiro que você leia essa página para ajudar a entender o que o script está fazendo. Tenha em mente que o How To faz referência aos Kernels antigos, embora eu não ache que o princípio tenha mudado muito e que os comandos ip provavelmente ainda sejam válidos.

Esse script precisaria ser executado toda vez que a máquina inicializasse para definir as rotas, etc., para que você não precisasse fazer backup de arquivos (ele não toca em nenhum). Depois de reiniciar a máquina, as regras serão esquecidas e a configuração de rede padrão da máquina será usada.

Se você não quiser reiniciar então, dependendo da distro, você pode reiniciar a rede, isto é, na Red Hat um service network restart deve limpar as rotas para você e adicionar a rota padrão novamente (isto é baseado na minha verificação rápida dos scripts de rede). Eu acredito que o Ubuntu terá um sistema similar (eu não o usei por algum tempo e eles usam Upstart hoje em dia, dos quais eu não tenho conhecimento). Caso contrário, você teria que remover manualmente as regras criadas por esse script (ou escrever um script que o faça) usando o comando ip .

    
por 24.05.2012 / 13:21