Ver Feed RSS

info24hs

Balanceamento e Redundancia (3 Links)

Avalie este Post de Blog
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"
Miniaturas de Anexos Arquivos Anexos

Atualizado 22-09-2009 em 10:52 por info24hs (Mudança no Tutorial e no Script)

Categorias
Linux , Balanceamento e Redundância

Comentários

  1. Avatar de Duca
    Parabéns pelos artigos.
  2. Avatar de FernandodeDeus
    Muito bom conteudo....como sempre da parte do info24hs.
  3. Avatar de mktguaruja
    Parabens amigo otimo artigo, quem manobra em linux vai conseguir fazer sussegado.. ate mesmo que não sabe muito vai conseguir fazer esse otimo tutorial. Voce esta de parabens.
    Atualizado 29-05-2009 em 14:26 por mktguaruja
  4. Avatar de daviradio
    Li todo o seu artigo e achei muito educativo e tirei duas conclusoes . Uma e a seguinte sabedoria se multiplica pela divisao. (O seu artigo tocou nas perolas de muitos sabidos(entre aspas)) coisa que eles nao descobriram sozinhos...Software aberto...linux comunidade livre.

    Segundo:
    Vamos dar vivas ao info24hrs...Vc fez despertar em muitos leitores do forum a ancia do saber... LINUX e suas soluçoes...Vale a pena estudar, experimentar e modificar mantendo os creditos e claro...no minimo Louvavel

    Eu mesmo estava endeusando demais o mikrotik mesmo sabendo que e software livre empacotado e sem constar creditos de ninguem ! Roubando o trabalho e ideias de muitos...Sei das vantagens... Grande projeto e me ajuda muito mas preferia gastar meus reais com irmaos brasileiros e ajudar nossos esforçados estudiosos e pesquisadores. Mas acontece que esse conhecimento e muito mal negociado nao chega a massa pois fica caro demais...

    Mesmo assim compro software do Pedro filho, Provebuntu e M3D4...Acho que colaborar e preciso para melhorar a situçao geral, gerando melhores software e renda .

    Esse e um desabafo de um iniciante calouro...To fora com esse papo de NEWBIES...Fala serio!
  5. Avatar de Pyramon Pereira
    Boa tarde...

    Muito bom o seu post...

    Mas como fica o script de firewall para fazer o compartilhamento desse 3 links ????

    No meu caso tenho apenas dois links e estou com duvida apenas no compartilhamento.


    caso possa me ajudar: [email][email protected][/email]

    Grato
  6. Avatar de info24hs
    Citação Postado originalmente por Pyramon Pereira
    Boa tarde...

    Muito bom o seu post...

    Mas como fica o script de firewall para fazer o compartilhamento desse 3 links ????

    No meu caso tenho apenas dois links e estou com duvida apenas no compartilhamento.


    caso possa me ajudar: [email protected]

    Grato
    Amigo, se eu entendi bem sua pergunta ai vai:

    ### Multi WAN ###
    ETH="eth+"
    ### Rede Lan ###
    LAN="192.168.0.0/24"

    iptables -t nat -A POSTROUTING -o $ETH -s $LAN -j MASQUERADE
  7. Avatar de heliodoro
    bom dia
    desculpa mais estou com uma duvida boba . essa linha de comando acima eu ponho no em algum arquivo ou ....
    e sobre o rc.local ... qual o lugar certo que ele fica... add as regras apos a ultima linha....
    muito obrigado...
  8. Avatar de heliodoro
    sou novo nesta area e tenho muitas duvida....
    fiz todo o procedimento do tuto....
    na maquina de teste eu ligo na eth0 192.168.0.1 do servidor e coloco tipo assim
    192.168.0.2
    255.255.255.0
    gateway 192.168.0.1
    dns 192.168.0.1
    muito obrigado....
  9. Avatar de Adisson Aires
    Tenho uma duvida, como faço para marcar um link para aceitar conexões de entrada como o exemplo a VPN?
    pelo que percebi, quando os 2 links estao "reduntantes/balanceado" a rota fica com 2 default gw e não consigo acesso externo a qualquer um dos IP`s, quando eu deleto uma das rotas default gw eu consigo acesso a VPN, voce sabe como resolver isso?

    agradeço desde já sua atenção.

    Obrigado.
  10. Avatar de tomelin
    Opa Cristiano,

    Tudo tranquilo, .. muito bom os teus artigos, mas irei te dar uma dica, pois já peguei um ambiente e me deu problema.

    É o seguinte:
    Cada table é como se fosse um ambiente diferente, então temos que ter todas as rotas em todas as tabelas o que não tem no seu ambiente.

    #Verificando as rotas da minha tabela
    ip route list table gvt

    ip route add 192.168.1.0/24 dev eth1 src 192.168.1.10
    ip route add default via 192.168.1.1

    OK, mas está faltando as outras rotas, então vamos adicionar elas aí.
    ip route add 192.168.2.0/24 dev eth2 src 192.168.2.10 table gvt
    ip route add 192.168.3.0/24 dev eth3 src 192.168.3.10 table gvt
    ip route add 192.168.0.0/24 dev eth3 src 192.168.0.10 table gvt #Rede Local
    ip route add 127.0.0.0/8 dev lo table gvt #interface local

    ip route add 192.168.1.0/24 dev eth1 src 192.168.1.10 table brt
    ip route add 192.168.3.0/24 dev eth3 src 192.168.3.10 table brt
    ip route add 192.168.0.0/24 dev eth3 src 192.168.0.10 table brt #Rede Local
    ip route add 127.0.0.0/8 dev lo table brt #interface local

    ip route add 192.168.2.0/24 dev eth2 src 192.168.2.10 table net
    ip route add 192.168.1.0/24 dev eth1 src 192.168.1.10 table net
    ip route add 192.168.0.0/24 dev eth3 src 192.168.0.10 table net #Rede Local
    ip route add 127.0.0.0/8 dev lo table net #interface local

    Essa saída é a ideal

    ip route list table gvt
    ip route add 192.168.1.0/24 dev eth1 src 192.168.1.10
    ip route add 192.168.2.0/24 dev eth2 src 192.168.2.10
    ip route add 192.168.3.0/24 dev eth3 src 192.168.3.10
    ip route add 127.0.0.0/8 dev lo
    ip route add 192.168.0.0/24 dev eth0
    ip route add default via 192.168.1.1


    Fora isso 100%

+ Enviar Comentário