[FUG-BR] Load Balance

Jean Zanuzo jean em w3nt.com
Terça Outubro 2 17:02:54 BRT 2007


Marcelo Soares da Costa escreveu:
> Podia postar aqui um exemplo disso , na net vc acha exemplos com carp
> []'s
>   
>>>   
>>>       
>> Voce também pode usar o ipfw com prob e mais de uma instancia do natd 
>> combinando com regra forward, conforme a largura dos seu links vc pode 
>> regular a probabilidade de pacotes para cada um, ou nao usar o prob e 
>> fazer forward nas rotas ou portas, conforme preferir, ou combinando tudo 
>> isso, fica muito bom! ;)
>>
>> Jean Zanuzo
>>
>>
>> -------------------------
>> Histórico: http://www.fug.com.br/historico/html/freebsd/
>> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
>>     
>
> -------------------------
> Histórico: http://www.fug.com.br/historico/html/freebsd/
> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
Exemplo com dois Links, a interface bge0 na operadora A e a bge1 na 
operadora B, e a em0 indo para a INTRANET.

*As configuracoes das Interfaces:
*# ifconfig bge0
bge0 inet 200.xxx.yyy.138 netmask 0xfffffffc broadcast 200.xxx.yyy.139
     inet 200.xxx.yyy.142 netmask 0xffffffff broadcast 200.xxx.yyy.142
# ifconfig bge1
bge1 inet 189.xxx.yyy.2 netmask 0xfffffffc broadcast 189.xxx.yyy.3
     inet 189.xxx.yyy.10 netmask 0xffffffff broadcast 189.xxx.yyy.10
# ifconfig em0
em0  inet 189.xxx.yyy.17 netmask 0xfffffffc broadcast 189.xxx.yyy.19

*O Default router*
defaultrouter="200.xxx.yyy.137" #Sendo o ip do roteador da operadora A 
(Que será a operadora principal)

*A configuracao do natd*
Um arquivo por operadora, vamos criar o arquivo natd.a para a operadora 
A e o natd.b para a operadora B
*Cada natd utilizara uma porta diferente.

Arquivo /etc/natd.a
alias_address 200.xxx.yyy.142
port 8667
use_sockets yes

Arquivo /etc/natd.b
alias_address 189.xxx.yyy.10
port 8668
use_sockets yes

inicialize o natd
natd -f /etc/natd.a
natd -f /etc/natd.b

*A configuracao do ipfw*
ipfw add check-state

# Aqui é onde direciona os pacotes para os natd \\
# das operadoras, exceto da operadora A, que já \\
# está no defaultrouter, entao o que nao combinhar \\
# com nenhuma regra, automaticamente vai \\
# para a operadora A

   # exemplo q redireciona para a operadora B as portas espeficicas 80, 
443, 22, 23
   ipfw add divert 8668 ip from not 189.xxx.yyy.0/25 to any dst-port 
80,443,22,23 recv em0

   # exemplo q redireciona para a operadora B os destinos 64.0.0.0
   ipfw add divert 8668 ip from not 189.xxx.yyy.0/25 to 64.0.0.0/8 recv em0

   # exemplo q redireciona para a operadora B 50% dos pacotes
   ipfw add prob 0.5 divert 8668 ip from not 189.xxx.yyy.0/25 to any 
recv em0 setup keep-state

   # exemplo q redireciona para a operadora B 30% dos pacotes,e o 
restanta p/ a operadora A
   ipfw add prob 0.3 divert 8668 ip from not 189.xxx.yyy.0/25 to any 
recv em0 setup keep-state

   # para mais links, basta criar mais instancias do natd.[c,d,e,f] para 
cada e criar regras para elas

# passagem direta fora do natd para os ips validos da opradora B
ipfw add fwd 189.xxx.yyy.1 ip from 189.xxx.yyy.0/25 to any recv em0
ipfw add fwd 189.xxx.yyy.1 ip from 189.xxx.yyy.0/25 to any xmit bge0

#natd para os pacotes na interface da operadora B
ipfw add divert 8668 ip from any to any via bge1

#natd para operadora A
ipfw add divert 8667 ip from not 200.xxx.yyy.128/25 to any out via bge0 
#nao vamos fazer nat nos ips validos
ipfw add divert 8667 ip from any to 200.xxx.yyy.142 in via bge0 #vamos 
nat no retorno somente do ip na alias usada pelo nat

ipfw add allow ip from any to any

* o 189.xxx.yyy.1 é o roteador da operadora B.

----
Faz o teste, é mais ou menos isso, vc adequa a suas necessidades, 
qualquer duvida, problema ou sugestao principalmente posta ai, hehehe. []'s


Jean Zanuzo


Mais detalhes sobre a lista de discussão freebsd