Apache 负载均衡 session,apachesession


0. 需求:来自同一个session的请求,转发到同一个server上。


1. 修改httpd.conf 添加:
LoadModule headers_module modules/mod_headers.so
需要mod_headers来设置response headers.
添加:
Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
ProxyRequests Off
<Proxy balancer://mycluster>
BalancerMember http://1.1.7.224:8080/ route=server1
BalancerMember http://1.1.7.81:8080/ route=server2
</Proxy>
ProxyPass / balancer://mycluster/ stickysession=ROUTEID
ProxyPassReverse / balancer://mycluster/
这样,如果浏览器第一次访问时,如果访问了server2,那么以后来自同一个session的请求都会发送至server2。

完了。


2. 解释一下
上面的, %{BALANCER_WORKER_ROUTE}e 值为 BalancerMember 中的 route,即server1或server2。
返回到浏览器的cookie就是

ROUTEID=.server1; path=/
或者

ROUTEID=.server2; path=/


ProxyPassReverse
如果 http://1.1.7.224:8080/test/test1.jsp 被redirect到了 http://1.1.7.224:8080/test/test2.jsp ,那么当访问 http://localhost/test/test1.jsp 时,本应被redirect到 http://1.1.7.224:8080/test/test2.jsp 的响应被改成了被redirect到 http://localhost/test/test2.jsp 。redirect的请求仍会经过负载均衡。

相关内容

    暂无相关文章