问题标签 [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 投票
0 回答
184 浏览

spring-security - Jhipster 是否支持 docker stack 或 HAproxy 的粘性会话?

运行一个示例 jhipster 应用程序(位于:https ://github.com/ehcache/ehcache3-samples/tree/master/fullstack ),当我使用 docker stack 将它部署到docker swarm(swarm 模式)时,它运行良好并且我可以登录

但是当我开始“扩展”Web 应用程序时,我发现每当我的请求碰到另一个容器而不是第一个容器时,会话就会丢失。

实际上,我什至在日志中看到:

当我试图再次登录时......我需要设置什么来让负载均衡器将会话视为唯一的吗?

0 投票
0 回答
1684 浏览

node.js - 如何使粘性会话与 socket.io(w/ 或 w/o pm2)一起使用?

尽管socket.io 文档说“粘性会话”可以使 socket.io 与节点集群一起工作。我就是不能让它工作。

我发现 pm2 有几个针对它的问题,我能找到的最接近的解决方案是仅强制使用 websock 选项”,根本不使用粘性会话。

有没有人有任何使节点集群与 socket.io 一起工作的经验?

- - - - 更新 - - - -

我检查了这里提到的另外两个粘性会话实现,sticky-session 与 socket.io-sticky-session 节点 js 库!哪个更好?, find 'sticky-cluster' 可以完成这项工作。

我学到的另一个教训是,粘性会话不适用于 pm2 集群,例如从https://github.com/uqee/sticky-cluster/issues/26确认。所以在使用 socket.io 时不要使用 pm2 集群模式(或仅使用 'websocket' 传输)。

socket.io 文档中提到的“粘性会话”实现实际上也有效。如果有人需要更多代码示例的解释,请在此处查看https://github.com/elad/node-cluster-socket.io

我留下我的问题,因为我仍然想看看是否还有其他意见。

0 投票
1 回答
1316 浏览

session - 如何避免粘性会话?

我正在尝试了解并弄清楚一般如何避免粘性会话。

我研究了很多关于粘性和非粘性会话以及粘性会话/会话关联负载平衡策略的优缺点?以及如何不惜一切代价避免粘性会话,但这些资源和问题都没有真正提到粘性会话的替代策略或如何维护用户状态。

想到的一些想法是用于跟踪会话的中央数据库,但这似乎也是糟糕的设计。

0 投票
0 回答
1282 浏览

jmeter - 如何使用粘性会话测试负载均衡器

我是负载均衡器和粘性会话的新手。我对 Sticky session 的理解是,一个实例的所有请求将仅通过一项服务提供(如果我错了,请纠正我)。

我需要使用负载均衡器测试粘性会话的工作情况。在谷歌上找到一些发现后,我遇到了一个计划,该计划向具有多个实例的负载均衡器发送多个请求(使用 JMeter),并跟踪响应每个实例的 IP 地址(应该是唯一的)。

请通过验证上述计划来帮助我,或者如果有其他方法可以测试,请建议我。

谢谢你的问候, Manikandan

0 投票
0 回答
939 浏览

docker-swarm - 在 Docker Swarm 中使用 Traefik 的错误网关

我正在尝试在 docker swarm 中部署 Web 应用程序。我正在使用 Traefik,因为它允许会话粘性。作为前端规则,我包括:“traefik.frontend.rule=PathPrefixStrip: /TestManager”

/TestManager 是我的服务的名称。但是,当我尝试导航到 /TestManager 时,我得到了一个错误的网关。

这是我的 Traefik 仪表板:Traefik 仪表板

我不确定是否需要编辑要显示的 TestManager 页面的前端规则或后端规则。

这是我的 docker-compose 文件:

网络: 网络:

0 投票
1 回答
543 浏览

signalr - SignalR 与 F5 和 Citrix 的粘性会话

我们有一个需要与 winform 应用程序交互的 Web 应用程序(角度)。我们通过 SignalR 做到这一点。浏览器和 winform 部署在 citrix 服务器上。有一个 IIS 服务器的 webfarm,在这些服务器上我们有 webapi 服务和 signalR 集线器。

所有网络活动都通过 F5 负载均衡器进行。

我们面临的问题是如何确保 Web 应用程序在 chrome 上运行,并且 Windows 窗体应用程序都连接到同一个 SignalR Hub 服务器。

我们不能使用基于 Origin IP 的粘性会话,因为所有用户都使用 citrix 基础架构,因此所有人都具有相同的源 IP。使用 cookie - 我不确定 cookie 是否在浏览器和 winform 应用程序之间共享。无论如何,websocket场景中的cookie不起作用(对吗?)

是使用背板的唯一解决方案吗?(目前不使用 dotnet core)

0 投票
1 回答
4027 浏览

node.js - 使用粘性会话和 websocket 进行扩展

最初,我们有两个 AWS EC2 实例,其中 node.js 在具有粘性会话的负载均衡器后面运行。随着负载的增加,会添加更多实例。

但是我们面临着这种方法的问题。由于外出申请主要针对研讨会,负载通常会在短时间内增加(研讨会开始),并且每个研讨会参与者对前两个实例都有一个粘性会话,而新的几乎没有。正因为如此,性能仍然很差。

第一个想法是:让我们禁用粘性会话。但这会破坏我们的 websocket,因为它们需要粘性会话(至少这是我读过的)。另一个问题是减少负载。实例关闭并且套接字连接也丢失了。

有没有办法在实例之间转移用户会话或让 websockets 在没有粘性会话的情况下工作(可能使用 Redis)?

0 投票
0 回答
685 浏览

redis - Spring Session Redis 在服务器端使用 Sticky 会话进行日志记录

嗨,我在我的 Spring 项目上配置了一个 Redis 以使用 Spring Session,我使用的是 Jedis 2.9.0,它运行良好。我遇到的问题是 Websphere 服务器上的 Sticky 会话,我们有 2 个主服务器和每个服务器的 10 个克隆,正常的 httpSession 它使用 cookie 再次处理该 cookie 对同一服务器的请求,很好,但是使用 Spring会话它不起作用。

Spring 使用名称“SESSION”创建 cookie,Websphere 的负载平衡不知道将请求重定向到哪里,因为会话不在 JVM 上,而是分布在 Redis 集群中。

例如,我需要(对于 log order porpuse)处理对服务器 1 clon 3 的 cookie“abc123”的每个请求,如果该应用程序的实例出现故障,则将该 cookie 跟踪到另一个实例并停留在该实例上,直到服务器运行再次关闭或用户注销...

在这里搜索和 Spring Session 文档,我发现了一些可能有用的东西,但我不知道它是如何工作的。

属性 Jvm Route 为 cookie 添加了一个后缀,以了解处理该 cookie 的 JVM 是什么,但我不知道它是如何工作的,而且我没有幸运地找到有关它的示例或解释。

如果有人有我可以使用的答案或其他解决方法,那就太好了。

0 投票
1 回答
2822 浏览

wildfly - Jboss EAP 7 JSESSIONID instance-id 未附加

似乎在使用standalone-ha.xml而不是standalone.xml时添加了JSESSIONID中的instance-id,至少在我的情况下:

# 独立(未附加实例 ID)

# 独立 HA(附加实例 ID)

正如我们在独立模式中看到的那样,JSESSIONID 中没有附加 .node1。

两种情况下的 Undertow 配置:

这对我来说没有意义。有时你所拥有的只是一个 Apache/Nginx Web 服务器在两个或多个节点之间进行负载平衡,而无需 HA 配置。这对粘性会话造成了巨大的问题,有什么建议吗?

在域模式下,情况相同:如果您从默认配置文件创建服务器组,则不会将实例 ID 添加到 JSESSIONID。

0 投票
1 回答
27429 浏览

amazon-web-services - 是否需要最新的 AWSALB cookie?(AWS ELB 应用程序负载均衡器)

观察

当使用 Amazon ELB应用程序负载均衡器并使用粘性会话时,负载均衡器会插入一个AWSALB在第一个请求中命名的 cookie。为了让下一个请求坚持到同一个目标节点(EC2 实例),cookie 应该包含在该请求中。这样做时,负载均衡器似乎在对第二个请求的响应中插入了不同的 cookie 值。当在第三个请求中包含这个新的 cookie 值时,我们会在响应中得到一个新的 cookie 值。等等……</p>

(这与粘性会话与 Classic Load Balancer的工作方式不同,其中 cookie 被命名AWSELB并保留其值,直到被客户端或负载均衡器丢弃。)

cookie 一直更改值的原因AWSALB似乎是(如docs所述):

cookie 的名称是 AWSALB。这些 cookie 的内容使用旋转密钥进行加密。您无法解密或修改负载均衡器生成的 cookie。

因此,即使 cookie 的内容可能相同,我们也无法判断。

问题

问题是对负载均衡器的请求是否必须始终包含最近收到的AWSALBcookie 值,或者是否可以发送一些以前收到的值(当然,来自同一个粘性会话)。

如果这是一项要求,AWS ELB 应用程序负载均衡器将无法为执行多个并行请求的客户端(在收到第一个AWSALBcookie 之后)提供服务,而只能为以顺序方式(一次一个)执行所有请求的客户端提供服务。

任何人都可以对此有所了解吗?