【问题标题】:Openshift HAproxy sticky session issueOpenshift HAproxy 粘性会话问题
【发布时间】:2018-12-07 00:46:02
【问题描述】:

我有一个包含 2 个 Web 应用程序 pod 的部署。 Web 应用程序需要登录并维护会话。 在我杀死第一个 pod 后,我会自动重定向到第二个 pod 的登录页面,但是当第一个 pod 再次加载时,我会被重定向回它。 我曾尝试使用 HAproxy“平衡源”算法和 coockies。 知道为什么它不留在第二个吊舱吗?

【问题讨论】:

  • 在这种情况下,您应该有一个所有应用程序实例都使用的会话数据库。当你有多个实例时,将会话数据库保存在内存中是永远不可靠的。您使用什么语言/框架?
  • 对于客户端,我们使用名为 jazz 的 IBM 工具,它不是开源的。我的主要问题是为什么 HAproxy 在连接时会将连接重定向回第一个 pod 而不是留在第二个 pod。

标签: openshift load-balancing haproxy


【解决方案1】:

balance source 使用散列算法,每次可用后端数量发生变化时,该算法都会改变工作负载分布,因为这就是它的设计目的。如果您有超过 2 个后端,您还会发现关闭任何一个后端都会导致一些甚至没有到达受影响后端的流量转移到另一个,因为这种重新分配。

如果由于运行服务器数量的变化而导致哈希结果发生变化,许多客户端将被定向到不同的服务器。

http://cbonte.github.io/haproxy-dconv/1.6/configuration.html#4-balance

要了解您在使用 cookie 而不是 balance source 时没有看到预期行为的原因,我们需要查看您的配置。

【讨论】:

  • 谢谢!那么在我的用例中,我应该使用什么来代替 balance source 的正确算法是什么?
  • cookiebalance 算法并不是那么关键,因为它仅用于在客户端没有建立现有关联时选择后端。
猜你喜欢
  • 1970-01-01
  • 2014-07-16
  • 2015-11-11
  • 1970-01-01
  • 2012-08-16
  • 2016-12-07
  • 2011-09-23
  • 2012-02-11
  • 1970-01-01
相关资源
最近更新 更多