[FUG-BR] Problema com PF load balance

2006-05-26 Thread Diego Linke
Bom dia pessoal,

Eu estou com um pequeno e importante problema com relacao ao uso de load
balance com PF.
Atualmente uso o PF com funcionabilidade de Load Balance em substituto a
Switchs de load balance Layer 3, sendo alguns cenarios com aplicacoes
que compartilham as sessoes e outras que nao compartilham.
Vamos ao problema:

AMBIENTE:

Basicamente o ambiente de exemplo e' 1 servidor com PF e 3 servidores
com Web Server que nao compartilham sessao.

table  { 10.0.0.1, 10.0.0.2, 10.0.0.3 }
rdr on xl0 inet proto tcp from any to IP_PUBLICO port 80 -> {  }
round-robin sticky-address
pass in quick log on xl0 proto tcp from any to  port 80 flags S/SA
modulate state (src.track 1800)

A opcao "sticky-address" faz com que o PF sempre que redirecione a
conexao para um servidor, crie uma entrada no "Source" (source-track
"pfctl -vs Source"), e que durante a permanencia desta source ele
encaminhe outras requisicoes vindas do mesmo IP para o mesmo servidor web.
A permanencia no "Source", por padrao e' ate' a ultima state existir.
Para que nos incrementamos este valor, devemos alterar o limit
"src.track" (set timeout src.track), eu fiz isso atraves da regra que
libera a conexao.

Resumindo:
O servidor vai fazer load balance entre os servidores na tabela , e
manter o mesmo servidor para o mesmo cliente em ate 1800 segundos (30
min) depois da ultima state excluida.

PROBLEMA:

Tudo isso descrito acima funciona perfeitamente, o problema comeca
quando temos que eliminar um IP do load balance.
O servidor 10.0.0.2, esta down e precisamos tira-lo do load balance,
neste caso executamos:
pfctl -t lb -T del 10.0.0.2

Neste caso tecnicamente o load balance ficara apenas entre os IPs
10.0.0.1 e 10.0.0.3, porem o problema e' que mesmo nao estando na tabela
, as requisicoes de clientes que ja estavam na tabela Source
apontando para o IP 10.0.0.2 vao continuar sendo redirecionadas para ele
10.0.0.2 ate expirar os timeout do src.track (no meu caso 30 min), ou
rodando o comando "pfctl -F Source", porem neste ultimo caso perdendo
TODAS as referencias de "sessoes" deste e de outros load balance e
source-tracks, neste firewall.

POSSIVEIS SOLUCOES:

Infelizmente as unicas solucoes que consegui visualizar, e' alterando o
codigo do PF, vamos as sugestoes:
1) Criar algo similar a "pfctl -k" de states para Source.
   Neste caso na hora de tirar um servidor do load balance, executariamos:
   pfctl -t lb -T del 10.0.0.2
   pfctl -PARAMETRO_NOVO 10.0.0.2
2) Fazendo o sticky-address, checar antes de redirecionar se o IP esta
ainda nas opcoes de load balance (no meu caso se esta na tabela ).

Alguem conhece outra alternativa ?
Algum hacker de PF se habilita ? hehehe

Abraços

-- 
Diego Linke
Public Key: http://www.gamk.com.br/gamk.asc


-
Histórico: http://www.fug.com.br/historico/html/freebsd/
Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd


Re: [FUG-BR] Problema com PF load balance

2006-05-26 Thread Douglas Santos
Diego Linke wrote:
> Bom dia pessoal,

Ola,

> Tudo isso descrito acima funciona perfeitamente, o problema comeca
> quando temos que eliminar um IP do load balance.
> O servidor 10.0.0.2, esta down e precisamos tira-lo do load balance,
> neste caso executamos:
> pfctl -t lb -T del 10.0.0.2

Tive um problema similar.

> Neste caso tecnicamente o load balance ficara apenas entre os IPs
> 10.0.0.1 e 10.0.0.3, porem o problema e' que mesmo nao estando na tabela
> , as requisicoes de clientes que ja estavam na tabela Source
> apontando para o IP 10.0.0.2 vao continuar sendo redirecionadas para ele
> 10.0.0.2 ate expirar os timeout do src.track (no meu caso 30 min), ou
> rodando o comando "pfctl -F Source", porem neste ultimo caso perdendo
> TODAS as referencias de "sessoes" deste e de outros load balance e
> source-tracks, neste firewall.

Os estatos existentes nao deveriam ser afetados pelo -F Source,
apenas os novos.

> Alguem conhece outra alternativa ?

Oficialmente nao existe nada, e nem ha planos futuros.
Muito provavelmente porque ninguem precisou de uma relacao lado-servidor
de 30min, entao acho que eles apenas fazem o login novamente via camada 
de aplicacao.

> Algum hacker de PF se habilita ? hehehe

Depende do incentivo $$ :)
-
Histórico: http://www.fug.com.br/historico/html/freebsd/
Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd