Balanceamento e Redundancia (3 Links)
por
em 29-05-2009 às 11:07 (12481 Visualizações)
Seguindo a sequência do artigo sobre Balanceamento e Redundancia segue o script atualizado e modificado para uso de 3 links de internet.
Balanceamento e Redundancia (2 Links)
Últimas modificações:
1- Balanceamento de 3 links + Redundancia para os 3 links
2- Data e Hora dos eventos
3- Modificação nas regras para marcar e desmarcar rotas
Funcionamento:
1- Se cair um link, ele continua fazendo o balanceamento e redundancia entre 2 links.
2- Caso caia 2 links, a rede continua funcionando em 1 link.
3- *A soma dos links, é feita da seguinte maneira: 1ª conexão estabilidada pelo link 1, 2ª conexão estabilidada pelo link 2, 3ª conexão estabilidada pelo link 3; estamos usando peso 1:1:1
4- Os serviços podem ser divididos e remanejados para determinados links usando regras de marcação.
5- Este método de balanceamento e redundancia só serve como saída para a Internet.
* Use um programa do tipo download manager que possa dividir o arquivo em partes para testar.
Modificando as tabelas e rotas, em negrito as mudanças:
1- Acrescente no arquivo "rt_tables"
1 gvt
2 brt
3 net
2- Acrescente a nova rota para o 3 link, abaixo incluío a regra no arquivo "rc.local".
#Limpa as rotas no cache das tabelas
ip route flush table gvt
ip route flush table brt
ip route flush table net
#Adiciona as rotas dos links para as tabelas
ip route add 192.168.1.0/24 dev eth1 src 192.168.1.10 table gvt
ip route add default via 192.168.1.1 table gvt
ip route add 192.168.2.0/24 dev eth2 src 192.168.2.10 table brt
ip route add default via 192.168.2.1 table brt
ip route add 192.168.3.0/24 dev eth3 src 192.168.3.10 table net
ip route add default via 192.168.3.1 table net
#Adiciona a regra de marcação das tabelas
ip rule add from 192.168.1.10 table gvt
ip rule add from 192.168.2.10 table brt
ip rule add from 192.168.3.10 table net
#Esta regra abaixo é responsável pelo balancemento, vamos dividir a saída com peso 2:1:1, vamos supor que a gvt #é 2x mais rápida com link de 3 mega, link da brt com 1 mega, e link da net com 1 mega.
ip route add default scope global nexthop via 192.168.1.1 dev eth1 weight 2 nexthop via 192.168.2.1 dev eth2 weight 1 nexthop via 192.168.3.1 dev eth3 weight 1
#Limpa as rotas no cache
ip route flush cache
Dicas:
1- Caso queira trabalhar somente com 2 links balanceado e 3 links redundante é necessário remover a regra de balanceamento "nexthop via 192.168.3.1 dev eth3 weight 1" do arquivo "rc.local" e "gwping.sh", nesse caso o 3 link ficará fora do balanceamento.
2- Posso utilizar o 3 link que ficou de fora do balanceamento usando a marcação de pacotes, neste caso o 3 link vai trabalhar específico para um serviço ou um destino, veja exemplo:
#A regra abaixo determina que toda rede interna balanceada irá acessar o Bradesco pelo 3 link:
iptables -I PREROUTING -t mangle -i eth0 -s 192.168.0.0/24 -d bradesco.com.br -j MARK --set-mark 0x30
#A regra abaixo determina que toda rede interna balanceada irá acessar as portas 110(pop) e 25(smtp) pelo 3 link:
iptables -I PREROUTING -t mangle -i eth0 -s 192.168.0.0/24 -d 0/0 -p tcp -m multiport --dports 110,25 -j MARK --set-mark 0x30
3- Cuidado ao trabalhar com regras de marcação, como trabalhamos com redundancia se algum link cair e não deletar a marcação feita para ele o serviço ficará indisponível até o link voltar.. para corrigir este problema adcionei no arquivo "gwping.sh" a regra para deletar a marcação do link que caiu.. é necessário limpar a tabela mangle e adcionar as novas regras de marcação para quando o link voltar.
#Deleta marcação da tabela de roteamento:
ip rule del fwmark 0x30 lookup net prio 3
#Deleta as regras da tabela mangle:
iptables -F -t mangle
iptables -X -t mangle
Obs.: Não esqueça de desativar o balanceamento do 3 link se for utiliza-lo com marcação de pacotes, caso contrário não vai funcionar.
4- Na explicação anterior para a chamada do script no arquivo rc.local o comando nohup cria um arquivo "nohup.out" e isso gera um grande acumulo de dados ocupando espaço desnecessário no HD, se não for necessário para você esse log é possível desativa-lo acrescentando a opção > /dev/null o que irá jogar todo esse lixo para o buraco negro. Veja como ficaria a linha de comando:
nohup > /dev/null /etc/link/gwping.sh &
"Segue em anexo o script gwping.txt, renomeie para gwping.sh"
Comentários
+ Enviar Comentário