问题标签 [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.
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 组件中启用它?
microservices - 一个带有状态存储的 Dapr sidecar 可以在多个实例后面工作吗?
假设我有两个写入同一个数据库的相同服务实例。为了避免冲突,我有某种粘性会话,这样如果我开始使用实例#1,它将用于下一个请求。但是其他用户可以链接到实例#2。问题是我是否可以通过 Dapr 实现这一目标。我可以配置一个带有状态的 Dapr sidecar,例如 AWS Dynamo Db,它将平衡对实例 #1 和 #2 的传入请求并以某种方式保持用户会话?
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 是动态生成的,因此我无法使用一些高级请求路由规则提前对它们进行硬编码。
performance - 一致的哈希和粘性会话有什么区别?
我对一致性散列的理解是,它用于最小化重新散列开销,并且该请求被提供给环中下一个最近的工作人员到请求的散列值。所以这保证了相同的请求散列到同一个工人,只要工人是向上的并且散列函数没有改变。
类似的粘性会话可能会使用 cookie 添加信息以将后续请求路由到同一工作人员。
粘性会话是否在内部使用一致的哈希,或者它是否使用某种映射/缓存将会话路由到同一个工作人员并且两者本质上是不同的实体?
load-balancing - 负载均衡器的粘性会话
如果您能澄清这一点,那将是一个很大的帮助。
当我使用负载均衡器时,我使用 appsession 或任何其他方式将服务器与客户端绑定。但是,如果该服务器出现故障,则负载平衡器会将客户端重定向到另一台服务器,并且在此过程中,整个会话都将丢失。那么我是否必须以这样一种方式编写我的应用程序,以便将会话数据存储在外部以便可以共享?
那么当事务由于服务器无响应而中途失败时,使用负载均衡器有多好呢?
请让我知道,谢谢。
amazon-web-services - EKS 上的 AWS NLB 粘性会话
我正在尝试在 EKS 环境中应用 NLB 粘性会话。
有 2 个工作节点(EC2)连接到 NLB 目标组,每个节点有 2 个 nginx pod。
我想连接到本地系统上的同一个 pod 进行测试。
但看起来每次尝试使用“curl”命令都连接了不同的 pod。
这是我的测试 yaml 文件和测试命令。
每次尝试都如何通过 NLB 的 sticy 会话连接到特定的 pod?
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?