Página 2 de 2 PrimeiroPrimeiro 12
+ Responder ao Tópico



  1. #21

    Padrão Balanceamento com 2 links ADSL

    Citação Postado originalmente por Jim
    Bem pessoal, tb to tentando fazer um load balance aqui...

    O que ocorre é que tenho um link ppp e gostaria que o adsl empresarial ajudasse esse link sempre que ele estivesse com sobrecarga, ou até mesmo substituílo caso o ppp caia e vice-versa.

    ETH0: 200.x.x.2 GW 200.x.x.1
    ETH1: 192.168.10.2 GW 192.168.10.1
    ETH2: 192.168.4.0/24 (rede local)

    Pois bem, inicialmente segui o tutorial, nao funcionou. Então segui o conselho no mystmst, tb nao funfou... Pois bem, setei os respectivos gw's no arquivo de configuração de rede, meu comandou route retorna:

    debian:~# route
    Tabela de Roteamento IP do Kernel
    Destino Roteador MáscaraGen. Opções Métrica Ref Uso Iface
    192.168.4.0 * 255.255.255.0 U 0 0 0 eth2
    localnet * 255.255.255.0 U 0 0 0 eth0
    192.168.10.0 * 255.255.255.0 U 0 0 0 eth1
    default 192.168.10.1 0.0.0.0 UG 0 0 0 eth1
    default 200.x.x.1 0.0.0.0 UG 0 0 0 eth0

    então adicionei a regra:

    ip route add default nexthop via 192.168.10.1 \ weight 1 nexthop via 200.x.x.1 weight 1

    e dá o erro:

    Error: "nexthop" or end of line is expected instead of " weight"

    Então tirei a barrinha:

    ip route add default nexthop via 192.168.10.1 weight 1 nexthop via 200.x.x.1 weight 1

    e retorna:

    RTNETLINK answers: File exists

    Pois bem amigos, eu teria de fazer algo além? Como posso testar esse load balance? Se um link cair o outro deveria assumir? a Saída deveria ser pelos 2 links o tempo todo ou o segundo link só entra em ação qdo o primeiro sobrecarrega?

    Grato...

    ok, o lance eh o route so mostra 1 rota default e nao 2, nao sei pq o seu mostra 2 (pode ser lance de versao.. acontece)

    sempre peça para o ip route listar as rotas, ele sim as mostra certo. no caso qdo ele da "File exists" eh por que jah tem uma rota.

    tente o seguinte:

    # route del default
    # ip route add default scope global nexthop via ip1 dev dev1 weight 1 \
    nexthop via ip2 dev dev2 weight 1

    http://www.tldp.org/HOWTO/Adv-Routin...ple-links.html

    ta aqui a url exatamente da parte que ele cita o load balacing.

    4.2.2. Load balancing

    The second question is how to balance traffic going out over the two providers. This is actually not hard if you already have set up split access as above.

    Instead of choosing one of the two providers as your default route, you now set up the default route to be a multipath route. In the default kernel this will balance routes over the two providers. It is done as follows (once more building on the example in the section on split-access):

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


    This will balance the routes over both providers. The weight parameters can be tweaked to favor one provider over the other.

    Note that balancing will not be perfect, as it is route based, and routes are cached. This means that routes to often-used sites will always be over the same provider.

    Furthermore, if you really want to do this, you probably also want to look at Julian Anastasov's patches at http://www.linuxvirtualserver.org/~julian/#routes , Julian's route patch page. They will make things nicer to work with.

  2. #22

    Padrão Balanceamento com 2 links ADSL

    vlw mistymst, li o esquema ali... apliquei as regras sugeridas por ele... (mas até nele faz-se referencias às tabelas do iproute2)

    Bem, ficou assim:

    /etc/iproute2/rt_tables:

    #
    # reserved values
    #
    255 local
    254 main
    253 default
    0 unspec
    #
    # local
    #
    #1 inr.ruhep
    2 T1
    1 T2


    /etc/firewall/load.sh:

    #!/bin/bash

    P1_NET=200.X.X.0
    IF1=eth0
    IP1=200.X.X.231
    P1=200.X.X.1
    P2_NET=192.168.10.0
    IF2=eth1
    IP2=192.168.10.2
    P2=192.168.10.1

    iptables -t nat -A POSTROUTING -s 192.168.4.0/24 -j MASQUERADE
    echo 1 > /proc/sys/net/ipv4/ip_forward

    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 route add default via $P1

    ip rule add from $IP1 table T1
    ip rule add from $IP2 table T2

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


    O Comando "route" retorna:

    debian:~# route
    Tabela de Roteamento IP do Kernel
    Destino Roteador MáscaraGen. Opções Métrica Ref Uso Iface
    200.102.248.0 * 255.255.255.255 UH 0 0 0 eth0
    192.168.10.0 * 255.255.255.255 UH 0 0 0 eth1
    192.168.4.0 * 255.255.255.0 U 0 0 0 eth2
    localnet * 255.255.255.0 U 0 0 0 eth0
    192.168.10.0 * 255.255.255.0 U 0 0 0 eth1
    default 200.X.X.1 0.0.0.0 UG 0 0 0 eth0

    Então abri o iptraf e fiquei analisando as duas interfaces externas. Bem, ele continua saindo por um IP apenas, agora pelo 200.x.x.x (PPP), deixando de utilizar o 192.168.10.x (adsl).

    Se desligo o cabo de rede PPP ele nao deveria continuar navegando pelo adsl? nao tá rolando...



  3. #23

    Padrão Balanceamento com 2 links ADSL

    Jim entao nem o balanceamento ta dando certo, tem de ver pq isso, assim aquele tutorial que passaram ae foi o que eu usei tb, mas nao funcionou certo, pois trava msn, e donwloads grandes.

    falows

  4. #24
    lillo
    Visitante

    Padrão Balanceamento com 2 links ADSL

    Olá ao forum
    Eu me associo com aqueles que não conseguem fazer rodar o script de load balancing do LINUX ADVANCED ROUTING HOWTO
    Infelizmente pois aqui na rede onde opero posso trabalhar so a noite então fica difficil rodar esse script pra testar em outros momento quando a rede fica em uso porqué os usuarios .... :@:
    Trava tudo ou na melhor das hipotesi so funciona um link
    Bom eu tenho uma distro debian, o kernel ja fui editado, iproute2 ja ta instalado(tentei baixar o cbq ou shaper tambem mas não deu certo para problemas do kernel 2.4.26 que recompilei inumeras vezes sem exito...)
    Os link são adsl empresarial com dois providers diferentes tenho 3 placas de rede uma da rede interna e duas pro externo uma pra cada modem
    Esse é o shell que pois deveria ir em rc.local
    #!/bin/bash

    #adiciono as tabelas em iproute
    echo "100 T1" >> /etc/iproute2/rt_tables
    echo "101 T2" >> /etc/iproute2/rt_tables


    #link da BRT
    IF1='eth0'
    #link da GVT
    IF2='eth2'
    #gateway da GVT
    P1='192.168.2.253'
    #gateway da BRT
    P2='192.168.1.254'
    #redes quem pertencem os gateways
    P1_NET='192.168.1.0'
    P2_NET='192.168.2.0'

    #adiciono as rotas
    ip route add $P1_NET dev $IF1 src $IF1 table T1
    ip route add default via $P1 table T1
    ip route add $P2_NET dev $IF2 src $IF2 table T2
    ip route add default via $P2 table T2
    #formo a main routing table
    ip route add $P1_NET dev $IF1 src $IF1
    ip route add $P2_NET dev $IF2 src $IF2
    #adiciono uma rota prefencial pra poder utilizar um gerenciador de downloads
    ip route add default via $P1
    #agora tem que setar as regras de de roteamenta pra a escolha das tabelas
    ip rule add from $IF1 table T1
    ip rule add from $IF2 table T2
    #agora tem que fazer o balanceamento de carga
    ip route add default scope global nexthop via $P1 dev $IF1 weight 1 \
    nexthop via $P2 dev $IF2 weight 1
    #desabilito o rp_filter
    echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
    Continua a dar erros tipo (agora digito na mão como que lembro que era...)"expected inet istead of "eth" ou mensagens tipo "route exists"
    Deve ter talvez algum erro no script mas aparentemente parece estar certo pois é praticamente egual aquelo do LARTC
    Talvez suspeito que alguma rota ficou em memoria mas sinceramente não sei fiquei até um pouco desanimado depois de tantos tentativos
    Tambem acho que provavelmente tem que marcar pacotes com uma regra de iptables porque eu tambem penso que não vai dar certo que um pacote que sae de uma interface volte pela outra com outro ip de origem
    Sinceramente não achei tutorias bem exaustivos que falem do problema colocando as mãos na massa e outros são muito dificeis de "decriptar" ou provavelmente não estou conseguindo entender direito ....sou ainda um iniciante.
    Por favor me indique uma saida do "empasse" no qual estou ficando ...

    Vlw e obrigado
    :good:



  5. #25

    Padrão Balanceamento com 2 links ADSL

    Citação Postado originalmente por lillo
    Olá ao forum
    Eu me associo com aqueles que não conseguem fazer rodar o script de load balancing do LINUX ADVANCED ROUTING HOWTO
    Infelizmente pois aqui na rede onde opero posso trabalhar so a noite então fica difficil rodar esse script pra testar em outros momento quando a rede fica em uso porqué os usuarios .... :@:
    Trava tudo ou na melhor das hipotesi so funciona um link
    Bom eu tenho uma distro debian, o kernel ja fui editado, iproute2 ja ta instalado(tentei baixar o cbq ou shaper tambem mas não deu certo para problemas do kernel 2.4.26 que recompilei inumeras vezes sem exito...)
    Os link são adsl empresarial com dois providers diferentes tenho 3 placas de rede uma da rede interna e duas pro externo uma pra cada modem
    Esse é o shell que pois deveria ir em rc.local
    #!/bin/bash

    #adiciono as tabelas em iproute
    echo "100 T1" >> /etc/iproute2/rt_tables
    echo "101 T2" >> /etc/iproute2/rt_tables


    #link da BRT
    IF1='eth0'
    #link da GVT
    IF2='eth2'
    #gateway da GVT
    P1='192.168.2.253'
    #gateway da BRT
    P2='192.168.1.254'
    #redes quem pertencem os gateways
    P1_NET='192.168.1.0'
    P2_NET='192.168.2.0'

    #adiciono as rotas
    ip route add $P1_NET dev $IF1 src $IF1 table T1
    ip route add default via $P1 table T1
    ip route add $P2_NET dev $IF2 src $IF2 table T2
    ip route add default via $P2 table T2
    #formo a main routing table
    ip route add $P1_NET dev $IF1 src $IF1
    ip route add $P2_NET dev $IF2 src $IF2
    #adiciono uma rota prefencial pra poder utilizar um gerenciador de downloads
    ip route add default via $P1
    #agora tem que setar as regras de de roteamenta pra a escolha das tabelas
    ip rule add from $IF1 table T1
    ip rule add from $IF2 table T2
    #agora tem que fazer o balanceamento de carga
    ip route add default scope global nexthop via $P1 dev $IF1 weight 1 \
    nexthop via $P2 dev $IF2 weight 1
    #desabilito o rp_filter
    echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
    Continua a dar erros tipo (agora digito na mão como que lembro que era...)"expected inet istead of "eth" ou mensagens tipo "route exists"
    Deve ter talvez algum erro no script mas aparentemente parece estar certo pois é praticamente egual aquelo do LARTC
    Talvez suspeito que alguma rota ficou em memoria mas sinceramente não sei fiquei até um pouco desanimado depois de tantos tentativos
    Tambem acho que provavelmente tem que marcar pacotes com uma regra de iptables porque eu tambem penso que não vai dar certo que um pacote que sae de uma interface volte pela outra com outro ip de origem
    Sinceramente não achei tutorias bem exaustivos que falem do problema colocando as mãos na massa e outros são muito dificeis de "decriptar" ou provavelmente não estou conseguindo entender direito ....sou ainda um iniciante.
    Por favor me indique uma saida do "empasse" no qual estou ficando ...

    Vlw e obrigado
    :good:

    Seja bem vindo ao clube, tb ja tentei de tudo e não consegui fazer o iproute funcionar, e tambem nunca vi ninguem chegar e dizer o meu funciona e ta aqui o script(manda o script junto ao dizer que funciona e nao diz segui tal tutorial e tals), então ja to achando que isso nao funciona mesmo.

    falows

  6. #26

    Padrão Balanceamento com 2 links ADSL

    Tenho o seguinte script

    #####################################
    echo "Inicializando procedimento de rotas"

    # RESETANDO TABELAS DE ROTAS, PADRAO DO SISTEMA
    echo "255 local" > /etc/iproute2/rt_tables
    echo "254 main" >> /etc/iproute2/rt_tables
    echo "253 default" >> /etc/iproute2/rt_tables
    echo "0 unspec" >> /etc/iproute2/rt_tables
    # ADICIONANDO OUTRAS TABELAS
    echo "200 router1" >> /etc/iproute2/rt_tables
    echo "201 router2" >> /etc/iproute2/rt_tables
    echo "202 router3" >> /etc/iproute2/rt_tables

    echo " declarando variaveis"
    GATE1=200.xxx.xxx.1
    LINK1=200.xxx.xxx.ip

    GATE2=192.168.1.1
    LINK2=192.168.1.ip


    # RESETANDO AS TABELAS
    echo " resetando as tabelas"
    ip route flush table router1
    ip route flush table router2
    ip route flush table router3

    # CRIANDO A TABELA 1
    echo " criando a tabela 1"
    ip route show table main | grep -v ^default | while read ROUTE ; do
    ip route add table router1 $ROUTE
    done
    ip route add $LINK1 via $GATE1 table router1
    ip route add default via $GATE1 table router1

    # CRIANDO A TABELA 2
    echo " criando a tabela 2"
    ip route show table main | grep -v ^default | while read ROUTE ; do
    ip route add table router2 $ROUTE
    done
    ip route add $LINK2 via $GATE2 table router2
    ip route add default via $GATE2 table router2

    # CRIANDO A TABELA 3
    echo " criando a tabela 3"
    ip route add default table router3 nexthop dev eth0 via $GATE1 weight 1 nexthop dev eth1 via $GATE2 weight 1


    ip rule add from $LINK1 table router1 prio 26
    ip rule add from $LINK2 table router2 prio 27
    ip rule add fwmark 1 table router1 prio 29
    ip rule add fwmark 2 table router2 prio 30
    ip rule add fwmark 3 table router3 prio 25

    ip route flush cache


    #####################################

    foram criadas 3 tables de roteamento!
    1 para ir por um link
    2 para ir por outro link
    3 para ir pelos 2 links, em nexthopes


    depois no eh so marcar no firewall os pacotes, de acordo com a marcação, os pacotes sairão pelo tabela de roteamento escolhido!

    ### faz com que o servico dns faca consultas pelo outro link
    $IPTABLES -t mangle -A OUTPUT -p UDP --dport 53 -m owner --uid-owner 25 -j MARK --set-mark 2
    ### faz o squid utilizar a tabela de roteamento com load balance
    $IPTABLES -t mangle -A OUTPUT -p TCP -d ! 192.168.0.0/24 --dport 80 -m owner --uid-owner 23 -j MARK --set-mark 3


    Por ai vai! depende da necessidade de cada um!
    Detalhes: Utilizando o nexthop quando uma solicitação é estabelecida por um link, ela se mantem no mesmo!
    Quando um download eh feito, ela nao usa os 2 links ao mesmo tempo! ele utiliza ate a velocidade maxima de um dos links!

    Não é 100% balanceado, mais já eh uma boa solução!

    Espero ter ajudade a todos!



  7. #27

    Padrão Balanceamento com 2 links ADSL

    Opa uma alma que teve sucesso... finally.

    Bom quanto a nao ser um balanceamento 100% eh verdade... afinal ele vicia a rota e nao verifica se ela esta ativa... sao esses os problemas, tem um patch que visa a corrigir o lance da verificacao mas eu nao testei, pois como foi dito, se vc 'perder' um link ele nao recalcula as rotas e continua enviando pelo link down.
    quanto ao vicio de rotas, uma solucao ... ops gambiarra seria da flush cache no cron de tempos em tempos...

    *sniff* comprem um roteador e rodem um protocolo de roteamento

    :cry:

  8. #28

    Padrão Balanceamento com 2 links ADSL

    Bom vou dar uma testada nesse script ae tb, e se achar melhorias posto ae.

    falows



  9. #29
    lillo
    Visitante

    Padrão Balanceamento com 2 links ADSL

    Obrigado! acho que ja é um bom inicio pra testar na rede
    Por quanto vc falava sobre o funcionamento e a verifica dos gateways padrão seria suficiente um script no crontab a cada 1 ou dois minutos que da uma serie di ping nos gateways e verificam se estam ativos...então deveria automaticamente recuperar a rota....
    Essa é uma solução posivel se o balanceamento de carga funcionar....

    flws

  10. #30
    Visitante

    Padrão Clustering e Load Balance | [email protected]

    Olha pessoal... Eu sei como fazer, mas tem um problema!

    Consegui somar vários links de dados, sendo 02 adsl e 01 hdlc, para isto utilizei iproute2 + iptables.

    Fiz vários downloads e realmente uniram os 3 circuitos, mas quando se trata de redundância... não funcionou...

    Ex. Quanddo estou fazendo download de um arquivo em um server FTP e uma
    adsl perde a conexão, os demais links não funcionam, e fica apenas em cache rota para a adsl que esta com problema, e quando divido o arquivo em varias partes, ex. flashget, e perde a conexão de uma adsl, ele continua sem nenhum problema...

    Conclusão: funcionou apenas a junção dos circuitos, que rendeu o total de 2,6Mb. "02 adsl de 800Kb + 01 hdlc 1024Kb".

    Obs.: Quando tenho apenas uma conexão a um host remoto e a conexão se faz pela adsl que apresentou problemas não consigo continuar o download...



  11. #31
    Visitante

    Padrão Balanceamento com 2 links ADSL

    Ok vc conseguiu mas mas como que vc fiz?
    Pois olhei melhor esta noite o script de japaeye4u e sinceramente não entendii ele muito bom , se colocou mais regras no iptables junto com o script ou não, pois colocou uma string $ROUTE sem declarar o valor..,eu não intendo muito de shell script... mas ta certo assim ??
    Talvez tem que ver melhor a opção de colocar a funcionar o cbq e dae poderia se utilizar até uma utility chamada ipmenu que trabalha graficamente com ncurses mas fica dificil de compilar o kernel que é bastante perigoso considerado que é o firewall da empresa.....

    Por favor quem tiver a solução que tente ser mais claro e articolado nas respostas pra que, quem vai a utilizar, não copie simplesmente o script mas possa entender o que ta fazendo...

    falows

  12. #32
    Visitante

    Padrão Balanceamento com 2 links ADSL

    Essa tal varial $ROUTER foi utilizada na FOR do script!
    Esse codigo não é nehum bixo papão! hhehe!

    postei um artigo de LOAD BALANCE! ve la depois!

    https://under-linux.org/noticia4803.html



  13. #33

    Padrão Balanceamento com 2 links ADSL

    eu particularmente não manjo de linux, mas no meu servidor tenho esse serviço habilitado!


    tenho 2 links que dividem o tráfego, dinamicamente.... sempre que um pacote sai por determinado link ele continuará até o fim, com isso não cai msn e nem problemas com banco.

    no começo msn e icq caia direto, agora isso foi resolvido.

    é interessante que as vezes entro em um site que verifica ip e identifica o ip1, abro outra janela do brownser e identifica ip2.

    posso tentar passar uma cópia do script (mas num faço nem idéia onde fica) ... sou apenas usuário.

    uso conectiva8

  14. #34
    lucianotsi
    Visitante

    Padrão load balance

    olá!

    muitos estao postando aki que conseguiram fazer funcionar.... por favor, deem uma luz.... ja tentei todos os scripts possiveis q encontrei na net e nada funciona. Estou tentando ainda ser fiel ao linux, mas tá dificil. Tentei inclusive mudar de distro (de Conectiva pra Fedora) mas nao adianta mesmo. Tenho aki 5 canais (1 ADSL, 2 IP Turbo e 2 IP Dedicado) todos de 1Mb, e estou precisando fazer com que a conexão seja estabelecida do inicio a fim pelo mesmo link, sem alternar, pois meu maior problema está sendo com FTP e Banco, onde constantemente detecta alteração de IP e encerra a sessão, motivo este q está me causando muitos transtornos. Não ha a necessidade de somar os canais (5Mb) mas sim de fazer redundância e fazer com q o pacote enviado retorne pelo mesmo caminho.. Estou quase partindo pra alguma solução pronta (HARDWARE) ou ainda Windows, pois tenho algumas dicas para testar, porém não gostaria de mudar... se alguem tiver uma luz, por favor postem.... Caso alguem saiba do que o user IJR está se referindo, tiver testado, e puder compartilhar agradeço, pois a dica do VISITANTE eu consegui fazer funcionar o balance, porem o FTP nao funciona e 2 bancos que acessamos constantemente detecta alteração do IP...



  15. #35

    Padrão Balanceamento com 2 links ADSL

    "Conexões redundantes à Internet utilizando Linux"
    http://www.vivaolinux.com.br/artigos...hp?codigo=2252

    "O presente documento destina-se a criar um balanceamento de duas conexões ADSL existentes em uma mesma máquina Linux." :twisted:

    acho que pode usar também o netsplitter:
    "NetSplitter is a 'reverse' load balance like EQLPlus or bounding, but at the firewall/NAT level. If more than one internet connection exists, it will balance the NAT connections on those links. It runs on FreeBSD and Linux. Platforms: FreeBSD, Linux, NetBSD, POSIX. Homepage: http://www.hostname.org/netsplitter"


    :twisted:

  16. #36
    lucianotsi
    Visitante

    Padrão Load Balance

    Agradeço a dica, mas é exatamente esse o script que atualmente esta rodando em meu servidor.... ele até funciona razoavelmente bem (mas se 1 link cai e servidor nao consegue interpretar e continua mandando novas solicitações para a eth onde esta o canal).....

    Porem, meu problema com MSN caindo, FTP q nao funciona e alteração de IP (Bancos) continua..... preciso de alguma solução para estes casos, se possivel mantendo a redundancia.

    Valew a dica...



  17. #37

    Padrão Re: Load Balance

    Citação Postado originalmente por lucianotsi
    Agradeço a dica, mas é exatamente esse o script que atualmente esta rodando em meu servidor.... ele até funciona razoavelmente bem (mas se 1 link cai e servidor nao consegue interpretar e continua mandando novas solicitações para a eth onde esta o canal).....

    Porem, meu problema com MSN caindo, FTP q nao funciona e alteração de IP (Bancos) continua..... preciso de alguma solução para estes casos, se possivel mantendo a redundancia.

    Valew a dica...
    Cara tenho o mesmo problema, o unico jeito que achei foi pondo um servidor antes fazendo o redir para bancos msn e outros e o resto vai para o balanceamento, nao sei se no mesmo server da pra fazer isso.

    falows

  18. #38
    Visitante

    Padrão Balanceamento com 2 links ADSL

    galera..

    alguem conseguiu fazer este dito balanceamento dos links?
    pois estou tentando e nao da certo...ele passa somente por um link...e o outro fica ocioso...ja busquei varios artigos e tutorias mas nenhum da certo..
    No caso de estar funcionando o dito cujo,,, por exemplo, eu teria q abri uma pagina por um link, abri outra janela do navegador.. e ai esta outra janela iria utilizar o segundo link certo?

    abraços..