首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“服务临时不可用”mod_proxy_balancer和粘性会话

“服务临时不可用”mod_proxy_balancer和粘性会话
EN

Server Fault用户
提问于 2016-05-20 17:11:00
回答 1查看 498关注 0票数 0

我已经使用粘贴会话cookie配置了一个Apache mod_proxy_balancer。

代码语言:javascript
复制
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。

EN

回答 1

Server Fault用户

发布于 2016-10-02 17:23:02

将重试设置为大于零,否则Apache将始终重试具有现有路由的请求的连接。

本质上,如果您将重试设置为零,您将永远不会获得对一个工作人员的请求到另一个工作人员的故障转移。当您发出请求时,工作人员被标记为'down',通常是因为底层服务用5xx返回代码进行响应,您必须在retry秒数内使用相同的路由发出另一个请求。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/778056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档