【发布时间】:2017-11-23 14:09:22
【问题描述】:
如果您在 Openshift3 中扩展 Pod,来自同一客户端 IP 地址的所有请求都将发送到与会话关联的容器。
是否有任何配置可以禁用粘性会话?如何在 Openshift 中管理内部 HAProxy 的选项?
【问题讨论】:
标签: session docker containers openshift haproxy
如果您在 Openshift3 中扩展 Pod,来自同一客户端 IP 地址的所有请求都将发送到与会话关联的容器。
是否有任何配置可以禁用粘性会话?如何在 Openshift 中管理内部 HAProxy 的选项?
【问题讨论】:
标签: session docker containers openshift haproxy
为了后代,由于我遇到了同样的问题,我想记录下我从Graham Dumpleton 的优秀评论中使用的解决方案。
事实证明,在第一个请求期间设置了一个 cookie,它将后续请求重定向到同一后端。要在每个路由的基础上禁用此行为:
oc annotate routes myroute haproxy.router.openshift.io/disable_cookies='true'
这可以防止设置 cookie 并允许平衡算法为来自同一客户端的后续请求选择适当的后端。更改余额算法:
oc annotate routes myroute haproxy.router.openshift.io/balance='roundrobin'
设置这两个注解后,来自同一个客户端 IP 地址的请求将依次发送到每个后端,而不是一遍又一遍地发送到同一个后端。
【讨论】:
oc set env dc/router ROUTER_TCP_BALANCE_SCHEME=roundrobin 将更改 haproxy 用于它刚刚通过的路由的负载平衡算法(默认为source)。 ROUTER_LOAD_BALANCE_ALGORITHM 将为终止 TLS 的路由更改它(默认为我们 leastconn)。
更多关于在 OCP 3.5 docs 中更改 haproxy 工作原理的内部信息。
【讨论】: