问题标签 [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.
cookies - Kubernetes 集群上的粘性会话
目前,我正在尝试在 Google Cloud 上创建一个带有两个负载均衡器的 Kubernetes 集群:一个用于后端(在 Spring Boot 中),另一个用于前端(在 Angular 中),其中每个服务(负载均衡器)与 2 个副本(pod)通信. 为此,我创建了以下入口:
上面提到的入口可以使前端应用程序与后端应用程序提供的 REST API 进行通信。但是,由于后端提供的身份验证机制,我必须创建粘性会话,以便每个用户都与同一个 POD 进行通信。澄清一下,如果一个用户在 POD #1 中进行身份验证,则 POD #2 将无法识别 cookie。
为了解决这个问题,我读到Nginx-ingress设法处理这种情况,我通过此处提供的步骤进行安装:https ://kubernetes.github.io/ingress-nginx/deploy/使用 Helm。
您可以在下面找到我正在尝试构建的架构的图表:
使用以下服务(我将仅粘贴其中一项服务,另一项类似):
我宣布了以下入口:
之后,我运行kubectl apply -f sample-nginx-ingress.yaml
应用入口,它被创建并且它的状态是好的。但是,当我访问出现在“端点”列中的 URL 时,浏览器无法连接到该 URL。我做错什么了吗?
编辑 1
** 更新服务和入口配置 **
经过一些帮助,我设法通过 Ingress Nginx 访问了这些服务。上面这里你有配置:
Nginx 入口
路径不应包含“ ”,这与默认 Kubernetes 入口不同,默认 Kubernetes 入口必须使用“ ”来路由我想要的路径。
服务
此外,服务不应该是“LoadBalancer”类型,而是“ ClusterIP ”类型,如下所示:
但是,我仍然无法在我的 Kubernetes 集群中实现粘性会话,一旦我仍然得到 403,甚至 cookie 名称都没有被替换,所以我猜注释没有按预期工作。
python - 如何在数据库中存储和检索 Django 会话变量?
我有我的 Django 网站,目前由两台机器提供服务,使用负载均衡器。我想从一台机器上维护与用户相对应的会话。我知道我可以将负载均衡器配置为使用粘性会话,这样来自用户的所有请求都将由同一台服务器提供服务。但我想使用会话变量来实现相同的目的。
这就是我如何将该会话变量存储在一个集中式数据库中,任何服务器都可以从中访问该用户的会话,因此任何服务器都可以使用该会话变量存储来服务它。但我无法理解流程以及如何在 Django 中实现相同的流程。
所以我的问题是如何将会话保存在用户的数据库中,以便任何服务器能够访问它并相应地服务请求。在这种情况下,那些 login() 和 logout 将如何工作?
我也有多个数据库。我打算将一个用于用户身份验证和其他东西,另一个用于与网站相关的数据存储。或者任何人都可以至少向我解释如何实现这一目标的流程。
cookies - AWS 应用程序负载均衡器规则不适用于 cookie?可能出了什么问题?
我在公司的开发运营团队工作。最近,我们转向了 aws 的应用程序负载均衡器,我们正在根据 cookie 的值转发请求。由于某种原因,该规则不起作用,AWS 不支持通过日志来获取有关规则失败原因的信息。
这可能有两个原因,我们可以想到:
负载均衡器无法读取 cookie:我们认为这不是问题,因为此负载均衡器下的应用程序能够读取并打印 cookie。
负载均衡器在第一次请求后不会读取后续的 cookie:我们已经向 AWS 提出了一个问题,他们仍然会回来。
同时,谁能指出我们可能忽略的任何问题?
haproxy - 有时服务器连接通过负载平衡失败
我的服务器通过 gcp https lb 负载平衡到后端服务器,后端服务器使用 pm2 start -i 选项不同的端口,并使用 haproxy 将它们分发到这些节点。
连接日志 使用代码从服务器获取的日志。
每两次,服务器连接失败。
下面是通过 haproxy -d 的日志。
此日志是失败后成功
没有区别,但有两个结果。我不知道为什么 400 bad request
haproxy.cfg
我使用 cookie SRVNAME 插入选项和服务器名称 SA、SB
但 socket.io 文档读取更改 cookie io 前缀间接 nocache 和服务器名称 ws-server1, ws-server2
我的测试:
客户端使用长轮询和 websocket
testClient 给选项 {transports: ['websocket']} 总是成功.. 但真正的客户端不只使用 websocket 选项
我不知道为什么会失败。
如果仅使用 ws-server1 连接将始终成功。但 ws-server2 有时使用连接失败。我猜是粘性会话问题。我尝试 haproxy.cfg 添加 cookie 选项,但问题没有解决。
我怎么解决这个问题?
ruby - 有没有办法为 kubernetes 中的 sessionAffinity 提供除 ClientIP 之外的自定义值?
首先请求转到我已经实现的代理服务,服务将请求随机转发到 Pod,而不使用 sessionAffinity。我想根据我使用 post 方法在请求参数中设置的自定义值向同一个 pod 发送请求。我在我的服务 yml 中使用了 sessionAffinity。
这是带有 sessionAffinity 的服务 yml:
现在的问题是,当多个客户端从同一 IP 地址发送请求时,所有请求都被定向到单个 pod 而不是其他副本,导致负载平衡不均匀。但我也不希望随机转发请求。我希望根据我在发布请求中设置的自定义值而不是通过 clientIP 转发来自同一客户端或不同客户端的所有请求,因为 clientIP 解析为每个请求的源 IP。
sticky-session - 在 Azure Web App for Linux 容器中维护粘性会话
我有一个用于 Linux 容器的 Azure Web 应用程序,其中 PHP Web 应用程序部署为单个容器。此 Azure Web 应用程序至少使用两个实例运行,并设置为自动缩放。此 Web 应用程序使用粘性会话。适用于 Linux 容器的 Azure Web App 是否支持它?有什么方法可以在 Azure Web App for Linux Container 中进行设置吗?
node.js - 部署使用 webpack 构建的新 React 应用程序
我有一个小的边缘案例,我的应用程序在生产中失败了。让我试着解释一下场景。
我正在使用 webpack 构建许多反应应用程序。静态资产被复制到单个 nodejs 应用程序,不同的路由呈现不同的反应应用程序。我用来codeship
将我的应用程序代码构建到 docker 映像中。并aws ecs
部署它
这是我尝试将新更改部署到生产/登台时的典型场景。
TAG1 => ecs 上现有的正在运行的应用程序。
路线/dashboard/
/dashboard/index.html
将具有静态参考的呈现为
/static/app/dashboard/main.a1.js
. a1 是 webpack 生成的 chunk hash
/static/app/dashboard/homepage.a2.js.
TAG2 => 当前部署/部署的新应用
路线/dashboard/
/dashboard/index.html
将具有静态参考的呈现为
/static/app/dashboard/main.b1.js
. b1 是 webpack 生成的 chunk hash
/static/app/dashboard/homepage.b2.js.
现在块散列更改,因为我的应用程序代码已更改。这次也是一个新的码头工人形象
我还在 ALB 上启用了持续时间为 1 分钟的粘性会话
现在的问题是部署后我有一个大约 1-2 分钟的时间窗口,静态资产开始给我404
。1-2 分钟后,应用程序稳定下来,一切正常。
可能是因为以下问题。
旧容器请求将转到新容器,因为粘性会话已过期。并且用户尚未刷新页面。
新容器请求将转到旧容器,因为粘性会话不起作用。
无论如何,我都会为应用程序获得 404。
我想知道可以做些什么来避免这种情况。
nginx - Nginx 负载均衡器异常
我有一个 Nginx,后面有 2 个服务器(90% 和 10% 负载平衡),我在其中发送请求。配置如下:
我的问题是-如何在此配置中设置例外以始终发送请求如下,而无需任何负载平衡:
nginx - 在 Azure Kubernetes 上使用 Ingress Nginx 粘性会话配置静态 IP 地址
我正在尝试为我当前的 Kubernetes 架构配置额外的粘性会话层。我不想通过主 LoadBalancer 服务路由每个请求,而是希望通过 nginx 粘性会话的上层路由请求。我正在遵循https://kubernetes.github.io/ingress-nginx/examples/affinity/cookie/上的指南
我正在使用 Azure Cloud 进行集群部署。以前,使用具有 LoadBalancer 类型的服务会自动生成一个外部 IP 地址供用户连接到我的集群。现在我需要为我的用户配置静态 IP 地址以连接到,并使用 nginx 入口。我该怎么做?我按照这里的指南 - https://github.com/kubernetes/ingress-nginx/tree/master/docs/examples/static-ip但入口的外部地址仍然是空的!!
我做错了什么?
firefox - AWSALB、AWSALBCORS cookie 和 Firefox
我对浏览器版本是否会影响 ALB 路由(AWSALB、AWSALBCORS cookie)感兴趣?
例如,有一个应用程序由两个实例(A 和 B)管理,对于 Firefox 74.1 及更早版本的浏览器,大多数请求由 A 处理,如果使用 Firefox 75,则将请求发送到实例B. 我查看了https://www.mozilla.org/en-US/firefox/75.0/releasenotes/对最新版本浏览器所做的更改列表,但找不到可能影响此的更改。