O balanceamento de carga do Apache não define o cookie com informações de rota

3

Estamos usando o Apache para balancear a carga de nossos servidores Web de back-end (IIS). Nossa configuração segue um exemplo do documento do Apache. Tentamos obter um roteamento fixo (ou seja, solicitações subseqüentes do mesmo cliente serão roteadas para o mesmo servidor upstream) com um cookie definido pelo Apache.

Nossa configuração é semelhante a:

ProxyRequests off
ProxyPreserveHost On

<Proxy balancer://oursitename>
allow from all
BalancerMember http://1.2.3.4:80 route=1
# Further servers will be added here
ProxySet stickysession=ROUTEID
</Proxy>

# This line should set the correct cookie..
Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED

ProxyPass /balancer-manager !
ProxyPass / balancer://oursitename/ nofailover=Off
ProxyPassReverse / http://1.2.3.4:80/

<Location /balancer-manager>
SetHandler balancer-manager
Order Deny,Allow
Allow from all
</Location>

Agora, o Apache parece não incluir a rota real, mas o cookie contém apenas o ponto ".". Eu verifiquei com Firebug e Wireshark. Então, em cada cabeçalho de resposta HTTP aparece (ou seja, para cada imagem / css / js):

Set-Cookie: ROUTEID=.; path=/

Surpreendentemente, ao recarregar a página aproximadamente duas vezes, aparece de repente um Set-Cookie: ROUTEID = .2 em uma das cerca de dez respostas. O navegador usa esse valor em solicitações subseqüentes, que não são confirmadas por mais entradas Set-Cookie. Portanto, parece que o Apache aceita a rota .2 como válida. Eu não entendo porque é sempre o .2, esse número aparece mesmo se eu remover o segundo servidor do balanceador!

Alguém pode me explicar o que acontece aqui e como posso corrigi-lo?

    
por Tarnschaf 22.08.2011 / 09:59

2 respostas

1

Não sei porque fica com 2. No entanto, parte da sua configuração é

Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED

env = BALANCER_ROUTE_CHANGED

será 1 se o roteador tiver alterado 0 caso contrário, portanto, se a rota não tiver sido alterada, o cookie não será definido, a menos que precise mudar para um novo valor.

    
por 20.07.2012 / 16:02
0

Ele fica com 2 porque você definiu o stickysession que o mantém fiel ao servidor membro atual. Limpar cache e atualizá-lo deve mudar (tente isso algumas vezes) e, em seguida, manter o novo valor até que você apague os cookies. Para ter uma ideia melhor, veja link

Obrigado.

    
por 21.04.2015 / 21:24

Tags