我已经使用粘贴会话cookie配置了一个Apache mod_proxy_balancer。
Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/" env=BALANCER_ROUTE_CHANGED
<Proxy balancer://http-dedalo/>
BalancerMember http://172.31.20.111:8080 retry=0 ping=10 route=1
BalancerMember http://172.31.19.124:8080 retry=0 ping=10 route=2
BalancerMember http://172.31.22.92:8080 retry=0 ping=10 route=3
# Round Robin style load balancer
ProxySet lbmethod=byrequests
ProxySet stickysession=ROUTEID
</Proxy>
<Proxy balancer://ws-dedalo/>
BalancerMember ws://172.31.20.111:8080 retry=0 route=1
BalancerMember ws://172.31.19.124:8080 retry=0 route=2
BalancerMember ws://172.31.22.92:8080 retry=0 route=3
# Round Robin style load balancer
ProxySet lbmethod=byrequests
ProxySet stickysession=ROUTEID
</Proxy>浏览器已收到与路由1相关的粘贴会话cookie,如果关闭172.31.20.111,将得到“服务临时不可用”。
我不明白为什么当这样的员工脱机时,故障转移不起作用。
有两个平衡器,一个用于http,另一个用于websockets,我使用retry=0来确保浏览器在这两个平衡器中始终使用相同的路由id。Webapp运行在tomcat集群上,基于VAADIN框架,websocket连接用于会话心跳。
我使用了一个指令来处理tomcat集群成员浏览器重定向到一个页面的500个错误,该页面删除了路由id cookie,然后返回到平衡器以获得一个新的路由id。
发布于 2016-10-02 17:23:02
将重试设置为大于零,否则Apache将始终重试具有现有路由的请求的连接。
本质上,如果您将重试设置为零,您将永远不会获得对一个工作人员的请求到另一个工作人员的故障转移。当您发出请求时,工作人员被标记为'down',通常是因为底层服务用5xx返回代码进行响应,您必须在retry秒数内使用相同的路由发出另一个请求。
https://serverfault.com/questions/778056
复制相似问题