0. 需求:来自同一个session的请求,转发到同一个server上。
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。
完了。
上面的, %{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的请求仍会经过负载均衡。
本文介绍如何通过配置Apache HTTP Server实现基于Cookie的粘性会话,确保来自同一客户端的请求始终路由到相同的后端服务器。文章详细展示了如何使用mod_headers模块设置ROUTEID Cookie,并通过ProxyPass指令启用粘性会话。

3474

被折叠的 条评论
为什么被折叠?



