Amazon web services 有没有一种方法可以对会话粘性信息进行编码;“全部”;AWSALB cookie中的目标群体;“一”;要求

Amazon web services 有没有一种方法可以对会话粘性信息进行编码;“全部”;AWSALB cookie中的目标群体;“一”;要求,amazon-web-services,aws-application-load-balancer,sticky-session,Amazon Web Services,Aws Application Load Balancer,Sticky Session,我们的ALB在多个目标群体中注册。每个目标组都是一个单独的web应用程序,服务于同一域下网站的不同部分 下面是关于粘性会话cookie编码实践的片段 当负载平衡器第一次收到来自客户端的请求时,它会路由 对目标的请求生成一个名为AWSALB的cookie,该cookie编码 有关选定目标的信息,加密cookie,以及 在对客户端的响应中包含cookie 下面是我们面临的问题的总结 当客户端发出并行请求时,会话粘性将不起作用,因为所有请求都没有AWSALB cookie 当一个客户机发出一个阻塞请

我们的ALB在多个目标群体中注册。每个目标组都是一个单独的web应用程序,服务于同一域下网站的不同部分

下面是关于粘性会话cookie编码实践的片段

当负载平衡器第一次收到来自客户端的请求时,它会路由 对目标的请求生成一个名为AWSALB的cookie,该cookie编码 有关选定目标的信息,加密cookie,以及 在对客户端的响应中包含cookie

下面是我们面临的问题的总结

  • 当客户端发出并行请求时,会话粘性将不起作用,因为所有请求都没有AWSALB cookie

  • 当一个客户机发出一个阻塞请求,然后发出多个并行请求时,粘性将仅对服务于初始阻塞请求的目标组起作用。如果其余的并行请求是针对其他目标组的,那么这里没有粘性,因为他们的目标组的信息还没有编码在AWSALB cookie中

这里的一个解决方案是向不同的URL发出一系列连续的请求,以命中不同的目标组,从而与每个目标组建立粘性。但是,这是不实际的,因为发出顺序阻塞请求会减慢客户端的速度


我想知道是否有一种方法可以告诉ALB在一个请求中对所有目标组的会话粘性信息进行编码?在这种情况下,将为所有目标组建立粘性,以便后续请求在各个目标组之间具有粘性。

尝试为应用程序的不同部分使用子域。 假设每个目标组都有自己的子域,但所有子域实际上都指向同一个负载平衡器。 实际上,所有子域都可以是真实域的CNAME,但对于负载平衡器,它是不同的,cookie将为该域设置并独立使用

差不多

  • api1.yourdomain.com->api.yourdomain.com的CNAME->ALB->目标组1->为api1.yourdomain.com设置的目标组1的cookie
  • api2.yourdomain.com->api.yourdomain.com的CNAME->ALB->目标组2->为api2.yourdomain.com设置的目标组2的cookie 等等

无论如何,我不会太依赖这个cookie和会话粘性,因为它并不总是可靠的,而且您应该始终假设ALB平衡流量的方式没有太多控制,即使这是一种很好的方法,可以帮助服务器以某种方式保持有状态并确保用户体验顺畅,最好将精力放在实现完整的无状态应用程序上,而不必担心会话粘性

您生成的Cookie:“您无法解密或修改负载平衡器生成的Cookie。”如果这是您想要做的。是的,我们无法理解AWSALB Cookie。不确定问题的哪一部分是指这样做的能力。问题是向ALB发送一个请求,要求它发回一个完整的AWSALB cookie,其中包含所有目标群体的粘性信息。我不知道答案。。。会话数据存储在哪里?在我的应用程序中,会话数据存储在cookie中,因此即使请求到达不同的服务器,会话数据始终可用……在我们的示例中,会话数据位于服务器端。如果你不想问我,你的会话数据cookie有多大?