[FUG-BR] RES: Load Balance

Jean Zanuzo jean em w3nt.com
Quarta Outubro 3 10:44:23 BRT 2007


Marcio A. Sepp escreveu:
> O pf faz sim...  Segue um exemplo:
> pass out on em0 route-to (em0 200.xxx.xxx.2) round-robin from any to any
> keep state probability 33%
>
> Indo um pouco mais a fundo...  Neste exemplo modelo, se uma placa cair, o
> tráfego continuará sendo enviado para ela, mas como eu faria para no caso de
> uma placa falhar, o tráfego ser encaminhado para a outra?  
>
> Não digo necessariamente a placa, mas digamos que o "gateway da placa" caia.
> Tem como redirecionar o tráfego para outra interface (digo isso em
> real-time)?  
>
> Alguém sabe como resolver isso? 
>
>
> Att.
> Márcio A. Sepp
>  
>
>   
Marcio, não conheco, mesmo q se o gateway cair, vc vai esperar alguns 
segundos para se certificar da queda, pelo menos uns 5s, entao, se 
possivel, via shell script vc pode monitorar a tabela arp para ver se 
ele esta lá ainda ou por icmp se ele ainda responde. entao vc executa as 
alteracoes nas regras do firewall para nao usar aquele link q caiu. (é 
uma sugestao, se alguem conhece algo melhor ou especifico, favor postar!).
>> -----Mensagem original-----
>> De: freebsd-bounces em fug.com.br 
>> [mailto:freebsd-bounces em fug.com.br] Em nome de Neerlan Amorim
>> Enviada em: terça-feira, 2 de outubro de 2007 20:25
>> Para: Lista Brasileira de Discussão sobre FreeBSD (FUG-BR)
>> Assunto: Re: [FUG-BR] Load Balance
>>
>> Jean, vou ficar te devendo essa, pois só vi isso no ipfw.
>>
>> On 10/2/07, jean <jean em w3nt.com> wrote:
>>     
>>> Neerlan, nao tenho conhecimento em PF, mas nele vc pode gerenciar 
>>> varios links e controlar a % de caga para cada um?
>>>
>>> Obrigado,
>>>
>>> Jean
>>>
>>> ----- Original Message -----
>>> From: "Neerlan Amorim" <neerlan em gmail.com>
>>> To: "Lista Brasileira de Discussão sobre FreeBSD (FUG-BR)"
>>> <freebsd em fug.com.br>
>>> Sent: Tuesday, October 02, 2007 6:15 PM
>>> Subject: Re: [FUG-BR] Load Balance
>>>
>>>
>>> Da uma olhada nesse link.
>>> http://www.bsdsul.com.br/tutoriais_detalhe.php?cod=27&tipo=2
>>> é uma solução bem interessante usando o PF.
>>>
>>> Neerlan Amorim
>>>
>>> On 10/2/07, Jean Zanuzo <jean em w3nt.com> wrote:
>>>       
>>>> 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
>>>> -------------------------
>>>> 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
>>>
>>> -------------------------
>>> 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
>>
>>     
>
> -------------------------
> Histórico: http://www.fug.com.br/historico/html/freebsd/
> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd
>   


Mais detalhes sobre a lista de discussão freebsd