Há algum tempo peguei um servidor para fazer e em minhas pesquisas identifiquei a falta de material específico sobre esse assunto, então depois de conseguir configurar o servidor de balanceamento, resolvi postar aqui um passo a passo. Espero que gostem e que seja de grande utilidade.
Vamos começar, no meu caso montei o servidor de balanceamento + redundância em openSUSE, pois tinha instalado o Debian 4 e por falta de pacotes no kernel não consegui realizar o balanceamento, mas para quem quiser e preferir, pode usar o Debian 5.
1° passo:
Dê um:
# yast --update
Neste momento você estará atualizando a lista de repositórios.
Para quem utiliza o Debian e distribuições derivadas, dê um:
[3] Comentário enviado por guilhermerezende em 12/09/2009 - 15:55h
Amigo, não funciona. Talvez você ainda não percebeu os problemas de irá enfrentar em conexões seguras e sites "balanceados". Esse método que está mostrando até funciona, com ip´s válidos e sem sofrer NAT. Eu estou a 5 anos procurando uma solução que balanceie conexões oriundas de NAT sem nenhum problema. Segue outro exemplo p/ pesquisa que ja tentei e tbm não consegui, enfrentando o mesmo problema citado acima. Da uma pesquisada e qualquer novidade poste aqui.
Abs!!!
# initialise two chains that will put the mark on the packet and keep it in memory
iptables -t mangle -N CONNMARK1
iptables -t mangle -A CONNMARK1 -j MARK --set-mark 1
iptables -t mangle -A CONNMARK1 -j CONNMARK --save-mark
iptables -t mangle -N CONNMARK2
iptables -t mangle -A CONNMARK2 -j MARK --set-mark 2
iptables -t mangle -A CONNMARK2 -j CONNMARK --save-mark
# get the mark on packet that belongs to an existing connection
iptables -t mangle -A PREROUTING -i eth0 -p tcp -m state --state ESTABLISHED,RELATED -j CONNMARK --restore-mark
# if the mark is zero if means the packet does not belongs to any existing connection
iptables -t mangle -A PREROUTING -p tcp -m state --state NEW -m statistic --mode nth --every 2 --packet 0 -j CONNMARK1
iptables -t mangle -A PREROUTING -p tcp -m state --state NEW -m statistic --mode nth --every 2 --packet 1 -j CONNMARK2
[4] Comentário enviado por removido em 12/09/2009 - 17:08h
Ola, não entendi exatamente sua duvida, voce só vai utilizar o MARK, se desejar estipular o link pelo qual cada pacote vai passar, mais poste aqui, ou me mande um email, explicando realmente o seu Problema.
[5] Comentário enviado por alexandre_mpm em 14/09/2009 - 10:39h
Cara parabens pelo seu artigo, gostei muito mesmo. Isso realmente funciona! Porem tem um problema que se vc acessar sites de banco a conexão fica caindo toda hora quase impossível de fazer uma transação bancária para resolver isso, tem que criar uma regra na tabela magle, marcando o pacote e depois indicar por qual interface vai sair. Ficaria mais ou menos assim:
iptables -A PREROUTING -t mangle -p tcp --dport 443 -d 0.0.0.0/0.0.0.0 -j MARK --set-mark 0x4
acredito que seja assim
ip rule fwmark 4 lookup (TABELA DE REGRAS)prio 3 >> /dev/null
[6] Comentário enviado por removido em 14/09/2009 - 10:44h
Ola, cara aqui utilizei desse modo e minha conexão com sites HTTPS continuaram funcionando perfeitamente...
Nessa Regra de MARK que vc sitou a cima, é para marcar os pacotes destinados a sites HTTPS saiam apenas por uma determinada Faixa de IP, no seu caso vc deve utilizar o Balanceamento em apenas uma rede Interna...
No meu caso tive que fazer em duas redes Internas, oq me Impossibilita a usar essa Regra..
Acho que isso já da conta do recado…o ping –I pinga direto pela interface...o resto já fala por si só..
Da para melhorar, tipo status para link1, link2 ou dois links... nesse caso acima eu somente usei dois status 0 ou 1, para balanceamento ou algum link fora.
[11] Comentário enviado por doomk em 25/09/2009 - 12:03h
elaborei um script de failover para redundância com 3 links de internet, no momento está a 6 meses em produção sem nenhum problema.
aki na empresa funciona da seguinte forma:
temos os seguintes links,
4mb - ajato
1mb - transit
12mb - virtua
conexões http,https - saem pelo virtua
conexões ssh - sai pelo transit
conexões ftp,email - saem pelo ajato
como temos uma banda muito boa pra saida de internet, não precisei me preocupar com balanceamento e sim com redundância, precisei elaborar um script que, caso um desses links caiam, automaticamente teria q ser feito um chaveamento, quase que imperceptível.
está rolando na boa, e faz um bom tempo que não ouço mais akela famosa frase: A INTERNET CAIU???? ESTAMOS SEM INTERNET???? CADE O MENININHO DO SUPORTE???? kkkk
quem tiver necessitanto de uma solução semelhante a minha, é só me contactar.
[16] Comentário enviado por ronys00 em 13/12/2012 - 10:08h
Galera bom dia, implementei o esquema de balanceamento conforme o tutorial porem tive o seguinte problema:
O servidor que eu implementei é somente para DNS externo, nele tenho 2 dominios configurados e está tudo ok, como nenhuma maquina está usando esse servidor para as requisições http, pop etc em determinado momento um dos links deixa de responder, ai quando configuro alguma maquiana da rede para navegar por esse server ai o ip volta a responder. minha pergunta é existe algum script que eu possa implementar que por exemplo ping para alguns sites de tempo em tempo para que os 2 ips sempre respondam sem a necessidade das maquinas estarem navegando por esse servidor que implementei o balanceamento ?
[19] Comentário enviado por clovisvellardo em 04/11/2013 - 16:21h
Muito bom o post, eu estou subindo um novo server aqui, mais tive problemas com o comando
ip ro add default scope global equalize nexthop via $NET_EXT_GW1 weight 1 nexthop via $NET_EXT_GW2 weight 1
Error: either "to" is duplicate, or "equalize" is a garbage.
Alguem teve esse mesmo problema e conseguiu solucionar??
[21] Comentário enviado por diegotesch em 16/01/2014 - 11:29h
clovisvellardo, voce poderia ser mais especifico quanto a forma na qual sanou o erro
estou enfrentando o mesmo problema e nao estou conseguindo resolver.
agradeço se puder ajudar desde ja.
[23] Comentário enviado por cgonzagaskill em 14/02/2014 - 18:09h
Olá Amigão,
Sou iniciante no linux....
Olá lhe mandei um e-mail e preciso tirar uma duvida.. tenho um servidor com três placas de rede, sendo que uma delas está para rede local, e as demais estão em ambas conectadas em modens em bridge adsl. Pergunto, é possível realizar a redundância mas lembrando que preciso garantir o acesso externo remoto..