【问题标题】:How to make internal redirect in HAProxy?如何在 HAProxy 中进行内部重定向?
【发布时间】:2019-11-21 05:57:54
【问题描述】:

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

类似

303
Location: 192.168.1.2

【问题讨论】:

    标签: redirect haproxy


    【解决方案1】:

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

    简而言之,这里是这篇博文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 服务器时,您可以通过本博文中描述的对等协议同步状态。
    https://www.haproxy.com/blog/introduction-to-haproxy-stick-tables/

    【讨论】:

    • 谢谢,它有效,但仅适用于浏览器。我们有 WPF+WCF,sessionId 在标头中传输,因此我们需要支持 WPF 上的 cookie 或一些简化的替代方案。但至少这是一个前进的方向
    • 什么是 WPF+WCF。您可以在不同级别上运行粘性cbonte.github.io/haproxy-dconv/2.0/configuration.html#7.3
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 1970-01-01
    • 1970-01-01
    • 2018-11-25
    • 1970-01-01
    • 2015-04-16
    相关资源
    最近更新 更多