您的位置:首页 > 运维架构 > Apache

Apache 负载均衡 session

2015-09-18 11:52 627 查看
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的请求仍会经过负载均衡。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: