+ Responder ao Tópico



  1. #1

    Padrão Balanceamento de Links

    Boa tarde

    Bom gostaria de algumas informações dos colegas que ja fizeram balanceamento de links, adsl no mesmo servidor.
    A minha situação é a seguinte, tenho um linux como firewall e gateway, da rede, nele usei o iproute2 para balancear os links, ficando com a seguinte estrutura
    ADSL(SPEEDY1)--------|
    ...............................|----servidorLinux-->switch-->rede interna
    ADSL(SPEEDY2)--------|

    Pois bem os adsl são da mesma operadora no caso telefonica. a situação é a seguinte, qdo 1 cai tecnicamente seria para ele redirecionar todas as conexões para o outro link, o que acontece somente depois que reiniciar a estação, o download o acesso a sites está lento, outra coisa tbem, é que o msn fica caindo toda hora.

    regra para o roteamento
    eth0 speedy1
    eth1 rede
    eth2 speedy2

    Marcando pacotes.
    iptables -A PREROUTING -t mangle -s 192.168.0.0/24 -d 0/0 -j MARK --set-mark 3
    # Desabilitando o filtro de pacotes do martian source
    echo -n "Desligando rp_filter..."
    for eee in /proc/sys/net/ipv4/conf/*/rp_filter; do
    echo 0 > $eee
    done

    # Definindo regras de balanceamento de Link:
    # speedy1
    ip route add 10.0.0.0/24 dev eth0 src 10.0.0.2 table speedy1
    ip route add default via 10.0.0.1 table speedy1

    # speedy2
    ip route add 192.168.1.0/24 dev eth2 src 192.168.1.2 table speedy2
    ip route add default via 192.168.1.1 table speedy2

    # setando velox na tabela principal de roteamento
    ip route add 10.0.0.0/24 dev eth0 src 10.0.0.2
    ip route add 192.168.1.0/24 dev eth2 src 192.168.1.2

    # setando a rota preferencial
    ip route add default via 10.0.0.1

    # regras das tabelas
    ip rule add from 10.0.0.2 table speedy1
    ip rule add from 192.168.1.2 table speedy2

    # balanceamento de link
    ip rule add fwmark 3 lookup velox prio 3
    ip route add default table speedy nexthop via 10.0.0.1 dev eth1 \
    weight 1 nexthop via 192.168.1.1 dev eth2 weight 1

    # flush no roteamento
    ip route flush cache

  2. #2

    Padrão

    eu uso esse tipo de palanceamento mas minha duvida e a Seguinte até o kernel 2.6.19 tem a opcao fwmark mas nos outros kernel mais atuais foi instinta ou pelo menos nao encontrei, teria algum patch para isso?

  3. #3

    Padrão

    LinuxKids,

    Cara eu já configurei um servidor desse jeito também e tive os mesmos problemas que você, certamente não resolvi-os da forma como eu queria que certamente não é a que você quer também , mas vou descrever o que eu fiz...

    Problema 1: quando um dos links caem.
    Quando os 2 links estão ativos é a mil maravilhas tudo bem rápido e tal, mas a dor de cabeça é quando um deles caem, pela minha experiência o que parece é que o linux não detecta que o desgramado caiu e continua roteando pacotes pra lá, que certamente nunca chegarão ao destino e por isso o negocio fica lento, praticamente uma carroça, isso porque "metade" dos pacotes ele está mandando para um link que não responde.
    Minha solução, como já mencionei, não foi a ideal, porém eu criei um pequeno script rodando via cron que fica mandando ping para o gateway da cada um dos links, quando o ping não retorna o script considera que o link caiu e então muda o roteamento do ip route, madando o comando do tipo:
    ip route add default table speedy nexthop via 10.0.0.1 dev eth1
    ou
    ip route add default table speedy nexthop via 192.168.1.1 dev eth2 weight 1
    dependendo de qual link caiu, certamente o script continuaŕa executando e quando ele verificar que o link voltou ele reescreve o roteamento para o balanceamento de links.

    Isso funcionou comigo, outra coisa que eu notei é que o linux só consegui notar que o link caiu quando eu colocava diretamente os comandos: "ifconfig eth1 down" ou ifconfig eth2 down".


    Problema 2: MSN caindo.
    Não consegui diagnosticar o problema tão bem quando o anterior, o jeito foi marcar os pacotes para os servidor do MSN e mandar eles sempre por um link só, você pode implementar essa mudança de link via script também quando o link que vc mandou o MSN saiu cair.

    Bem, essa foi minha experiência e foi dessa forma que solucionei, espero que isso lhe ajude ou então que você tenha uma ideia melhor que a minha e compartilhe conosco sua solução.

    valeu!

  4. #4

    Padrão

    Eu trabalho num provedor de internet que lá tinhamos 8 links adsl fazendo balanceamento em uns 3 servidores diferentes. Bem, vivenciei seu presente durante uns 2 anos seguidos. LinuxKids, não sei qual é a sua situação financeira ai, mas se possivel quando puder fazer isto, tente emilinar essa situacao e peça um link dedicado para resolver tal problema, porque é uma gambiarra de tal forma que me irrita só de lembrar que o provedor vivia com mil ligacoes, e hoje em dia não existe mais nenhuma. Mas falando tecnicamente, eu fazia isso com velox. Tenho um cliente que tem 3 links adsl de 1 mega, e tem mais de 100 clientes, e funciona numa boa, pelo menos em vitória o velox nao caí. E pra ter noção disso o que o rmaximo fez eu nunca precisei de fazer aqui, dificilmente caia os links, a unica coisa que tive de fazer foi marcar pacotes para certas aplicacoes como msn, para passar por apenas um dos links. Agora esse final de semana eu tava vendo aqui no forum, uma opcao de fazer balanceamento pelo squid, e isso vai ser de boa ajuda pra mim, porque vai dar pra fazer um balanceamento legal da porta 80.

    No caso de seu balanceamento voce ta usando algum script pronto na internet ou vc mesmo que o fez? Eu _uso_ o que o Leandro R. fez, com várias modificações, qualquer duvida, eu posso postar o script que eu uso para você dar uma olhada.