如何在 HAProxy 中进行内部重定向?

How to make internal redirect in HAProxy?

我们的有状态服务在操作内存中保存会话。保存session或者从内存中获取session都需要一分钟左右的时间,所以我们使用Redis来检测session当前加载在哪个节点上,从而锁定对其他节点的请求。 但是 HAProxy 有时会在节点之间切换会话。当它发生时,例如,如果会话在第一个节点的操作内存上,而我们正在切换到第二个节点,则请求等待,第一个节点需要保存其状态,第二个节点需要恢复它。当它发生时,HAProxy 可能认为该节点已关闭,因此 HAProxy 开始切换其他请求,其他请求也会发生相同的过程。我们增加了 HAProxy 等待超时,但没有帮助。我们如何让 HAProxy 将此请求和所有即将到来的请求从特定会话切换到特定节点?

类似

303
Location: 192.168.1.2

好的,您的应用程序需要会话粘性。
如果您已经为会话处理准备好 cookie,那么我建议在 HAProxy 中也使用 cookie 粘性。

简而言之,这是来自此博客的配置片段 post https://www.haproxy.com/blog/load-balancing-affinity-persistence-sticky-sessions-what-you-need-to-know/

backend bk_web
  balance roundrobin
  cookie SERVERID insert indirect nocache
  server s1 192.168.10.11:80 check cookie s1
  server s2 192.168.10.21:80 check cookie s2

@Baptiste 对设置有相当详细的解释HAproxy 1.5.8 How do I configure Cookie based stickiness?

当您使用多个 HAProxy 服务器时,您可以通过本博客中描述的对等协议同步状态 post。
https://www.haproxy.com/blog/introduction-to-haproxy-stick-tables/