如何在 Openshift3 中禁用粘性会话

How to disable sticky sessions in Openshift3

如果在 Openshift3 中扩展 Pod,来自同一客户端 IP 地址的所有请求都会发送到具有关联会话的容器。

是否有禁用粘性会话的配置?如何在 Openshift 中管理内部 HAProxy 的选项?

oc set env dc/router ROUTER_TCP_BALANCE_SCHEME=roundrobin 将更改 haproxy 用于它刚刚通过的路由的负载平衡算法(默认为 source)。 ROUTER_LOAD_BALANCE_ALGORITHM 将为终止 TLS 的路由更改它(默认我们 leastconn)。

有关更改 haproxy 在 OCP 3.5 docs 中工作方式的内部结构的更多信息。

为了后代,由于我遇到了同样的问题,我想记录下我使用的来自 Graham Dumpleton 的精彩评论的解决方案。

事实证明,在第一个请求期间设置了一个 cookie,它将后续请求重定向到同一后端。要在每个路由的基础上禁用此行为:

oc annotate routes myroute haproxy.router.openshift.io/disable_cookies='true'

这可以防止设置 cookie,并允许平衡算法 select 为来自同一客户端的后续请求提供适当的后端。要更改余额算法:

oc annotate routes myroute haproxy.router.openshift.io/balance='roundrobin'

设置这两个注解后,来自同一个客户端IP地址的请求将依次发送到每个后端,而不是一遍又一遍地发送到同一个后端。