5.7.4. 粘性会话


实施粘性会话取决于底层路由器配置。默认 HAProxy 模板使用 balance source 指令实施粘性会话,该指令根据源 IP 平衡。另外,模板路由器插件为底层实施提供服务名称和命名空间。这可用于更高级的配置,例如实施在同级服务器集合之间同步的记忆程序。

粘性会话可确保来自用户会话的所有流量都进入同一 pod,从而创建更好的用户体验。虽然满足用户的请求,但 pod 会缓存数据,它们可用于后续请求。例如,对于具有五个后端 pod 和两个负载均衡的路由器的集群,您可以确保同一 pod 从同一 Web 浏览器接收 Web 流量,而不考虑处理它的路由器。

虽然需要将路由流量返回到同一 pod,但无法保证它。但是,您可以使用 HTTP 标头设置 Cookie 来确定上一次连接中使用的 pod。当用户向应用发送另一请求时,浏览器会重新发送 Cookie 和路由器知道将流量发送到何处。

集群管理员可以关闭 passthrough 路由与其他连接分开的粘性,或者完全关闭粘性。

默认情况下,直通路由的粘性会话使用 source 负载均衡策略来实施。可以修改所有透传路由的默认,使用 ROUTER_TCP_BALANCE_SCHEME环境变量,对于独立的路由,使用 haproxy.router.openshift.io/balance 特定于路由的注解

其他类型的路由默认使用 leastconn 负载均衡策略,可以使用 ROUTER_LOAD_BALANCE_ALGORITHM 环境变量 进行修改。可以使用 haproxy.router.openshift.io/balance 特定于路由的注解,可以修改单个路由。

注意

无法在 passthrough 路由上设置 Cookie,因为无法看到 HTTP 流量。相反,数字根据源 IP 地址计算,它决定后端。

如果后端有变化,则流量可能会头向错误的服务器,使其更小,而且当您使用负载均衡器(这会隐藏源 IP)时,则会为所有连接和流量发送到同一 pod 设置相同的数字。

另外,模板路由器插件为底层实施提供服务名称和命名空间。这可用于更高级的配置,例如实施在同级服务器集合之间同步的粘性程序。

此路由器实施的具体配置存储在路由器容器的 /var/lib/haproxy/conf 目录中的 haproxy-config.template 文件中。文件 可以自定义

注意

负载平衡策略 不区分外部客户端 IP 地址;因为 NAT 配置,原始 IP 地址(HAProxy 远程)是相同的。除非 HAProxy 路由器以 hostNetwork: true 运行,否则所有外部客户端都将路由到单个 pod。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.