问题标签 [sticky-session]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
587 浏览

kubernetes - Kubernetes(本地)Metalb LoadBalancer 和粘性会话

我在本地安装了一个 Kubernetes Master 和两个 Kubernetes Worker。

在我使用以下命令将 Metallb 安装为 LoadBalancer 之后:

我创建了我的 yaml 文件,如下所示:

myapp-tst-deploy.yaml

myapp-tst-service.yaml

myapp-tst-ingress.yaml

我运行kubectl -f apply所有三个文件,这是我的结果:

但是,当我尝试使用 LB 外部 IP (10.100.170.15) 连接时,系统会在 pod 上重定向浏览器请求(在同一浏览器上),如果我刷新或打开新选项卡(在同一 url 上),系统回复会重定向请求到另一个 pod。

我需要当浏览器中的用户数字 url 时,他必须在所有会话期间连接到特定的 pod,而不是切换到其他 pod。

如果可能,如何解决这个问题?在我的虚拟机中,我使用 stickysession 解决了这个问题,如何在 LB 或 Kubernetes 组件中启用它?

0 投票
0 回答
43 浏览

microservices - 一个带有状态存储的 Dapr sidecar 可以在多个实例后面工作吗?

假设我有两个写入同一个数据库的相同服务实例。为了避免冲突,我有某种粘性会话,这样如果我开始使用实例#1,它将用于下一个请求。但是其他用户可以链接到实例#2。问题是我是否可以通过 Dapr 实现这一目标。我可以配置一个带有状态的 Dapr sidecar,例如 AWS Dynamo Db,它将平衡对实例 #1 和 #2 的传入请求并以某种方式保持用户会话?

0 投票
1 回答
132 浏览

cookies - Chrome 不会在后续请求中附加 INGRESSCOOKIE

负载均衡器后面有多个身份验证节点,并配置了粘性会话以确保将身份验证请求发送到同一节点。

它只出现在 Chrome 中,但 Firefox 运行良好。

这是第一个请求,在响应标头 中设置了 INGRESSCOOKIE这是第一个请求,在响应标头中设置了 INGRESSCOOKIE

以下是第二个后续请求。在响应set-cookie INGRESSCOOKIE标头中再次设置,而它预计将附加在请求标头中。这仅出现在 Chrome 中 在此处输入图像描述

Firefox 工作正常,没有同样的问题,下面是 Firefox 中的第二个请求,请求标头中附加了 INGRESSCOOKIE。任何想法是什么导致了这个问题? 在此处输入图像描述

0 投票
0 回答
38 浏览

amazon-web-services - 使用 AWS ALB 基于动态 id 将请求路由到特定目标

我有多个 Node.js 服务器,它们位于 AWS 的负载均衡器后面。这些服务器是有状态的,并且包含对所有连接的客户端都需要访问的内存数据结构的转换。即,如果用户 1 连接到 Box 1 并进行更新,则用户 2 也需要连接到 Box 1 才能接收这些更新。

我最初尝试使用基于应用程序的粘性,其中用户 1 将发送带有查询参数的请求,customAlbId=1服务器将解析该请求,然后返回Set-Cookie具有相同值的标头,customAlbId=1. 只要用户 1 为该 cookie 发送相同的值,我就能够保持粘性。

当用户 2 得到一个具有完全相同值的 cookie 集时,问题就出现了customAlbId=1,ALB 实际上将它路由到了不同的盒子。因此,基于应用程序的粘性将保持客户端的连接与他们连接的第一个盒子相关,但它不会说“这个 cookie 值存在,并且已经与盒子 1 相关联,将用户 2 路由到框 1"。

有没有办法用 AWS ALB 做到这一点?需要设置为 cookie 值的 id 是动态生成的,因此我无法使用一些高级请求路由规则提前对它们进行硬编码。

0 投票
0 回答
96 浏览

performance - 一致的哈希和粘性会话有什么区别?

我对一致性散列的理解是,它用于最小化重新散列开销,并且该请求被提供给环中下一个最近的工作人员到请求的散列值。所以这保证了相同的请求散列到同一个工人,只要工人是向上的并且散列函数没有改变。

类似的粘性会话可能会使用 cookie 添加信息以将后续请求路由到同一工作人员。

粘性会话是否在内部使用一致的哈希,或者它是否使用某种映射/缓存将会话路由到同一个工作人员并且两者本质上是不同的实体?

0 投票
1 回答
315 浏览

load-balancing - 负载均衡器的粘性会话

如果您能澄清这一点,那将是一个很大的帮助。

当我使用负载均衡器时,我使用 appsession 或任何其他方式将服务器与客户端绑定。但是,如果该服务器出现故障,则负载平衡器会将客户端重定向到另一台服务器,并且在此过程中,整个会话都将丢失。那么我是否必须以这样一种方式编写我的应用程序,以便将会话数据存储在外部以便可以共享?

那么当事务由于服务器无响应而中途失败时,使用负载均衡器有多好呢?

请让我知道,谢谢。

0 投票
0 回答
35 浏览

amazon-ec2 - EC2 Application Load Balancer 的粘性是否会记住实例的重定向?

背景

我在 Application Load Balancer (ALB) 下使用多个 Amazon EC2 实例。我需要会话与实例具有关联性,以便启用 ALB 的粘性设置。

在某些情况下,我希望实例(称为“实例 1”)能够说“对不起,我不想再处理新请求,请询问实例 2。不要再打扰我了”。

也就是说,我也不想终止实例 1。

问题

如果实例 1 将 HTTP 重定向返回到 ALB,是否会更新 ALB 粘性,以便从此时起它现在与实例 2 具有关联性?

换句话说,使用下面的场景图,ALB 是否会“记住”将请求 B 转发到实例 2,如步骤 6 中假设的那样?

粘性负载平衡方案

0 投票
0 回答
17 浏览

amazon-web-services - AWS Stickyness Cookie Expiration Date 与 AWS 控制台上设置的不匹配

我已经为我的 ELB 设置了粘性并将其持续时间设置为 10 小时。但它生成的 cookie 的过期日期设置为 7 天后。

我的粘性配置 我的粘性配置

在星期三 18 04:21 发出请求后,在set-cookieheader 中返回的生成的 cookie 是:

expires属性应该设置为,Thu, 18 Aug 2021 14:21:26 GMT不是吗?

我很感激任何帮助。

谢谢

0 投票
2 回答
94 浏览

amazon-web-services - EKS 上的 AWS NLB 粘性会话

我正在尝试在 EKS 环境中应用 NLB 粘性会话。

有 2 个工作节点(EC2)连接到 NLB 目标组,每个节点有 2 个 nginx pod。

我想连接到本地系统上的同一个 pod 进行测试。

但看起来每次尝试使用“curl”命令都连接了不同的 pod。

这是我的测试 yaml 文件和测试命令。

每次尝试都如何通过 NLB 的 sticy 会话连接到特定的 pod?

0 投票
0 回答
81 浏览

kubernetes - 入口亲和会话最大年龄

我正在使用入口亲和会话来保持客户端和 pod 之间的通信。

因为粘性会话可能会导致 pod 过载(客户端保持相同的 pod),所以我正在寻找有关参数 nginx.ingress.kubernetes.io/session-cookie-max-age https://kubernetes.github 的最佳实践。 io/ingress-nginx/examples/affinity/cookie/ 示例值为 172 800(秒),表示 48 小时。为什么?这是一个巨大的持续时间,是否可以将其设置为 30 分钟?顺便问一下,当应用程序会话过期时会发生什么?入口是重新平衡客户端还是保持相同的 pod?