Balanceamento de carga do Apache quando o id da sessão está no url

5

Eu realmente não tenho ideia ...

Eu tenho um aplicativo da web java que armazena o id da sessão na URL, em vez de usar cookies. Eu quero executar o aplicativo em dois servidores tomcat e enfrentando-os com um servidor Apache para balanceamento de carga.


            __ tomcat1
Apache ----/
           \__ tomcat2

Ao definir o jvmRoute para tomcat1 no arquivo Tomcat server.xml , o URL se tornará http://url;jsessionid=id.tomcat1 . Assim, é possível obter a aderência da sessão observando o URL e roteando-o para o servidor correspondente.

Eu sei que mod_proxy e mod_jk e fazem o balanceamento de carga, mas sua sessão fixa só funciona quando o id da sessão é armazenado em cookies. No meu caso, o ID da sessão é codificado no URL. Como posso fazer o balanceamento de carga?

    
por KK Lo 01.07.2010 / 09:08

2 respostas

4

Talvez sua configuração esteja errada. Documentação não é especificada sessão sticky trabalhando apenas cookies.

stickysession - Balancer sticky session name. The value is usually set to something like JSESSIONID or PHPSESSIONID, and it depends on the backend application server that support sessions. If the backend application server uses different name for cookies and url encoded id (like servlet containers) use | to to separate them. The first part is for the cookie the second for the path.

Então você pode especificar o sessionid como abaixo.

ProxyPass / balancer://mycluster/ stickysession=|jsessionid

Espero que isso ajude.

    
por 07.07.2010 / 12:42
3

Para criar o adesivo, precisamos adicionar a seguinte linha na sua configuração (mod_proxy)

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

Em seguida, especifique o nome da rota na configuração

<Proxy balancer://mycluster>
    BalancerMember http://tomcat sever1.ip:8080  route=AcZxv
    BalancerMember http://tomcat server2.ip:8080 route=AcXxv
    lbmethod=byrequests stickysession=BALANCEID
</Proxy>

E adicione esses nomes de roteamento ao tcserver.node em catalina.properties dos servidores do tomcat

tcserver.node=AcZxv (tomcat 1st server)
tcserver.node=AcXxv (tomcat 2nd server)
    
por 03.12.2011 / 23:28