Re: [GTER] Balanceamento de link - roteamento avançado

Rubens Kuhl Jr. rubensk at gmail.com
Wed Jul 19 00:33:22 -03 2006


> Quero colocar os dois links de internet em um pc de forma que eu tenha uma
> redundancia...se um link cair ou outro mantem o serviço e de quebra fazer um
> balanceamento com esses links.

> Tenho um link com a internet da speedy com ip 200.168.158.105 e um link com
> a ajato de ip 201.20.202.56. A rede interna é 192.168.1.1
>
> Instalei um Debian Sarge com 3 placas de rede.

Primeiro passo é dividir problemas que são distintos: balanceamento e
redundância. Redundância você implementa chaveando entre 3
configurações: 1 - dois links no ar ; 2 - Speedy no ar ; 3 - Ajato no
ar.

Um script desses é algo parecido com este aqui:
http://www.linuxquestions.org/linux/blog/ALInux/2006-02-12/Failover_script_for_Connection_back_up

Assim como o autor, você vai precisar escrever seu script conforme as
idiossincrasias dos seus provedores... e a cada transição entre esses
3 estados, garantir que as tabelas de rotas, seleção de rotas e
iptables se alterem da forma que for necessária para que tudo
funcione.

Já na questão de balanceamento, comece do básico que é garantir que
conexões saintes sejam balanceadas por destino e as de origem pelo IP
que o usuário externo usar para conectar. Uma boa referência disso é
esta página do LARTC:
http://lartc.org/howto/lartc.rpdb.multiple-links.html

No seu caso, ficaria algo assim:
Colocar as tabelas speedy e ajato no arquivo /etc/iproute2/rt_tables ;

export P0_NET=192.168.10/24 (ou outra máscara)
export IF0=rede da interface interna
export P1_NET=rede da interface do speedy
export P1=gateway do speedy
export IF1=interface do speedy
export IP1=200.168.158.105
export P2_NET=rede da interface do ajato
export IF2=interface do ajato
export IP2=201.20.202.56
export P2=gateway do ajato

ip route add $P1_NET dev $IF1 src $IP1 table speedy
ip route add default via $P1 table spedy
ip route add $P2_NET dev $IF2 src $IP2 table ajato
ip route add default via $P2 table ajato

ip route add $P0_NET     dev $IF0 table speedy
ip route add $P2_NET     dev $IF2 table speedy
ip route add 127.0.0.0/8 dev lo   table speedy
ip route add $P0_NET     dev $IF0 table ajato
ip route add $P1_NET     dev $IF1 table ajato
ip route add 127.0.0.0/8 dev lo   table ajato

ip rule add from $IP1 table speedy
ip rule add from $IP2 table ajato

ip route add $P1_NET dev $IF1 src $IP1
ip route add $P2_NET dev $IF2 src $IP2

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

iptables -t nat -A POSTROUTING  -o $IF1 -j SNAT --to-source $IP1
iptables -t nat -A POSTROUTING  -o $IF2 -j SNAT --to-source $IP2

A única coisa que muda quando um dos links cai, é a rota default...
todas as outras configurações se mantém, pois elas apenas garantem que
o IP que será usado tanto por conexões localmente originadas quanto
por pacotes sendo NATeados seja a da conexão por onde o pacote veio ou
vai sair.

Assim, seria fazer:
1) Caiu o link speedy
ip route change default via $P2
ip route flush cache

2) Caiu o link ajato
ip route change default via $P1
ip route flush cache

3) Os dois links funcionam de novo
ip route change default scope global nexthop via $P1 dev $IF1 weight 1 \
	    nexthop via $P2 dev $IF2 weight 1
ip route flush cache


Depois que você adaptar os scripts de failover e testar o de
balanceamento, publique aqui o resultado para apontarmos esse ítem no
futuro FAQ da lista.

Rubens



More information about the gter mailing list